레이블이 _paraMSX-R인 게시물을 표시합니다. 모든 게시물 표시
레이블이 _paraMSX-R인 게시물을 표시합니다. 모든 게시물 표시

2024년 4월 12일 금요일

paraMSX-R 제작 #17 - 소소한 리뉴얼

paraMSX-R이 나온지 벌써 7년이 됐네요 ㅎ.ㅎ

살짝 리뉴얼 들어갑니다~


케이스 -> 검정색 반투명

레이블 -> 무광코팅

으로 변경되었습니다.

제가 작년부터 레이블 스티커를 '무광코팅 유포지'으로 바꿨는데, 요게 맘에 들더라구요 ㅎ.ㅎ

(반짝반짝~ 유광코팅을 좋아하셨던 분께는 위로의 말씀을...)




에뮬 모드 및 롬디스크 드라이브 동작 표시는 녹색 LED로 변경됩니다.

MMC/SD V4의 머신 에뮬(GameRunner II) 표시와 같은색입니다. LED 위치도 똑같아요!




Memory Mapper 모드 전용 LED가 추가되었습니다.

SLT-X 등의 확장슬롯에서 쓰는 분들이 꽤 있으신 걸로 알고 있는데요.

메모리매퍼 2MB로 활용하실 때 동작 LED가 혼동되지 않도록, 파란색 LED를 따로 넣었습니다.




그 외, 내부 기능은 그대로입니다. 사용법도 동일하구요.

회로가 바뀐 것 때문에 디바이스 버전은 1.2로 표시가 됩니다. 기존은 1.1이었어요.




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


2024년 4월 9일 화요일

paraMSX-R Tool v1.06

 


Download: paraMSX-R_Tool_v1.06_20240409.zip


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

paraMSX-R(tm) Tools v1.06

    By Yeongman Seo <sharksym@hitel.net>

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



* 변경 내용


- paraMSX-R v1.2 카트리지 지원 추가



[ 툴 및 롬 업데이트 가이드 ]


1. PARAMSX.COM, PARATOOL.COM, PARAMSX.ROM 및

   PARAMACH.ROM 네개 파일을 디렉토리에 복사

   (기존 파일을 덮어쓰면 됩니다)


2. MSX-DOS 상에서 BIOS롬 다운로드

   A:\>PARATOOL PARAMSX.ROM


3. MSX-DOS 상에서 머신데이터 다운로드

   A:\>PARATOOL PARAMACH.ROM


4. 다운로드 완료 후 재부팅


5. 끝

2021년 3월 23일 화요일

paraMSX-R - 재미나 메가램 용 카세트 로딩

테입 로더 중에서 화면에 로딩상태를 보여주는 것이 있는데요.

앞으로 남은 데이터를 바이트 수로 표시해주는 방식이었습니다.

숫자가 줄어들면 어린이의 가슴도 점점 콩닥콩닥 뛰는 기분이 들었지요ㅋㅋ


제가 갖고 있던 보람 소프트의 16KB/32KB 게임들은 모두 이런 카운터가 있었습니다.

근데 고딩 때 다~ 갖다버리고 남은게 하나도 없네요ㅋ

.

.

.

그러던 어느날,

리꿈샘님께서 갖고 계신 테입을 WAV 파일로 저장해서 보내주셨습니다! ㅎ.ㅎ/

32KB 게임 몇개와 메가롬 게임인 '에일리언'의 녹음 파일이네요.


WAV 파일을 조금 수정해서 돌려보았습니다.

무음 부분의 화이트 노이즈를 삭제하고, 레벨이 불안 부분은 좀 키워줬어요.

그리고, 리모트 단자가 없는 오디오 플레이어를 위해,

각 데이터 구간 사이에 무음을 몇 초 삽입해줬습니다.

프로그램이 실행할 때 로딩 시작 딜레이 시간을 벌어야하니까요~ ㅎ.ㅎ



그럼 실기에서 로딩을 한번 해보아요~


사용된 본체는 FS-A1입니다. (개조안된 순정입니다)

paraMSX-R을 이용해서 아이큐 1000 머신설정으로 구동합니다.

물론 슬롯1에는 재미나 디럭스박스 4메가로 설정해놨지요~





WAV 파일은 flac 무손실 인코딩으로 폰으로 재생합니다.

오래된 노트2를 사용했어요. 기본 뮤직앱으로 ㄱㄱ~


BASIC 로더가 실행된 모습이네요.





롬 데이터가 로딩될 때는 이렇게 카운트다운이 표시됩니다.

페이지 번호도 8,7 ... 1 내려가구요.





로딩이 끝나면 소프트리셋 후 게임이 실행됩니다.

잘 되네요! ㅎ.ㅎ





영상으로도 찍어 보았으니, 메가롬 테입로딩을 안해보셨으면 한번 구경하셔요.

로딩이 길어서 중간 15분은 편집으로 잘랐습니다ㅋ





리꿈샘님 파일 감사합니다!

즐거운 MSX 하셔요~ ㅎ.ㅎ


2020년 8월 22일 토요일

paraMSX-R에서 산요 PHC-70FD 데모 디스크 구동

오랜만의 paraMSX-R 사용기입니다~


FDD가 내장된 MSX 본체를 구매하면, 대게 MSX-DOS 및 각종 유틸리티, 데모 등이 포함된 디스켓이 들어있습니다.

번들 프로그램 중에는 해당 기종에서만 실행이 가능한 것들도 있는데요.

Sanyo PHC-70FD 데모 디스크의 경우가 그렇습니다.


아래는 저의 GT에서 실행한 모습입니다.

PHC-70FD의 데모 소프트라고 나오네요. (일알못이라 나머지는 pass)




그럼, paraMSX-R 카트리지의 PHC-70FD 머신에뮬로 구동하면 어떨까요?

2DD 디스켓으로 느린 로딩을 감상해도 되겠지만, 귀찮으니 그냥 V4의 DSK 에뮬을 씁시다~ ㅎ.ㅎ


데모디스크는 자료실에 DSK 이미지파일이 있으니, 그걸 그대로 쓰면 되겠네요.

파일명은 PHC70FD.DSK입니다.



먼저 약간의 준비과정이 필요한데요.

예전 2DD로 구동되는 대부분의 프로그램들이 드라이브 A:로 부팅해서 자동실행되는 구조로 되어있습니다.

FDD가 비싼시절이었으니, 드라이브가 여러개인 환경을 고려할 필요가 없긴 했네요...


그럼 데모 디스크는 V4의 DSK에뮬로 구동하면 되는데,

paraMSX-R의 런처 프로그램(PARAMSX.COM)은 어떻게 실행하면 될까요?


MMC/SD는 여러장의 DSK 이미지를 에뮬할 수 있습니다.

그러니까 PARAMSX.COM를 실행하기 위한 DSK이미지와 데모 디스크 용 DSK를 함께 로딩하면 되겠네요.

