2022년 5월 4일 수요일

MoonBase 카트리지의 케이스가 도착했어요~

MoonBase + MoonSound !!!



오버리치님 케이스 작업하느라 수고하셨습니다요~ ㅎ.ㅎ/





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 그대로 입니다ㅋ


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



2022년 4월 18일 월요일

Flash Drive 제작 #3 - 동작 모드 정리

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합니다.



생각나는 것들은 대충 정리가 된 것 같으네요 ㅎ.ㅎ


그럼, 궁금한 점 있으시면 댓글로 ㄱㄱㄱ