2026년 3월 10일 화요일

MMC/SD Drive V3/V4 - BIOS & Tool v5.80

Download: 20260310_MMCSD_Drive_V3_V4_BIOS_Tool_v580.zip


--------------------------------------------------

MMC/SD Drive(tm) V3/V4 - BIOS & Tool

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------



[ BIOS & Tool v5.80 ]


- FDD_EMU


  SLT-Turbo용 DiskROM 패치 지원 (Shadow RAM BIOS)

  /DT 옵션 사용, V4는 SCC-I 128KB 모드로 전환됨



[ 업데이트 가이드 ]


1. MMCSD.COM, MMCSD.OVL 두개 파일을 SD카드에 복사.

   기존 파일을 덮어쓰면 됩니다.(예:UTILS 디렉토리)


2. MMCSD.COM 프로그램을 실행 또는 MMCSD /U 실행


3. 'Update BIOS-ROM? [y/N]' 메시지가 나오면 Y키 누름.


4. 다운로드 완료 후 RETURN키 눌러서 재부팅.


5. 끝


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 옵션 하나만 적용하면 끝입니다 ㅎ.ㅎ


그럼, 이만...


2026년 2월 21일 토요일

MMC/SD Drive V3/V4 - BIOS & Tool v5.79



Download: 20260221_MMCSD_Drive_V3_V4_BIOS_Tool_v579.zip


--------------------------------------------------

MMC/SD Drive(tm) V3/V4 - BIOS & Tool

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------



[ BIOS & Tool v5.79 ]


- MV2 Player


  립싱크 개선 (오디오 딜레이 추가)

  PAC-V 및 XII-V 비주얼라이저 지원 (본체쪽 기기)



[ 업데이트 가이드 ]


1. MMCSD.COM, MMCSD.OVL 두개 파일을 SD카드에 복사.

   기존 파일을 덮어쓰면 됩니다.(예:UTILS 디렉토리)


2. MMCSD.COM 프로그램을 실행 또는 MMCSD /U 실행


3. 'Update BIOS-ROM? [y/N]' 메시지가 나오면 Y키 누름.


4. 다운로드 완료 후 RETURN키 눌러서 재부팅.


5. 끝




2026년 2월 18일 수요일

M File Manager v4.8 for MSX-DOS2

 


Download: M_v4.8_20260220_fixed.zip

----------------------------------------------------------------

    M File Manager v4.8 for MSX-DOS2 (2026-02-20)

        By Yeongman Seo <sharksym@hitel.net>

----------------------------------------------------------------


* UPDATE


  @ 기능 변경/개선


  - FDD 액세스 시 오동작 현상(리부팅 등) 수정.

    디스켓 교체 시 인식 안되는 현상 수정.


  - GT에서 BASIC CALL MUSIC 명령 후 복귀 시 멈추는 현상 수정.

    MIDI 타이머 인터럽트 처리 관련 문제입니다.


  - CAPS LOCK 키 동작 개선.

    문자열 입력 모드와 상관없이 CAPS LOCK 키입력이 가능합니다.


2026년 2월 10일 화요일

[WIN] MMCSD_AVGEN v1.12

 


Download: MMCSD_AVGEN_v1.12.zip


MMC/SD Drive(tm) - A/V Generator v1.12

  By Yeongman Seo <sharksym@hitel.net>



* 변경 내용


  @ /Mn 옵션 추가


    /M1: Video 12fps, Audio 11.3kHz PCM


    /M2: Video 15fps, Audio 128kbps MP3

         SLT-Turbo + WAU 전용



2026년 2월 9일 월요일

MMC/SD Drive V3/V4 - BIOS & Tool v5.78


Download: 20260209_MMCSD_Drive_V3_V4_BIOS_Tool_v578.zip


--------------------------------------------------

MMC/SD Drive(tm) V3/V4 - BIOS & Tool

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------



[ BIOS & Tool v5.78 ]


