2012년 12월 25일 화요일

Jiwoo OS 만들기 - MSX용 OS

얼마전에 DOS2용 GUI 런처를 만들어볼까 생각한 적이 있는데요.

안드로이드용 홈런처 같은 것 말이죠. ㅎ.ㅎㅋ


하.지.만... 곧 마음을 접고 OS를 만들기로 정했습니다.


멀티 태스킹을 지원하고 기존 DOS1/2용 프로그램 실행을 위한 에뮬레이션(또는 DOS 전환)을 구현할 예정입니다.

기본 커널 만드는데에도 시간 꽤 걸리겠지만.ㅋ 조금씩 진행해봅니다요~~


컴파일러는 SDCC 윈도버전 사용합니다.

Z80 쪽으로는 문법이 좀 특이해서 다른 툴로는 좀 어려울것 같네요. ㅎ.ㅎ




2012년 12월 7일 금요일

수퍼 게임 월드 - 재믹스 30합팩 (SCC 매퍼 패치)

구 파라동 자료실에 재믹스용 30합팩 롬이 있어서 변환해보았습니다.


게임 내용은 일반 128K,256K 롬들이지만, 전체 4메가롬으로 구성되어있습니다.

원본 팩은 4000H, 4001H, 4002H, 4003H 주소를 뱅킹 IO로 쓰는 특이한 구조로 되어있는데요.

SCC 매퍼에서 동작가능하도록 수정해보았습니다.


SCC메가플래쉬롬팩이나 MMC/SD 드라이브의 멀티롬2등으로 구동가능합니다.

물론 에뮬에서도 돌아갑니다.


Download: SuperGameWorld_Zemmix30_(SCC_Mapper).zip


아래는 제 터보알에서 MMC/SD의 멀티롬2으로 구동한 모습입니다.

참고로 게임 목록이 10개씩 나오는데, SELECT 키를 누르면 목록을 바꿀수 있습니다.

SPACE 키를 누르면 게임이 시작됩니다.





2012년 11월 20일 화요일

GUI 쉘을 만든다면 쓸모가 있을까요?

그냥 갑자기 든 생각입니다.

뭐, "느려터진 MSX로요?"가 먼저 떠오르긴 하지만요. ㅎ.ㅎ;


MSX에 GUI로 된 쉘이 몇가지 있던걸로 기억하는데, 실제로 잘 활용하시는 분 있나요?

저는 터보알GT 처음 샀을때 MSX-View 몇번 눌러본거랑...

SymbOS는 처음 나왔을때 잠깐 써본정도입니다요.


암튼, 제가 최근 MSX 사용한걸 생각해보니 대강~~

 M, MPXP, MIDRY, GRUN, MMCSD멀티롬 정도로 요약이 되더군요. 

사실 M에서 MP3/IMS 음악듣는게 50% 정도...ㅋ

노트북에서 코딩한거 테스트하는데 25%, 나머지는 겜 한두판 하는 정도입니다.


그동안 M을 주로 쓰면서 필요한 기능들을 M에 내장하는 방향으로 가고 있었는데요.

만약 GUI 쉘을 잘(?) 만들어져서 MS윈도3.1, SymbOS 같은 멀티태스킹이 되면 재밌지 않을까 생각이 들어서요.

적어도 제가 활용하는 선에서는 괜찮을 것 같아요. (자꾸 속도 문제가 떠오르긴 한데...ㅋ)


기존 롬팩으로 된 SW도 어느정도 실행이 가능하고,

DOS1, DOS2 프로그램도 완벽 실행되면 좀 쓸모있지 않을까요?

게임은 VDP/PSG 직접 액세스도 허용해야되니 풀스크린 옵션도 넣고요. ㅋ


그래픽은 스크린7 인터레이스랑 오버스캔 모드를 쓰려고 합니다.

512 x 480 해상도에 16컬러가 되겠지요.


암튼 잡설이었습니다. ㅎ.ㅎ


