sharksym's MSX World

sharksym.egloos.com

포토로그


구글 애드센스 (블로그 기본)


paraMSX-R 제작 #9 - 폰트롬 I/O 구현 by sharksym


대부분의 MSX2 이상의 본체에는 16x16 사이즈의 폰트롬이 내장되어있습니다.
일제 기종은 JIS1 128KB 일어/한자 폰트가 들어있구요. (FS-A1 등의 저가 모델은 없어요 ㅎ.ㅎ)
2+, turboR 기종에는 JIS2 128KB가 추가되어있습니다. 합하면 256KB 사이즈가 되겠네요.
12x12 또는 24x24 폰트도 함께 들어있는 경우도 있다고 합니다. (안써봐서 자세히는 모릅니다요~)

국내 기종은 유일하게 X-II 시리즈(CPC-400/400S)에 256KB의 한글/한자 폰트가 들어있습니다.

만약 본체에 폰트롬이 없는 경우는 한자롬 카트리지를 꽂으면, Kanji 드라이버, 폰트 등을 쓸 수 있는걸로 알고 있어요.
제가 만든 FontPack을 쓰면 1.5MB 사이즈의 대용량 폰트를 쓸 수도 있구요. ㅎ.ㅎㅋ

그러면 여기서 한가지 의문이 생깁니다.
이런 폰트롬이 내장되어 있으면 이걸 제거하거나 다른 폰트롬으로 교체하려면 어떻게 해야되나요?

롬을 뽑아서 교체? 사실 그냥 롬만 바꾸는건 의미가 없습니다.
각각의 폰트 처리용 H/W가 조금씩 다르거든요.
물론 내장된 폰트의 모양만 바꾼다면, 롬만 새로 구워서 교체해도 되긴합니다.

이 문제는 폰트롬뿐만 아니라, 수퍼임포즈, RS-232C 등의 기기가 내장되는 경우에도 발생하는데요.
사실은...ㅋ
MSX가 내장 기기를 H/W OFF하고, 외장 기기가 구동될 수 있도록 만들어져있습니다.

바로 포트 F5H에 들어간 System control 레지스터입니다.




MSX의 메인 BIOS가 부팅 할때 이런식으로 진행이 됩니다.
1. 내장 기기를 모두 OFF
2. 외장 기기가 존재하는지 체크
3. 외장 기기가 없으면, 내장 기기를 ON

간단하죠? ㅎ.ㅎ

오~~ 그럼 paraMSX-R에서 폰트롬 구현할 때, F5H 포트로 내장 폰트 꺼버리면 OK 겠군~ 유후~~

.
.
.
.
아름답게 해피엔딩이 될 것 같았지만, 실제 구현해보니 눈물만...ㅜ.ㅜ


암튼 본론으로 들어갑니다!!

System control 포트(F5H)로 내장 기기를 끌 수 있는지, 먼저 확인을 해야겠죠?

1. 제가 주력으로 쓰는 A1GT -> JIS1/2 끄니까 한자안나오네요. 잘 동작합니다.

2. A1WSX -> JIS1/2 역시나 잘 되네요. 아마 MSX2+ 이후 기종들은 정상 지원되지 않을까 싶으네요.

3. OCM -> 안됩니다. VHDL 소스를 대충 뒤져봐도 구현 자체가 안된 것 같네요.

4. X-II 실제 테스트는 못해봤지만, 매뉴얼 상으로 봤을 때는 안될 확률이 높은 것 같네요.


X-II 매뉴얼에 보면 F5H 포트는 언급이 안되어있네요. 그냥 예약된 포트라고만 되어있습니다.
수퍼임포즈의 F7H 포트는 자세하게 설명이 된걸로 봤을 때, 아마 F5H는 안넣었을 확률이 높아요.
작동되는(?) X-II 가지신 분 있으시면 한번 테스트해보셔요.

BASIC에서 OUT &HF5,&HFC 입력하면 폰트롬 I/O가 OFF됩니다.
이 상태에서 SCREEN 9:WIDTH 64 하셔서 명조체 한글이 나오는지 보시면 되겠습니다.
만약 X-II에서 F5H 포트 컨트롤이 된다면, Kanji롬 카트리지를 꽂으면 내장한글을 죽일 수 있을겁니다요. ㅎ.ㅎ