- Disk Driver


  SLT-Turbo 고속모드에서 섹터 READ 안정성 개선



- MV2 Player


  비디오 프레임 끝에서 가끔 멈추는 현상 수정



[ 업데이트 가이드 ]


1. MMCSD.COM, MMCSD.OVL 두개 파일을 SD카드에 복사.

   기존 파일을 덮어쓰면 됩니다.(예:UTILS 디렉토리)


2. MMCSD.COM 프로그램을 실행 또는 MMCSD /U 실행


3. 'Update BIOS-ROM? [y/N]' 메시지가 나오면 Y키 누름.


4. 다운로드 완료 후 RETURN키 눌러서 재부팅.


5. 끝


2026년 2월 1일 일요일

SLT-Turbo - BIOS & Tool v2.11

Download: 20260201_SLT-Turbo_Tool_v211.zip

--------------------------------------------------

SLT-Turbo - BIOS & Tool

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------


- 변경 부분


  SLT-X에 장착된 FMPAC의 OPLL I/O Enable 추가

  -> 오리지널 Panasoft FMPAC만 해당됨



[ BIOS & Tool v2.11 ]


- BIOS 롬


  GT 모드 및 X2 모드 BIOS가 통합되어 있습니다.

  SLTT /U 명령으로 업데이트합니다.



- FontPack 폰트롬


  CP949 및 Unicode 폰트를 업데이트합니다.

  FontPack v2용 8MB 폰트롬을 사용하면 됩니다.

  예) SLTT FONTPACK.ROM



- 시스템 폰트롬


  KANJI_P.FNT  -> 파나소닉 Kanji 폰트

  KANJI_S.FNT  -> 소니 Kanji 폰트

  HANGUL_D.FNT -> 대우 한글/한자 폰트

  HANGUL_J.FNT -> 둥근모 한글 및 한자 폰트


  GT 모드용 Kanji 폰트(JIS1/2)를 업데이트합니다.

  예) SLTT KANJI_P.FNT /K


  X2 모드용 한글/한자 폰트를 업데이트합니다.

  예) SLTT HANGUL_J.FNT /H




[ 업데이트 가이드 ]


1. SLTT.COM, SLTT.OVL 두개 파일을 SD카드에 복사.

   기존 파일을 덮어쓰면 됩니다.(예:UTILS 디렉토리)


2. SLTT /U 실행


3. 'Update BIOS-ROM? [y/N]' 메시지가 나오면 Y키 누름.


4. 다운로드 완료 후 재부팅.


5. 끝



2026년 1월 31일 토요일

SLT-Turbo 제작 #19 - BIOS 및 폰트롬 업데이트

카트리지에는 8MB의 플래쉬롬이 들어 있습니다.


512KB = BIOS (GT + X2 + 기타)

256KB = GT Kanji 폰트

256KB = X2 한글/한자 폰트

2MB   = FontPack BIOS + CP949 폰트

5MB   = FontPack Unicode 폰트


각 영역은 SLT-Turbo 툴을 이용하여 다운로드합니다.


1) BIOS


SLTT /U 명령을 사용



2) GT Kanji


SLTT /K 명령을 사용

예) SLTT KANJI_P.FNT /K



취향에 따라 파나소닉, 소니 스타일에서 고르세요~



3) X2 한글/한자


SLTT /H 명령을 사용

예) SLTT HANGUL_J.FNT /H



취향에 따라 대우, 둥근모 스타일에서 고르세요~



4) FontPack


FontPack v2에서 생성한 8MB 롬을 사용합니다.

롬의 BIOS 및 CP949 Unicode 폰트 영역 7MB만 업뎃됩니다.


옵션없이 SLTT 명령을 사용

예) SLTT FONTPACK.ROM



SLT-Turbo - BIOS & Tool v2.10


Download: 20260131_SLT-Turbo_Tool_v210.zip


--------------------------------------------------

SLT-Turbo - BIOS & Tool

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------



[ BIOS & Tool v2.10 ]