의견 있으시면 댓글 달아주세요~~


2012년 9월 22일 토요일

MMC/SD Drive V2 - Multi-ROM II 제작 #8 완료

Multi-ROM II SW가 1차 완료 되었습니다.

생각했던 기본기능은 다 넣었는데, 요구사항이 있다면 더 추가될 수 있겠습니다.


첨부된 MMC/SD BIOS 및 MFLASH 를 쓰시면 되겠습니다.

(그전에 Multi-ROM HW 확장부터 하셔야겠지만요. ㅎ.ㅎㅋ)

(테스트버전이라 파일은 파라동에만 올려두었습니다. 참고하셔요.)


사용법은 아래 순서로 하시면 되겠습니다.


1. FLASHMAN을 이용하여, MMC/SD BIOS를 v4.10 으로 업데이트

   예: FLASHMAN MMCDISK3.ROM


2. MFLASH를 이용하여 롬파일을 MultiROM II에 다운로드

   MFLASH I  입력하면 플래쉬롬 초기화

   MFLASH A filename 으로 롬파일 다운로드 (파일명은 *.* 등의 와일드카드 사용가능)

  주의: 플래쉬롬이 가득찬 경우, 지우고 다른 롬을 넣고 싶을때는

          MFLASH I 를 통해 전체를 초기화해야합니다.



아래는 동작하는 모습입니다.



MFLASH I 로 전체 플래쉬롬 초기화 하는 과정입니다.

슬롯에 위치한 MMC/SD Drive 중 Multi-ROM II로 확장된 기기가 자동으로 인식됩니다.

사진에서는 7개의 AM29F040 플래쉬롬이 존재하는 걸 보여주네요. (최대 15개 사용가능)




MFLASH는 롬파일 다운로드시 확장자를 가리지 않습니다.

대신 확장자가 ".ROM" 이 아닌경우는 "." 을 없앤 이름이 제목으로 표시됩니다.

저는 아래처럼 _MULTI.ROM 디렉토리에 다운로드할 롬들을 모아봤습니다.

파일명을 적당히 수정해서 11자로 표시되도록 했습니다요~




MFLASH A *.* 으로 파일을 몽땅 다운로드하는 모습입니다.

메가롬인 경우 매퍼가 자동으로 인식/패치 됩니다.





다운로드 완료 후, MFLASH L 을 이용하여 게임 목록을 출력해봤습니다.




본체를 리셋하고 SPACE 키를 누르고 있으면, 아래처럼 멀티롬 메뉴로 진입니다.

P키를 누르면 팔레트를 모노크롬 스타일로 변경할 수 있습니다. (MSX1용 게임에서만 효과있음)

T키는 A1WX/WSX 또는 A1ST/GT 등의 CPU 고속모드를 켜는 기능입니다.

M키를 눌러서 멀티롬II 기능을 실행합니다.




아래처럼 게임 목록이 표시됩니다.

메가롬 및 SCC 를 사용하는 경우 오른쪽에 아이콘으로 확인가능합니다.


게임 선택은 상/하 커서키를 이용합니다.

좌/우 커서키로 페이지 이동을 할 수 있고,

문자키 입력하면 해당 문자로 시작되는 첫 게임으로 커서가 점프합니다.

게임 선택 후, SPACE 키를 누르면 게임이 시작됩니다.


참고로 멀티롬II 에서는,

 16KB 주소 미러링이 필요한 게임 또는 페이지2(8000H~BFFFH)에서 실행되는 게임을 제대로 지원합니다.

(예: RISE-OUT, RIVER RAID 등)




멀티롬 진입 메뉴에서 P키를 누르면 모노 팔레트 설정을 할수 있습니다. (총 4가지)

MSX2의 경우는 게임(또는 BIOS)에서 직접 팔레트를 변경하기 때문에 효과가 없습니다.


아래는 팔레트 설정 후 MSX1용 게임을 실행해본 모습입니다.







