2026년 3월 10일 화요일

SLT-Turbo 제작 #20 - FDD_EMU

본체에 내장된 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 옵션 하나만 적용하면 끝입니다 ㅎ.ㅎ


그럼, 이만...


댓글 없음:

댓글 쓰기