- BIOS 롬


  GT 모드 및 X2 모드 BIOS가 통합되어 있습니다.

  SLTT /U 명령으로 업데이트합니다.



- FontPack 폰트롬


  CP949 및 Unicode 폰트를 업데이트합니다.

  FontPack v2용 8MB 폰트롬을 사용하면 됩니다.

  예) SLTT FONTPACK.ROM



- 시스템 폰트롬


  KANJI_P.FNT  -> 파나소닉 Kanji 폰트

  KANJI_S.FNT  -> 소니 Kanji 폰트

  HANGUL_D.FNT -> 대우 한글/한자 폰트

  HANGUL_J.FNT -> 둥근모 한글 및 한자 폰트


  GT 모드용 Kanji 폰트(JIS1/2)를 업데이트합니다.

  예) SLTT KANJI_P.FNT /K


  X2 모드용 한글/한자 폰트를 업데이트합니다.

  예) SLTT HANGUL_J.FNT /H




[ 업데이트 가이드 ]


1. SLTT.COM, SLTT.OVL 두개 파일을 SD카드에 복사.

   기존 파일을 덮어쓰면 됩니다.(예:UTILS 디렉토리)


2. SLTT /U 실행


3. 'Update BIOS-ROM? [y/N]' 메시지가 나오면 Y키 누름.


4. 다운로드 완료 후 재부팅.


5. 끝


2026년 1월 26일 월요일

MMC/SD Drive V3/V4 - BIOS & Tool v5.77

Download: 20260126_MMCSD_Drive_V3_V4_BIOS_Tool_v577.zip


--------------------------------------------------

MMC/SD Drive(tm) V3/V4 - BIOS & Tool

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------



[ BIOS & Tool v5.77 ]


- MegaRAM


  롬매퍼 디텍션 개선

  -> 자기중심파2



- GameRunner


  LED Visualizer 개선

  -> PSG 전용 모드(LED x9)에서 주파수 0일 때 OFF 처리



- Disk Driver


  SLT-Turbo 전용 명령어 지원



- FDD_EMU


  ONE-Drive OFF 모드에서 /T(turbo) 옵션 사용 가능


  ONE-Drive OFF 자동설정 추가

  -> Seed of Dragon, Ranma 1/2



- MV2 Player


  SLT-Turbo 전용 Movie Player

  -> Video 15fps, Audio MP3 128kbps (WAU 필요)



[ 업데이트 가이드 ]


1. MMCSD.COM, MMCSD.OVL 두개 파일을 SD카드에 복사.

   기존 파일을 덮어쓰면 됩니다.(예:UTILS 디렉토리)


2. MMCSD.COM 프로그램을 실행 또는 MMCSD /U 실행


3. 'Update BIOS-ROM? [y/N]' 메시지가 나오면 Y키 누름.


4. 다운로드 완료 후 RETURN키 눌러서 재부팅.


5. 끝


2026년 1월 25일 일요일

MoonSound 샘플램 2048KB 증설

제가 사용하는 MoonSound는 v2.1입니다.

샘플램을 위한 메모리 소켓이 2개가 있어서, SRAM 512KB 2개를 장착할 수 있어요.

램 1024KB로 쓸 수 있다는 얘기입니다.

대부분 OPL4 음악들은 샘플램을 128KB ~ 512KB 정도만 쓰고 있다는 게 함정입니다만...ㅋ


여기서 AS6C4008 2개 위에 병렬로 램 2개를 연결 후 22번핀(/CE)만 OPL4 칩에 따로 연결하면,

샘플램을 2048KB로 늘릴 수 있습니다.


최근에 CERIUM 뮤직 디스크를 받았더니 무려 샘플램 2048KB을 쓰는 곡들이 들어있네요 ㅎ.ㅎ

그래서 샘플램을 증설해보았어요.


CERIUM을 실행하면, CPU 모드와 OPL4의 샘플램 용량을 체크해줍니다.