MMC/SD Drive V2 - Multi-ROM II 제작 #7 다운로더 및 BIOS

멀티롬II 를 위한 다운로더 및 바이오스가 대충 완성되었습니다. ㅎ.ㅎ


첨부된 두 파일로 테스트 부탁드립니다. (MFLASH는 이상태로 정식버전이 될 확률이 높아요)

(아직 테스트 버전이라 파라동에만 올려두었습니다. 참고하세요...)


아래는 제 터보알에서 실행하는 모습입니다.

사용법 그대로 따라하시면 되겠습니다요~~



MFLASH.COM 은,

멀티롬 II 확장된 MMC/SD Drive의 플래쉬롬을 다운로드 하는 프로그램입니다.

DOS1, DOS2 환경 모두 지원합니다.


아래 세가지 명령을 쓸수 있습니다.

I = 전체 초기화

L = 게임 리스트 표시

A = 롬 추가(다운로드)




MFLASH I 를 실행한 모습입니다.

현재 동작중인 MMC/SD 중 멀티롬II 확장된 카트리지가 자동 선택됩니다.

혹시 두개 이상의 멀티롬II가 발견되면, 슬롯 선택 메뉴가 나올겁니다.


저는 AM29F040B 플래쉬롬 7개를 달았습니다.

각 플래쉬롬이 체크되면 보유 플래쉬롬 리스트에 등록이 되며,

chip erase 명령으로 전체 영역을 지워놓습니다.


참고로 플래쉬롬은 1개에서 최대 15개의 플래쉬롬을 쓸수 있습니다.

플래쉬롬 타입을 섞어써도 무방하구요.

74LS138 출력되는 /CE 신호 순서데로 연결안되더라도 상관없습니다.

(예: 3번, 6번 이렇게 두개만 달아도 됨) 


지원되는 플래쉬롬은 아래 세종류입니다. (모두 바이트 프로그래밍 방식의 4MBit입니다.)

AM29F040, MBM29F040, MX29F040


플래쉬롬 영역은 16KB 단위 블럭으로 관리합니다. 7개 플래쉬롬을 쓰면 총 224개의 블럭이 생기는 것이죠.




MFLASH A 명령을 써서 게임롬을 다운로드할수 있습니다.

MFLASH A USAS.ROM 등 한개 롬만 추가할수도 있고,

MFLASH A *.ROM 처럼 여러개 롬파일을 한번에 추가할수도 있습니다.


참고로 메가롬의 경우는 매퍼 종류를 자동으로 인식합니다.

만약 인식 실패하면 수동으로 선택할수 있는 메뉴가 표시됩니다.

지원되는 매퍼는 KONAMI SCC, KONAMI 8KB, ASCII 8KB, ASCII 16KB 네종류 입니다.


아래는 MFLASH I *.ROM 으로 디렉토리 내의 롬파일 몽땅 다운로드하는 모습입니다.




아래는 다운로드 완료 후 멀티롬II 를 구동한 모습입니다.

기존 멀티롬 처럼 MSX 부팅시 SPACE 키를 누르고 있으면 진입 메뉴가 나타납니다.

M 을 선택하면 멀티롬 메뉴에서 멀티롬II 메뉴로 전환합니다.


참고로 아래 사진을 보면 기존 멀티롬 기능은 활성화가 되어있지 않은 걸 알수 있습니다.

만약 R800 터보 모드를 켜려면 여기서 T를 눌러서 ON 시킨 후, M을 눌러서 멀티롬II로 진입하면 됩니다.




멀티롬II가 실행된 모습입니다.

상/하 커서키를 눌러서 롬을 고른 후, SPACE키를 누르면 게임이 실행됩니다.

파일명 옆에는 [메가롬] [SCC] 표시를 나타내는 아이콘이 나옵니다. 참고하세요.




아마 아직 MMC/SD Drive에 멀티롬II 확장하신 분이 없을 듯 한데요.

완성되시면 테스트 부탁드립니다. ㅎ.ㅎ



