MoonBase + MoonSound !!!
오버리치님 케이스 작업하느라 수고하셨습니다요~ ㅎ.ㅎ/
[서론]
지난 글(제작 #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 그대로 입니다ㅋ
그럼, 상태 저장/복구가 잘 되는지는 아래 영상으로 확인하시죠~ ㅎ.ㅎ/~
Flash Drive는 디스크 커널과 디스크이미지가 롬 하나로 묶인 카트리지입니다.
이런걸 보통 롬디스크 드라이브라고 얘기합니다요.
일반적인 롬디스크와의 차이라면 요렇게 정리할 수 있겠네요.
1. DOS1과 DOS2 커널 모두 사용가능
2. 16K 매퍼 사용으로 PAC 류의 주변기기 디텍션과 충돌하지 않음
3. 롬디스크 일부를 R/W 가능한 영역으로 사용
4. DSK 이미지파일은 1488KB까지 사용가능
그럼 자세한 설명이 나갑니다요~
1. DOS1과 DOS2 커널 모두 사용가능
DOS1 커널 사용 시,
기본으로 ONE-Drive ON 상태가 됩니다.
DSK 파일을 다운로드 할 때 /DO 옵션으로 OFF 가능하구요.
DOS2 커널 사용 시,
항상 ONE-Drive OFF 됩니다.
DSK 파일을 다운로드 할 때 /D2 옵션을 넣으면 DOS2 커널이 적용됩니다.
더미 DSK 파일(FFH로 채운 파일)을 다운로드 해두면,
DOS2 커널만 구동하고 부팅은 다른 드라이브로 할 수 있습니다.
(예: WSX, X-II 등에서 슬롯1에 Flash Drive를 꽂고 본체의 FDD로 DOS2 디스크 부팅)
부팅 중 INS 키를 누르고 있으면, 디스크롬 인스톨을 건너뜁니다. (DOS1, DOS2 공통)
이 기능은, 다른 DSK 이미지를 다운로드 할 때 필요합니다.
2. 16K 매퍼 사용으로 PAC 류의 주변기기 디텍션과 충돌하지 않음
범용의 플래쉬롬팩(SCC 8K 등)으로 롬디스크를 만들면,
PAC 류의 SRAM 디텍션(주소 5xxxH) 중 매퍼 뱅킹이 되기 때문에 오동작 하는 경우가 생깁니다.
Flash Drive는 16K 매퍼라서 안전(?)하게 사용가능합니다.
(참고로 FDD의 디스크롬은 뱅킹없는 16KB롬이라서, 이런 문제가 생길 여지가 없어요.)
3. 롬디스크 일부를 R/W 가능한 영역으로 사용
보통의 롬디스크는 읽기전용(readonly) 디스크로 동작이 됩니다.
Flash Drive는 플래쉬롬의 작은 섹터(8KB, 16KB)를 R/W 파일로 활용할 수 있습니다.
작은 용량의 플래쉬롬이 여러개(6개)가 들어있는 이유가...
이 섹터를 많이 얻기 위함이죠. 롬 하나에 3개밖에 없어요 ㅎ.ㅎ
이 영역은 DOS2 모드일 때만 쓰기(write)가 가능합니다.
DOS1 모드일 때는 모두 readonly이니, 다운로드할 때 DOS2 모드로 해주세요.
그리고, 플래쉬롬의 앞부분은 DOS2 커널 48KB가 점유하고 있으니,
실제 디스크 섹터와 플래시롬의 섹터 위치를 잘 계산해서 사용해야합니다.
예를 들어 첫번째 플래시롬의 8KB 섹터의 주소는 아래처럼 주소를 계산할 수 있습니다.
38000H - 0C000H(DOS2 롬옵셋) = 2C000H
물론 이부분은 BDOS의 논리섹터 R/W 대신 파일 R/W을 하려면,
미리 파일을 생성하고 FAT의 체인을 설정하는 작업이 필요합니다.
무슨 얘기인지 이해가 어려우면, 그냥 제가 만든 템플릿 DSK를 사용하시면 되겠습니다.
R/W 가능한 섹터에 미리 세이브 용 파일을 만들어두었습니다.
Download: Flash_Drive_DOS2_1488KB.zip
아래처럼 SAVE 디렉토리의 SAVEx_xx 파일에 저장을 하면 됩니다.
파일 이름을 바꾸는 것은 괜찮지만 다른 디렉토리에 복사하면 안됩니다.
디스크 섹터위치가 바뀌면 플래시 섹터 위치도 바뀌니까요~
18개 파일이 192KB 용량 차지하고 있으니,
사용하지 않는 파일은 삭제하고 일반 readonly 용도로 바꿔쓰셔도 됩니다.
용량부족에 허덕이지 않는다면, 그냥 놔두시는 걸 추천합니다 ㅎ.ㅎ
4. DSK 이미지파일은 1488KB까지 사용가능
지난 글(#2)에서 Standard 버전은,
A: 드라이브 2HD 1440KB + B: 드라이브 48KB
으로 구성된다고 했었는데요.
사용의 복잡성을 줄이기 위해ㅋ
그냥 두 영역을 모두 합쳐서 A: 드라이브를 1488KB으로 쓰는 것으로 바꿨습니다.
B: 드라이브는 따로 활용하지 않습니다.
사실 초기 셋업 용 48KB 이미지를 따로 관리하는게 좀 불편한 것 같아서요...흐흠
그리고, Flash Drive의 플래시롬 용량은 1536KB으로 통일하기로 했습니다.
2DD 용량의 Lite 버전은 출시(?) 안하는 방향으로 갑니다요.
(보드 두 종류 관리도 귀찮...ㅋ)
마지막으로 Flash Drive 툴의 옵션들을 정리해보았습니다.
- FLASHDRV.COM의 옵션 설정입니다.
/DO -> ONE-Drive를 OFF합니다. (DOS1 모드에서만 사용가능)
/D2 -> 디스크 커널을 DOS2 모드로 설정합니다.
/T -> 파나소닉 WX/WSX의 반터모 및 turboR의 고속모드를 강제로 ON합니다.
- 디스크롬 부팅 시 사용되는 키입니다.
CTRL -> B: 드라이브를 제거하고 A: 드라이브 한개만 등록합니다.
INS -> 디스크롬 인스톨을 하지않습니다. (Flash Drive 부팅을 건너뜁니다)
T -> WX/WSX/turboR의 고속모드를 강제로 ON합니다.
생각나는 것들은 대충 정리가 된 것 같으네요 ㅎ.ㅎ
그럼, 궁금한 점 있으시면 댓글로 ㄱㄱㄱ