2026년 10월 3일 토요일

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)



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


HRA!의 MSXtR R800 고속모드 테스트

HRA! 아자씨가 FPGA MSX2++, MSXtR을 만들고 있다는 건 다들 아실텐데요.

어제 엑스에 MSXtR의 고속모드의 기본 타이밍을 확인한 글이 올라와서 긁어왔습니다 ㅎ.ㅎ

디스크롬을 끈 상태라서, BASIC에서 별도의 고속모드 전환 코드를 실행 후 테스트 코드를 돌렸군요.



참고로, 저의 GT에서 SHIFT키를 눌러 디스크롬을 해제하고 돌린 모습입니다.

BASIC 코드도 똑같이 타이핑했어요 ㅎ.ㅎ



아래는 SLT-Turbo에서 SLT-X를 끄고, SHIFT 눌러서 부팅 후 디스크롬을 해제한 상태입니다.



세 기기에서 결과가 비슷하게 나오네요.

사실, 이 테스트 에서는 CPU, RAM, ROM(BIOS), PPI, PSG, VDP I/O 정도만 사용되니까,

전체적인 turboR 타이밍 비교랑은 약간 거리가 있긴 합니다만...

제일 중요한 기본 회로의 타이밍 확인으로 볼 수 있습니다요 ㅎ.ㅎ