2012년 9월 21일 금요일

MMC/SD Drive V2 - Multi-ROM II 제작 #6 롬블럭 관리

멀티롬II를 잘 활용하기위해서는 SW가 필요합니다.


여러개의 크기가 다른 게임롬을 각 플래쉬롬에 나눠서 넣어야하구요,

실행할때는 선택된 게임 영역이 메모리 페이지1,2에 매핑되도록 해줘야되겠습니다.

메가롬의 경우는 매퍼 패치를 해서 SCC 뱅킹에 맞도록 전환됩니다.


아래는 멀티롬 전용 다운로더 툴인 MFLASH 프로그램의 동작 모습니다.

메가롬 게임 위주로 넣었습니다.


32KB 게임은 메가롬이 아니니까 매퍼 패치는 필요없고, 단지 페이지 매핑만 되면 OK입니다. ㅎ.ㅎ

해당 게임은 5번 플래쉬롬 12번 블럭에서 시작됩니다. 16KB 두개 블럭이라 12번,13번 블럭 사용이겠네요.




아래는 메탈기어2를 다운로드하는 모습입니다.

512KB라서 플래쉬롬 한개를 다 차지하겠네요.

사진에서는 7번 플래쉬롬으로 표시되었네요.

참고로 MFLASH 는 메가롬 매퍼를 자동으로 감지합니다. (강제 지정 옵션도 넣어야겠지요?)

알고리즘이 간단해서 오진이 있지만, 왠만큼은 돌아가는 듯 하네요. ㅋ




MFLASH L 명령을 쓰면, 다운로드 된 게임의 정보(플래쉬롬 번호 및 시작 블럭 번호)를 볼수 있습니다.




아래는 MMC/SD BIOS에서 멀티롬II를 구동하는 모습입니다.

기존 멀티롬 메뉴에서 M을 누르면 멀티롬II 프로그램이 동작됩니다.




UI가 간단하지용? ㅎ.ㅎㅋ

간단하게 롬파일 목록을 보여줍니다. 커서키로 선택하면 해당 게임이 실행되겠습니다.




불새를 실행해본 모습이네요.




MMC/SD Drive V2 - Multi-ROM II 제작 #5 롬 실행 테스트

낮엔 애들이랑 놀고 운전하고...

밤엔 책상에서 MSX랑 달려봅니다. (약간 피곤하군요~ㅎ.ㅎㅋ)



어제 각 플래쉬롬의 디바이스 ID가 읽히는지 테스트했었는데요,

이 상태에서 팩 뚜껑 닫고 문제가 없는지 동작 체크해봤습니다.

간단하게 메탈기어2 롬 이미지(512KB)를 다운로드 후, 덤프해서 비교하는 방법으로 테스트했습니다.


롬 1,2,3,... 잘되다가 ㅡ,.ㅡ 마지막 롬 7번에서 16KB 다운로드 후 뻗어버리네요..

덤프해보니, 첫 16KB(0000H~3FFFH)는 값이 정상적으로 들어가있는데...

그다음 16KB(4000H~7FFFH)가 첫 16KB랑 값이 똑같게 덤프가 되었더군요.

아마도 A14 위쪽의 어드레스가 잘못되거나 그랬겠지요.

근데 플래쉬롬들이 전부 병렬로 붙어있는데, 왜 마지막 하나만 이상할까... 좀 이상하네요. ㅎ.ㅎ;


결과는 아래 사진을 보시고~~ ㅋ


플래쉬롬 끼리 연결할때 저항 다리를 잘라서 쓴 곳이 많은데요.

마지막 7번 롬의 A14 핀이 떨어져버렸군요.

디카 접사로 보니 금이 쫘~악 ㅡ.ㅡ

아마도 팩 뚜껑 닫을때 플래쉬롬이 약간 뒤틀리면서 떨어진 것 같습니다.

암튼 다시 납땜했어요.