DSK파일이 두개뿐이니 둘 중 하나를 USR 디스크(유저디스크)로 설정하거나,

그냥 DSK파일을 합쳐서 하나로 만들면 되겠습니다.


이번에는 DSK파일을 하나로 합쳐서 실행했어요.

윈도의 프롬프트에서 아래처럼 COPY 명령을 쓰면 파일을 하나로 만들 수 있습니다.

COPY /B PARAMSXR.DSK + PHC70FD.DSK PARA70FD.DSK


합쳐진 PARA70FD.DSK를 V4로 실행하면, paraMSX-R 런처(PARAMSX.COM)가 담긴 1번 디스크로 부팅되겠죠?

그럼 런처를 실행 후 V4의 DSK를 2번 디스크(PHC70FD 데모)로 변경하면 되겠습니다.


아래처럼 산요 기종으로 설정된 상태에서 잘 실행되네요!





영상으로도 한번 찍어보았어요.

데모 디스크의 1번 메뉴(자연화 사진 스크롤)과 3번 메뉴(BASIC 컴파일러 데모)의 동작모습입니다.





즐거운 주말되셔요~ ㅎ.ㅎ


2019년 5월 30일 목요일

paraMSX-R Tool v1.05 and User's machine files

Download: paraMSX-R_Tool105a_UserMachine_20190530.zip

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

paraMSX-R(tm) Tools v1.05

    By Yeongman Seo <sharksym@hitel.net>

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



* 변경 내용


- 카세트 동작오류 수정


- 사용자 머신 데이터도 릴리스파일에 포함



[ 툴 및 롬 업데이트 가이드 ]


1. PARAMSX.COM, PARATOOL.COM, PARAMSX.ROM 및

   PARAMACH.ROM 네개 파일을 디렉토리에 복사

   (기존 파일을 덮어쓰면 됩니다)


2. MSX-DOS 상에서 BIOS롬 다운로드

   A:\>PARATOOL PARAMSX.ROM


3. MSX-DOS 상에서 머신데이터 다운로드

   A:\>PARATOOL PARAMACH.ROM


4. 다운로드 완료 후 재부팅


5. 끝

2018년 7월 1일 일요일

paraMSX-R 제작 #16 - 메모리 슬롯 설정

30년 전에 MSX를 쓰셨던 분들은 이걸 기억하실텐데요.

"MSX1은 메모리가 슬롯2에 있고, MSX2는 메모리가 슬롯0-2에 있다"

물론 국산 기종에 한정된 내용입니다. 아이큐1000, X-II 등등


그 시절에는 확장슬롯이나 외장 메모리매퍼를 쓰는 사용자가 (거의) 없으니,

프로그램 만들 때, 메인 메모리의 위치를 확인할 필요성이 없었습니다.

메인 BIOS의 MSX 버전만 확인해서, 이게 MSX1인지 MSX2인지 정도만 알면 땡이었어요.

파워업테크닉 책에도 슬롯 설명할 때 비슷한 내용이 나옵니다.


일제 MSX 기종은 메모리가 대부분 슬롯3-0에 있어요.

OEM으로 들어간 유럽쪽 필립스 기종도 마찬가지이구요.

그 때문에 유럽쪽 SW에서 메모리 슬롯을 변경할 때, FFFFH 번지를 그냥 써버리곤합니다.

아이큐2000 에서 하던거랑 비슷하죠ㅋ



그럼, 여기 paraMSX-R 글에서 메모리 얘기를 왜 하는지 궁금하실텐데요.

1주일 전에 paraMSX-R + 재미나 메가램을 테스트하느라, 메탈기어2를 한번 실행해본적이 있었어요.

아래 글에 보시면, 실행이 잘 안된다는 내용이 있어요. 아마 기억하시는 분 있으시죠?

https://cafe.naver.com/msx/1791


저도 이게 갑자기 생각나서 paraMSX-R로 테스트를 해봤는데...

어?? 그냥 잘 실행이 되더라구요.

아이큐2000(CPC-300) 에뮬 모드에서 MMC/SD V3의 DOS2로 로더를 실행했는데, 별 문제 없었습니다.

그래서 번쩍 머리에 떠오른 생각!

요즘 실기를 쓰는 분들 중 DOS2 활용을 위해, 메모리매퍼를 대용량으로 쓰는 경우가 많잖아요?

특히 국산 MSX2의 경우는 내부 슬롯0-2의 메모리를 확장하는게 힘이드니,

대개 확장슬롯 + 메모리매퍼 카트리지를 쓰게 됩니다.


재미나 메가램 용 메탈기어2가 실행안되는 이유도, 결국 메인 메모리 슬롯 문제인 것 같더라구요.

그래서 paraMSX-R로 테스트를 해봤습니다.


아래 3가지 설정에서 메탈기어2 로더를 테스트합니다.

1. CPC-300 모드 (DOS2 부팅을 위해 램512KB로 설정)

2. CPC-300 모드 (램을 슬롯0-2에서 슬롯2로 변경)

3. FS-A1F  모드 (램을 슬롯3-0에서 슬롯0-2로 변경)


아래 사진처럼 FS-A1F 모드에서도 메인메모리를 슬롯0-2에 놓으면, 로더가 정상 동작하더라구요.




결국, 실기 아이큐2000(내장램 128KB 슬롯0-2)에 외장 메모리매퍼(256KB 이상)를 꽂게되면...

메인 메모리로 쓰이는 슬롯이 변경되어 로더가 죽는 문제가 발생하게 됩니다.


그럼, 영상을 보시죠~





즐거운 주말되셔요~ ㅎ.ㅎ


2017년 12월 11일 월요일

paraMSX-R 제작 #15 - 사용자 머신 로딩

기본적으로 paraMSX-R에서 사용되는 머신 데이터는 미리 플래쉬롬에 다운로드되어야합니다.

만약 플래쉬롬에 내장되지 않은 머신을 사용하고 싶으면 어떻게 해야할까요?


이걸 어떤 방식으로 만드는게 가장 효과적일지 생각해보았습니다. (6개월 전에요 ㅋ)

결론부터 얘기하면, 머신 데이터 영역을 램으로 구성하는 방식이죠.

머신 데이터는 PARAMSX.COM 실행할 때 함께 로딩을 하구요.


처음 paraMSX-R 설계할 때, 메모리 매퍼를 1024KB까지 지원하도록 했는데요.

512KB만 메모리 매퍼로 쓰고, 나머지 512KB를 머신 데이터 로딩 용으로 바꿨습니다.

매퍼램 1024KB가 있으면, 프로그램 개발/테스트 시에는 유용하게 쓰일 수 있겠지만,

아마 사용자 대부분의 경우는 별로 필요없을 것 같더라구요.


사용자 머신 파일명은 *.MCH 입니다.

도스에서 PARAMSX.COM 구동 시, 파일명을 입력해서 로딩할 수 있습니다.

머신 파일을 로딩하게 되면, 해당 머신으로만 구동이 됩니다.

