DAEWOO MSX DPC-200

대우 MSX DPC-200 수리 영상
1. 배송 중 부러진 내부 부품 수리
2. 이전 DPC-200 정비 때와 마찬가지로 PAL 방식의 제품을 NTSC로 변경
(VDP 교체, 비디오 인코더 수정, BIOS 교체)

OLYMPIA MSX DPC-200을 PAL용에서 NTSC용으로 개조하기

이번에 소개해드릴 것은 대우전자가 생산한 MSX, DPC-200입니다.
사실 대우전자의 MSX라고하면 DPC-200과 같은 모델명보다는 IQ-1000이라는 상품명이 먼저 떠오를지도 모릅니다. 아이큐 1000에는 DPC-100, DPC-180, DPC-200의 세 종류 상품이 있었고, DPC-200은 그중 가장 고급 제품의 모델명이었습니다.
(CPC-200도 존재하는데, 어찌된 것인지는 잘 모르겠습니다. 아마도 CORONA DATA SYSTEMS사의 제품 생산을 하다 소유주가 된 대우전자가 컴퓨터 부분 모델명을 통일하기 위해서 DPC를 버리고 CPC로 간 것일지도 모르겠습니다.)

출처 : NAVER 뉴스라이브러리

하지만, 익히 알고 계시는 그 대우 DPC-200을 소개해드리는 것은 아닙니다.

바로 OLYMPIA DPC-200입니다.

올림피아 베르케(Olympia-Werke, 이하 Olympia)는 20세기 초 독일의 타자기 회사로 출발해 1992년까지 이어졌던 컴퓨터 회사라고 합니다. 1980년대 Olympia는 대우전자에서 공급 받은 MSX를 유럽에 판매하였습니다.

그리고 이번 개조에 사용된 모델은 스페인 쪽에 판매되었던 모델입니다. 국내에서 발매한 DPC-200과 동급 모델으로, 모델명이 같기는 하지만 완전히 동일 모델은 아닙니다.
가장 큰 차이점은 일단 본체의 색상입니다. 외관 디자인은 동일하나 은색에서 검은색으로 바뀌었습니다. 그리고 키보드가 한글 키보드가 아닌 유럽용으로 바뀌었습니다. 또 BIOS는 유럽용 BIOS가 채용되었고, 결정적으로 유럽의 방송 방식인 PAL에 맞춰 VDP가 TMS9129로 변경되었습니다.

International 키보드 배열의 Olympia DPC-200
Japanese 키보드 배열을 따르는 대우 CPC-300의 한글 키보드. 기호의 배치가 다릅니다.

운좋게도, 이탈리아에서 eBay에 출품된 DPC-200 + DPQ-280세트를 구입했는데, 친절한 판매자가 플라이트스틱형 조이스틱까지 끼워줬습니다. 이탈리아에 판매된 모델은 Fenner DPC-200라고 하는데, 어째서 스페인 수출형이 이탈리아에서 건너왔는지는 모르겠습니다. =) 우리처럼 육로를 통한 국경이동이 제한적이지 않으니 쉽게 섞였을지도 모르겠네요. DPQ-280와 조이스틱 모두 대우전자가 수출했던 제품으로, 이것은 기회가 되면 다시 소개해드리기로 하겠습니다.

받자마자 고장났는지 아니면 동작하는지가 궁금해서 일단 NTSC방식의 TV에 연결해 보았습니다. 다음과 같이 방송방식이 안 맞아서 화면 상태는 엉망이지만 동작하는 것을 알 수 있었습니다.

