2026년 10월 3일 토요일

21세기 MSX 활용 #11 - 확장슬롯

[서론]


이름은 익숙하지만 의외로 기능을 잘 못 알고 계시는 분들이 있으세요.

제대로 알고 계신다면 [본론]으로 건너뛰세요! ㅎ.ㅎ/


슬롯 한개를 여러개로 나눠주는 것으로 이해하시는 분들이 많더라구요.

'본체의 기본슬롯에 확장슬롯을 꽂으면 4개의 서브슬롯으로 나눠집니다'

이 설명을 오해하면 다음에 이런 질문도 하게 됩니다요.

'그럼, 확장슬롯에 확장슬롯을 꽂으면 슬롯이 팍팍 늘어나겠네요! 맞죠?' ㅎ.ㅎ


일단 잊으시고, 이렇게 생각해보세요.

MSX의 슬롯은 16개의 서브슬롯(SUB0,1,2,3)으로 구성되고, 4개씩 묶어서 기본슬롯 번호가 붙어있습니다.

이름은 SLOT 기본슬롯번호-서브슬롯번호 순으로 붙입니다.

SLOT 0-0, 0-1, ... 3-3 까지 16개가 존재하게 됩니다요.


만약 서브슬롯이 존재하지 않는다면, 기본슬롯 1개로 동작이 됩니다.

예를들어 기본슬롯인 SLOT 0가 있다면, 서브슬롯인 SLOT 0-0,0-1,0-2,0-3은 없다는 얘기입니다.


대부분의 본체에서 상단/전면에 노출된 슬롯 커넥터는 SLOT 1입니다.

두번째 노출된 슬롯은 보통 SLOT 2 또는 3이 됩니다.

SLOT 0는 BIOS 롬이 탑재되니까 본체에 내장됩니다.


원래 슬롯 배치는 본체 제작사가 맘대로 결정할 수 있지만, MSX2+부터는 비슷하게 정해져있습니다.

SLOT 0-0,0-1,0-2,0-3 -> 본체 내장

SLOT 1 -> 외부 노출 슬롯

SLOT 2 -> 외부 노출 슬롯

SLOT 3-0,3-1,3-2,3-3 -> 본체 내장


슬롯을 설명할 때 기본슬롯, 서브슬롯 순으로 설명하는 것이 정석이지만,

이번에는 반대로 설명을 해봤습니다. 


[본론]


확장슬롯 기기는 본체에 노출된 기본슬롯에 꽂아서, 기본슬롯을 서브슬롯 4개로 바꾸는 역할을 합니다.

서브슬롯이 생성되면 당연히 기본슬롯은 사라지게 됩니다.

SLOT 1에 확장슬롯을 꽂으면 SLOT 1은 없어지고, SLOT 1-0,1-1,1-2,1-3 이렇게 생성되겠죠?


서브슬롯 2개 또는 3개만 들어있는 제품도 있으니 참고하시구요.

A1GT처럼 전원부가 빵빵한 기종은 괜찮을 수 있지만,

대부분의 기종에서는 확장슬롯을 고를 때 외부 전원을 입력받는 제품을 추천합니다 ㅎ.ㅎ


확장슬롯 중에는 서브슬롯 4개 외 I/O 슬롯이 추가된 경우도 있는데요.

원래 MSX에서는 이런 I/O 슬롯은 표준이 아닙니다만...

I/O 포트만으로 동작되는 기기를 쓰거나, 카트리지 내의 S/W를 강제로 OFF하고 I/O 기능만 쓸 때도 사용할 수 있죠.

이런 확장슬롯을 쓰려면, 내가 어떤 의도로 사용하는지를 명확히 알고 있어야하겠습니다.


만약 주변기기가 많지 않다면, 일반적인 확장슬롯(4SLOT) 하나만 있으면 충분한데요.

상단/전면의 슬롯은 게임 카트리지 등을 잠깐 꽂는 용도로 비워두고,

후면 슬롯에 확장슬롯을 장착하고 주변기기들을 주르륵 꽂아두면 대부분의 사용 시나리오를 커버할 수 있겠습니다.

제가 예전에 서브슬롯 4개 + 본체개조 SLOT 0-1 + I/O 슬롯으로 구성된 확장슬롯(슬롯 커넥터 6개)을 이렇게 썼습니다.

본체의 상단 SLOT 1에는 SCC-I 카트리지를 꽂아서 쓰다가, 가끔 게임팩을 꽂을 때 SCC-I랑 맞교대를 했었죠 ㅎ.ㅎ


만약 본체의 기본슬롯 2개에 확장슬롯 2개 꽂아서 쓰면, 공간도 많이 차지하고 케이블 관리도 귀찮게 되는데요.

제가 지난 20년간 여러 종류의 확장슬롯을 만들어서 쓰다보니, 최종으로 결정된 방식은 SLT-X V2입니다.

