2026년 10월 1일 목요일

21세기 MSX 활용 #9 - DSK 에뮬

DSK 에뮬은 디스크 이미지 파일(*.DSK)을 일반 디스크(2DD, HDD)처럼 구동하는 것을 의미합니다.


상용 디스크 게임들은 대부분 1DD, 2DD 등의 3.5인치 디스켓으로 출시가 되었죠.

이런 게임 S/W들의 특징이 하나 있는데요.

파일 단위의 데이터 액세스를 하는 것이 아니라 절대 섹터 단위로 테이터 액세스를 하는 경우가 많습니다요.

결국 대용량의 디스크가 있더라도, 이런 S/W를 복사해서 실행하는 것 자체가 불가능하다는 얘기입니다.


게임을 만드는 입장에서 FCB 등의 파일핸들을 쓰지 않고 섹터를 직접 R/W하면, 속도는 빠르겠죠.

데이터를 연속으로 저장해놓으면 당연히 액세스 효율도 좋겠죠.


결국, 대용량 디스크를 쓰면서 2DD 게임을 실행하려면, 디스크 이미지 파일을 이용하는 방법뿐입니다.

실제로 구현하는 방법은 여러가지가 있겠지만,

저는 멀티 파티션 방식과 DSK 파일 방식을 썼습니다.



@ 멀티 파티션 방식


주 작업 환경이 MSX-DOS인 경우 쓰기 쉽도록 만들어졌는데요.

대용량 디스크에 수천개의 2DD 파티션을 만들고, 각 게임 DSK 파일을 복사해서 리스트를 만들어둡니다.

이걸 드라이브 A:의 파티션을 교체하는 식으로 게임을 실행하도록 했었죠.

파티션 관리를 위한 DISKMAN 이라는 전용 프로그램을 사용합니다.


일반 작업용 부팅 파티션에서는 일반 프로그램으로는 2DD 저장용 파티션에 접근할 수가 없어요.

드라이브 리스트에는 보이지 않습니다.

파티션의 섹터들을 순서대로 나눈 거라서, 에뮬하는 S/W쪽에서는 굉장히 안전하게 쓸 수 있는 장점이 있죠.


이 방식은 MMC/SD V1, V2 시절에 쓰였습니다.

당시에는 램 64KB뿐인 기본 MSX2를 쓰는 분이 많아서, MSX-DOS를 기준으로 기기를 만들어야하는 숙제(!)가 있었지요.



@ DSK 파일 방식


여러분들이 MMC/SD V2를 수년간 쓰면서, MSX-DOS2의 편리함과 FAT16 대용량에 익숙해졌습니다.

그러면서 본체램 512KB 증설 개조도 유행했지요.

M 파일 매니저 같은 MSX-DOS2 전용 프로그램도 많이 쓰이게 되었구요.


DOS2의 서브디렉토리, FAT16의 대용량 드라이브가 있다면...?

DISKMAN으로 파티션 교체하는 방식 보다는, *.DSK 파일들을 디스크롬에서 직접 에뮬을 해주는 것이 편하겠더라구요.

사용자 입장에서는 SD카드를 윈도에 연결해서 파일,폴더를 관리하는 것도 훨씬 편하게 느껴지겠죠.

DSK 파일이 크니까 실기에서 직접 복사하는 것도 꽤 인내가 필요합니다ㅋ


DSK 파일 에뮬의 가장 큰 걸림돌은,

S/W에서 물리 섹터 R/W 요청이 왔을 때, 흩어진 클러스터에서 파일 연결을 찾고, 실제 섹터로 R/W 해주는 부분이 되겠습니다.

원래는 DOS에서 처리하는 작업이겠지만, 에뮬이니까 MMC/SD 디스크롬 내에서 처리를 해야겠죠.

암튼 그렇게 구현이 되어서 지금까지 십여년간 잘 쓰이고 있습니다요 ㅎ.ㅎ



@ 현재 MMC/SD V3, V4의 DSK 에뮬은 이렇게 지원되니 참고하세요.


- 1DD/2DD 디스크 이미지 최대 10장 (멀티디스크 전환 가능)

- HDD 이미지 최대 32MB (FAT12 기준)

- ONE-Drive 기능 지원 (본체에 내장된 FDD를 무력화)

- 디스크롬 전환 (DOS1 또는 DOS2)



그럼, 다음 편에서 이어집니다...