아래는 SLT-Turbo + MoonSound 샘플램 1024KB 상태에서 실행한 모습입니다.



AS6C4008 램을 두개 겹쳐서 병렬로 납땜해보아요. 일명 거북이 납땜!

윗쪽에 올라가는 램의 22번핀(/CE)는 따로 연결해줍니다.

/CE 핀은 OPL4의 39번, 40번 핀에 하나씩 연결해주면 됩니다요.



램 4개를 장착한 모습입니다.



다시 CERIUM을 실행해보아요~

샘플램 2048KB가 제대로 인식되었습니다 ㅎ.ㅎ/



샘플램을 많이 먹는 음악도 잘 나오네요!



그럼, 이만~~

2026년 1월 24일 토요일

SLT-Turbo에서 Z80BENCH 프로그램 테스트

CPU 종류와 동작 스피드를 알려주는 프로그램(Z80BENCH)을 발견해서, SLT-Turbo로 테스트해봤습니다.

Z80BENCH는 아래 github에서 볼 수 있어요. 참고하시구요.

https://github.com/nataliapc/msx_z80bench



먼저 노말모드(3.58MHz)에서 실행한 모습입니다.


뭔가 이상한 걸 눈치채셨나요? ㅎ.ㅎ


CPU speed는 정상 3.57MHz로 표시되는데, CPU Type은 Z80이 아닌 R800으로 표시됩니다.

이건 Z80BENCH의 버그는 아니구요. SLT-Turbo의 CPU 특성 때문입니다.


아래는 프로그램의 CPU R800 디텍션 코드입니다.

R800을 체크할 때, 8bit 곱셈 명령어의 동작 유무를 봅니다.

SLT-Turbo의 CPU(Z80)가 R800 명령어도 실행되도록 만들진 탓에 그렇게 되었습니다요~



다음은 고속모드(16.5MHz)에서 동작 결과입니다.

고속모드에서 Z80 /M1 wait를 사용하지 않는데요.

이걸 통상의 Z80 3.58MHz 비율로 계산하면 Z80 18.97MHz가 되는 것으로 나오네요.



다음은 VDP 출력을 50Hz로 전환했을 때의 모습입니다.

CPU 속도 결과는 60Hz 때와 똑같이 나옵니다.



그럼, 불타는 토요일밤 되셔요~ ㅎ.ㅎ/


2026년 1월 20일 화요일

고대의 MMC/SD V2와 MMC 256MB

고대의 MMC/SD V2와 MMC 256MB


사진 찍으려고 서랍에서 꺼냈는데, 살아있는지 확인만 해봤습니다!ㅋㅋ


MMC/SD Drive V2.2와 MMC 256MB, SD 2GB 메모리의 모습입니다.

LG로고가 있는 MMC는 2004년 MMC Disk Interface (MMC/SD V1)을 개발하던 시절에 샀던 메모리 카드입니다요.

샌디스크 SD는 언제 구매했는지 기억이 안나네요. 아마 2007년 정도가 아닐까 생각됩니다 ㅎ.ㅎ



멀티롬에 알레스트 롬을 다운로드 해보아요~



멀티롬 메뉴로 진입!



잘 돌아가네요!



MMC 256MB 메모리에는 뭐가 들어있는지 볼까요? ㅎ.ㅎ



내용물을 보니, 20년 전에 쓰던 데이터는 아닌 것 같구요.

아마 최근(10년 전?)에 DOS1을 테스트 하느라, 다시 초기화해서 썼던 흔적입니다.


유령군님의 MMC 글을 보다가 갑자기 생각나서 고대의 기기를 꺼내봤습니다요.

그럼, 즐거운 밤 되세요! ㅎ.ㅎ/


2025년 12월 29일 월요일

SLT-Turbo v2.1 - 1차 제작 현황


메인보드는 거의 완성단계이구요. 슬롯 어댑터는 제작완료입니다.

수량이 많아서 시간이 꽤 걸리네욤.

별일 없다면 내년 1월 중순에 발송될 예정입니다 ㅎ.ㅎ/


