2022년 4월 24일 일요일

Flash Drive 제작 #4 - DOS1 파일 저장 (feat. GRUN)

[서론]


지난 글(제작 #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 그대로 입니다ㅋ


그럼, 상태 저장/복구가 잘 되는지는 아래 영상으로 확인하시죠~ ㅎ.ㅎ/~



댓글 없음:

댓글 쓰기