2026년 9월 21일 월요일

21세기 MSX 활용 #4 - turboR 고속모드 디스크 최적화

다들 아시다시피 turboR DOS2는 디스크 액세스 시, CPU 모드를 Z80 노말모드로 잠깐 변경합니다. 

디스크 액세스가 끝나면 원래의 CPU 모드로 돌아오죠.

이 때 본체에 달린 고속모드 LED가 변하지 않기 때문에 사용자를 살짝 속인다고 보셔도 무방합니다ㅋ


만약 Z80 노말모드로 디스크롬이 호출되더라도, MMC/SD 내에서 강제로 고속모드로 바꾸면 어떻게 될까요?

당연히 디스크 속도가 빨라지겠죠?


MMC/SD Drive V2의 경우 디스크 속도는

노말모드 -> 130KB/s

고속모드(내부 노말모드) -> 148KB/s

고속모드(CPU모드 고정) -> 247KB/s

... 이렇게 됩니다.


CPU모드를 고속모드로 고정할 수 있다면, 속도가 기존의 1.67배가 됩니다. 실제 체감될 정도죠.

근데 MMCSD 디스크롬 내에서 CPU 모드를 강제로 바꾸면 문제가 되니까,

2DD 에뮬모드에서 고속모드로 강제하는 경우만 이런 방식을 사용합니다.

MMCSD V2~V4 모두 이 기능이 있어요. 이스1을 고속모드로 구동하는 식으로 활용이 가능합니다.

일반 DOS2 부팅된 환경일 때는 유저가 원하지 않는 고속모드를 강제할 수 없으니, 그냥 썼는데요.


.

.

.


2015년 어느날 우연히 프로그램 하나를 발견합니다 -> R800-DR

BASIC 로더와 바이너리 코드로 된 프로그램인데요.

실제 하는 역할은 DOS2 커널의 하위 디스크롬 호출 루틴(RAM에 있어요)을 패치해서,

Z80 노말모드로 변경되는 걸 막아버립니다.


결국 고속모드 상태에서 디스크 액세스가 발생하더라도, DOS2가 CPU 모드를 유지하게 된다는 얘기죠.

테스트 해보니 실제로 동작이 잘 되더라구요.

ST, GT의 디스크롬 루틴이 조금 다른데, 두 코드에 맞게 각각 패치하도록 되어있습니다.

BASIC에서 실행 후, 다시 DOS2 쉘로 복귀해야하는 약간의 번거로움이 있습니다.


좀 더 정보를 찾아보니, 코드를 도스 상태에서도 패치하도록 만들 수 있더라구요.

자세한 내용은 아래 링크에서 보실 수 있습니다.

https://sharksym.blogspot.com/2015/08/r800-dr-turbor-cpu.html


암튼... 결론은 'MMC/SD Drive V3를 만들자!'


turboR 고속모드의 슬롯 타이밍에 최적화해서 디스크 기기를 만들면 훨씬 빠르겠구나!

고속모드의 LDI 명령 타이밍에 맞춰, SD카드에서 램으로 1바이트 전송이 완료되도록 H/W를 설계했습니다.


결과는? 대박이었죠 ㅎ.ㅎ

전송 속도가 582KB/s가 되었습니다. 기존 V2 보다 2배 이상 빨라지네요.

2DD 한장이 720KB인데, 이걸 1.2초만에 읽어낸다고 생각하심 되겠습니다요~


실제 GT에서 DOS2로 부팅 시, R800-DR 및 FAT16 패치를 설치 후 M 로딩까지 순식간에 끝나네요.

무궁화에서 KTX로 바꿔타는 느낌?ㅋ


참고로, SLT-Turbo의 고속모드에서는 슬롯 타이밍이 약간 달라서, 전송 속도가 615KB/s로 나옵니다.

MV2 동영상 플레이어에서도 이걸 잘 활용하고 있죠.

VRAM 데이터와 MP3 데이터를 마구마구 읽어서 15fps으로 처리 ㅎ.ㅎ


참고로, 현재는 MMC/SD V3,V4를 쓸 때 R800-DR 프로그램이 필요하지 않습니다.

이 기능 자체가 MMCSD BIOS에 포함되어 있어요. 부팅할 때 자동으로 DOS2 커널 패치가 됩니다.


혹시 SD카드의 AUTOEXEC.BAT에 R800-DR 실행부분이 들어 있다면, 지워주세요~

사실 그냥 둬도 문제가 되진 않습니다.

커널 루틴이 달라서 '인스톨 실패'라고 나오면서 그냥 넘어갑니다.


turboR의 고속모드 디스크 속도 최적화는 이렇게 끝났습니다.

해피 엔딩~ ㅎ.ㅎ/


2026년 9월 20일 일요일

21세기 MSX 활용 #3 - MMC/SD Drive

2004년, 새로운 고속의 디스크 인터페이스를 만들어보자!