물론, 캡쳐 보드 등을 이용해서 입력 신호를 PAL로 세팅하면 제대로 화면을 볼 수는 있습니다. 하지만, 유럽의 PAL 방식 MSX에는 치명적인 문제점이 있었으니, 60Hz인 NTSC 방식 MSX에 비교해서 50Hz인 PAL 방식의 MSX는 현저하게 동작이 느린 것입니다. 단지 화면 출력 방식만 차이가 났다면 적당히 PAL 신호를 받는 모니터에 연결해서 쓰면 되었겠지만 속도 자체가 느린 것은 반드시 해결해야만 하는 문제였습니다. (그러고 보면 유럽 사람들은 MSX 게임을 하면서 탄알이 날아오는 속도가 느렸겠군요. 이런 치트를! …. 생각해보면 내 기체의 움직임도 느려지긴 하겠지만요)

그럼 바로 개조에 들어갑니다.

전체 구조를 살펴보았는데, 본체 쪽에서 개조해야 할 부분은 딱 세 곳 정도로 보였습니다.
1. TMS9129를 TMS9128로 변경.
2. VIDEO UNIT의 X-TAL을 4.433619MHz에서 3.579545MHz로 변경
3. BIOS를 NTSC지역 용으로 세팅.

사실 막 공부를 해서 이것 저것 알기 시작하면 근거없는 자신감이 넘쳐 흐르고, 대충 머릿속에서는 이미 다 될 거 같은 착각에 빠지지 않겠습니까? 지금이 딱 그 상태라 개조 작업에 들어갑니다. (이미 머리 속은 꽃밭) 뭐 망치면 어떻습니까? 취미 생활인 것을. 그럼 더 공부해서 고치면 되겠죠. =)




1. TMS9129를 TMS9128로 변경.

TMS9129는 MSX의 비디오쪽을 담당하는 프로세서로, VDP(Video Display Processor)라 불립니다. NTSC 방식의 초기 MSX 제품들은 TMS9918이라는 VDP를 사용했습니다만, PAL버전에서는 TMS9929, 또는 TMS9129가 사용됩니다. 이 제품에는 TMS9129가 사용되었습니다. 아래는 방열판을 뜯어낸 후 드러난 VDP의 모습입니다.

TMS9918 제품군에는
NTSC용으로 TMS9918, TMS9928, TMS9118, TMS9128이 존재하며,
PAL용으로는 TMS9929, TMS9129가 있습니다.
약간의 번호 차이가 있는데, 이것은 VRAM을 어떤 구성으로 쓰느냐에 따라서 99xx시리즈와 91xx시리즈로 나뉘고, 또 Composite비디오 신호를 내는가, YPbPr신호를 내는가에 따라서 xx1x나 xx2x로 번호가 바뀝니다. 마지막으로 xxx8은 60Hz의 NTSC방송방식에 맞춰있고, xxx9는 50Hz의 PAL 방식에 맞춰져있습니다. 일부 핀 신호가 차이나고, 주변 회로 구성의 차이가 있을뿐 기본적으로 모두 MSX에서 VDP로 쓰일 수 있을 것입니다.

이 제품에는 TMS9129/TMS9128/TMS9118을 사용할 수 있다고 표기되어있습니다.

그래서 이 TMS9129를 뜯고 위의 제품군 중에서 TMS9128을 붙여주는 것으로 결정했습니다. TMS9118을 붙여주면 YPbPr 신호 대신 Composite 비디오 신호가 출력되므로 약간의 신호 보완만 해서 바로 출력 단자와 연결시켜주면 끝나겠지만, 가능한 메인보드의 수정은 줄이는 게 발생할 문제를 줄일 것으로 생각했습니다. 옆의 X-TAL은 VDP에 CLOCK신호를 공급해주는 녀석으로 10.738635MHz의 것이 사용되었고, 이것이 VDP 안에서 3분주되어 다시 나와서 Z80에 3.579545MHz의 클럭을 제공하게 되어있었습니다. 따라서 이 부분의 개조는 필요없습니다.

기왕 이리저리 뜯기 시작했으니 나중의 개조를 위해서 CPU도 소켓처리를 해주기로 합니다.

2. VIDEO UNIT의 X-TAL을 4.433619MHz에서 3.579545MHz로 변경