카트리지에 내장된 머신을 선택하는건 불가능해집니다.


아래는 PARAMSX.COM 1_A1.MCH 실행 후, A1의 데스크팩으로 진입한 모습입니다.





사용자용 머신 파일(MCH)은 512KB 내외의 용량이니까,

2DD에서 구동하시는 분들도 활용이 가능합니다만...

로딩시간 때문에 가능하면 고속/대용량 디스크드라이브에서 활용하시는 걸 추천합니다. ㅎ.ㅎ



그럼, 실제 동작 모습을 보시지요~

처음에는 PARAMSX.COM을 그냥 실행해서 내부 머신 선택하는 모습이 보이구요.

그 후, FS-A1, FS-A1WSX, CBIOS2+ (JP) 모드를 로딩/구동하는 모습이 나옵니다.





그럼, 다음에 또 뵙겠습니다요~ ㅎ.ㅎ/


궁금한 부분 있으시면, 질문글로 올려주세요~


 

2017년 11월 24일 금요일

paraMSX-R 제작 #14 - BIOS/머신 롬 다운로드

paraMSX-R는 에뮬 구동을 위해, 각종 BIOS 롬과 MSX 머신 설정롬이 들어있습니다.

카트리지를 처음 구동 시, 이 롬들을 미리 다운로드한 후 사용해야합니다.


먼저 파일을 준비합니다.

PARAMSX.COM -> 메인 에뮬레이터

PARATOOL.COM -> 각종 롬 다운로더

PARAMSX.ROM -> 메인 BIOS 롬

PARAMACH.ROM -> 머신 데이터 롬

AUDIO.ROM -> MSX-Audio v1.3 롬

FMPAC.ROM -> MSX-Music BIOS 롬





메인 프로그램은 PARAMSX.COM 인데요.

머신 데이터가 없는 상태에서 실행하면 아래처럼 에러가 출력되며 구동이 되지않습니다.





아래는 롬 다운로더인 PARATOOL.COM을 실행한 모습입니다.

카트리지의 H/W 버전과 슬롯 위치가 표시됩니다.

PARATOOL은 BIOS 롬의 종류를 구별하기 때문에 다운로드 시 특별한 옵션은 쓰지않습니다.

단, 메인 플래쉬롬이 지워진 경우는 슬롯 위치를 수동으로 설정할 수 있습니다. (/Sn 옵션)






1) 메인 BIOS 롬 다운로드


DOS에서 PARATOOL PARAMSX.ROM 실행하면, 아래 사진처럼 다운로드가 완료됩니다.

PARAMSX.ROM은 512KB 크기입니다.


주의)

만약 DOS1 FDD를 사용하는 경우는 720KB 디스켓 한장에 모든 파일을 넣을 수 없으니,

MSX-DOS 시스템 파일과 PARATOOL.COM, PARAMSX.ROM 두개 파일만 넣고 부팅해서 다운로드하세요.

다운로드 후 PARAMSX.ROM 파일을 디스크에서 삭제하셔도 됩니다.





2) 머신 데이터 롬 다운로드


도스에서 PARATOOL PARAMACH.ROM 실행하면, 아래 사진처럼 다운로드가 완료됩니다.

PARAMACH.ROM은 128KB 크기입니다.

다운로드 후 PARAMACH.ROM 파일을 디스크에서 삭제하셔도 됩니다.





3) AUDIO 롬 다운로드


MSX-Audio BIOS v1.3 롬(FRS 버전, 48KB 크기)을 다운로드합니다.

파일은 아래 홈페이지에서 받을 수 있습니다.

http://frs.badcoffee.info/tools.html

자신의 환경(실제 장착된 카트리지)에 맞는 롬을 넣으면 됩니다.

예) 문사운드 계열 카트리지의 경우, msxaudio13.OPL3_mono.rom을 사용


도스에서 PARATOOL AUDIO.ROM 실행하면, 아래 사진처럼 다운로드가 완료됩니다.

MSX-DOS에서 긴파일명은 쓰기 불편하니, 적당히 8.3 파일명으로 쓰시는걸 추천합니다.






4) FMPAC 롬 다운로드


MSX-Music BIOS + PAC 커맨더로 이루어진 롬입니다.

오리지널 롬 또는 영문/한글 패치된 롬(64KB)을 사용하면 됩니다.


도스에서 PARATOOL FMPAC.ROM 실행하면, 아래 사진처럼 다운로드가 완료됩니다.

사진에서는 한글패치판 FMPAC_K.ROM을 다운로드했네요.





다운로드가 완료되었으면, 재부팅합니다.


다운로드했던 롬파일은 디스크에서 삭제해도 무방하구요.

PAC/FMPAC의 SRAM 데이터는 에뮬 내에서 플래쉬롬에 save/load 하니까,

전원을 끄더라도 사라지지 않습니다. 참고하세요.


아래는 메인 에뮬레이터 프로그램(PARAMSX.COM)을 구동한 모습입니다.






궁금한 부분 있으시면, 질문글로 올려주세요~ ㅎ.ㅎ



2017년 10월 19일 목요일

paraMSX-R 제작 #13 - MSX-Audio BIOS v1.3 테스트

간만에 paraMSX-R 영상을 찍어보았습니다. ㅎ.ㅎ


paraMSX-R에는 MSX-Audio BIOS v1.3 에뮬이 들어있습니다.

여기서 쓰이는 BIOS는 파나소닉의 오리지널 롬은 아니구요,

브라질의 sd_snatcher님이 개인적으로 개발하는 개조 BIOS입니다.


오리지널 MSX-Audio는 Y8950에서만 구동이 되지만,

개조 BIOS는 필립스 뮤직모듈, 문사운드, 달소리 등의 Y8950 및 OPL 계열칩이 있으면 쓸 수 있습니다.

참고로 BIOS 롬은 PARATOOL.COM 프로그램으로 paraMSX-R에 다운로드 가능합니다.


그럼 실제 동상 모습을 볼까요?

저의 A1GT에서 문사운드 카트리지와 함께 paraMSX-R을 구동했습니다.

전반은 CPC-400 모드에서 딜럭스박스에 제비우스를 로딩/구동하는 영상이구요.

후반은 FS-A1WX 모드에서 파이어호크 HDD 인핸스 버전을 구동하는 영상입니다.


MSX-Music (OPLL)과 차이가 좀 느껴지시나요? ㅎ.ㅎㅋ




그럼, 즐거운 밤 되세요. ㅎ.ㅎ/


2017년 9월 4일 월요일

paraMSX-R - 조만간 제 손을 떠날 친구들입니다... 흙흙~

요놈들이요~ ㅎ.ㅎ;





플래쉬롬 다운로드 및 동작 테스트 중이구요. (주말을 홀라당 까먹은...)

테스트가 끝나면 몽땅 맛탱이님께 전달될 예정입니다.


paraMSX-R 케이스가 궁금하신 분은,