아래는 MFLOAD 프로그램으로 다운로드 테스트하는 모습입니다.

아직은 매퍼 패치가 안되니까 일단 SCC 용 게임롬만 구동이 됩니다.




MMC/SD BIOS의 멀티롬 선택을 확장해서,

아래처럼 멀티롬II를 구동할수 있도록 했습니다.

첫 메뉴에서 M 으로 멀티롬II 선택 후, 추가된 플래쉬롬 번호(16진수 ㅋ)를 고르면 됩니다.


SCC 롬 게임 이것저것 넣어서 테스트해봤는데, 대충 잘 돌아가는 듯 보이네요~ ㅎ.ㅎ




케이스를 닫은 모습입니다.

격돌~페넌트레이스의 희생으로 멀티롬 II 가 완성되었습니다요~ 묵념...




여기까지는 초간단 동작 테스트였구요.

다음은 제대로 된 롬 다운로더 및 멀티롬 II 선택 프로그램 제작으로 넘어갑니다.


그럼, 이만...


2012년 9월 20일 목요일

MMC/SD Drive V2 - Multi-ROM II 제작 #4 납땜 완료

처절한 납땜이 계속됩니다~~ㅋ


바느질 납땜 해보신 분은 아시겠지만, 핀 안헷갈리고 제대로 붙였는지 확인을 많이 해야됩니다.

싸구려 멀티미터 있으시면 좋죠. ㅎ.ㅎㅋ


그럼, 사진 나갑니다.



주렁주렁 납땜되고 있네요.

추가된 AM29F040B는 AT29C040A와 모두 병렬로 연결됩니다.

물론 /CE 는 74LS138에 주르륵 연결이구요.




뒷면~

테입은 플래쉬롬 위치를 고정시키는 용도입니다.




선이 많이 늘었군요~ ㅎ.ㅎ




빈 공간을 활용해서 선을 쓱쓱 넣어줍니다. ㅎ.ㅎ




완성 샷입니다~

오른쪽 파란색 선들은 플래쉬롬 /CE에 연결되어있습니다.




뒷면~




으흠, 제대로 연결이 된걸까요?

후다닥 각 플래쉬롬을 체크할 수 있는 프로그램을 하나 만들었습니다.

당근 다운로드도 됩니다만... 최종 프로그램은 모양이 좀 다르게 만들어질꺼에요.


아래는 멀티롬II의 모든 플래쉬롬 칩ID를 읽은 모습입니다.

7개만 달았으니까, 8~15번 플래쉬롬은 없는걸로 나오네요.




아래는 확장슬롯에서 동작중인 모습입니다.




다행하게도 납땜 후, 칩 ID 체크까지는 한번에 성공했네요~ ㅎ.ㅎb

롬의 상위 어드레스 핀이 꼬였을 수도 있으니, 메탈기어2 다운로드해서 모든롬을 테스트해봐야겠습니다.



MMC/SD Drive V2 - Multi-ROM II 제작 #3 플래쉬롬 확장

음... 납땜의 연속입니다. ㅎ.ㅎ



74LS175(왼쪽), 74LS138(오른쪽) 선들이 연결된 모습입니다.

DATA 라인 등 SLOT BUS선들은 SCC핀을 이용해서 연결합니다. (가깝다는 이유로~ ㅎ)




기존 플래쉬롬의 /CE 핀은 아래처럼 니퍼로 살짝 끊어줍니다.

나중에 74LS138에 의해 셀렉트되겠지요.




AT29C040A의 /CE는 74LS138 출력에 연결되었습니다.




74LS138에 입력되는 /SLTSL 신호는 SLOT BUS의 신호를 그대로 연결하는게 아니라,

기존 보드에서 스위치를 통과한 /SLTSL 신호를 씁니다.

보드 뒤집었을때 AT29C040A의 /CE 핀 위치에 연결하면 되겠네요. 




납땜하는 김에 플래쉬 write 표시 용 LED를 달아봅시다. (흥건남자님 보드에는 해당 LED가 없습니다.)

