2009년 11월 12일 목요일

CPC-300 (IQ2000) 개조 - 플래쉬롬 조합

대우 IQ2000을 X-II 및 일제/필립스 MSX로 개조해보았습니다.

 

국산/일산/유럽산 등 MSX2는 내부 슬롯 세팅 외에, 기본적으로 MSX-BIOS 세팅에서 차이가 납니다.

- TV 영상 출력에 맞춘 VDP V-sync 50Hz/60Hz

   이 때문에 타이머 인터럽트 속도가 다른데, 유럽 MSX에서는 게임이 약간 느리게 구동되지요. ㅋ

- 각 나라별 키보드의 키 배열 및 문자 폰트. 

  참고로 대우는 일제 키보드와 같은 배열을 씁니다. 흔히 보는 미국식 배열이 아니고요.

 

여기서 대우 IQ2000는 내부에 3개의 EPROM이 들어있습니다.

MSX-BIOS ROM          : 슬롯 0-0

한글 BASIC                 : 슬롯 0-1

EXT-BIOS / 한글 BIOS : 슬롯 0-3

이 세개의 롬이 내부 확장된 슬롯0에서 동작합니다.

 

근본적으로 MSX에서 메인 BIOS만 슬롯 0-0에 있으면 되고, (일단 시스템 기동을 해야하니...불변입니다.)

나머지 확장 롬 또는 메모리는 아무 슬롯에 있어도 상관이 없는데요.

이것을 이용하면, 원래 슬롯 세팅이 다른 일본산/유럽산 MSX2으로도 개조할 수 있게 됩니다.

 

슬롯 세팅은 아래처럼 해보았습니다.




모델 하나 당 BIOS 롬이 128KB 필요한데요. (사실 슬롯 0-2는 램이라서 못쓰니까 96KB가 되겠네요.)

여기서 한글/KANJI BASIC은 Page1,2에 위치하도록 해야합니다.

실제 IQ2000의 EPROM 핀을 살펴보니, 이부분은 미러 롬이 되도록 (16KB 상하위를 반대로) 만들면 되겠더군요.

 

HW 구현은 간단하게 만들어졌습니다.

IQ2000의 보드상의 EPROM 3개를 뽑고 소켓의 위치를 맞춰보니,

일반 만능기판(2.54mm)이랑 같네요. 앗싸~ㅋ

핀헤더를 이용해서 기존 롬소켓 3개에 맞도록해주면 OK입니다.

 

남은 것은 512KB 플래쉬롬을 16등분해서 각 모델의 서브슬롯에 맞도록 매핑하는 것인데,

이건 EPROM의 /CE,/OE 신호를 A16,A15로 활용해서 간단하게 구현했습니다.

128KB씩 구분하는 부분은 외부에 스위치 2개를 조합하도록 했습니다.

플래쉬롬의 /CE, /OE를 위해 3인풋 AND TTL 칩하나만 쓰면 되는군요.

 

아래는 실제 IQ2000 보드에 꽂은 모습입니다.


세개의 롬 소켓이 보이는데,

왼쪽이 한글 BASIC, 가운데가 메인 BIOS, 오른쪽이 EXT 및 한글 BIOS입니다.




작업된 보드를 끼운 모습입니다.

대부분의 Addr/Data 라인은 가운데 소켓이랑 연결됩니다.




아래는 보드의 밑면이군요.

IQ2000 보드의 콘덴서랑 간섭되는 부분이 있어서, 모서리 부분을 조금 잘랐습니다.ㅋ




제작하는 것도 별로 힘들지 않고 재밌네요.

 

외부 스위치로 IQ2000, X-II, FS-A1F, VG-8240을 맘데로 선택할 수 있습니다.

특히 필립스의 유럽 모델은 VDP 출력 50Hz가 되니까, SW 테스트 할때도 요긴할 것 같네요.

 

물론 이걸로 끝나는 것은 아닙니다.

X-II와 일제 MSX2의 완성형 폰트 로직을 만들어야 하는데,

일단 각 폰트롬 256KB는 덤프되어 있으니, HW만 만들면 되겠네요.

이것도 외부 스위치로 한글 또는 한자 모드로 선택할 수 있도록 만들려고 합니다.

512KB 플래쉬롬이 하나 더 쓰이겠군요.


테스트해보니 X-II의 스크린9에서 한글/한자 폰트가 없으면, 그냥 내부 조합형 한글 출력으로 나오네요.

화면 가득히 박스만 나오려나 싶었는데, BIOS에서 롬체크를 하나봅니다.

에뮬에서도 테스트해보니 같은 결과네요. ㅎ.ㅎ

 

그럼, 다음 편을 기대해주세요.

2009년 10월 8일 목요일

paraMSX v0.50b에서 MMC/SD Drive 사용법

음... 제가 만드는 것들이 한가지 공통점이 있는데...

설명서가 부실하거나 없다는 것이지요. ㅎ.ㅎ;;;

 

이번에 paraMSX의 MMC/SD Drive 에뮬레이션을 이용해서,

메모리카드 초기화하고 YS1 게임을 하나 인스톨 해보는 가이드(?)를 만들어보았습니다.

 

스크린샷만 보셔도 이해하실수 있으리라 믿습니다. ㅋ

 

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

먼저 MMC/SD 바이오스 롬을 준비합니다.

여기서는 MMCDISK3.ROM을 MEGAROM 폴더에 넣어놓았습니다.