참... blueMSX 등의 에뮬에서는 F5H 지원이 안되니 테스트해보지 마셔요.
에뮬에서는 부팅하면 Kanji 롬 등의 H/W는 내장이 아닌, 외장 기기로 인식됩니다.
그래도 동작에는 문제없으니까, 일반 사용의 경우는 별 차이없다고 보면 됩니다.


으흠... OCM이랑 X-II를 포기하는게 좋을지 잠시 고민하면서~~ㅋ
일단 paraMSX-R에서 폰트롬 I/O를 넣고 제 A1GT에서 테스트해보기로 합니다.

CPLD는 제대로 구현한 것 같은데, 이거 뭔가 동작이 안되네요. -_-
한참을 삽질하다가 혹시나해서 A1WSX에 꽂아봤더니, 그냥 돌아갑니다. 어허허허~~~

내 GT가 보드 불량이려나...
JIS1/2 폰트를 끄는건 되는데, 외장 폰트 데이터가 전혀 읽히지 않습니다.
포트 값들이 죄다 FFH로 들어오네요.

설마설마... 하는 마음으로 회로도를 봤더니 -_-;;;;;;;;;
A1GT에 뭔가가 들어있습니다. 웃기는게 A1ST에는 없구요. 아마 ST에서는 정상 동작할걸로 예상됩니다.
그게 뭐냐면 폰트롬 I/O로 쓰이는 DxH 포트가 회로적으로 막혀있네요~ 으잉!!

아래 사진을 보시죠.
외부 슬롯의 /IORQ 출력 조건에 DxH 포트는 제외가 되어있습니다.
ST는 이 회로가 없는데요. 아마 회로 버그가 GT에서 임시로 막아놓은게 아닐까 싶습니다.
외부 폰트롬 충돌 문제이거나 뭐 그렇겠죠.



파나소닉 이놈들 ㅜ.ㅜ 잊지않겠다! (까지는 아니고, GT 만들어주셔서 감사~ ㅎ)
GT에서는 폰트쪽을 업그레이드 기기로 쓸 수가 없네요.
GT가 안되면 말짱 꽝~ ㅋ

어차피 OCM, X-II도 안되는데 걍 다른 방법으로 구현하기로 합니다.

paraMSX-R의 사실상 주 기능은, Z80 명령어를 가로채서 바꾸는 기능인데요.
이게 구현이 되어서, PPI, 메모리매퍼 등의 포트를 다르게 구동하고 있죠.

JIS1/2, 한글/한자 폰트롬은 포트 D8H,D9H,DAH,DBH 4개 포트를 사용합니다.
이걸 paraMSX-R의 다른 포트로 구현해서 바꿔치기하면 동작이 되겠죠?

플래쉬롬 여유가 많기 때문에,
JIS1/2 폰트 3종류랑 X-II의 한글/한자 폰트 다 넣었습니다.
256KB x 4셋 다 넣어도 1024KB 밖에 안됩니다요. ㅎ.ㅎ
JIS1/2는 메이저 제작사인 파나소닉,소니,산요 정도로 넣으면 좋구요.

그럼, 동작하는 모습을 한번 볼까요?

Kanji는 이제 지겨울테니, X-II 한글/한자를 띄워봅니다.
테스트 프로그램을 만든건 아니구요. 그냥 대우 데모 디스크를 실행해봤습니다. ㅎ.ㅎ
명조체 한글과 한자가 잘 보이시죠?



삽질을 꽤 했지만, 의지의 한국인! 결국 다 때려넣었습니다. 해피엔딩~ㅎ

마지막으로 제 GT에서 동작하는 모습을 영상으로 담았습니다.
대우 데모 프로그램은 GT의 내장 FDD에서 실행됩니다. 참고하셔요.



그럼, 즐거운 주말되세요~ ㅎ.ㅎ





CCL

크리에이티브 커먼즈 라이선스
Yeongman Seo에 의해 작성된 저작물은, 별도의 라이선스 조건이 없는 경우 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

MSX rating & email

ClusterMaps

구글 애드센스 (세로 큰직사각형)

통계 위젯 (화이트)

3543
187
114385

이 이글루를 링크한 사람 (화이트)

19