MMC/SD 회로도를 보시면서 작업하믄 되겠네요.


일단 5V 전원이 필요한데요.

아래 사진 처럼 패턴을 긁어서 납땜할 곳을 만들어줍니다.

이 부분에 LED 다리를 직접 납땜하면 대충 위치가 고정되겠습니다요~




LED 신호는 뒷면의 U4(74LS125)의 4핀과 연결됩니다.




저항과 LED 직결된 모습입니다. LED 극성 주의(LED +를 보드 5V에)해서 납땜하셔야겠지요~




아래는 AM29F040B 플래쉬롬들입니다.

서로 서로 연결되는 중입니다. 땜하는데 시간 많이 걸리네요. ㅎ.ㅎ;




보드에 얹으면 이런 모양이 되겠습니다.




그냥 확장슬롯에 꽂아본 모습~

74LS138을 통해 AT29C040A 플래쉬(BIOS)가 기본으로 선택되어 동작합니다.




2012년 9월 19일 수요일

MMC/SD Drive V2 - Multi-ROM II 제작 #2 개조 회로

멀티롬 확장을 위한 회로를 약간 추가해보았습니다.


대충 그림(!!)을 그리면 아래처럼 됩니다~ ㅎ.ㅎ


기본적으로 7개 플래쉬롬을 위해, 74LS175와 74LS138 각각 한개씩 필요하구요.

플래쉬롬을 15개를 달고싶다(!!)면 74LS138을 하나 더 추가하면됩니다. (전 롬 7개만 넣습니다!)

이때 추가되는 74LS138의 1,2,3,4,5번핀들은 기존 LS138 핀과 똑같이 연결합니다.

138의 6번핀 175의 /Q3, Q3에 각각 연결되니, 헷갈리시믄 안되겠네요.


SCC 칩의 핀 레이아웃도 넣었습니다.

나중에 74LS175의 D1,D2,D3,D4 및 /RESET 를 SCC핀에 연결하게 됩니다.




아래는 175,138을 약간 재단한 모습입니다.

VCC, GND 핀을 넓게 벌렸구요, 175의 안쓰는 핀들은 잘라냈습니다.




아래는 74LS175를 붙이는 모습입니다. (칩을 뒤집어서 붙입니다.)

SCC 옆에 놓으면 자리가 딱 맞을겁니다요. ㅋ

175의 GND핀과 SCC의 GND핀을 서로 납땜하구요,

175의 VCC핀은 보드의 5V 패턴에 붙여줍니다.

사진에 금색으로 빛나는 부분인데, 저는 니퍼로 살살 긁어서 보호막을 벗겼어요. ㅎ.ㅎㅋ

떡납(!)을 발라서 잘 고정시켜주면 됩니다.

코나미 팩에 고정되는 홀과 175사이 간격이 좀 있어야되는데, 주의하셔요.

혹시 가지신 보드에서, SD카드 소켓 주변의 전선으로 175 자리가 안나오면....

다른 공간을 찾아보세요. (보드 뒷면에 배치하는 것도 가능할겁니다.)




아래는 74LS138을 붙인 모습입니다. (칩을 뒤집어서 붙입니다.)

VCC핀은 AT29C040A의 VCC랑 붙이면 되겠구요.

GND핀은 SCC용 어레이 저항의 GND핀(맨 끝이죠)에 붙이면 되겠습니다.

역시나 떡납(!)으로 단단히 고정하는게 좋겠습니다.




아래는 175, 138 칩들이 자리잡은 모습입니다.




아래는 멀티롬II 에 추가되는 플래쉬롬입니다.

총 7개의 PLCC 타입으로, 보드 뒷면에 들어갑니다.




납땜을 위해서 다리를 몽땅 폈습니다. (완전 노가다 ㅜ.ㅡ)

아래처럼 각 플래쉬롬의 /CE 핀이 바깥쪽을 향하도록 배치가 되겠습니다.