당시 기준으로 MSX 에뮬을 이미 10년간 사용했구요.

paraMSX를 만들면서 디스크롬 구조도 많이 보고, DOS2도 써봤구요.

MSX-DOS가 MS-DOS 기반이라서 대용량(FAT12) 디스크 처리도 가능하다는 걸 이미 알고 있습니다.


그럼 남은 문제는... H/W를 뭘로 만들까? 였는데요.

아무래도 플래쉬롬을 사용하는 방법이 제일 간단하겠죠?


2000년 이전에는 CompactFlash, SmartMedia 같은 것들이 쓰였는데,

이젠 MMC(MultiMediaCard), SD(Secure Digital)가 유행하고 있습니다. (2004년 기준)


I/O는 대충 TTL 칩을 조합해서 설계하고, MMC를 인터페이스하는 걸로 결정합니다.

MMC 256MB 메모리를 하나를 구매하구요. (5만원쯤 했던가요... 기억이 가물가물)

같은 용량에서는 MMC가 SD보다 조금 저렴했는데, 개발하다 망가지면 눈물나는 건 마찬가지겠지만요 ㅎ.ㅎ

카드 슬롯은 부품 납땜이 힘드니까, 메모리카드 USB 어댑터를 하나 뽀개서 보드째 사용합니다.


재료는 준비가 되었구요. 실제 개발은 아래처럼 진행되었어요.


1) 코나미 SCC롬팩을 개조해서 롬디스크 카트리지 제작

2) MMC I/O를 SPI 모드로 구동하는 회로 설계

3) 디스크 마운트는 드라이브 A:MMC, B:롬디스크

4) MMC를 초기화(파티션, 포맷) 프로그램을 구현 후 롬디스크에 포함

5) 드라이브 A:는 여러개의 파티션 중 1개를 마운트 (사용자 선택 저장)

6) 2DD 에뮬을 위한 런타임 파티션 교체 구현


아래는 완성된 모습입니다.



케이스를 씌우면 이런 모습이죠. 고파의 야망을 프랑켄슈타인으로~ㅋ



처음 만들었을 때에는 MMC Disk Drive, MMC Disk Interface 등의 이름으로 쓰였어요.

회로도를 공개해서, 외국에서도 제작한 분들이 있었습니다.


수년 후 다른 회원님이 PCB를 제작해서, 파라동 회원님도 쓰시게 되었는데요.

그 때쯤은 MMC가 단종이 되고 SD가 저렴하게 팔리던 시절이라,

이름을 MMC/SD Drive로 바꿨습니다 ㅎ.ㅎ


MMC 전송 속도는 40KB/s 였으니, FDD 11KB/s의 3배 이상 빠르다고 보면 되겠습니다.

이 속도가 빠르다고 보긴 힘들었지만,

MIDRY로 미디음악을 듣거나 2DD 게임을 실행하는 데엔 GOOD 이었습니다! ㅎ.ㅎ


2007년에 FAT16 등의 고용량 디스크 처리를 추가하면서 H/W도 개선이 되었는데요.

MMC/SD Drive V2에서는 속도가 130KB/s로 빨라져서, MP3 재생 등의 과도한(?) 작업도 OK가 되었습니다.


역시 디스크는 빠른 게 좋네요.

빠른 속도에 익숙해지면 느렸던 시절로는 다시 갈 수가 없죠. 역체감이 엄청납니다요ㅋ

이제서야 GT가 환영도시 게임기가 아닌 그냥 컴퓨터처럼 느껴집니다.

286에 HDD를 달아놓는 거랑 비슷하려나요? ㅎ.ㅎ


MMC/SD V2를 2015년까지 썼으니 꽤 오랫동안 썼었죠.

확장슬롯에 V2 카트리지 2개를 항상 꽂아둔 상태였습니다.

SLOT 2-0 MMCSD -> A: 부팅 및 2DD 에뮬, B: FAT16 2GB

SLOT 2-1 MMCSD -> C: FAT16 2GB, D: FAT16 2GB


.

.

.


하지만 turboR 새내기였던 저는 중요한 사실 한가지를 알지 못했는데...

이건 다음 편에서 이어집니다.


그럼, 이만...


PS. 확장슬롯 + MMCSD + 메모리매퍼 + Covox를 CPLD로 묶어서 아이큐2000 테스트용으로 썼던 물건



2026년 9월 19일 토요일

M File Manager v5.0 for MSX-DOS2 (2026-09-19)

 


Download: M_v5.0_20260919.zip


----------------------------------------------------------------

    M File Manager v5.0 for MSX-DOS2 (2026-09-19)

        By Yeongman Seo <sharksym@hitel.net>

----------------------------------------------------------------


* UPDATE


  @ 기능 변경/개선


  - DOS 프롬프트 미리보기 시, MODE 32 디스플레이(SCREEN 1)를 지원


  - LFN 및 인터레이스 모드 전환 시, 검색어 입력을 초기화