[서론]
지난 글(제작 #3)에서 "3. 롬디스크 일부를 R/W 가능한 영역으로 사용" 부분은,
원래 DOS2에서만 사용하도록 계획했었는데요.
조금 생각을 해보니...ㅋ
넌매퍼램 64KB뿐인 싸구려 MSX2(FS-A1 등)에서 활용하는 것도 괜찮을 듯 싶더라구요.
아마 지난 글들을 읽으면서, '난 개발자가 아닌데, 이걸 어따 쓰라는거유?'
...등의 생각을 하신 분들 꽤 있을 듯 합니다 ㅎ.ㅎ
그.래.서.
DOS1 용 디스크롬에도 파일 저장 기능을 추가했구요.
기존 프로그램들 중에서 간단하게 보여드릴만한 데모가 있을까 좀 찾아봤는데...
제가 십년전에 만들었던 GRUN이 떠오르네요 ㅎ.ㅎ
안쓴지 한참 된 프로그램인데, GRUN resurrection(!)을 해보았습니다요.
일단 기존 DOS2 모드에서 돌아가던 걸, DOS1에서도 쓸 수 있도록 수정했습니다.
GRUN v1.71을 쓰시면 되겠네요.
GRUN은 16KB/32KB의 ROM을 메인램에 로딩해서 구동하는 프로그램입니다.
MSX1 BIOS를 램으로 에뮬하는 방식이라,
MSX2+ 또는 turboR에서 구동안되는 프로그램을 돌리는 데 유용하게 쓸 수 있죠.
(물론 지금은 MMC/SD V4의 GameRunner II에 밀려...ㅋ)
근데, GRUN에는 상태저장(State save)을 해주는 기능이 있습니다
세이브를 하면, Page3의 메인램(16KB)와 VRAM 16KB을 저장하구요.
로딩하면 상태를 복구해주는 것이죠.
세이브(*.SAV) 파일은 32KB입니다.
지난 글에서 롬 하나당 쓰기가능 섹터를 8KB + 8KB + 16KB으로 지원한다고 적었는데...
혹시 기억하시나요? ㅎ.ㅎ
요기 섹터 3개를 파일 하나로 묶으면 32KB가 되니까 GRUN SAV파일로 안성맞춤이네욤~!
[본론]
그럼, GRUN SAV를 할 수 있는 Flash Drive 작업을 해봅시다요~
1) DOS1 호환 용 2DD 이미지(720KB)
DOS2는 커널에서 디스크볼륨 처리를 하기 때문에, FAT12 구조라면 모두 사용가능합니다만,
DOS1은 슬레이브 디스크롬의 DPB(디스크 정보 테이블)을 가져와서(GET) 커널로 동작하는 방식입니다.
따라서 공용으로 쓸 수 있는 포맷(미디어 디스크립터 F8h, F9h)이 아니면 쓰기가 애매하죠.
길게 적었는데요ㅋ
간단히 말하면 DOS1 모드로 쓸 때는 Flash Drive 용량 1.5MB에 2DD(720KB)만 지원하겠음.
입니다.
물론, 예전 MMC/SD V2처럼 1.44MB, 2.88MB... 이런식으로,
DPB를 모두 구현하는 방식도 있는데요.
멀쩡한 DOS2를 놔두고 DOS1 때문에 또 이런 짓(?)을 하려니 귀찮아서요...ㅋㅋ
암튼 흔히 쓰이는 포맷된 2DD 이미지에 DOS1 용 부트파일(MSXDOS.SYS, COMMAND.COM)을 준비합니다.
2) 쓰기가능 영역을 확보
Flash Drive의 롬 드라이브는 DOS 커널 영역 이후에 배치됩니다.
지난 글에도 언급이 되어있지만, 48KB 이후 부터 롬디스크 이미지가 시작됩니다요.
2DD 720KB 이미지는 플래쉬롬 첫 3개에 연속으로 저장이 되니,
결국 쓰기가능 섹터(영역)은 9섹터가 되겠습니다.
롬#0 = 8KB + 8KB + 16KB
롬#1 = 8KB + 8KB + 16KB
롬#2 = 8KB + 8KB + 16KB
이걸 DSK 이미지에 파일을 생성해주면 이렇게 되겠네요.
템플릿으로 쓰시려면 아래 파일을 다운받으세요~
Download: Flash_Drive_DOS1_720KB_1.zip
GRUN에서는 32KB 파일로 저장하니까, 8KB + 8KB + 16KB 파일 3개를 묶어 하나로 만들어줍시다.
그럼 이렇게 되겠죠?
템플릿으로 쓰시려면 아래 파일을 다운받으세요~
Download: Flash_Drive_DOS1_720KB_2.zip
'지난번 글에는 SAVE 폴더에 파일을 만들더니 이번엔 왜 루트에 만드나요?'
라고 생각하실 분이 계실까봐 미리 적어드리면...
"DOS1에서는 서브디렉토리를 지원하지 않습니다" ㅎ.ㅎ
3) GRUN과 롬을 넣어보자
롬 후보는 구니스, 덱스더, 자낙 3개입니다.
일단 GRUN.COM 프로그램과 롬 3개를 DSK 이미지에 넣습니다.
SAVEn_32 파일은 그대로 두면 이름이 헷갈리니까, 롬파일과 같도록 변경해줍니다.
예) 구니스 롬파일 -> GOONIES.ROM, 세이브파일 -> GOONIES.SAV
DOS 프롬프트에서 타이핑하려면 귀찮으니까, 배치파일을 넣어서 간단하게 해줍니다요.
아래처럼 DSK 이미지가 완성되었네요! ㅎ.ㅎ
Download: Flash_Drive_DOS1_GRUN.zip
4) 실기 동작 테스트
일단 GT에서 DSK 이미지를 다운로드 후 FS-A1에서 구동해봅니다.
참고로, 제 A1은 개조안된 순정 64KB 멍텅구리 MSX2 그대로 입니다ㅋ
그럼, 상태 저장/복구가 잘 되는지는 아래 영상으로 확인하시죠~ ㅎ.ㅎ/~