그럼, 이만~~~


2025년 12월 19일 금요일

2025-12-06 송년회 잘 다녀왔어요~

지난 6일 토요일에 송년회가 있었습니다.

벌써 2주가 지났네요. 글 쓰는 걸 까먹고 있었...ㅋ


이번 모임은 오후 5시부터 시작이었습니다. (예전에는 3시에 시작이었죠)

2차 호프집에서 8시 45분쯤 작별 인사를 하고 나왔습니다.

파스타님과 HI-TECH C 코딩 얘기를 했던 것들이 조금 기억에 남았네요.


전체적으로 얘기 나눌 시간이 줄어서 조금 아쉬웠습니다요.

다음 모임을 기약하며...


2025년 11월 13일 목요일

FS-A1에서 잠깐 SLT-Turbo를 꽂아보았습니다

FS-A1에서 잠깐 SLT-Turbo를 꽂아보았습니다.


제가 예전엔 A1을 테스트용으로 많이 썼는데요.

요즘엔 X-II, 아이큐2000으로 테스트하다 보니, A1이 구석에 쳐박혀있었습니다요.


암튼 꺼내서 SLT-Turbo를 잠시 동작시켜보았습니다.

A1은 전원 개조외엔 순정 상태입니다. 노말램 64KB에 v9938 그대로 박혀있어요 ㅎ.ㅎ


내장 폰트팩의 한글 출력입니다.



프레이도 한번 돌려보구요.



곧 국민겜(?)이 될 환영도시(aka 웰컴시티)도 실행해보아요.



터보알 전용인 Pleasure Hearts도 실행 ㄱㄱ



마지막으로 MIDRY + SC-88 연주입니다.



당연한 소리겠지만...

v9958의 기능(자연화 모드, 가로 스크롤)을 쓰는 부분에서는 화면이 엉망이 됩니다요 ㅎ.ㅎㅋ


그럼, 이만~~


2025년 10월 18일 토요일

SLT-Turbo 제작 #18 - 기본 사용법


1) SLT-X 및 MIDI 케이블 연결


단자 위치를 확인하세요.




2) 기본 셋업


대부분의 MSX2 이상 기종들은 외부 슬롯 커넥터가 2개 있습니다.

IQ2000, X-II는 슬롯 커넥터 1개와 확장버스 커넥터(IDC 단자 모양)가 1개 있죠.


사용자 환경에 따라, 상단/전면 또는 후면 슬롯에 SLT-Turbo를 장착하면 되겠습니다.

아래는 A1WSX의 상단 슬롯에 장착한 모습입니다.



아래는 A1WSX의 후면 슬롯에 장착한 모습입니다.

상단 슬롯에 PAC-V를 꽂으면 딱 맞는 셋업이 되겠습니다!



아래는 X-II의 전면 슬롯에 장착한 모습입니다.

전면에 카트리지를 세로로 꽂을 수 있는 어댑터를 쓰셔도 좋겠습니다.



만약 IQ2000, X-II의 후면 슬롯에 연결하려면, 당연히 '확장버스 to 에지슬롯' 어댑터가 필요하겠습니다.

갖고 계신 분은 활용하시면 좋을 듯요! ㅎ.ㅎ



3) 최소 셋업


'나는 SLT-X도 없고 주변기기도 별로 없는데, 그냥 SLT-Turbo만 꽂아서 쓸 수 없나요?'

라고 생각하시는 분들을 위한 사용법입니다 ㅎ.ㅎ


SLT-X 대신 카트리지를 연결할 수 있는 어댑터가 제공됩니다.

이걸 MMC/SD V4에 꽂으세요! ㅎ.ㅎ



아래는 A1WSX의 후면 슬롯에 SLT-Turbo와 MMC/SD V4를 장착한 모습입니다.

MIDI 모듈이 있다면, 케이블을 함께 연결하면 되겠네요.