이제 VIDEO UNIT의 X-TAL을 변경해줍니다. VIDEO UNIT는 VDP에서 나온 YPbPr신호를 합쳐서 흔히 노란색 RCA단자로 출력되는 Composite 비디오 신호를 만들어주는 역할을 합니다. PAL용이므로 4.433619MHz짜리 X-TAL이 붙어있지만, NTSC용으로 개조했으므로 3.579545MHz 짜리로 바꿔주면 끝날 것입니다.
나중을 위해서 소켓 처리를 하고 일단 3.579545MHz짜리를 끼워 봅니다.

BIOS는 일단 그대로 두고 동작테스트를 해보기로 합니다.


이것으로 끝나야 할 것이었습니다.
화면은 흔들리거나 하는 것 없이 잘 나옵니다 하지만, 색이 제대로 나오지 않는 문제가 있었습니다.
실제로는 그것으로 끝날 것이 아니었단 이야기죠.

한참을 이 문제로 고민하고, VDP를 바꿔서 VIDEO UNIT를 빼버리고 직결해 버릴까 하는 등의 여러가지 개조 방법에 대해서 생각하던 중, 아는 분이 VIDEO UNIT에 사용된 LVA510 칩도 추가 변경 작업이 필요하다는 것을 알려줬습니다. 그래서 같은 비디오 인코더 칩이 사용된 YAMAHA의 CX-5M II 기종의 서비스 메뉴얼을 찾아보았습니다.

대우전자의 VIDEO UNIT와 1:1로 대응은 하지 않지만, PAL용 회로와 NTSC 회로의 차이는 알 수 있었습니다. 그에 맞춰 기판을 수정해줍니다.

다시 전원을 넣고 상태를 확인해 봅니다.

성공입니다.

3. BIOS를 NTSC지역 용으로 세팅.

이제 하드웨어 개조는 끝났으므로, BIOS를 바꿔줘야겠습니다.

MSX BIOS는 0x002B번지에 다음 정보를 기록하고 있습니다.
B0~B3 : Character Set ( 0 = Japanese, 1 = International, 2 = Korean )
B4~B6 : Date format ( 0 = Y-M-D, 1 = M-D-Y, 2 = D-M-Y )
B7 : Default interrupt frequency ( 0 = 60Hz, 1 = 50Hz )

다음 0x002C번지에는 다음 정보가 기록되어 있습니다.
B0~B3 : Keyboard type ( 0 = Japanese, 1 = International, 2 =French, 3 = UK, 4 = German )
B4~B7 : BASIC Version ( 0 = Japanese, 1 = International )

유럽용 BIOS를 헥사에디터에서 살펴보면, 다음과 같습니다.

0x002B : 91
0x002C : 11

16진수 91은 2진수 10010001입니다.
위의 조건에서 살펴보면,
1 = 50Hz
001 = M-D-Y
0001 = International Character Set
입니다.

마찬가지로 16진수 11은 2진수 00010001이며
0001 = International BASIC Version
0001 = Intenational Keyboard type
입니다.

이제 필요한 값으로 바꿔주기로 합니다.
0x002B번지의 값으로는 : 캐릭터 셋은 International, 날짜포맷은 Y-M-D, 인터럽트 주파수는 60Hz이므로 00000001입니다. 16진수로 하면 01입니다.
0x002C번지의 값으로는 : 키보드 타입은 International, BASIC도 International이므로 00010001입니다. 16진수로는 11로 바꿀 필요가 없습니다.
따라서, 0x002B번지값만 91에서 01로 바꿔주면 될 것입니다.

그렇게 수정하고 ROM을 굽습니다.

다 구워졌으면, 본체의 BIOS 롬을 뽑아내고 교체해줍니다.

그리고 다시 전원을 넣고 테스트.
대부분의 S/W가 잘 돌아가는 것으로 보였습니다.
완벽하게 NTSC용으로 바뀐 것 같았지만 실제로는 그렇지 않았습니다.