며칠전 ASTERiS님이 올리신 paraMSX-R 영상을 보시면 나오니까 참고하셔요~


그럼, 즐거운(!) 월요일 되셔요~ ㅎ.ㅎ


2017년 7월 17일 월요일

paraMSX-R 제작 #12 - 내장된 기기 리스트

이제 H/W, S/W 거의 다 완성된 단계에 접어들었네요.

paraMSX-R 카트리지 내부에 구현된 기기들의 목록을 정리해봤습니다.



# SLOT


  기본 슬롯 4개, 모두 확장슬롯으로 설정가능

  각슬롯 개별 설정가능하며, 일부 MSX1처럼 슬롯1개에 롬+램 조합 가능



# System Flag


  MSX2+의 I/O 포트(#F4) 구현. 소프트 리셋 체크 용입니다.

  Inverted, Non-inverted type 가능



# Kanji / 한글


  Kanji JIS1/JIS2 폰트 구현 (파나소닉, 소니, 산요, 아스키 폰트, 총 4개 1024KB 폰트)

  대우 X-II 방식 한글/한자 폰트 구현 (대우 및 둥근모꼴, 총 2개 512KB 폰트)



# 일반 램


  넌매퍼 타입의 일반 메모리 구성

  각 페이지별로 16KB 조합가능 (총 64KB)



# 메모리 매퍼 램


  본체 내장형 표준 메모리 매퍼 구성 (레지스터 readback 가능)

  4가지 용량 설정 가능 (64KB, 128KB, 256KB, 512KB)



# 가상 디스크롬


  DOS1, DOS2 커널 동시 탑재 (MMC/SD V2와 동일한 구조)

  호스트(본체)의 디스크롬 호출로 실제 H/W 디스크와 연동

  디스크 드라이버 루틴을 직접 호출하므로, 섹터 Read 방식 S/W 구동가능 (각종 2DD 게임)



# PAC 및 FMPAC


  PAC SRAM 8KB 세이브/로드 구현

  SRAM 데이터는 에뮬 실행/종료 시, 플래쉬롬으로 백업/복원함 (별도의 배터리 필요없음)

  호스트(본체 내장 또는 외부 슬롯)의 OPLL 칩 유무에 따라 PAC/FMPAC 모드로 자동설정

  사용자가 FMPAC BIOS 업데이트 가능 (한글판, 영문판 패치롬 등)



# MSX-Audio BIOS


  롬 64KB + 램 8KB 타입의 Audio BIOS 설정가능

  호스트(본체)에 MSX-Audio 호환 카트리지 존재 시, BIOS 동작함 (필립스 뮤직모듈 등)

  문사운드의 경우, MSX-Audio BIOS v1.3 사용 시 OPL3 모드(ADPCM 제외)로 구동가능



# 재미나 딜럭스박스


  딜럭스박스 4메가비트 버전 구현

  국산 MSX 머신설정과 조합하면, 오래된 국산 메가램 로더 실행가능 (슬롯 문제 안생김ㅋ)



# 한글 FontPack


  호스트(본체)에 FontPack 카트리지가 있으면 지원가능

  BIOS 설정은 paraMSX-R 내부 슬롯으로 구성되므로, 호스트의 카트리지와 충돌하지 않음



# 기타 카트리지


  BASIC'n Plus, MSX-AID, 야마하 Painter 내장



# 내장 DOS1 롬디스크


  FDD등의 디스크드라이브가 없는 본체에서 간편하게 구동하기 위한 기능

  256KB 용량의 롬디스크에 DOS1 부트파일 및 PARAMSX.COM 프로그램 내장

  BASIC에서 CALL PARAMSX 명령으로 롬디스크로 설정, 재부팅 후 PARAMSX.COM 자동실행됨



마지막으로,

참고로 paraMSX-R 카트리지에는 플래쉬롬 8MB, SRAM 2MB가 들어있습니다.

현재 플래쉬롬쪽에 2MB 여유가 있는데, 이건 사용자 용으로 남겨둘까합니다.

ASCII 8KB, 16KB 메가롬 타입으로 구현될 예정이니,

 멀티롬, 메가롬 게임 또는 롬디스크 형태로 변환된 디스크게임 구동용으로 활용가능합니다.



그리고, 메인 프로그램인 PARAMSX.COM은 DOS1에서도 실행이 가능합니다.

본체 램이 64KB 뿐인 기종에서도 활용가능하도록 만들기위함이었는데요.

물론 키보드 없는 재믹스 등에서는 BIOS나 롬 업데이트(다운로드)를 할 수는 없으니까...

일단 정상적인 MSX랑 FDD 정도는 있어야합니다.

FDD만으로도 플래쉬롬 업뎃가능하도록 BIOS 팩은 512KB 정도로 쪼개서 넣을 생각입니다. ㅎ.ㅎ


그럼 진짜 마지막으로 영상 하나만 올리고 갈께요 ㅋㅋ

앞서 얘기했던 롬디스크로 PARAMSX.COM 자동실행하는 모습입니다.

저가형 MSX2인 파나소닉 FS-A1에 paraMSX-R 카트리지 하나만 꽂아서 구동합니다.

IQ-2000 및 소니 HB-F1의 내장 프로그램 구동하는걸 볼수 있어요.





그럼, 즐거운 밤 되세요. ㅎ.ㅎ/


2017년 7월 16일 일요일

paraMSX-R 제작 #11 - 가상디스크 구현

paraMSX-R 에뮬모드 동작 중, 본체(호스트)에 장착된 디스크를 사용하려면 어떻게 해야할까요?



[ 1차: 외부 기기 그대로 구동 ]


이건 paraMSX-R을 처음 구상하던 때에 생각했던 방법입니다. (벌써 1년반이 흘렀네요.ㅋ)

각 연결은 하드웨어적(슬롯 커넥터)으로 연결된 상태입니다.


@ paraMSX-R이 없을 때

본체 -> 확장슬롯 -> 디스크 드라이브


@ paraMSX-R을 연결 후

본체 -> paraMSX-R (bypass 모드) -> 확장슬롯 -> 디스크 드라이브


@ paraMSX-R을 연결 후, 에뮬모드로 동작 시

본체 -> paraMSX-R (기본슬롯 에뮬 모드) -> 확장슬롯 -> 디스크 드라이브


이렇게 됩니다.



에뮬모드에서 CPU 재기동 시, paraMSX-R의 슬롯에서는 /RESET 신호가 재생성됩니다.

결국 확장슬롯에 장착된 기기들은 본체가 리셋되는 것 처럼 인식되는거죠.


H/W로 연결이 되는 방식이라, 어떻게 보면 가장 간단한(?) 구조인데요. ㅎ.ㅎ

제 경우는 MMC/SD V3, FontPack, MPX, 232-C, 문사운드 등등 죄다 확장슬롯에 연결되어있습니다.

에뮬모드에서도 이런 기기들을 그대로 구동할 수 있으니, 아주 편할거라는 생각이었죠.



근데 실제로 만들어서 테스트해보니, 몇가지 문제에 직면하게 되었는데요.


- Z80 명령어 remap 기능 동작 시, 타이밍이 너무 빡빡해서 에러가 자주 발생.

  확장슬롯 기기 종류(자작판, 파라동 20주년판, 8421님 제작 등)에 따라 불안정한 경우가 제각각


- 확장슬롯에 연결되지 못한 기기들은 구동할 수 있는 방법 없음 (본체 내장된 FDD 등)


이리저리 고민하다가 다른 방법을 생각하게 됩니다.



[ 2차: 외부기기 간접 구동 방식 ]


원래 생각했던 에뮬모드 구동 방식은,

본체 동작 상태에서 에뮬모드로 전환되면 MSX 환경이 완전히 바뀌게 되고 그상태로 유지되는 것이었습니다.


그러니까, 제 GT에서 X-II 에뮬모드로 구동이 되면, 전원 끄기전까지는 그냥 계속 X-II인거죠.

한번 구동하면 -끝- ㅎ


이걸 본체/에뮬을 멀티태스킹처럼 구현하면 호스트 자원을 활용할 수 있으니 뭔가 해답이 나오겠다싶었죠.

물론 CPU 하나뿐이라, 유니코어 멀티태스킹이랑 비슷하게 볼 수도 있겠습니다.


MSX는 Z80 주소를 모두 다 사용하기 때문에, 코드가 바뀌려면 결국 슬롯전체를 전환하는 방식으로 구현이 필요합니다.

Z80 RST 명령어도 상당히 유용하게 쓸 수 있습니다.

명령어 자체가 1바이트로 점프하는거라,

OP code fetch 시 DATA BUS를 한번만 속이면(data remap) 현재 CPU 주소와 상관없이, 원하는 곳으로 갈(?) 수 있습니다.

음... 그러니까 소프트 인터럽트와 슬롯전환이 동시에 일어나는 현상으로 생각하면 되려나요? ㅎ.ㅎ


에뮬모드 종료하는 것도 같은 방식으로 구현됩니다.

어차피 에뮬/호스트 전환되는 건 똑같으니까요...



암튼 구현 완료되어 이런식으로 동작합니다.


1. 본체 부팅

2. DOS에서 PARAMSX.COM 프로그램 구동

3. 특정 머신으로 에뮬 구동

4. 호스트 자원(디스크 등)이 필요할 때, 모드 전환

5. PARAMSX.COM 프로그램으로 복귀

6. 필요한 동작 후 에뮬 모드로 복귀



만약 에뮬 모드에서 디스크 액세스가 호출되면 아래처럼 동작하겠네요.

1. 디스크 읽기 호출 (DiskROM DISKIO 등)

2. 에뮬의 가상 디스크롬은 에뮬->호스트 모드 전환 후 DISKIO 커맨드 전달

3. 호스트(본체)에서 실제 연결된 DiskROM을 호출하여 DATA를 받음

4. paraMSX-R 디스크 버퍼로 전송 후 호스트->에뮬 모드로 전환

5. 에뮬의 가상 디스크롬은 paraMSX-R 디스크 버퍼에서 DATA를 읽어서 처리


아래 사진은 PARAMSX.COM의 디스크롬 설정부분입니다.

호스트(본체)의 디스크롬이 존재하는 슬롯과 에뮬의 가상 디스크롬을 연결해주는 모습입니다.

이때 드라이브 갯수는 동일하게 설정되니까, 에뮬모드에서도 실기를 쓰는 느낌과 똑같습니다.





긴 설명읽느라 수고많으셨습니다. 흐... 

그럼, 실제 동작 영상을 보시지요~

아래 순서로 나옵니다.

1. 대우 CPC-400, 가상디스크(MMC/SD V3) 연결

   X-II 컴퓨터 교실 실행 (X-II 명조체 한글)

2. 필립스 MSX2, 폰트팩 연결, 가상디스크(MMC/SD V3) 연결

   X-II 컴퓨터 교실 실행 (폰트팩 한글)

3. 대우 DPC-200, 가상디스크(FDD) 연결

   딜럭스박스 에뮬로 몽대륙 로딩/실행

4. 아라빅 MSX2, 가상디스크(OFF) 설정

   아라빅 워드프로세서 실행





그럼, 다음 편에서 다시 뵙겠습니다~ ㅎ.ㅎ


2017년 6월 25일 일요일

paraMSX-R 제작 #10 - 텍스트 모드 용 UI 구현

사용자와 뭔가 주고받는(?) 프로그램을 만든다는게 상당히 귀찮은 작업이죠~ㅋ

처음에는 그냥 예전 MS-DOS 커맨드로 실행하던 fMSX 스타일로 만들까했는데요,

예전 윈도 용 paraMSX 에뮬과 비슷하게 만들면 괜찮지않을까...싶은 생각이 들었습니다.


알록달록 그래픽은 패쓰하고~ 텍스트 모드로 최대한 단순하게 만들어봤습니다.

무려~~~ 40컬럼 MSX1 기본 텍스트 모드입니다요~ ㅎ.ㅎ


paraMSX-R의 최소 구동환경이 MSX2 RAM 64KB라서, DOS1에서 실행가능한 프로그램으로 만들었습니다.

"그럼 디스크드라이브가 없는 본체에서는 못쓰나요?" 그러면 재미없겠죠? ㅎ.ㅎ

롬디스크 드라이브가 내장되어서, 외부 디스크가 없어도 구동할 수 있도록 제작되겠습니다요~

요건 다음 편에 소개해드리겠습니다.


일단 PARAMSX.COM을 띄워본 모습을 한번 보시죠!





으흠... 뭔가 MMC/SD Drive V2의 DISKMAN.COM이랑 비슷한 모양이죠? ㅎ.ㅎㅋ

펑션키를 눌러서 탭 전환을 하구요.

커서키 상/하 눌러서 항목 이동, 커서키 좌/우 눌러서 옵션을 바꿀 수 있습니다.

펑션키 F5를 누르면 바로 에뮬이 구동됩니다.

에뮬 동작 중에는 카트리지 상단의 버튼을 눌러주면, PARAMSX.COM 프로그램으로 복귀가능합니다.


그럼, 영상을 감상하시지요~~ ㅎ.ㅎ

여러가지 머신 선택, 슬롯 정보, 부팅 모습, MSXMEM.BAS 데모 등의 동작 모습을 볼 수 있겠습니다.





이제 S/W, H/W 기본틀은 완성이네요! ㅎ.ㅎ/

참, 보드는 모양이 조금 바꼈습니다. 아래처럼 나왔어요~ (v1.0 보드는 휴지통으로~ㅋ)




그럼, 다음 편에서 뵙겠습니다~


2017년 4월 22일 토요일

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

대부분의 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 레지스터입니다.


http://map.grauw.nl/resources/msx_io_ports.php#systemcontrol





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에서 실행됩니다. 참고하셔요.





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


2017년 4월 16일 일요일

paraMSX-R 제작 #8 - 디럭스박스 4메가로 달려~달려~

재미나 디럭스박스(DeluxeBox) 아시죠?

램을 넣어서 만든 메가롬팩인데요.

FDD 또는 카세트로 롬 이미지를 로딩해서 구동하는 방식입니다.


paraMSX-R에는 4메가 버전의 디럭스박스를 에뮬레이션합니다.

4메가니까 128 x 4 = 512KBytes 용량이 되겠습니다.


참고로 paraMSX-R에는 2048KB의 SRAM이 들어있습니다.

그 중 1024KB는 메인 메모리 매퍼로 쓰이구요,

나머지 용량 중 512KB를 디럭스박스로 사용합니다.


오리지널 디럭스박스와 H/W 동작이 같도록 만들었습니다.

그러니까 80년대 재미나에서 발매했던 로더 프로그램을 그대로 사용가능합니다.


아래는 CPC-400 머신 세팅으로 버블보블을 로딩하는 모습입니다.






사용 편의를 위해서 PARAMSXR.COM 실행할 때,

슬롯1이 비어있으면 디폴트로 디럭스박스를 세팅하도록 했습니다.


아래는 에뮬을 종료한 상태의 레지스터 및 기본슬롯 상태를 보여주는데요.

페이지0 = 슬롯0-0 (메인 BIOS)

페이지1 = 슬롯1 (디럭스박스)

페이지2 = 슬롯1 (디럭스박스)

페이지3 = 슬롯0-2 (메인 램)

으로 동작하고 있네요. ㅎ.ㅎ



마지막으로 제 GT에서 구동하는 영상을 올려봅니다.

1. X-II + 디럭스박스 + FDD에서 재미나 램카드 테스트 프로그램 구동 (RAMTEST)

2. X-II + 디럭스박스 + FDD에서 버블보블 실행

3. IQ-2000 + 디럭스박스 + FDD에서 불새 실행





그럼, 다음편에서 또 만나겠습니다요~ ㅎ.ㅎㅋ


2017년 4월 15일 토요일

paraMSX-R 제작 #7 - FMPAC, DOS2, FDD 지원

- FMPAC/PAC BIOS가 추가되었습니다.

SRAM 세이브 등의 기본 기능을 위한 것이라고 보면 되겠네요.


아래는 IQ-1000 + FMPAC 모드로 구동한 모습입니다.

키티야님의 한글판 롬으로 실행해봤어요.




- 이제 paraMSX-R 에뮬 구동 중 종료하고 DOS2로 돌아올 수 있습니다.

카트리지 상단에 버튼 스위치가 추가되었습니다.

원래 슬라이드 스위치를 달았는데, 푸쉬 버튼으로 바꿨어요. ㅎ.ㅎ

써보니까 버튼이 편하네요.


스위치를 누르게 되면, 소프트 인터럽트를 발생시켜 종료할 수 있게됩니다.

프로그램 종료 시, CPU 레지스터랑 슬롯 값 한번 찍어봤어요.

혹시 디버깅 할때 도움이 될까 모르겠습니다. 흐...




- DOS2 지원이 추가되었습니다.

ASCII DOS2 v2.20 카트리지의 롬을 사용합니다.

KANJI 드라이버는 제거했습니다. 대우 MSX2에서 문제없도록이요~ㅋ



- FDD 지원이 추가되었습니다.

이부분이 paraMSX-R의 중요한 부분 중 하나인데요.

아마 이전 글에서 조금 언급이 되었을거에요.

본체의 FDD 또는 디스크 이미지 파일을 에뮬 드라이브로 연결(마운트)하는 방식입니다.

에뮬 상에서는 A: 드라이브로 인식되어 부팅가능합니다.


이제 좀 진짜 에뮬레이터...스럽네요.ㅋ

X-II + FMPAC + 재미나 디럭스카드 + FDD 세팅으로, 처절했던 19세기 환경을 재현할 날이 곧 오게되겠습니다요~ ㅎ.ㅎ



마지막으로, 저의 A1GT에서 동작하는 모습을 영상으로 담았습니다.

영상은,

1. IQ-1000 + FMPAC

2. IQ-2000 + FDD (퀸플 구동)

3. A1WSX + DOS2 + FDD (DOS2 디스켓 부팅)

4. A1WSX + FDD (피드백 구동)

...순으로 진행됩니다. 참고하셔요.





그럼, 즐거운 주말 되시구요!



2017년 4월 1일 토요일

paraMSX-R 제작 #6 - 기본기능 구현

이제 본격적으로 내부 구현을 해야겠죠? ㅎ.ㅎ


MSX 머신을 만드려면 어떤 것들이 필요할까요?

자세한 내용은 "테크니컬 데이터북" 책에 다 나와있어요 ㅋ


참고로, 처음 생각했던 방법은 "paraMSX-R 제작 #1 - 구상" 게시물에 있습니다.

그럼 현재 구현 상황을 요약해봅니다.


[ 기본 H/W ]


1. CPU (동작 OK)


표준 Z80 3.58MHz 모드에 맞춰서 동작합니다.

본체(호스트 CPU)의 Z80을 그대로 재사용합니다.


paraMSX-R Tool 프로그램은 DOS2에서 동작이 되는데요.

본체 구동 -> paraMSX-R 보드 구동 -> 본체 구동으로 복귀가능하도록 제작될 예정입니다.

그러니까 DOS2 상에서 에뮬을 실행했다가 종료하면 원래 DOS2로 복귀하게 되는것이죠.



2. SLOT (구현 OK)


paraMSX-R에서는 자체적인 SLOT I/O를 갖게 됩니다.

본체(호스트 MSX)의 PPI SLOT I/O랑 충돌하면 동작이 안되니까요~

확장슬롯이 별도의 I/O로 되어있어서, paraMSX-R 카트리지를 본체의 확장슬롯에 꽂아도 동작됩니다.


슬롯0 - 기본/확장슬롯

슬롯1 - 카트리지 슬롯 (사용자 용)

슬롯2 - 카트리지 슬롯 (사용자 용)

슬롯3 - 기본/확장슬롯

으로 설정됩니다.



3. PPI - 키보드/CAPS LED/1BIT 사운드 (동작 OK), 카세트 (미구현)


PPI로 연결된 슬롯 I/O, 카세트 I/O 외는 모두 본체의 H/W를 그대로 재사용합니다.

카세트는 CAS 이미지파일로 가상의 카세트테입으로 구현될 예정입니다.



4. VDP (동작 OK)


본체의 H/W 그대로 재사용됩니다.

당연한거지만 VDP는 기본 기능들이 하위 호환됩니다.

제 A1GT에서 테스트 시, MSX1/2/2+ 머신으로 모두 잘 동작되는 것 확인했습니다.



5. PSG - 사운드/조이스틱 (동작 OK)


본체의 H/W 그대로 재사용됩니다.



6. OPLL (동작 OK)


본체의 H/W 그대로 재사용됩니다.



7. RTC (동작 OK)


본체의 H/W 그대로 재사용됩니다.

머신에 따라서 특수 데이터가 쓰일 수 있으니,

시계(CLOCK)외의 설정은 머신별로 따로 로드/세이브 하는 방식으로 구현됩니다.

만약 paraMSX-R의 CPLD 용량이 남으면, 본체 H/W를 쓰지않고 별도로 구현될 가능성도 있습니다.



8. System Flag (구현 OK)


본체의 소프트 리셋 상태를 확인하는 용도로 쓰이는 1BIT H/W입니다.

물론 터보알은 조금 다르지만, 에뮬 구현은 MSX2+ 기준입니다요~

A1WSX 머신으로 구동 시, 제대로 동작하는 것 확인되었습니다.



9. KANJI 및 한글/한자 폰트 (미구현)


아직 미구현 상태입니다.

KANJI JIS1 1셋, JIS2 2셋(소니/파나소닉), 한글/한자 1셋으로 구현될 예정입니다.



10. 메모리 매퍼 (구현 OK)


256KB 용량의 메모리로 들어갑니다.

IQ-2000 및 A1WSX 머신으로 동작 테스트되었습니다.



11. FDD (미구현)


본체의 FDD를 사용하는 방식과 일반 DSK 이미지파일을 사용하는 방식, 두가지로 지원될 예정입니다.

1차 구현목표는 DSK 이미지 구동입니다.



[ 부가 H/W ]


1. PAC/FM-PAC (미구현)


OPLL 칩이 없는 SRAM(또는 BIOS + SRAM)으로 구현될 예정입니다.



2. 재미나 디럭스카드 (미구현)


256KB (2메가비트) 메가램 카트리지로 구현될 예정입니다.



3. FontPack (미구현)


폰트 I/O를 제외한 BIOS + SRAM으로 구현될 예정입니다.

본체에 FontPack 카트리지가 꽂혀있어야 동작합니다.

OPLL 없는 FM-PAC과 유사한 방식입니다.



흐... 설명이 길었네요~

그냥 동작 사진으로 보는게 더 이해가 쉽겠죠? ㅎ.ㅎ



대우 IQ-1000의 구동 모습입니다.

슬롯0,1,2,3 모두 기본슬롯으로 설정된 상태입니다.





MSX1 호환 BIOS인 CBIOS1_JP의 구동 모습입니다.

참고로 CBIOS는 카트리지 INIT까지만 수행이 됩니다.

따라서 FDD 등의 구동은 안되구요. 간단한 롬팩 정도만 실행할 수 있어요.





대우 IQ-2000의 구동 모습입니다.

슬롯0는 확장슬롯으로 설정된 상태이구요. 메모리 매퍼는 256KB 설정입니다.

32인치 LCD에서 엄지손가락 로고가 뜨는걸 보니 재밌네요~ ㅋ




대우 재믹스 수퍼V의 구동 모습입니다.

이게 키보드 외장형의 MSX2 호환기...였던가요? 써본적이 없어서리...ㅋ

실기는 메모리 매퍼 64KB이지만, 그냥 256KB로 넣어서 돌렸습니다.





파나소닉의 마지막 MSX2+ 모델이죠. A1WSX의 구동 모습입니다.

슬롯0, 슬롯3 둘다 확장슬롯으로 설정되어 있습니다. 메모리 매퍼는 256KB 설정이구요.




마지막으로, 저의 A1GT에서 동작하는 모습을 영상으로 담았습니다.

에뮬 구동 후 DOS2로 복귀하는 기능은 구현이 안되어있어요.

에뮬 종료하려면, 본체를 리셋해야합니다. ㅎ.ㅎㅋ




그럼, 즐거운 주말 되셔요!


2017년 3월 4일 토요일

paraMSX-R 제작 #5 - 슬롯 Bypass모드

두둥~ 주문한 PCB가 도착했습니다! ㅎ.ㅎ




칩 8개 모두 피치가 좁은 애들이라, 납땜이 쉽지않네요.

테스트 용으로 보드 두장 만들었습니다.





케이스를 씌우면 요렇게 됩니다.





보드 윗쪽에는 외부연결 용 슬롯 커넥터(IDC 50핀)가 있어서, 외부 카트리지와 연결가능합니다.

기본 슬롯 4개 중 3개는 CPLD 내부에서 동작이 됩니다. 남은 1개 슬롯이 외부 연결용인거죠~



에뮬모드를 켜기전까지는 본체는 paraMSX-R 카트리지가 없는 것처럼 동작하게 됩니다.

간단하게 "슬롯 Bypass모드"라고 이름을 붙였습니다.ㅋ

이 상태에서는 paraMSX-R가 확장슬롯의 버퍼 카트리지처럼 동작하게 됩니다.


제게 확장슬롯이 4개가 있는데, "4슬롯 + 2슬롯IO"으로 만들어진 놈을 주로 쓰고 있는데요.

여기에 연결해서 돌려보았습니다.

아래는 터보알 슬롯2에 연결된 모습입니다.





제가 만든 확장슬롯이랑 파라동20주년 확장슬롯(sinfox님 제작)은, 메인보드쪽에 버퍼가 들어있습니다.

그러니까 본체 연결되는 카트리지 내부엔 부품이 아무것도 없어요. 그냥 연장선 정도의 역할입니다.





만약 paraMSX-R에 확장슬롯을 연결하고 롬팩을 구동하게 되면, 신호는 아래처럼 흘러가게 되겠네요.

본체 슬롯 -> paraMSX-R [5V to 3.3V 레벨쉬프터 -> CPLD -> 3.3V to 5V 레벨쉬프터] -> 확장슬롯 버퍼 -> 롬팩


신호가 조금 딜레이 되겠지만, 왠만한 것(?)들은 잘 돌아가지 않을까 생각됩니다.

흐... 제가 갖고있는 카트리지를 이리저리 테스트해보니 동작 불안(불능)한 애들이 나오네요.

MMC/SD V3랑 MPX R2.0 두개가 안되는군요. ㅜ.ㅜ


아래는 동작확인했던 카트리지입니다.

PAC-V, FontPack, MPX R1.1, MoonSound v2.1, 필립스 Music Module, FM-PAC, SCC-I

그 외 일반 롬팩/메가롬팩은 열개정도 꽂아봤는데, 잘 돌아가네요.


아래는 현재 저의 책상샷입니다~




본체 왼쪽에는 paraMSX-R과 연결된 6슬롯이구요.

오른쪽에는 파라동20주년 확장슬롯입니다.

터보알 힘이 좋네요. 카트리지 많은데도 잘 돌아갑니다. ㅎ.ㅎb

참고로 저의 확장슬롯에는 따로 외부전원 안쓰고 있어요.



다음편에는 본격적인 paraMSX-R 에뮬모드 구현이 이어지겠습니다~

그럼, 다음에 또...


PS. 보드가 v1.1로 바뀌면서 외부슬롯 커넥터가 삭제되었습니다.

그러니까 본문 내용은 그냥 잊으시면 되겠습니다요~ ㅎ.ㅎ;


2017년 2월 16일 목요일

paraMSX-R 제작 #4 - H/W 구성

paraMSX-R 진행을 재개합니다! 10개월만인가요? ㅋ

H/W 구성을 어떻게 하는게 좋을지 고민을 많이 했는데, 대충 결론이 나왔습니다. 으흐...


-> 결론: 플래쉬롬으로 떡칠!


사실 작년에 처음 구상할 때에는, 램을 많이 넣고 구동할 때마다 로딩하는 방식이 유연하지 않을까 생각했거든요.

이런식으로 구동되는 방식인거죠.

1. 본체 전원 ON, paraMSX-R 카트리지는 Bypass 모드로 동작(본체에서는 보이지 않음ㅋ)

2. DOS2에서 PARAMSXR.COM 프로그램으로 에뮬 머신(대우 아이큐1000 등) 선택

3. 에뮬 슬롯 설정 및 필요한 롬(BIOS 등) 데이터 로딩

4. paraMSX-R 카트리지의 외부 슬롯 리셋

5. 에뮬 머신으로 구동


뭐랄까, 윈도에서 MSX 에뮬 프로그램을 실행하는 것과 비슷한 식입니다.

근데 이렇게 만들면, 게임 롬팩을 꽂아서 구동하는게 불가능하더라구요.

게임이 먼저 구동되면 도스로 부팅이 안되니까요. ㅎ.ㅎ;


동작 방법을 하나 더 생각했습니다.

paraMSX-R 카트리지에서 직접 에뮬 머신을 설정하고 자동으로 재부팅하는 방식이욤~


이런식입니다.

1. paraMSX-R 카트리지의 모드 스위치 ON 및 본체 전원 ON

2. paraMSX-R 카트리지는 일반 SW카트리지 처럼 구동됨 (paraMSX-R의 외부 슬롯은 Bypass 모드로 동작)

3. 에뮬 머신 선택 프로그램이 자동실행 (대우 아이큐1000 등 선택)

4. 선택된 머신으로 재부팅 (paraMSX-R 외부 슬롯은 에뮬 슬롯으로 연결되어 동작)


글로 써서 이해가 힘드실지 모르겠네요.

"paraMSX-R 카트리지의 에뮬모드 스위치를 켜면, 본체 부팅 시 에뮬 모드로 바로 진입" 정도로 생각하시면 되겠습니다.


필요한 데이터는 미리 플래쉬롬에 넣어두는 방식으로 갑니다.

이렇게 하면 로딩하는 시간이 없어서, 에뮬 모드로 바로 부팅하더라도 빠르게 구동할 수 있겠습니다.

"오늘 하루는 내 GT를 X-II처럼 쓰고 싶다" 이럴 때, 좀 편하지 않을까요? ㅎ.ㅎ


다음은 로직을 위한 CPLD 선택인데요.

paraMSX-R 카트리지는 외부 카트리지 슬롯이 하나 있습니다.

아마 실제 사용 시, 확장슬롯이 연결되어 쓰이게 되겠지요?

I/O 핀도 많이 필요하고 구현해야 될 회로 로직도 많이 들어가야하니, 용량도 조좀 커야겠구요.

144핀짜리 EPM1270 칩이 딱 적당하더라구요. I/O 핀을 계산해보니 딱맞게 나오는것 같구요. ㅎ.ㅎ


그리고 외부 슬롯은 IDC 50핀 커넥터로 장착됩니다.

슬롯 커넥터를 달아야하나 한동안 고민했는데요...ㅋ

제가 만든 확장슬롯, 예전 파라동 20주년 확장슬롯, 최근의 8421님의 확장슬롯~

모두 IDC 50핀으로 연결할 수 있으니 편하게 쓸 수 있을거라 생각되네요. ㅎ.ㅎ/


최종 결정된 보드의 H/W 구성입니다.

- 플래쉬롬 8MBytes + SRAM 2MBytes

- 144핀 CPLD EPM1270

- 외부 슬롯 커넥터 (IDC 50핀)

- 에뮬 부팅 스위치 및 동작 LED


요렇게 넣어서 PCB를 그려보았습니다.

추후 테스트를 위한 R2R DAC, 옵션 저항, OSC 등 잡다 부품도 넣어놨어요.





보드가 나오면 본격적으로 로직 구현에 들어갈 예정입니다.

이 때가 제일 신나죠~ ㅎ.ㅎㅋ


2016년 4월 8일 금요일

paraMSX-R 제작 #3 - IQ-2000 구동 성공 그리고...

VHDL 코드를 수정하니 MSX2 설정이 제대로 동작합니다~ ㅎ.ㅎㅋ


아래는 IQ-2000, X-II, FS-A1F 순으로 부팅하는 모습입니다.

아이큐 교실도 잘 나오구요.




아래는 X-II 모드에서 스크린9 및 WIDTH 64 설정한 모습입니다.

실제 X-II 에서는 명조체 한글/한자가 나오겠지만, 아직은 출력이 안됩니다.

EPM3128으로 테스트는 여기까지가 한계네요. ㅎ.ㅎ

EPM570 넣어서 새로 보드를 만들어야 되겠습니다.




끝으로 현재까지 생각한 요구사항을 정리해봤습니다.


- DISK 없는 환경에서도 사용가능

- 기본 모드(MSX1,2,2+ 몇개)의 데이터는 플래쉬롬에 미리 다운로드

- 사용자 설정 모드 지원 -> DOS2 상에서 SRAM에 로딩 후 구동

- 외부 연결 용 슬롯 1개 지원 -> bypass 모드에서는 본체 슬롯으로 동작

- 메인램 매퍼 64KB, 128KB, 256KB, 512KB 설정 가능

- FM-PAC BIOS, DOS2 + KANJI-DRV 등의 매퍼 지원



보드에는 EPM570, 플래쉬롬 1MB, SRAM 2MB 정도가 들어갈 예정입니다.

CPLD 용량이 부족하면 추가 매퍼롬은 삭제될 수 있습니다.

물론 여유가 된다면 메가램(ASCII 8K/16K)이 추가되면 좋겠구요. (가능하면 재미나 디럭스박스?ㅋ)


외부 연결 슬롯은 아래 사진처럼 카트리지 위로 커넥터가 장착됩니다.

본체 MSX를 처음 켜면, 카트리지 없이 외부 슬롯의 기기만 동작하게 되구요.

paraMSX-R S/W로 구동이 되면, 연결된 슬롯은 에뮬모드의 슬롯으로 동작이 바뀌게됩니다.

아마 저처럼 확장 슬롯에 기기들 몽땅 꽂아서 쓰는 경우라면, 가장 편리한 방법일 듯 하네요.




그럼 즐거운 밤 되셔요~ ㅎ.ㅎ