PAC-V를 상단 슬롯에 꽂으면 더 좋구요 ㅎ.ㅎ



이 상태에서 본체의 전원을 켜면, SLT-Turbo가 turboR GT로 부팅되는 걸 볼 수 있겠습니다.

그 다음은 뭐... 그냥 GT를 쓰는 것 처럼 사용하시면 되겠네요. ㅎ.ㅎ/


그럼, 다음편에서 보아요~


2025년 10월 16일 목요일

SLT-Turbo 제작 #17 - Z80 듀얼 프로세서

[서론]

제목이 살짝 낚시(ㅋ) 같습니다만... 으흠, 암튼 그렇습니다요 ㅎ.ㅎ


본체에 SLT-Turbo를 꽂으면, 본체의 Z80은 기본적으로 I/O 프로세서로 동작합니다.

실제로는 Z80 2개가 병렬로 동작하고 있지만, 사용자 입장에서는 CPU가 하나처럼 느껴지게 됩니다.


만약, 아예 작업을 나눠서 두개의 CPU로 구동할 수 있다면 어떨까요? 작업시간을 절반으로 낮출 수 있겠죠!


예를 들어 곱셈 구구단 표를 만들 때,

Z80 1번: 1단 ~ 5단 계산

Z80 2번: 6단 ~ 9단 계산

-> 이렇게 동시에 동작하는 걸 의미합니다.


물론 단순 계산작업이 아닌 주변기기 I/O가 포함된 작업이라면, I/O를 기준으로 CPU 코드를 나눠야겠지만요.



[본론]


그럼, 실전으로 넘어갑시다!

듀얼 CPU를 활용하는 동영상 플레이어를 만들어보아요~

이름은 MV2 player입니다!


기존 MV player의 경우,

초당 12프레임의 비디오 데이터를 SD카드에서 VRAM으로 전송하고,

VRAM 전송 중 틈틈이 오디오 데이터를 PCM으로 출력합니다.

SD카드는 커맨드를 보내고 응답받는데 걸리는 시간이 제각각이라서, 동작 시간도 계산해서 구현해야하죠.

코딩할 때 명령어 하나씩 사이클 계산해서 맞추느라 무쟈게 귀찮...ㅋ



MV2에서는 아래처럼 작업을 나눕니다.


SLT-Turbo:

 SD카드에서 데이터 읽기

 비디오 데이터를 공유버퍼로 전송

 MP3 데이터 출력(WAU 카트리지)


본체:

 공유버퍼의 비디오 데이터를 VRAM으로 전송

 키입력(ESC 키) 상태를 SLT-Turbo로 전달


본체의 Z80은 동작시간 대부분을 VRAM 전송하며 보내게 됩니다.

페이지 플리핑이나 팔레트 변경도 들어가겠지만, VRAM 데이터량에 비하면 '새발의 피'입니다요.


CPU가 단순 VRAM 전송만 해도 된다면, 최대 전송량은 얼마가 될지 계산해봐야겠죠?

OUTI 풀어쓰기로 VRAM 전송과 팔레트 설정을 할테니,

-> 1바이트 전송에 Z80 19클럭이 필요합니다. (MSX2+, turboR 기준)


SCREEN 2 풀스크린 256 x 192 화면에서 전송량

패턴테이블 = 6144 bytes

컬러테이블 = 6144 bytes

팔레트 = 30 bytes

-> 총 12318 bytes


초당 처리가능한 bytes 수를 계산해보면....

3579545clk / 19clk / 12318 = 15.29 frame/s

-> 초당 15프레임이 가능하다는 결론이 나옵니다.


15프레임은 디스플레이 60프레임 / 4로 나눠지니까, 페이지 플립을 해도 문제없으니 딱 좋네요 ㅎ.ㅎ



본체의 Z80에서 비디오 1프레임을 VRAM에 전송 후 CPU IDLE 타임을 표시해보면 아래처럼 나타납니다.

화면 아래쪽에서 스캔라인 테두리(BD) 영역이 녹색으로 보이는 부분이 CPU IDLE입니다.