이름은 적당히 MMCDISK3_v4.00b4_2048KB.ROM라고 바꿨습니다.

 

paraMSX의 MMC/SD 에뮬레이션에서는 SD카드 1슬롯만 처리가능하고,

바이오스 파일명과 같은 명의 디스크 이미지(*.DSK)를 메모리카드 이미지로 사용합니다.

 

여기서 바이오스롬을 MMCDISK3_v4.00b4_2048KB.ROM 을 쓰기 때문에

메모리카드 이미지는 MMCDISK3_v4.00b4_2048KB.DSK 로 됩니다.

 

paraMSX의 시스템 메뉴에서 'MSX2+ FS-A1WSX.DAT'를 선택하면,

메인램 512KB로 설정되기 때문에 MSX-DOS2를 바로 쓸수 있습니다.

 

아래는 슬롯1에 MMC/SD 바이오스롬을 선택했고,

롬매퍼는 9 MMC/SD Drive (SCC)로 선택했습니다.

(다른 매퍼를 선택하면 제대로 동작하지 않습니다.)




[Power] 버튼을 눌러서 에뮬을 구동하면,

아래처럼 MMC/SD 부팅화면이 나타납니다.

(음... 바이오스 v4.01로 캡쳐됬네요. ㅎ.ㅎ;;)

아직은 메모리카드 이미지 파일(DSK)이 없기 때문에, 카드 초기화에 Fail이라고 나타납니다.




MMC/SD의 내장 플래쉬롬 디스크가 Drive A:로 매핑되어 부팅된 것을 볼수 있습니다.




여기서 INSTALL.COM을 실행하면 메모리카드 초기화를 하게 되며,

유저가 선택한 시스템 디스크 A/B도 함께 설정됩니다.

시스템 디스크 A,B는 MMC/SD에서 기본으로 설정되는 두개의 파티션을 의미합니다.

 

인스톨 중, 메모리 카드를 넣고 아무키를 누르라고 표시되는데,

그냥 아무키나 누르면 paraMSX 상에서 메모리 카드 이미지(DSK)파일을 자동으로 생성하게 됩니다.




전체 메모리카드 용량은 2GB로 선택되었고,

시스템 디스크 A,B는 각각 32MB로 선택했습니다.





인스톨이 종료된 후, Drive A,B를 DIR해본 모습입니다.

대부분의 프로그램은 B:\UTILS 폴더에 들어있습니다.

DOS2에서 PATH가 설정되기 때문에 유틸은 쉽게 실행가능합니다.




이제 본격적으로 YS1 게임 디스크를 MMC/SD로 옮겨보겠습니다.

아래 처럼 paraMSX의 디스크-A에 YS1.DSK를 선택했습니다.

여기서 디스크-A,B는 에뮬중인 시스템(현재 FS-A1WSX)의 내장 FDD를 의미합니다.

 

이 경우, MMC/SD가 MSX 드라이브 A,B,C,D를 처리하고 있으니까,

내장 FDD는 드라이브 E,F가 됩니다.

결국 드라이브 E에 YS1 디스크가 들어있는 셈이지요.




DISKMAN.COM을 실행하면 아래와 같은 화면이 나타납니다.

Root System 폴더에 이미 시스템 디스크-A,B 및 파티션 테이블이 들어있습니다.

 

일단 INS 키를 눌러서 Game 폴더를 하나 생성합니다.




'리턴'키를 누르면 해당 폴더로 들어가는데,

이번엔 Game폴더안에서 'YS I' 이라는 파일을 새로 만듭니다.

 

파일은 단지 파티션 이름으로만 의미가 있고, 실제 디스크 파티션은 파일 내에서 생성해야합니다.




YS I 파일에서 리턴키를 누르면 디스크 편집창이 나옵니다.

INS를 눌러서 새 디스크를 추가해봅니다.

 

현재 추가된 디스크가 하나도 없는 경우에는,

디스크 타입(용량)을 먼저 물어보게 됩니다.

대부분 플로피 디스크 게임은 2DD(720KB)니까 1번을 선택하면 되겠습니다.




추가될 디스크 이름을 입력합니다.

여기서는 그냥 Main이라고 입력했습니다.

(참고로 이름은, 최대 7자까지만 입력가능합니다.)




1번 디스크로 Main이 추가되었습니다.

[ 96 - 96] 숫자는 파티션의 블럭 위치를 의미합니다. 별로 중요한 건 아닙니다. ㅎ




1번 디스크에서, 리턴키를 누르면 디스크 Import 메뉴가 나오는데,

이미지 파일(DSK)를 사용할 것인지, 아니면 실제 FDD에서 읽을 것인지를 골라야합니다.

 

지금은 실제 FDD(드라이브 E)에서 복사해야 되니까, Import from FDD를 선택합니다.




드라이브 명(E)을 입력합니다




드라이브 E에서 섹터를 읽어 MMC/SD 메모리로 복사하는 모습입니다.




Import가 완료되면, ESC를 눌러 File 메뉴로 돌아갑니다.

여기서 F5를 누르면 아래처럼 디스크 부팅/선택 등의 메뉴가 나옵니다.

 

첫번째 Set disk & Boot disk를 선택하면,

현재 000.YS I 파일의 1번 디스크(Main)를 드라이브 A로 매핑한 후, 부팅시켜줍니다.

참고로, 세번째 메뉴는 드라이브 A로 매핑한후 DOS로 복귀합니다.




잠시 기다리면 YS1이 실행되는 것을 볼수 있습니다.