SLT-X가 뭔지 모르시는 분은 아래 글을 참고하시면 되겠습니다.

https://sharksym.blogspot.com/2026/07/slt-x.html


두 슬롯의 예약핀인 16번과 /SLTSL 핀 4번을 서로 교차하도록 개조를 하면,

SLT-X는 케이블 하나만으로 2개의 기본슬롯 신호를 받게 되니까, 서브슬롯 8개로 동작하게 됩니다.


확장슬롯을 쓰다보면 가끔 난감한 경우가 발생하는데요.

서브 슬롯에 장착된 기기를 인식 못하는 S/W가 가끔 있습니다.

유저가 자작한 프로그램에서 종종 발생하구요. 대충 만든 상용 프로그램들에서도 발견됩니다.

또는 카트리지 내부에 확장슬롯이 포함되어 있어서, 확장슬롯에 꽂으면 제대로 못 쓰는 경우도 있죠.


SLT-X에서는 이런 경우를 잠깐 회피하기 위해,

서브슬롯 1개를 기본슬롯으로 전환하고, 나머지 서브슬롯 3개는 I/O 슬롯으로 동작하도록 만들 수 있습니다.

본체의 리셋 버튼을 눌러도 이 설정은 유지되기 때문에, 서브슬롯 인식 문제를 피할 때 유용하게 쓸 수 있어요.

전원을 완전히 OFF 후 다시 ON 하면, 설정이 초기화되어 일반 서브슬롯로 돌아갑니다.


SLT-Turbo v2.1을 쓸 때에도 SLT-X V2를 연결하면 같은 방식으로 사용가능합니다.

사실 SLT-X 만들 때, SLT-Turbo를 고려해서 단순한 구조를 맞추려다 보니 그렇게 되긴 했네요. 흐...


암튼, 확장슬롯은 본인의 사용 환경에 맞춰 구성하시면 되겠습니다.



그럼, 다음 편에서 이어집니다...


21세기 MSX 활용 #10 - 한글

40년전 MSX1,2에 내장된 한글은 N바이트, 2바이트 조합형 한글이었습니다.


80년대 후반부터 PC에서는 완성형 한글인 KS C 5601 (KS X 1001)가 쓰였고,

윈도95에서는 기존 완성형에서 빠진 한글을 채워넣은 CP949가 쓰였지요.

지금은 대부분 유니코드가 쓰이고 있습니다.

결국 이제 MSX에서 한글을 제대로 쓰려면 CP949, 유니코드를 지원하는 기기가 필요하다는 얘기겠죠?


MSX의 디스크의 최대 강점이라면, DOS의 FAT12, FAT16을 그대로 쓸 수 있다는 점인데요.

주변 기기의 도움을 받으면 LFN (Long Filename)에 쓰이는 UCS-2 (유니코드 BMP)도 쓸 수 있습니다.

윈도 SD카드의 폴더, 파일명을 한글로 길게 만들더라도, MSX에서도 똑같이 표시 가능합니다.


약간의 문제라면,

일본 내수 모델인 MSX2+, turboR에는 일어, 한자 입력기가 내장되어 있고,

DOS2에서 파일/폴더명의 마지막 문자가 ASCII 코드가 아니면 액세스 에러가 되는 경우가 생길 수 있습니다.

LFN을 쓰는 경우는 8.3 파일명의 끝이 ~1, ~2 등의 숫자로 끝나도록 바뀌므로, DOS2에서 문제가 생기지 않습니다.



한글을 활용할 때 필요한 주변기기로는 FontPack과 WAU 카트리지가 있습니다.


@ FontPack


FontPack의 ANSI 스크린은 64컬럼, 85컬럼을 지원합니다.

한글 폰트 사이즈는 16 x 16 및 12 x 12입니다.

한글/한자 입력기는 조합형, 완성형 모드를 지원합니다.

그 외 문자 코드 변환과 스크린 5,6,7용 컬러 데이터 출력 기능이 있어서, 빠른 처리가 가능합니다.

BASIC에서는 한글 출력 전용의 FNP: 디바이스가 추가되어있어서,

프로그램에서 일제 본체에서 기본 일어 출력(GRP:)과 한글 출력(FNP:)을 병행할 수 있습니다.

MSX2+,turboR 등에서 대우의 아이큐교실, X-II 튜터, 과일 데모 등의 예전 프로그램을 활용 가능합니다.


FontPack V2의 유니코드 폰트롬이 필요한 경우는,

M 파일매니저에서 LFN을 쓰거나, MP3의 ID3v2 tag를 사용할 때

HV (한글 뷰어)에서 유니코드 텍스트(UTF-16)를 처리할 때


SLT-Turbo v2.1에는 고속처리를 위해 FontPack V2가 내장되어 있으니,

외장형 FontPack 카트리지를 함께 사용하면 안됩니다!


