V4 납땜하다가... 다시 SLT-Turbo로 달려봅니다요~
이번엔 데모 영상을 위해 X-II에 기기를 연결했습니다.
I/O 프로세서는 호스트의 CPU가 담당하지만, 실제 코드는 SLT-Turbo의 BUS Arbiter가 생성합니다.
예전에 이게 DMA 컨트롤러의 마이크로 코드 작업과 비슷하다...라고 설명했는데요.
코드가 동적으로 변경되는거라서 좀 차이는 있겠습니다요~ (사실 일반 DMAC는 구조가 간단합니다)
초기 버전과 현재 버전의 동작차이를 요약하면 이렇습니다.
@ 초기 버전
모든 코드는 호스트 메모리에서 구동
호스트 CPU가 SLT-Turbo의 BUS 상태를 체크하고 필요한 루틴을 실행
@ 현재 버전
모든 코드는 SLT-Turbo 슬롯에서 구동
BUS Arbiter가 필요한 코드를 생성함
호스트 CPU의 코드 공간(주소)는 Page 0 (0000H ~ 3FFFH) 입니다.
어차피 인터럽트 처리 때문에 Page 0을 쓰는게 공간을 적게 차지하겠습니요.
참고로 Page 1,2는 SLT-Turbo의 가상 슬롯 매핑에 쓰입니다. (자세한건 나중에 설명을~ㅋ)
Page 3는 호스트의 메모리 그대로 유지합니다. DATA, Stack 용으로 계속 쓰이는거죠.
이번에 데모로 찍은 영상은 X-II 순정에 V9958 교체 후 XII-V만 내장된 상태입니다.
그러니까 MSX-MUSIC이 없는걸로 보시면 맞습니다.
지난번 A1WSX로 데모했을 때에는 OPLL 칩이 본체에 내장되어있어서,
I/O 프로세서가 처리한 사운드 결과만 확인이 가능했는데요.
이번엔 XII-V(LED 비주얼라이저)가 호스트에 있고, OPLL은 SLT-Turbo에 있습니다.
그러니까, LED와 사운드가 동시에 동작하는걸 확인할 수 있다는 얘기입니다.
그럼 영상으로 확인해보시죠~ ㅎ.ㅎ
X-II의 전면 슬롯에는 MMC/SD V4가 있고,
후면 슬롯에는 50핀 케이블로 SLT-Turbo가 직결되어있습니다. (케이블은 27cm 정도 되네요)
아래는 영상 설명입니다.
00:00 Host MSX, Booting
-> 호스트 본체가 부팅됩니다.
00:35 SLT-Turbo, Illusion City
-> GT 모드로 구동 후 환영도시를 실행합니다.
03:30 SLT-Turbo, Fray
-> GT 모드로 구동 후 프레이(터보알 버전)을 실행합니다.
05:55 SLT-Turbo, Video Play
-> GT 모드로 구동 후 MV 영상 재생합니다.
원본 영상 속도와 거의 동일한걸 볼 수 있어요.
MV 재생 시, 음성이 약간 빨라졌다 느려지는 현상이 나오는데요.
이건 기기특성은 아니고, MMC/SD의 MV 플레이루틴이 기기를 진짜 A1GT로 착각해서 발생하는 현상입니다.
WSX, GT에서 쓰인 T9769는 VDP IO처리시 1클럭 wait가 더 추가됩니다.
이 때문에 일반 MSX2보다 조금 느리게 동작합니다.
MV 재생처럼 VDP를 과도하게 쓰는 경우는 이 차이를 사람이 느낄 수 있는 정도가 되거든요.
MMC/SD의 MV 플레이어는 1클럭 wait가 없는 기종에서는 속도 보상을 하도록 구현되어있습니다.
그래서 MSX2, MSX2+, turboR 모두 영상재생 속도가 동일하도록 처리됩니다.
.
.
.
사실 모든 기종을 다 커버하지는 못합니다 ㅎ.ㅎㅋ
MSX-ENGINE이 좀 다른 MSX2/2+ 기종이 있는걸로 알고 있어요.
지금 영상의 MSX2 본체에서 VDP를 V9958로 개조하고 SLT-Turbo를 구동하면,
현재의 MMC/SD의 MV 플레이어는 본체를 GT로 인식하게 됩니다. 이 경우도 커버가 안되는거죠.
이건 나중에 MMC/SD BIOS 업뎃할 때 지원하도록 하겠습니다.
그럼, 다음편에서 보아요~ ㅎ.ㅎ
궁금한 점 있으시면 댓글로 ㄱㄱㄱ