바로 BASIC에서 Play문으로 연주하면 속도에서 차이가 납니다.

도레미를 10번 반복했을 때 걸린 시간. 숫자가 적을 수록 빠름.

무엇이 문제일까?
한글 BIOS는 용량이 커서 메모리 어드레스 신호선 개조를 해야 장착할 수 있으므로 일본어 BIOS를 넣어보기로 합니다. 개조하는 것도 개조하는 것이지만, 한글 BIOS를 넣으면 옛날 추억은 살릴 수 있겠으나 일부 H/W, S/W 호환성을 포기해야만 하는 문제가 있습니다. (MSX2 버전업 카드 등이 동작하지 않습니다) 그리고 한글 S/W를 돌릴 것은 거의 없으므로 후보에서 제외되었습니다.

일본어 BIOS롬으로 바꾸고 여러가지 테스트를 해봅니다.

이런, Play문 문제가 없습니다. BIOS 어딘가에 딜레이 값을 따로 적어둔 모양입니다.

그러면 방법을 바꿔보기로 합니다.
유럽 BIOS에서 위의 값을 바꿀 게 아니라, 일본어 BIOS에서 위의 값을 바꿔주는 거죠.
하지만, 일본어 BIOS에 위의 값을 기록해도, 기대와는 다르게 제대로 동작하지 않습니다. 캐릭터 셋, 키보드 타입 모두 International로 지정했지만 의미 없습니다. 아무리 Intenational 캐릭터셋, 키보드 타입을 지정해도 기호 등이 일본어 키보드 배열로 입력됩니다.

그래서 BIOS의 내용을 살펴보기로 했습니다.

어머나 세상에. 그냥 나라 별로 하드 코딩 되어있었습니다.
다국어에 대한 정보를 가지고 있어서, 앞 부분에 정의 값을 써 놓으면 그에 따라 바뀔 줄 알았는데, 그렇지 않았습니다. 앞쪽의 정의 값은 외부 프로그램이 “참조”를 하는 용도일 뿐 실제로 모든 동작이 완벽하게 그 값에 따라 바뀌는 것은 아니었던 모양입니다. 아마도, 당시의 적고 비싼 메모리를 언제 쓸지도 모르는 그런 것에 낭비할 수 없었나 봅니다.
물론, 모두 무시되는 것은 아닙니다.
지역이 어디로 정의되어있는가에 따라서, 게임 타이틀 화면이 바뀌기도, DOS에서 날짜 표시의 순서가 바뀌기도 합니다.

한국어/일본어 BIOS에서는 夢大陸アドベンチャー라고 뜹니다.
마찬가지로 한국어/일본어 BIOS에서는 GRADIUS라고 뜹니다.

그래서, 일본어 BIOS에서 키보드 제어하는 부분을 International 사양에 맞춰 다시 써넣어 주기로 합니다. 폰트 등의 데이터는 일본 게임을 돌릴 것을 상정하고 일본어 폰트 데이터를 그대로 남겨두기로 합니다.
원래 정석대로 하자면 아주 힘든 작업이었을지도 모르지만, 이미 선행 자료가 있습니다. 저는 그것을 참고해서 조금만 바꿔주면 됩니다.

그래서 나와있는 지시를 따라 0x0DA5번지부터 여기저기 놓여있는 해당 코드 값 들을 지우고, International용(US용) BIOS에 맞춰 다시 써 넣어 줍니다. 어려운 작업은 아닙니다만, 눈이 빠지게 코드를 보고 그대로 입력해야 하는 단순 반복 작업입니다. 물론, 16진수 데이터를 입력해야하니까 혹시라도 잘못 입력하면 폭주해버릴 가능성이 있으므로 조심해야 합니다.

