본체에 내장된 FDD는 SLT-Turbo에서 직접 접근하는 것이 불가능합니다.
파나소닉의 MSX2+ 및 turboR 기종들은 본체의 FDD가 SLOT 3-2에 위치하는데요.
SLT-Turbo의 GT 모드에서도 마찬가지로 SLOT 3-2에 디스크롬이 존재합니다.
만약 SLT-Turbo에서 디스크 읽기 명령이 들어오면 아래의 순으로 작업이 이루어집니다.
1. SLT-Turbo 디스크롬에서 본체로 디스크 읽기 커맨드 전송
2. 본체는 커맨드 수신 후, FDD 디스크롬의 루틴을 구동하여 공유 메모리로 데이터 로딩
3. 본체에서 SLT-Turbo로 커맨드 완료 알림
4. SLT-Turbo에서 공유 메모리의 데이터를 원래 목적지(Target addr)로 복사
이미 SLT-Turbo를 꽂고 본체의 FDD를 구동해보신 분도 계실텐데요.
암튼 여기까지는 기본기능이니까, 바로 본론으로 넘어갑니다~~ ㅎ.ㅎ/
아마 본체에 장착된 FDD는 사용할 기회가 많지 않다고 봅니다.
그래서 디스크 이미지(DSK 파일) 에뮬이라도 넣으면 좀 쓸모가 있으려나? 생각되더라구요.
사실 이걸 처음부터 생각한 것은 아닙니다.
어차피 MMC/SD V4가 있으니 DSK 에뮬 자체가 필요할 이유는 딱히 없죠 ㅎ.ㅎ
.
.
.
며칠 전, 오랜만에 SCMD로 듀얼 SCC-I 사운드를 들어보려고 했는데요.
SLT-Turbo를 쓰다보니, 이젠 SCMD 구동에 필요한 기기 구성을 하지 못하게 되었더라구요.
SCMD는 SCC-I 사운드 카트리지 2개가 기본 슬롯 2개에 따로 장착이 되어야 제대로 쓸 수 있습니다.
프로그램 자체의 제약이라고 할 수 있는데요.
예전에는 SLOT 1-0, 2-0에 SCC-I를 하나씩 꽂고, 개조한 GT의 SLOT 0-1에 MMC/SD를 꽂으면...
SCMD를 구동할 수 있는 환경이 되었죠.
SLT-Turbo는 SLOT 0-x, 3-x가 모두 기기에 내장되어있고, 외부 커넥터는 SLOT 1, 2만 사용가능합니다.
따라서, SCMD를 쓸 때는 본체의 FDD를 강제로 써야하는 상황이 된거죠.
오랜만에 2DD로 부팅해서 SCMD를 돌려보니, 인내심의 한계가 오네요ㅋ
다른 방법을 생각해봅니다!
SLOT 1-0 = T-Wave (SCC-I 128KB)
SLOT 2-0 = MMC/SD V4 (SCC-I 128KB 모드)
SLOT 3-2 = DiskROM (본체 FDD 연동)
위의 상태에서 내장 디스크롬(SLOT 3-2)을 구동할 때,
본체의 FDD 대신 SLOT 2-0의 V4를 잠깐 디스크 모드로 변경해서 구동하는 방법입니다.
SCC-I 메모리 내에서 코드(ISR 관련 등)가 동작하고 있더라도,
디스크 관련 처리 시 인터럽트를 잘 막아주면(disable), V4의 동작모드를 전환해도 괜찮을 것 같더라구요.
만약 SLT-Turbo에서 디스크 읽기 명령이 들어오면, 디스크롬에서는 아래의 순으로 작업이 이루어집니다.
1) 인터럽트 금지 후, V4를 디스크 모드로 변경
2) V4의 디스크 루틴을 호출하여 디스크 R/W 처리
3) V4를 SCC-I 모드로 변경 후, 인터럽트 금지 해제
이 때, V4는 2DD_EMU 모드(DSK 이미지)로 동작할 수 있도록 미리 셋업이 되어있어야 합니다.
결국 S/W는 SLOT 3-2의 디스크 루틴을 사용하지만, 실제로 동작하는 디스크는 SLOT 2-0의 V4가 되겠네요.
물론 이 방법은 약간의 제약은 있습니다.
보통 DOS2에서는 디스크 액세스 시, 목적지(target) 주소가 항상 DOS2의 데이터 세그먼트로 설정됩니다.
그러니까 항상 메모리 매퍼 세그먼트가 된다는 얘기죠.
근데, DOS1에서는 메모리가 아닌 슬롯도 목적지 주소로 쓸 수 있습니다.
만약 주소 영역이 SLOT 2-0 슬롯이 된다면, 데이터를 제대로 로딩할 수가 없겠죠.
S/W에서는 디스크롬(SLOT 3-2) -> 목적지 메모리(SLOT 2-0)로 로딩했는데,
실제로는 FDD_EMU가 동작하면서, SLOT 2-0이 메모리(SCC-I SRAM)가 아닌 디스크롬으로 변경되니까요 ㅎ.ㅎ
만약 S/W에서 항상 메인 메모리(또는 V4가 아닌 슬롯)로 로딩하는 경우는 안전하게 쓸 수 있겠습니다.
흐흠... 원래 목표(?)였던 SCMD에서는 제대로 동작할까요?
영상으로 직접 확인하시죠. OUT RUN의 Passing Breeze 음악도 즐기면서요~ ㅎ.ㅎ/
PS.
사실 이 SLOT 3-2 FDD_EMU 모드는 이미 있던 기능이었습니다.
MMCSD.COM을 실행할 때, turboR에서는 /DT 옵션을 쓸 수 있는데요.
DOS2의 디스크 액세스 시 CPU 모드 전환하는 코드를 패치해서, V4의 디스크를 대신 구동하는 방식이었는데...
이 방법은 DOS1에서는 쓸 수 없어서, 그닥 활용되지는 못했습니다.
이번에 구현된 FDD_EMU 모드는,
SLT-Turbo의 BIOS Shadow 영역(RAM)의 DiskROM 코드를 직접 변경하는 방식이라서,
DOS1, DOS2 환경에 상관없이 모두 동작합니다.
그리고, V4의 부트메뉴에서 S키를 눌러서 SCC-I 128KB 모드를 설정하는 게 아닌,
MMCSD.COM 툴에서 자동으로 설정이 되니까 더 편하게 쓸 수 있어요.
위의 영상에서도 보셨겠지만, /DT 옵션 하나만 적용하면 끝입니다 ㅎ.ㅎ
그럼, 이만...