SLT-Turbo쪽에서는 MMC/SD V4에서 MV2 데이터를 읽은 후 공유 버퍼에 저장합니다.

오디오는 직접 출력을 하는데요. 기존 MV 11kHz PCM에서 MV2 128kbps MP3로 바뀌었습니다.

I/O는 WAU 전용이니까, WAU가 없으면 무음으로 출력됩니다 ㅎ.ㅎ


설명이 길었네요. 그럼, 실제 동작 모습을 보시죠!




[결론]


예전 SLT-Turbo V1을 만들고 나서, 활용할 방법을 생각하느라 시간이 좀 걸렸습니다.

사실 SLT-Turbo V2도 애매한 포지션이라서 접었었구요.

결국 이 듀얼 CPU 활용 때문에 SLT-Turbo V2.1으로 진행이 되었습니다~ ㅎ.ㅎ/


그럼, 다음편에서 보아요~


2025년 10월 8일 수요일

SLT-Turbo 제작 #16 - Z80 확장명령

1) Z280 호환 명령


turboR 호환기를 만들기 위해서는 R800에 추가된 곱셈 명령도 구현이 필요합니다.

SLT-Turbo V1에서는 Z280을 활용했지만, 이번에는 그냥 CPLD의 도움으로 처리했어요.


Z80 명령어 ED C0 ~ ED FF, 총 64개 명령어 공간을 사용합니다.

오리지널 Z80에서 이 명령어를 쓰면 그냥 무시됩니다. NOP 명령을 2개 쓴 효과랑 같아요.


참고로, Z280의 경우는 이 영역 대부분이 확장 명령어로 들어 있습니다.

8bit 곱셈/나눗셈, 16bit 곱셈/나눗셈, signed/unsigned 다 있죠.


R800은 unsigned 8bit, 16bit 곱셈 명령어 중에서 극히 일부인 6개만 들어가는데요,

SLT-Turbo에서는 unsigned 곱셈 명령어 10개를 넣었습니다.


ED C1 ; MULUB  A,  B -> HL ; Z280/R800

ED C3 ; MULUW HL, BC -> DE:HL ; Z280/R800

ED C9 ; MULUB  A,  C -> HL ; Z280/R800

ED D1 ; MULUB  A,  D -> HL ; Z280/R800

ED D3 ; MULUW HL, DE -> DE:HL ; Z280

ED D9 ; MULUB  A,  E -> HL ; Z280/R800

ED E1 ; MULUB  A,  H -> HL ; Z280

ED E3 ; MULUW HL, HL -> DE:HL ; Z280

ED E9 ; MULUB  A,  L -> HL ; Z280

ED F3 ; MULUW HL, SP -> DE:HL ; Z280/R800


한가지 주의할 부분은 이 곱셈 명령어들의 결과 flag 처리는 넣지 않습니다요.

(사실 곱셈결과에 의미있는 flag가 없...ㅋ)

간단한 테스트 프로그램으로 곱셈 결과가 맞는지 확인해보아요~



그나저나, turboR이 나온지 거의 35년이 됐는데, R800 곱셈을 쓰는 상용프로그램이 없다는 게 참 신기하죠?

제가 만든 ASO remake가 유일한 R800 테스트 프로그램이라고 볼 수 있겠는데요.

지난번 동작하는 영상을 보셨을테니 ASO는 넘어갑니다~ ㅎ.ㅎ



2) X-II BIOS 확장


X-II의 BIOS는 롬영역을 다 쓰고 있어서, 추가 코드를 넣을 공간이 없습니다.

심지어 BIOS 엔트리까지 다 잡아먹고 있죠. (역시 내일이 없는 회사ㅋ)


CHGGPU(0180H), GETCPU(0183H) 루틴을 명령어 하나로 대체하도록 해봤습니다.

ED FE ; CHGCPU

ED FF ; GETCPU