그렇게 몽땅 바꿔주다 보니 한글(Kana)키에 해당하는 부분의 동작이 애매해졌습니다. 원래 토글 방식이지만 영문 키보드처럼 동시에 누른 상태에서만 일본어를 입력할 수 있습니다. 물론, 폰트 데이터는 일본어지만 바꿔치기 한 BIOS는 영문 키보드에 맞춰 수정되었기 때문에 일본어 키보드 배열을 따라서 제대로 표시되지도 않습니다.

International 키보드 배열을 따르지만 폰트 구성은 일본어 BIOS를 따릅니다. =)

Graph키를 누르면 나오는 그래픽 문자도 국가 별 BIOS마다 그 양에 차이가 있어서 완벽하게 나오지는 않습니다. 또, 그 차이에 따라서 안 나오게 막아줘야 하는 것도 풀려 있으므로 키보드를 눌러도 안 나와야 할 문자가 찍히기도 합니다.

하지만, 이 컴퓨터는 철저하게 “소비형”으로 사용될 것이므로, 입력 작업의 문제점은 일단 뒤로 미뤄두고 여기까지 동작 시키는 것으로 만족하기로 합니다.

이제, 키보드는 International 규격, DOS등에서 날짜 표시는 Y-M-D로 나오게 되었습니다.

개조된 BIOS에서의 연월일 표시
유럽용 BIOS 상에서의 연월일 표시

또, 게임 등에서 내장 폰트는 일본어 폰트를 부르게 되었습니다. Play문도 속도가 제대로 나오고요.

이렇게 삽질을 끝내고서야 알았지만,
사실 이렇게 복잡하게 할 필요 없이 0x7754~0x7757번지의 값을 바꿔주면 Play문의 속도를 조절할 수 있었던 것이었습니다. Play문의 길이(Duration)를 60Hz모델에서는 60*120(Tempo Value)*4(Length Value)/2 = 14400, 50Hz모델에서는 50*120*4/2=12000 상수로 기록해 놓고 거기에 속도를 맞췄던 것입니다.

뭐, 0x7754~0x7757까지의 값을 40 00 45 14로 바꿔주면 60Hz용, 00 00 45 12로 바꿔주면 50Hz용이 되는 것입니다. 맨 처음 유럽 BIOS개조에서 0x002B번지와 여기만 손 봐주면 바로 60Hz에 대응이 되는 것이죠. 하지만, 위의 삽질 덕분에 일본어 폰트를 내장하고 입력은 International 레이아웃을 가진 MSX를 만들 수 있었습니다. =)

유럽용 BIOS라면 즉석 현지화(?)가 되었을 이런 게임이
제대로 표시됩니다. 물론, 아직 입력쪽은 문제가 있습니다만.

이것으로 개조는 1차 완료 되었습니다.

참, BIOS를 개조한 김에 조금만 장난을 쳐 봅니다. =)

혹시라도 시간이 남아 보완한다면, 한글(Kana)키에 해당하는 Code키를 눌렀을 때 토글 모드로 일본어 입력 모드로 전환되게 할 것, 이때는 일본어 키보드 레이아웃을 따르고, 그래픽 문자에서 유럽 쪽에서 빠진 부분은 막아서 안 나오게 할 것이 있습니다.

하지만, 어지간해서는 그 작업에 손을 댈 거 같진 않고 이대로 쓰지 않을까 싶습니다. =)

차라리 VDP쪽을 들어내고, V9938또는 V9958과 VRAM을 바꿔 끼우고 RTC를 추가하고, BIOS 쪽 ROM에 연결된 어드레스 선을 확장하고, 메모리를 증설하고, 이리저리 부가 회로를 추가해서 MSX2로 개조하는 작업에 들어가는 것이 나을지도 모르겠습니다. =)

마지막으로 국내 MSX에서 처음으로 한글이 뜨는 롬 카트리지 게임으로 추정되는 EGG->병아리 실행화면을 첨부했습니다. 병아리에 대해서는 기회가 되면 좀 더 자세하게 다뤄보도록 하겠습니다.


그럼 또 다른 새로운 낡은 것으로 찾아뵙겠습니다. =)