@ WAU


80 x 25 터미널 모드 전용의 CP437, CP949 폰트롬이 들어있습니다.

한글 폰트 사이즈는 12 x 16이며, 스크린 5,7용 컬러 데이터 출력 기능이 있어서, 빠른 처리가 가능합니다.

WTERM의 뷰어 모드를 사용하면 텍스트문서를 보는 용도로 쓸 수 있습니다.



그럼, 다음 편에서 이어집니다...


2026년 10월 1일 목요일

21세기 MSX 활용 #9 - DSK 에뮬

DSK 에뮬은 디스크 이미지 파일(*.DSK)을 일반 디스크(2DD, HDD)처럼 구동하는 것을 의미합니다.


상용 디스크 게임들은 대부분 1DD, 2DD 등의 3.5인치 디스켓으로 출시가 되었죠.

이런 게임 S/W들의 특징이 하나 있는데요.

파일 단위의 데이터 액세스를 하는 것이 아니라 절대 섹터 단위로 테이터 액세스를 하는 경우가 많습니다요.

결국 대용량의 디스크가 있더라도, 이런 S/W를 복사해서 실행하는 것 자체가 불가능하다는 얘기입니다.


게임을 만드는 입장에서 FCB 등의 파일핸들을 쓰지 않고 섹터를 직접 R/W하면, 속도는 빠르겠죠.

데이터를 연속으로 저장해놓으면 당연히 액세스 효율도 좋겠죠.


결국, 대용량 디스크를 쓰면서 2DD 게임을 실행하려면, 디스크 이미지 파일을 이용하는 방법뿐입니다.

실제로 구현하는 방법은 여러가지가 있겠지만,

저는 멀티 파티션 방식과 DSK 파일 방식을 썼습니다.



@ 멀티 파티션 방식


주 작업 환경이 MSX-DOS인 경우 쓰기 쉽도록 만들어졌는데요.

대용량 디스크에 수천개의 2DD 파티션을 만들고, 각 게임 DSK 파일을 복사해서 리스트를 만들어둡니다.

이걸 드라이브 A:의 파티션을 교체하는 식으로 게임을 실행하도록 했었죠.

파티션 관리를 위한 DISKMAN 이라는 전용 프로그램을 사용합니다.


일반 작업용 부팅 파티션에서는 일반 프로그램으로는 2DD 저장용 파티션에 접근할 수가 없어요.

드라이브 리스트에는 보이지 않습니다.

파티션의 섹터들을 순서대로 나눈 거라서, 에뮬하는 S/W쪽에서는 굉장히 안전하게 쓸 수 있는 장점이 있죠.


이 방식은 MMC/SD V1, V2 시절에 쓰였습니다.

당시에는 램 64KB뿐인 기본 MSX2를 쓰는 분이 많아서, MSX-DOS를 기준으로 기기를 만들어야하는 숙제(!)가 있었지요.



@ DSK 파일 방식


여러분들이 MMC/SD V2를 수년간 쓰면서, MSX-DOS2의 편리함과 FAT16 대용량에 익숙해졌습니다.

그러면서 본체램 512KB 증설 개조도 유행했지요.

M 파일 매니저 같은 MSX-DOS2 전용 프로그램도 많이 쓰이게 되었구요.


DOS2의 서브디렉토리, FAT16의 대용량 드라이브가 있다면...?

DISKMAN으로 파티션 교체하는 방식 보다는, *.DSK 파일들을 디스크롬에서 직접 에뮬을 해주는 것이 편하겠더라구요.

사용자 입장에서는 SD카드를 윈도에 연결해서 파일,폴더를 관리하는 것도 훨씬 편하게 느껴지겠죠.

DSK 파일이 크니까 실기에서 직접 복사하는 것도 꽤 인내가 필요합니다ㅋ


DSK 파일 에뮬의 가장 큰 걸림돌은,

S/W에서 물리 섹터 R/W 요청이 왔을 때, 흩어진 클러스터에서 파일 연결을 찾고, 실제 섹터로 R/W 해주는 부분이 되겠습니다.

원래는 DOS에서 처리하는 작업이겠지만, 에뮬이니까 MMC/SD 디스크롬 내에서 처리를 해야겠죠.

암튼 그렇게 구현이 되어서 지금까지 십여년간 잘 쓰이고 있습니다요 ㅎ.ㅎ



@ 현재 MMC/SD V3, V4의 DSK 에뮬은 이렇게 지원되니 참고하세요.


- 1DD/2DD 디스크 이미지 최대 10장 (멀티디스크 전환 가능)

- HDD 이미지 최대 32MB (FAT12 기준)

- ONE-Drive 기능 지원 (본체에 내장된 FDD를 무력화)

- 디스크롬 전환 (DOS1 또는 DOS2)



그럼, 다음 편에서 이어집니다...