원래 BIOS 엔트리는 JP NN 코드(3바이트)를 넣게 되어있는데,

확장 명령어가 2바이트니까 RET 명령까지 다 넣으면 딱 3바이트로 끝나게 됩니다.

아래처럼 되겠네요 ㅎ.ㅎ



음... 사실 굳이 이렇게 만들 필요는 없는데요.

예전 paraMSX-R과 MMC/SD V4에서는 BIOS롬을 뱅킹으로 처리해서 코드를 확장하긴 했었죠 ㅎ.ㅎ



3) 고속 LDIR


Z80에서는 LDIR, OTIR의 비중이 큰데요.

OTIR, OUTI 등의 경우는 주변장치의 속도(VDP 등)때문에 고속으로 최적화할 여지가 별로 없겠구요.

LDIR은 LDI x N개로 풀어(unroll)쓰는 걸 많이 사용합니다.

메모리 여유가 있다면 루프 명령을 쓰는 것 보다는 많이 빠르니까요.


물론 기존 디스크롬들은 이미 다 적용이 되어있죠.

지금 해보려는 건... 고속모드에서 더 빠르게 돌리기 위해 메인램에서 코드를 구동하는 것입니다.


요약하면, '외부 슬롯의 코드에서 LDI x N 풀어쓰기가 필요할 때 메인램에서 구동'입니다.


일단 2개의 명령어를 만들어봤어요.

ED CF ; LDIR

ED DF ; LDIR256


ED CF는 기존 LDIR과 똑같은 기능이지만 속도만 더 빠른 버전이구요.

실제로는 RAM에서 LDI x 32개로 풀어진 명령어로 최적화가 됩니다.


ED DF는 LDIR 수행 시 반복(루프)를 256 배수일 때 쓰면 더 빠른 버전입니다.

실제로는 RAM에서 LDI x 256개가 루프를 돌게 됩니다요.

보통 디스크에서 섹터를 읽게 되면 1섹터 512바이트씩 전송을 하니까 이 경우 꽤 쓸모가 있어요.


turboR에서는 MMC/SD V4로 DOSSCAN을 돌려보면 520~540KB/s 정도가 나오는데요.

SLT-Turbo + V4에서 구동하면 470KB/s 정도가 나옵니다.

이걸 LDIR 최적화 명령어를 이용하면 560KB/s 수준으로 빨라지게 됩니다.

아래 사진 참고하세요.




그럼, 다음편에서 보아요~


2025년 10월 3일 금요일

SLT-Turbo 제작 #15 - MIDI

GT의 미디 인터페이스를 구현하려면, UART Tx/Rx 및 i8253 타이머가 필요합니만...

SLT-Turbo에서는 출력용 필수기능만 넣어봅니다ㅋ


MIDI OUT (Tx) -> 포함

MIDI IN (Rx)  -> 제외

i8253 Counter 0 -> UART baudrate 고정

i8253 Counter 1 -> 제외

i8253 Counter 2 -> 포함

... 요렇게 되겠습니다.


문득 25년 전의 추억이 떠오르네요.

paraMSX에 turboR GT 에뮬을 넣을 때, 미디 H/W 정보가 없어서 걍 포기하고,

타이머를 안쓰는 WSX의 MusicROM을 넣어서 돌리고 그랬죠. 짭ST 느낌? ㅎ.ㅎ


암튼 SLT-Turbo에는 MIDI OUT 커넥터만 하나만 들어있으니, 좋아하시는 미디 모듈을 붙여주시면 되겠네요.

저는 SC-88VL과 mt32-pi를 연결해서 쓰고 있습니다.


미디는 더 설명이 필요없네요. 아래 영상으로 구경하세요~

MIDRY 플레이, 문라이트사가 오프닝은 SC-88VL의 사운드이구요,

뒤의 환영도시 오프닝은 mt32-pi의 사운드입니다. (mt32-pi가 좀 버벅거려서 음이 가끔 튀니까 참고하시고...)





그럼, 다음편에서 보아요~