2015년 12월 26일 토요일

VGMPlay 1.1 for MSX 테스트 (MoonSound, SCC-I)

VGM (Video Game Music) 파일이 뭔지 아시나요? ㅎ.ㅎ

혹시 잘 모르시면, 아래 링크 참고하시구요. (도망..ㅋ)

http://www.smspower.org/Music/VGMFileFormat


요약하면,

VGM 파일은, 게임기 또는 컴퓨터에서 CPU가 사운드 Chip을 액세스하는 데이터들을 몽땅 로깅한 것입니다.

44100Hz 샘플링으로 되어있어서, 실제 기기에서 재생되는 것과 거의 동일한 품질로 사운드를 재생할 수 있어요.


암튼 요걸 MSX로 한번 재생해보았습니다.

프로그램은 제가 만든건 아니고 ㅋ

MRC의 grauw 아자씨가 만든걸 썼습니다. 버전 1.1까지 나와있구요.

원본 링크는 아래 참고하세요.

https://bitbucket.org/grauw/vgmplay-msx

https://bitbucket.org/grauw/vgmplay-msx/downloads


아래는 실기에서 VGMPlay 1.1 for MSX 구동한 영상입니다.

제 turboR에 문사운드, SCC-I 카트리지 장착된 상태이구요.

F1SPIRIT: PSG + SCC

GOONIES: PSC

SALAMANDER: PSG + SCC

YS II Special: OPL4(YM3812 OPL2 모드)

.. 순으로 나옵니다. 참고하셔요 ㅎ.ㅎ




2015년 12월 15일 화요일

MMC/SD Drive V3 제작 #7 - SD 카드 초기화

MMC/SD V3 제작기 일곱번째입니다.

아마 이글이 제작기 마지막이 되지않을까 싶으네요. ㅎ.ㅎ


다 아시겠지만...

MMC/SD V3에서는 마이크로 SD카드를 디스크로 사용하게 됩니다.

SD카드 규격(표준)이 여러가지 있지만, 지원되는 모델은 microSD 타입의 SDSC 및 SDHC입니다.

아직까지는 2GB짜리 SDSC 카드를 구할 수 있지만, 8GB SDHC 카드를 추천합니다.

요게 이유가 있는데요.ㅋ


MSX-DOS는 디스크 드라이브 문자를 최대 8개까지 사용가능합니다.

A, B, C, .... H 이렇게요

만약 램디스크를 활용한다면, H드라이브가 램디스크로 고정되니까 A~G 7개의 드라이브를 쓸 수 있습니다.

물론 본체 내장된 FDD까지 쓴다면 드라이브 하나 더 줄어들겠네요.


그리고, 사용가능한 파일 시스템은 FAT16 2GB가 최대용량입니다.

그럼 MSX에서 한번에 사용가능한 드라이브 용량은 2GB x 8개 = 16GB가 된다는걸 알 수 있지요?


사실 MSX-DOS2를 쓰더라도 FAT16 드라이브로 부팅하려면 꼼수를 써야해서,

보통 부트 드라이브 A는 FAT12로 포맷해야합니다.

FAT12는 32MB를 최대용량으로 보시면 되겠습니다.


그럼 어느정도 용량이 적당할까... 고민을 해보니 8GB SD카드가 좋겠더라구요.

파티션은 아래 두가지 정도가 괜찮아보입니다.

1. FAT12 32MB + FAT16 2GB x 3 + FAT16 1.5GB

2. FAT12 32MB x 2 + FAT16 2GB x 3 + FAT16 1.4GB


아무래도 본체 FDD, 램디스크 또는 다른 디스크기기(선라이즈IDE, MMC/SD V2 등)와 함께 쓰려면,

드라이브 갯수에 여유가 있는편이 좋겠지요?




그럼, 실제로 MMC/SD V3 에서 SD카드 초기화하는 과정을 보겠습니다.


1. MMC/SD에 SD 카드 빼고 부팅

   이렇게 하면, 자동으로 내장 플래쉬롬에 들어있는 롬디스크로 부팅하게 됩니다.

   MMC/SD V2랑 비슷하지요.




2. 롬디스크로 부팅하게 되면, DOS2 에서 바로 M 파일 관리자가 실행됩니다.

   도스 커맨드 창보다는 이 방법이 더 쉬울 것 같아서요..ㅋ


   참고로 M LITE 버전이 실행됩니다.

   그리고 이번 V3는 기본 메모리 256KB가 되지 않으면 활용이 불가능합니다. ㅎ.ㅎ;;;

   메모리가 작은데 V3 쓰고 싶다구요? 그럼 매퍼램 팩을 추가하시면 되겠습니다요~ㅋ




3. 파일 목록을 보시면, 압축파일 3개랑 INSTALL.COM, COPYSYS.BAT 이 눈에 들어오지요?

   INSTALL.COM 프로그램이 SD카드 초기화(파티션 설정 + 포맷)을 담당합니다.

   실행하면 아래처럼 나타납니다요!




  SD카드를 꽂고 리턴키를 누르면, 위 스크린샷처럼 현재 SD카드에 설정된 파티션과 메모리 용량을 확인 할 수 있습니다.

  어차피 초기화하면 다 지워지니까, 크게 신경쓰실 필요는 없구요.


4. [ 파티션 설정 ] 메뉴에서 원하는 조합을 고르시면 되겠습니다.

  일반 FDISK 프로그램 처럼 파티션 ADD/DELETE 메뉴를 만드려다, 걍 요렇게 해봤어요.

  파티션 사이즈는 FAT12 32MB로 고정되어있습니다.

  참고로 FAT16 파티션은 INSTALL 프로그램에서는 설정이 불가능하니까, 윈도 용 파티션 설정 프로그램을 활용하셔야겠습니다.


  2번 선택으로, 32MB 파티션 두개를 할당해보았습니다.




  파티션 생성 + 포맷까지 한방에 -끝- ㅋ


5. INSTALL 프로그램이 종료되고, 다시 M 파일 관리자로 돌아오게됩니다.

  이제 남은건 COPYSYS.BAT 파일을 선택/실행입니다요...

  M에서 커서키를 탁탁탁...리턴 누르셔서 배치파일 실행하면, 아래처럼 뭔가를 열심히 복사하는 모습을 보게됩니다~




  INSTALL 프로그램은 1초만에 끝나지만, 파일 복사는 압축 해제과정도 있고해서리... 시간이 좀 걸립니다.

  HELP, UTILS, TOOLS 디렉토리에 파일들을 풀어넣는 과정입니다. 참고하셔요.


6. 파일 복사가 끝나면, 재부팅하라는 메시지가 나오고 멈추게 되는데요.

  과함히 MSX를 리셋(혹은 전원 OFF/ON) 해줍니다.

  재부팅하면, M 실행까지 자동으로 오게되구요. 아래처럼 파일 목록을 볼 수 있습니다.

  INSTALL.COM, COPYSYS.BAT 파일은 SD카드에 복사하지 않으니 놀라지마시구요.

  요것들은 롬디스크로 부팅할 때만 볼 수 있습니다.



  

여기까지 완료되면, 생성했던 FAT12 드라이브를 정상적으로 액세스 가능하게됩니다.

그럼 남은건 SD카드 빈 공간에 FAT16 파티션을 추가하는 부분이네요.

요건 MSX에서는 힘들어서 파워풀~ MS 윈도에서 작업하도록 하겠습니다. ㅋ


7. 저는 MiniTool Partition Wizard Free 라는 프로그램을 사용했습니다. (무료입니다)

  아이콘 클릭, 클릭하면 쉽게 파티션 추가가능합니다.

  아래처럼 2GB 3개랑 1.3GB 1개 추가해보았습니다.




MiniTool Partition Wizard에서 파티션 생성 시, 포맷도 자동으로 됩니다.

생성 완료되면 SD카드를 MMC/SD Drive로 옮겨서 사용하시면 되겠습니다요!!


아래는 MSX에서 부팅한 모습입니다.

A ~ F까지 6개의 드라이브가 나타난걸 볼 수 있지요? (참고로 MMC/SD 팩은 본체 1번 슬롯에 꽂았습니다.)




아래는 부팅 후, FAT12 파티션 생성/포맷, 파일 복사가 진행되는 걸 동영상으로 찍은 모습입니다.

한번 쓰~윽 보시면 될 것 같네요. ㅎ.ㅎ

즐거운 밤 되셔요~




2015년 12월 8일 화요일

FontPack 제작 #7 - 메인 BIOS 폰트 바꾸기

FontPack은 대게 아래처럼 활용됩니다.


- M, HV 등의 FontPack 지원 SW 구동

- ANSI 스크린 전환 (고해상도 컬러 터미널 활용)

- IME 전환 (조합형 또는 완성형 한글 코드 입력)

- 1메가롬 게임 구동


오늘(2015.12.08) 업뎃된 FontPack Tool을 사용하면...

FontPack 내부의 SRAM 여유 공간을 활용하여, MSX Main BIOS의 폰트데이터를 바꿀 수 있습니다.


MSX의 Main BIOS에는 8 x 8 사이즈의 256개 문자 폰트가 들어있는데요.

MSX 본체가 판매되는 국가에 맞도록 문자 폰트가 조금씩 다르게 들어갑니다. (특수 영문, 한글, 일어 등등)


근데 여기서 한가지 중요한 사실이 있어요. ㅎ.ㅎ

Main BIOS는 기본적으로 바이오스 롬 내부의 폰트를 사용하지만,

외부 슬롯에 존재하는 폰트로 바꿀 수 있습니다.


예를 들어, 유럽에서 라틴 특수문자가 포함된 폰트 카트리지를 사용하면,

일제 MSX에서도 일어대신 라틴 특수문자로 쓸 수 있다는 얘기지요.

근데 실제로 이런 카트리지가 발매되어서 쓰인적이 아마 없을겁니다. (뭐, 있을지도 몰라요 ㅋ)


Main BIOS는 외부 슬롯의 롬폰트 지원 외, 한가지를 더 지원하거든요.

바로 문자 설정 용 Hook인데요.

BIOS에서 VDP에 문자 폰트를 재설정할 때 마다, Hook을 호출해서 SW적으로 오버라이드 할 수 있게 만들어놨습니다.

누가 만들었는지 잘 만들어놨죠? (이런 무수한 Hook때문에 MSX가 느려지는건 단점이긴 하지만요..ㅋ)


이번에 소개해드리는, FontPack을 이용한 BIOS 폰트 바꾸기는...

Hook을 쓰지 않고, FontPack 내부 메모리를 사용하는 방법입니다.


폰트 데이터는 8x8 1BPP로 된 FNT파일이구요.

256문자니까 총 2KBytes 용량의 파일이 되겠습니다.


아래는 제가 만든 MYFONT.FNT 입니다.




제꺼 터보알의 일어폰트에서 영문/숫자 정도만 조금 다르게 그려본 것입니다.

약간 동글동글하게 그렸어요. ㅎ.ㅎㅋ

엔화 기호도 역슬래쉬 문자로 바꿔넣었습니다.



참고로 BASIC 화면에서 표시해보면, 아래처럼 보이게됩니다.




FontPack으로 폰트를 바꾸면 Hook을 쓰는게 아니라서, 본체 메모리를 점유하지 않게 됩니다.

따라서 일반 프로그램 구동 시, 메모리 또는 Hook으로 인한 제약 사항이 발생하지 않습니다.


아래는 MuPLAY 프로그램을 실행한 모습인데요.

그래픽 모드로 구동되지만, FontPack으로 설정한 BIOS 폰트가 적용된 걸 볼 수 있습니다.

파일 경로랑 파일 목록 창을 자세히 보셔요~




어떻게 쓰는지 아시겠죠?

그냥 DOS에서 한번만 실행하면 끝이니까, AUTOEXEC.BAT에 넣어두어도 좋습니다.

만약 외부 폰트 변경으로 인한 문제(호환성 문제)가 발생하면,

파일명 없이 FONTPACK F 실행하면 원래의 메인 BIOS 폰트로 복구됩니다.

제가 몇개 테스트 하다보니, MGSEL에서 문제가 되더라구요. -_- 참고하시구요.


궁금한 점 있으시면 댓글달아주셔요~

그럼, 즐거운 밤 되시고...


PS. 제가 수정한 폰트랑 유럽,일본,한국 MSX에 들어간 폰트데이터 뽑아서 첨부합니다.

     압축 푸셔서 쓰시면 되겠습니다요!!!

Download: BIOS_FNT_20151208.zip


2015년 12월 6일 일요일

2015년 파라동 송년회 - 짧은 참석 후기

오랜만에 파라동 회원님들 만나러 용산에 다녀왔습니다.


2010년 정모 이후로는 이리저리 바쁘다는 핑계로 모임에 참석하지 못했는데,

이번엔 시간 맞춰서 올 수 있어서 좋았습니다~ (10시쯤 2차 도중에 도망가긴 했지만요. ㅋ)


나눔 용 물품으로 뭘 준비할까 쬐금 고민했는데, 롬팩은 아마 다른분들 준비하실꺼 같아서,

저는 폰트팩 하나 챙겼습니다요.ㅋ


룡산 한강반점에 도착하니 반가운 얼굴이 딱! 유령군님 흐흐~

시간이 흐르니, 회원님들 점점 늘어나네요. 어어... 이렇게 많이 오실줄이야!

오랜만에 뵙는 분들도 있고, 처음 뵙는 분들도 많아서 즐거웠습니다.


2차에서 가위바위보 나눔물품 쟁탈전도 재밌었습니다.

아래는 참고 용 시각자료입니다. (이게 전부라고 생각하시면 오산입니다. 아...오산... 우리집인데..)




사실 저는 MSX 외 게임기는 잘 몰라서리... 일단 좀 지켜보다가...

8421님 포켓PC 나눔에 손을 번쩍 들었습니다요.

결과는 흐흐... 아래 사진이 알려줄겁니다. ㅎ.ㅎ




검정색 포켓 PC 외, 유령군님 LED 라이트, 클랴님 MSX 열쇠고리, 맛탱이님 팩케이스, 소주님 손수 그리신 그림이 두둥~

아자씨들끼리 가위바위보 하니까 신나네요. 구경하는 것도 재밌었구요. ㅎ.ㅎ


간만에 오프라인으로 MSX 얘기, 게임 얘기하느라 즐거운 시간이었습니다.

연말이라 바쁘실텐에 많이 오셔서 좋았어요~


마지막으로, 소주님/유령군님! 모임 준비/진행 해주셔서 많이많이 감사드립니다~ ㅎ.ㅎb

올 크리스마스에도 복많이 받으실꺼에요!


그럼, 즐거운 밤 되셔요...


2015년 11월 24일 화요일

뜬금없는 turboR의 추억~ ㅎ.ㅎ

파라동에서 준성님 "미디 음악..." 글이랑 낄라님 "그거 집에 있잖..." 글을 읽다보니,

문득 제가 터보알을 샀던 때가 생각이 납니다~ ㅎ.ㅎ


음... 글만 주르르... 보시면 심심하니까 사진 하나 투척합니다. ㅋ

터보알 + MIDRY MIDI player + 롤랜드 SC88 VL 이 나오는 모습이에요... (클릭하면 쬐금 커집니다.)




회사 입사(2001년) 전까지는 집에 MSX라고는 대우 IQ 2000 한대 뿐이었습니다.

키보드가 맛이 가서, 가끔 조이스틱 꽂고 이스3 원코인(?) 클리어하는게 전부였던 기기였습지요.

(지금은 X-II 키보드로 장기이식 받아서 쌩쌩합니다.ㅋ)


뭐 IQ 2000 좋긴 하지만, 국딩 때부터 신나게 써왔던거라, 그다지 실기를 쓴다는데엔 미련이 없었구요.

fMSX 에뮬로 이것저것 돌려보는걸로 MSX 인연을 이어가던 정도였습니다.


아마 90년 중반에 fMSX 에뮬레이터가 나온건 많이 아실텐데요.

그 때쯤 에뮬에 관심이 생겨서 fMSX 소스로 윈도용 paraMSX 에뮬도 만들고,

만져보지 못했던 MSX 기기들을 에뮬로 접하면서 참 재미있었어요.


이것저것 만지다가, MSX-DOS2 라는게 있다는걸 알게 되었는데,

이게 가만 보니, 서브디렉토리도 쓸 수 있고, 대용량 메모리도 지원되고... 신기하더라구요. 흐흐...

음... 실기에서 돌려보면 286 정도 느낌이 나려나, 궁금하기도 하고,

에뮬레이터만 수년 쓰다보니, 실기도 다시 만져보고 싶고 뭐 그랬습니다.


그.래.서.

본체를 한대 구했었지요. 터보알은 아니고, A1-WSX 모델이었습니다. MSX2+ 죠.

사실 터보알 생각도 있었는데, 당시에도 국내에서 터보알 구하는게 쉽지않았습니다. 으어~~

암튼 그 때 샀던 WSX 아직도 잘 쓰고 있어요. (개발/테스트 용도지만...ㅋ)

저기 위의 사진에 보시면, 왼쪽 흰 수건에 덮힌 놈(?)이 있는데, 그게 WSX입니다요.


WSX가 램이 64KB라서 이대로는 MSX-DOS2 구동이 불가능하니까,

일단 램부터 512KB로 늘렸습니다. 참고로 WSX 메인보드 자체는 64KB 또는 256KB으로 쓸 수 있게 되어있습니다.

512KB로 만드는 방법은 구글링하면 쉽게 찾을 수 있었구요.

그 담엔 DOS2를 구해야하는데... 이것도 야매로 만드는 방법이 있었습니다.

간단한 16KB 매퍼에 64KB 짜리 롬하나 붙이는거죠.


참고로, 오리지날 ASCII DOS2 카트리지는 내부가 확장슬롯으로 구현되어있고,

DOS2 DISKROM + KANJI DRV + Mapper RAM 256KB 세트로 들어있습니다.

(음... 실제로 본적은 없어요. ㅋ)


야매 DOS2 롬은 일반 메가롬팩(매퍼 + 롬)과 비슷하다고 보시면 됩니다.

RAM은 본체에 128KB 이상 들어있으면, 부팅되니까 굳이 ASCII DOS2 카트리지를 살 필요는 없어요.

KANJI DRV도 왠만한 일제 MSX2에 기본으로 내장되어있구요.

그래서 완성된게 아래 사진입니다.


몽대륙과 DOS2가 합체 -_-




스위치가 하나 보이는데요. 요걸 눌러서 몽대륙/DOS2 전환이 가능합니다. ㅋ


여.기.서. 잠시

제목에 turboR 어쩌구라고 썼으면서, turboR은 언제 나오나요? DOS2 지겨운데...

라고 생각하실수도 있는데요. 그래서 첨에 사진하나 올렸잖아요. 좀만 기둘리세요. ㅋ


다시 이어갑니다.

룰루루~ 드뎌 DOS2 완성이구나. 흐흐흐...

아... 실기 MSX에서 DOS2 부팅을 볼 수 있다니 ㅎ.ㅎb


근데, 즐거움은 채 5분을 못 갔어요. ㅜ.ㅜ

와... 진짜!! 레알!! FDD로는 못해먹겠다 ㅠ.ㅠ

컴터가 느려서 심장이 멎을 것 같았지요.ㅋ


아... 이 기분은 1989년 쯤 저희 외할아버지께서 "속에서 천불이 나는구나!" 라고 하신 때와 동일한 느낌이었습니다.

음... 중딩 때 IQ 2000 + FDD에서 언데드라인 오프닝 데모를 보는데,

뒤에서 보시던 외할아버지께서 외치신 말씀이었습니다.

얘기가 옆으로 샜군요.


암튼, 그 때 내린 결론은 MSX-DOS2는 실기로는 무리구나... 였습니다.

왜 유럽애들이 7MHz 개조얘기를 많이 했었는지 이해가 가더라구요.

그리고 떠오른 생각!!

그렇다면 터보알 CPU 속도에서는 DOS2가 쾌적하지 않을까? 으흐흐...


드뎌 MSXturboR A1-GT가 등장합니다. -_-

몇달을 옥션에서 잠복한 끝에 A1-GT를 구했습니다. 하핫...


램 512KB, 미디, PCM, 내장 롬/램디스크, 최강의 머신 후덜덜...ㅋ

정말 빠르더군요. FDD는 여전히 느렸지만, DOS2랑 프로그램 동작 속도는 상상밖의 속도였습니다.

내장 롬디스크로 빠르게 부팅이 가능하고, 내장 램디스크가 배터리로 백업되기 때문에,

간단한 프로그램 몇개 넣고 쓰기에는 에뮬레이터만큼 편했습니다. ㅎ.ㅎb


음, 이제 겨우 DOS2 쓸만한 환경이 되었군. 후훗...

데스크탑 본체에 연결되어있던 미디 모듈(SC88 VL)도 터보알로 옮겨서, 음악도 듣고~

암튼 쓸만한 환경이 되었습니다.


IQ 2000, WSX 는 가끔...(진짜 가끔요.) 심심할 때 게임 한판씩 하는 정도였는데,

터보알 장만이후로는 좀 바꼈습니다.

에뮬레이터를 멀리하고 실기를 주로 쓰는 방향으로요.


또 그렇게 이년쯤 지나고나니, 슬슬 한계가 왔습니다.

FDD 대체할만한게 있어야겠구나. 좀 빨랐으면 좋겠는데... 선라이즈 IDE를 구하는것도 귀찮고 ㅋ

그 때쯤 MMC 카드라는게 눈에 보이더라구요.

크기도 작은데 용량이 32MB가 넘네... 이걸 MSX에서 쓰면 좋을텐데...

그러다 MMC Drive 만들게 되고, 2DD 디스크 게임도 MMC로 돌려보고...ㅋ


2007년 쯤에는 준성님의 MPX 카트리지가 나오면서, MP3도 들을 수 있게 되었구요.

MP3 재생하려니 MMC Drive 속도가 아쉬워서, MMC/SD Drive v2도 만들게 되었고...

그러다가 지금의 환경이 되었네요.


음... 두서없이 생각나는데로 써봤습니다.

결론은 turboR이 짱이다. 정도로 생각하시면 되겠습니다요. ㅎ.ㅎㅋ


그럼, 즐거운 밤 되셔요...


2015년 11월 14일 토요일

GRUN v1.6 release

Download: GRUN_v1.6_20151113.zip


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

    Game Runner v1.6 (MSX-DOS2용 게임 로더 2015.11.13)

        By 서영만 <E-mail:sharksym@hitel.net>

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


* Game Runner (GRUN)


  GRUN은 16KB 또는 32KB의 MSX1 게임롬 로더입니다.

  게임 실행 중 DOS로 복귀가 가능하며,

  게임 속도 조절 및 상태 저장/복구 기능을 지원합니다.



* 요구 사항


  MSX-DOS2가 구동되는 MSX2(VRAM 128KB) 이상의 기종.

  메모리 매퍼 추가사용 없음.



* 사용법


  DOS2 프롬프트에서 아래처럼 입력하면 롬파일이 실행됩니다.

  GRUN gamename.rom


  디스크 세이브를 하려면, 아래처럼 입력하면 됩니다.

  GRUN gamename.rom gamename.sav


  특수키 입력

  ESC : 게임을 강제 종료하고 DOS2로 복귀

  1   : 일시 정지

  0   : 게임 속도를 원래의 60프레임으로 복귀

  2   : 게임 속도를 30프레임으로 낮춤

  3   : 게임 속도를 40프레임으로 낮춤

  4   : 게임 속도를 45프레임으로 낮춤

  5   : 게임 속도를 48프레임으로 낮춤

  6   : 게임 속도를 50프레임으로 낮춤

  7   : 게임 속도를 52프레임으로 낮춤

  F4  : 게임 상태를 저장

  F5  : 게임 상태를 복구



* 마지막으로


  MSX 메인 BIOS를 패치 후 램에서 구동하므로,

  제대로 실행안되는 게임도 있습니다.

  코나미, 남코 등의 게임은 대부분 동작합니다.

 

  turboR에서 실행하는 경우, Z80 모드로 전환됩니다.


  

2015년 11월 2일 월요일

MMC/SD Drive V3 제작 #6 - 2DD DSK 모드

MMC/SD Drive에는 DSK 이미지 파일을 구동하는 기능이 있습니다.


구버전 V2에서는 SD카드를 2000개의 720KB 블럭으로 쪼개서 DSK파일을 저장하고,

게임 구동 시, 필요한 블럭(클러스터)을 리스트로 만들어서 관리하는 방법을 사용했습니다.

DISKMAN 프로그램의 메인 기능이었지요. ㅎ.ㅎㅋ

DISKMAN 사용법이 좀 번거럽긴 하지만... DSK 이미지 한번 세팅하면, 그 후론 쉽게 실행할 수 있는 장점이 있습니다.


하.지.만...

DISKMAN 사용법이 어렵다는 의견이 좀 많았습니다.

디스크 파티션이랑 UI 구상하느라, 거의 한달을 고민해서 만든거였는데... ㅜ.ㅜ


암튼 이번 V3에서는 DSK 관리를 위한 툴을 사용하지 않습니다.

그냥 디렉토리에 존재하는 DSK 파일을 드라이브 A:로 마운트해서 부팅시킵니다.


디스켓 여러장으로 된 게임인 경우는,

COPY /B DISKA.DSK + DISKB.DSK + DISKC.DSK  GAME.DSK

이런식으로 하나의 파일로 붙여서 사용하게 됩니다.


아래는 현재까지 구현된 기능들입니다.

- DSK 파일 클러스터 처리 (FAT12/FAT16 모두 지원)

- 여러장으로 묶은 DSK 처리 (숫자 키 눌러서 디스크 선택/전환)

- OneDrive 모드 (본체 내장 FDD 디스크롬 사용못하도록 설정)

- VDP 커맨드 처리 중 디스크 액세스 시, 자동으로 딜레이 타임 추가


참고로 기존 V2에 있던, 뱅킹 disable 모드가 V3에서는 항상 켜지게되구요.

게임 호환성을 위한 디스크 속도 낮추는 기능은 필요없도록 만들었습니다.

(필요한 경우 자동으로 속도가 낮춰집니다.)


아래는 MMCSD.COM 프로그램으로 Princess maker 를 구동한 모습입니다.

부팅 시 화면 한장 찍었어요.





참고로 OneDrive 모드는 부팅 시 CTRL키를 누르고 있으면, 켜지게 됩니다.

MMCSD.COM으로 DSK 구동하게 되면, 자동으로 리부팅하게 되는데, 이때 눌러주면 되겠습니다.

코에이 삼국지 등등 메모리 문제로 부팅 시 CTRL 키 눌러야하는 게임 생각하시면 되겠네요.


아래는 터보알에서 구동해본 영상입니다.

부팅 후, M에서 DSK 파일 클릭으로 원샷~에 실행되는걸 볼 수 있습니다요~

아마 보시면... 따로 매뉴얼 없어도 쉽게 사용이 가능할거라 생각됩니다. (아닐까요? ㅋ)




마지막으로... 하나 덧붙입니다.


기존 V2 기기를 OCM(또는 OCMC) 에서 사용하면, 디스크 전환이 불가능했었는데요.

이게 OCM VHDL 버그같네요. 8255 PPI쪽 문제인데... 해당 내용은 따로 글 올려보겠습니다.

암튼 OCM에서도 디스크 전환 잘 됩니다. OCM 버그를 회피하도록 코드를 수정했어요. ㅋㅋ

V2쪽 BIOS도 짬날때 업뎃해야겠습니다.


그럼, 이만 줄입니다. 즐거운 하루되셔요~ ㅎ.ㅎ

2015년 10월 22일 목요일

MMC/SD Drive V3 제작 #5 - MegaRAM 모드

MMC/SD Drive V3에는 플래쉬롬 외에 SRAM이 추가됩니다.


원래 SRAM은 MBR, FAT, 파티션 정보, 2DD에뮬 시 정보 저장을 위해 쓰이게 되는데요.

뭐 이정도라면 32KB 정도면 충분합니다만...

걍 512KB짜리 SRAM을 넣기로 결정했습니다.


왜냐구요?

MMC/SD Drive V3에서는 V2에서 쓰이던 멀티롬 기능이 제거되고,

대신 메가램 기능이 들어가게 되거든요..ㅋ


참고로 메가램은 메가롬을 흉내내는 기기입니다.

디럭스 박스, 럭셔리 박스 등의 카트리지 생각하시면 맞습니다!


이번 V3에서는 SCC 칩이 들어가지 않기 때문에, SCC 사운드는 들을 수 없지만,

HW적으로 기존 멀티롬 보다 좀 더 롬구동에 적합하도록 되었습니다.


MMC/SD에서 게임롬 구동을 짧게 비교하자면...

# V2 멀티롬

 1. 롬디스크 영역 일부에 롬 데이터 저장

 2. 롬의 뱅킹 루틴을 패치하여, 메인램으로 뱅킹 코드 이동

 3. 실제 HW에 맞도록 뱅크 변경하여 적용


# V3 메가램

 1. SRAM 영역에 롬 데이터 저장

 2. 롬의 뱅킹 루틴의 주소 변경(패치 )

 3. MMC/SD Drive를 메가램모드로 부팅


V2의 뱅킹 루틴은 메인램 상에 존재해야되서, 수행되는 코드 양이 늘어나게 됩니다.

대부분의 경우는 문제 없지만, 타이밍에 민감한 부분에서는 손해가 될 수 있어요.


V3의 메가램은 IO 주소만 변경되는거라서, 수행되는 코드 양이 동일하거나 약간만 증가합니다.

ASCII 8K, KONAMI 8K, KONAMI SCC 매퍼는 원본과 코드 사이즈 같구요,

ASCII 16K 매퍼는 V2 패치 코드의 절반 사이즈로 구동됩니다.


참고로, V2 멀티롬은 플래쉬롬에 이미 롬데이터가 들어있기 때문에,

DOS 구동이 불가능한 본체(32KB램 달린 MSX1 등)에서도 게임이 실행되는 장점이 있어요. ㅎ.ㅎ

주로 즐기는 게임 한두개 정도라면, 한번 로딩으로 언제든 실행이 가능하니 꽤 편하지요.


글이 자꾸 길어지네요. 별 내용이 아닌데..ㅋ

암튼 실제 구동 화면을 보시겠습니다요~


아래는 악마성 드라큐라 롬을 실행하는 모습입니다.

매퍼가 KONAMI 8K로 인식되구요. 패치되어 로딩됩니다.




아래는 4가지 매퍼타입의 메가롬들을 하나씩 실행해보는 영상입니다.

실제 동작이 어떻게 되는지 참고하시면 되겠습니다.




2015년 10월 12일 월요일

MMC/SD Drive V3 제작 #4 - SDHC 8GB 테스트

이번에는 SDHC 카드 테스트를 해보았습니다.


참고로, SDSC 카드는 32bit byte address로 메모리 액세스를 하기 때문에, 4GB 용량 제한이 있는데요.

SDHC 카드는 32bit block address 방식으로 바뀌면서 더 큰 메모리를 쓸 수 있습니다.

이번 테스트에서는 SanDisk 8GB SDHC 카드를 썼습니다.


구버전 MMC/SD BIOS를 수정해서, SDSC/SDHC 모두 사용할 수 있도록 만들었구요.

MBR/EBR 영역의 파티션 테이블을 이용하여, 여러개의 디스크 영역을 액세스 할 수 있도록 했습니다.


이렇게 SD카드를 HDD처럼 쓰는게 보편적인 방법인데,

기존 MMC/SD BIOS에서는 많은 수의 2DD 디스크를 쓰기위해 자체방식의 파티션을 구현해서 썼었지요.


암튼 8GB 카드를 6개의 파티션으로 나눴습니다. ㅎ.ㅎ

Partition Wizard라는 윈도용 프로그램을 사용했습니다.

MSX용 파티션 툴도 언젠가 만들어야겠지요? ㅋ




Primary 파티션 3개, Logical 파티션 3개 총 6개로 나누었구요.

앞쪽 두개 파티션은 32MB 용량으로 FAT12 디스크가 됩니다. MSX-DOS2 부팅하려면 FAT12가 필수겠죠?

그리고, 나머지 네개 파티션은 FAT16 디스크가 되겠습니다요.


아래는 제 turboR에서 부팅 시 모습입니다.

간략한 카드 정보와 전체 드라이브(파티션) 갯수가 표시됩니다.




MSX DOS1/2에서 최대 8개의 드라이브만 쓸 수 있으니,

이번 테스트 처럼 8GB 카드로 드라이브 6개 붙이고, 나머지 두개는 본체 내장 FDD, 램디스크 이렇게 하면...

아마 왠만한 환경에서는 충분히 활용이 될 것 같습니다.


만약 16GB 카드에서 8개 넘는 파티션을 쓴다면,

런타임으로 파티션 교체하는 기능 등... 뭔가 부가적인 방법이 있어야겠네요.


아래는 M 구동한 모습입니다.

슬롯2-1에 드라이브 6개가 연결된게 보이시죠?




아래는 DOSSCAN을 돌려본 결과입니다.

turboR 고속모드를 활용을 높이기위해, IO 코드 일부를 내부 메모리로 옮겨서 동작하게 됩니다.

스택을 약간 소모하는 정도라, 실사용에서 별 무리가 없을 걸로 생각합니다요~

속도는 544KBytes/sec 가 나오네요.




마지막으로 동영상 하나 붙입니다.

기존 MMC/SD보다 R/W 속도가 조금 빠르다는 것 외엔 특이한건 없어요. ㅎ.ㅎㅋ

영상 끝부분에는 SofaRunit 프로그램으로 DSK 이미지를 구동한 모습도 있습니다. 참고하시구요.

(근데 배경음악 볼륨이 넘 크네요. 소리 좀 줄이고 보셔요~ ㅋ)




2015년 10월 3일 토요일

프리뷰가 나오는 멀티롬팩을 만들어보아요~

이제 저희 애들이 많이 커서, 지들끼리 MSX 겜도 잘 합니다. ㅎ.ㅎㅋ

MSX 게임팩은 70개쯤 있지만... 좀 더 편하게 쓸 수 있도록 멀티롬팩을 하나 만들었습니다.

애들 수준에 맞는 겜으로 24개를 모아보았어요.


팩에 사진도 한장 프린트해서 붙이고~ 으흐흐..ㅋ

이런 모습입니다! ㅎ.ㅎ




일반 멀티롬팩(합팩)과 차이라면....

게임 선택 메뉴에서 실제 게임샷을 볼 수 있다는 점인데요.

실제 실행하면, 아래처럼 나옵니다.

화면 2/3는 게임 모습이구요. 아래쪽 1/3 화면에 게임 목록이 표시되겠습니다요.




멀티롬팩이야..뭐, 플래쉬롬만 큰거 달면 쉽게 만들수 있겠죠?

지난번 폰트팩 만들다가 남은 보드 재활용해서 쓰도록합니다. 1MB 플래쉬롬 사용할꺼에요.


음... 그럼, 다음 문제는 각 게임의 화면을 캡쳐하는 일인데... 어떻게 하면 쉽게 가능할까요?

80년대에는 좀 힘들었겠지만, 지금은 21세기가 아닙니까요? 걍 에뮬레이터로 갑니다~ ㅋ


paraMSX를 이용하면 VDP 레지스터와 VRAM 내용을 그대로 덤프할 수 있습니다.

아래 스크린샷 참고하셔요.




VDP 레지스터 설정만 알면, 필요한 데이터들을 추출할 수 있겠지요?

걍 윈도용 프로그램하나 만들어서 돌립니다~




패턴 네임, 패턴 제너레이터, 컬러 테이블의 메모리 영역을 확인해서,

스크린2 화면의 상단 2/3 영역을 파일로 뽑습니다.


아래 스크린 샷 참고하셔요.

VRAM0.BIN -> 패턴 네임 데이터

VRAM1.BIN -> 패턴 제너레이터 데이터

VRAM2.BIN -> 컬러 테이블 데이터




전체 24개의 게임들의 스크린샷을 추출하면, OK!!

이제 남은 건, 실제 MSX에서 구동될 런처 프로그램이네요.


화면 출력용 ASCII 폰트 하나 집어넣고, (왠지 BIOS 내장 폰트 쓰면 좀 누추해 보일까봐서요..ㅎ.ㅎ;;)

키 또는 조이스틱 입력받아서 선택/실행할 수 있도록 간단하게 만들었습니다.


실제 구동한 모습은 동영상으로 보여드립니다.

국딩 때, 학교 PC실에서 친구랑 트윈비 많이 했었는데... 이제 저희 애들이 겜하는 모습을 보니 감회가 새롭네요~




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


2015년 9월 21일 월요일

MMC/SD Drive V3 제작 #3 - 최대 전송 속도??

속도 관련, 숫자 계산을 한번 해봤습니다.

LDI 명령 하나만 수행 했을 때의 시간으로 계산했습니다.


참고로 LDI는 Z80 2바이트로 된 명령인데요.

  HL 주소의 1바이트를 읽어서 DE 주소에 저장 및

  HL, DE 주소값은 1씩 증가,

  BC 카운터는 1 감소

하는 명령어입니다.


실제 프로그램에서 디스크 1섹터(512바이트)를 전송하려면, LDI 명령을 512번 실행하면 되겠지요?


표에서 DOSSCAN 결과는 실제 디스크롬으로 사용 시 값입니다.

Z80 모드일때는 3.58MHz, R800 모드일때는 7.16MHz 클럭입니다. 참고하셔요.




괄호 안의 I-E-I 등의 표시는 메모리 위치가 본체 내부(I) DRAM인지 외부(E) 슬롯인지 나타냅니다.

Op code, Source, Destination 순의 메모리위치입니다.

wait clock 값은 아래 링크 참고하시면 되겠습니다.

http://map.grauw.nl/resources/z80instr.php


#1 값은 외부슬롯 접근시 wait 4클럭 일때구요.

#2 값은 wait 5클럭일 때의 결과잆니다.

delay + BUS 클럭 align 으로 인한 wait값이라 실제 동작 시 어떤 클럭이 맞을지는 알수 없어요. ㅎ.ㅎㅋ


모든 메모리가 내부 DRAM인 경우, 계산치로는 998KB/sec인데,

실제 DOS2 램디스크 테스트 시, 520KB/sec 정도밖에 속도가 안나오네요.

메모리 매퍼 설정(IO port)하느라 느려진게 아닐까 의심됩니다.


그럼, 이만~ ㅎ.ㅎ

2015년 9월 18일 금요일

MMC/SD Drive V3 제작 #2 - 전송 속도를 올려보자

구상한 것들을 대강(?) 테스트 할 수 있도록, 보드를 하나 준비했습니다.


아래처럼 생겼습니다요.

어라... 어디서 본 것 같다구요? 에이... 설마요 ㅎ.ㅎㅋ




SD 카드 소켓 근처의 넙쩍한 부품은 OSC(오실레이터)입니다.

책상에 굴러다니는 48MHz 짜리 하나 붙였어요. FULL size type이라 꽤 큽니다. ㄷㄷ

최종 보드에는 작은 걸(SMD type)로 달아줄 생각입니다.


기존 v2 기기에서는 OSC가 따로 없고, MSX 슬롯의 CPU CLOCK을 사용하였지요.

일반 MSX2 및 터보알에서는 3.58MHz 고정이구요.

OCM 고속모드 또는 WSX의 5.37MHz 터보 모드에서는 좀 더 빠르게 동작했습니다.

이번 v3에서는 그냥 외부 OSC 48MHz 고정된 동작 클럭을 사용하게 됩니다.


SD 카드 인터페이스는 SPI를 사용합니다. 기존 v2랑 동일합니다.

4BIT SD 모드를 쓸까 잠시 고민했었는데요.

CRC 로직도 넣어야하고, CMD용 1BIT, DATA용 4BIT 모두 만들려면 귀찮겠더라구요. 깨끗하게 포기 ㅋ

대신 SPI SCLK 클럭을 올리면, 쉽게 고속 전송을 구현할 수 있습니다.


SD카드 스펙 상으로는 25MHz 까지는 기본 지원이라 MSX에서는 충분하다고 생각되네요.

48MHz OSC를 2분주한 24MHz가 실제 v3 SPI SCLK 속도가 되겠습니다.


제대로 만드는 것 보다, 일단 동작 테스트부터 해보는게 재밌겠죠? ㅎ.ㅎㅋ 

이번에는 MBR 파티션 테이블을 지원합니다.

간단하게 2GB SD카드에 32MB 파티션 하나 넣고 돌려보았습니다.


아래는 DOSSCAN 프로그램으로 전송속도 측정한 모습입니다.


Z80 모드에서 151KB/sec가 나오네요.

기존 v2가 132KB/sec 정도니까 약 15% 정도는 빠른 셈이군요.



아래는 R800 DRAM 터보모드에서 테스트한 것입니다.

참고로 디스크 액세스 시, Z80 모드로 전환되지 않도록 미리 패치한 상태입니다. (R800-DR 툴 사용)


307KB/sec 나오네요. 기존 v2는 238KB/sec 였습니다.

디스크 루틴이 외부 슬롯에서 구동되는 상황인데도, 의외로 꽤 빨라지네요.

사실 이건 예상 못했습니다.



아래 사진이 중요합니다. ㅎ.ㅎ

v3에서 빨라진 SPI 인터페이스를 제대로 활용하기 위해서는, 디스크 액세스 루틴을 더 빠르게 돌릴 방법이 필요한데요.

터보알에서는 이게 가능합니다.

외부 슬롯은 3.58MHz로 느리게 동작하지만(호환성 목적), 내장 메모리에서는 7.16MHz로 두배 빠르게 동작합니다.

R800의 빠른 머신 싸이클을 그대로 쓸 수 있습니다.

(외부 슬롯에서는 3.58MHz에 동기하느라 불필요한 wait가 들어가게됩니다.)



무려 518KB/sec가 나오네요. 기존 v2의 238KB/sec 비하면 두배 이상 빠른 속도네요.

op code fetch만 내부램으로 바뀐 것 뿐인데... 흐..ㅋ

참고로, 실제 코드 상으로는 디스크 루틴 LDIR 명령 하나만 램으로 옮겨져있습니다.

나중에 전체적인 최적화를 하게되면 얼마나 빨라질지 상당히 기대됩니다요~


오늘은 여기까지입니다.

다음편을 기대해주셔요~ ㅎ.ㅎ

2015년 9월 2일 수요일

MMC/SD Drive V3 제작 #1 - 구상

MMC/SD Drive를 처음 만든게 2004년 여름이니까, 이제 11년쯤 지났네요.

한동안 잘 쓰고 있었지만, 이제 새 버전이 나와야할 시대가 온 것 같네요. 넘 늦었나요? ㅎ.ㅎ;


MMC/SD Drive 역사(?)를 되짚어보면...ㅋ

2004년 - V1 개발 (2DD DSK 이미지 에뮬)

2007년 - V2 개발 (속도 증가)

2008년 - V2.2 개발 (DOS2 커널 포함, FAT16 지원)

2009년 - 멀티롬 구현 및 DISKMAN 파티션 재설계

2012년 - 멀티롬-II 구현

2015년 - V3 ??


MMC/SD Drive V3에서는 기능이 약간 바뀔 예정입니다.

- DOS1 지원 제거

- SCC 칩 제거 (사운드 기능 없음)

- DISKMAN 파티션 방식의 2DD 에뮬 제거 (새로운 2DD 에뮬로 대체)

- 멀티롬 및 멀티미디어(동영상/PCM) 기능 제거

- SDHC 카드 지원 (MicroSD 슬롯 1개)

- MBR 파티션 지원

- turboR 전용 고속 전송 루틴 추가


기존 V2.2는 이것저것 기능이 복잡했지만, V3는 디스크 관련 기능만 넣으려고 합니다.

사용법은 기존보다 간단해서 쉬워질거라 예상합니다요~


PS. 기능 관련으로 의견있으시면, 덧글 달아주세요~!!


2015년 8월 23일 일요일

FontPack 제작 #6 - ANSI 스크린

FontPack....

M, HV 프로그램 외에는 활용하는 프로그램이 없어서 심심하셨죠? 아니라구요? 음... ㅎ.ㅎㅋ


이번에는 ANSI escape 코드를 지원하는 스크린 드라이버를 구현해봅시다.

참고로 ANSI 코드(ANSI escape sequences)는 아래 링크에서 확인할 수 있습니다.

궁금하신 분을 클릭하셔요.

http://ascii-table.com/ansi-escape-sequences.php


대강 요렇게 구현되겠습니다.

- 스크린7(VDP G6), 인터레이스 모드

- CP949 코드, 6x12(영문), 12x12(한글) 폰트

- 화면 사이즈는 85컬럼 35라인

- MSX-DOS 모드 지원 (스크린7)


아래는 보너스 모드입니다.

- 스크린6(VDP G5), 인터레이스 모드

- CP949 및 조합 코드, 8x16(영문), 16x16(한글) 폰트

- 화면 사이즈는 64컬럼 24라인

- MSX-DOS 및 BASIC 텍스트 모드 지원 (Fake 스크린0)


문자 입출력 관련 Hook으로 구현되기 때문에 호환성 문제가 생길 수 있습니다.

따라서, 기본으로 OFF 상태로 부팅하도록 합니다.

ANSI 스크린 설정은, 아래처럼 DOS 용 프로그램 또는 BASIC의 CALL 명령을 사용합니다.



아래는 실제로 구현/동작하는 영상입니다.

아직 ANSI 코드, BASIC 지원이 100% 완료된 상태는 아니구요, 기본 기능 몇가지만 구현된 상태입니다. 참고하셔요~




2015년 8월 9일 일요일

R800-DR 수정판 - turboR 디스크 동작 시, CPU 모드 고정

MSXturboR은 기존 MSX 3.58MHz 호환성을 높이기 위해,

VDP, OPLL, 외부 롬 액세스 시, HW적으로 delay를 넣고 있습니다.


일반적으로 FDD의 HW IO 처리는 해당 디스크롬 내부 SW로 구동이 되는데요.

이 때는 turboR이 강제적으로 HW delay를 넣을 수가 없기 때문에,

turboR DOS2 루틴에서 CPU 모드를 Z80으로 몰래 바꿔서 처리합니다.


이 때문에 디스크 속도가 느려지게 되는데, 이 문제를 해결하는 프로그램이 R800-DR 입니다.

특정 드라이브 액세스 시, Z80 모드로 전환하지 않고 R800 모드 그대로 동작하도록 해줍니다.

DOS2CASH, LUNA 등의 디스크 캐쉬 프로그램도 동일한 기능을 갖고 있지만,

FAT16 드라이버와 함께 쓸수가 없어서 무용지물이죠.


첨부된 R800-DR은 제가 약간 수정한 버전입니다.

원래 버전은 드라이브 A,B만 Z80모드 사용하고 그 외는 R800 모드로 고정되어있는데,

수정한 버전은 드라이브 별로 Z800/R800 모드를 설정할 수 있습니다.




원본 코드 및 수정 버전(소스 포함) 모두 첨부했습니다.

필요하신 분 받아서 테스트해보셔요.

Download: R800-DR_MOD_20150809.ZIP

Download: R800-DR_ORG.ZIP


argument는 순서대로 드라이브 ABCDEFGH 의 모드를 설정합니다.

1이면 Z80으로 되구요. 0이면 R800 그대로 동작입니다.

참고로, MMC/SD 및 램디스크 드라이브는 R800 모드로 잘 동작합니다.


아래는 MMC/SD는 32MB, 램 디스크는 512KB 용량에서 DOSSCAN 테스트 결과입니다.

Z80 전환안하면 무지 빠릅니다. ㅎ.ㅎb


R800-DR 사용 않을 때,

MMC/SD = 145KB/sec

램 디스크 = 128KB/sec


R800-DR 사용 할 때,

MMC/SD = 238KB/sec

램 디스크 = 512KB/sec


아래는 R800-DR 코드 관련 참고한 내용입니다.

http://www.msx.org/forum/msx-talk/software-and-gaming/r800dr-dos




2015년 8월 1일 토요일

M File Manager v2.0 for MSX-DOS2


Download: M_v2.0_20150801.zip


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

    M v2.0 (MSX-DOS2용 파일 매니져 2015.08.01)

        By 서영만 <E-mail:sharksym@hitel.net>

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


* 변경 내용


  - FontPack 카트리지 지원 추가. (한글, 특수문자, 한자)

  - RAM Disk 드라이브 인식 추가.

  - 선택된 파일 갯수 및 용량 표시 추가.

  - 커맨드라인 입력 창, 2줄로 변경.

  - 내장 커맨드 추가.

     #CDD : 드라이브/디렉토리 이동

     #CPU0: turboR Z80 모드

     #CPU1: turboR R800 ROM 모드

     #CPU2: turboR R800 DRAM 모드

  - MPXP/IMSP 재생 시,

     여러개 파일 선택 가능. (곡넘김은 [취소]키 사용)

     turboR LED 레벨미터 기능 추가. (M.INI에서 OFF가능)

     MP3/WMA Bit Rate 표시 추가.



* File manager - M


  M은 MS-DOS에서 널리 쓰이던 Mdir과 비슷한 프로그램입니다.

  파일 관리 및 실행을 도와줍니다.

  인터레이스 고해상도 모드를 사용하며 완성형 한글도 지원합니다.

  넌인터레이스 모드 사용 시에는 8x8 폰트로 표시됩니다.

  (내장 폰트 대신, 외부 파일 로딩 가능. 2048바이트 폰트)



* 요구 사항


  MSX-DOS2가 구동되는 MSX2(VRAM 128KB) 이상의 기종.

  추가 메모리 매퍼 192KB (기본/R800_TR 버전), 128KB (Lite버전)



* 설치


  PATH가 걸린 디렉토리에 압축파일을 모두 풀어넣습니다.

  만약 LITE 또는 R800_TR 버전을 쓰려면 해당 디렉토리 내의

   M.COM, M.OVL 두개 파일을 복사하면 됩니다.



* 사용법


  PATH 걸린 디렉토리에 설치가 되었으므로,

  DOS2 프롬프트에서 M [리턴] 하면 실행됩니다.


  파일 뷰어 상에서의 동작키에 대한 설명은,

   M 실행 후 F1을 눌러 #HELP를 실행하면 볼 수 있습니다.


2015년 7월 27일 월요일

FontPack 제작 #5 - 한글 IME

폰트팩 BIOS 롬에 한글 입력기(IME)를 넣어보았습니다.


일단 아래처럼 구현해보았어요.


- 키배열: 두벌식 한글

- 문자입력: 영문, 한글, 한자

- 영문/한글 입력모드 전환: KANA 키

- 한글/일어 입력모드 전환: 한글 모드 상태에서 CTRL + SELECT 키

- 한자 입력: 한글 한글자 입력 후, GRAPH + SELECT 키 (동음 한자 순환)


문자 조합/삭제 방식은 윈도의 한글 IME와 유사하도록 되어있습니다.

아무래도 익숙한 방식으로 만드는게 편하겠죠?


한자 입력은 GRAPH + SELECT 키 누를 때마다, 해당 음의 한자들을 한글자씩 바꿔줍니다.

동음 한자 리스트가 끝나면, 원래 한글 문자로 돌아오구요. (계속 누르면 반복됩니다.)


본체 BIOS의 일어(KANA) 입력은, CTRL + SELECT 키를 누르면 즉시 전환됩니다.

전환 할 때, BEEP 소리 나도록 해놨으니 놀라지 마시구요~


물론 일어 코드와 한글(CP949) 코드 영역이 분리되지 않아서,

응용 프로그램에서 문자 출력 시, 한글/일어 선택할 수 있는 방법이 있거나...

하나의 코드로 고정해야됩니다.

(혹시 MSX3 만드시는 분 계시면, BIOS 문자 처리는 유니코드로 해주셔요. ㅎ.ㅎㅋ)


부팅 시, 스크린샷 하나 찍어보았습니다.



아래는 실제 동작영상입니다. 어떤식으로 돌아가는지 대충 파악이 되실꺼에요~ ㅎ





PS. 현재 업뎃된 M 프로그램에서는 2바이트 문자를 인식하도록 개선되어있습니다.

     커서키, BS, DEL 등의 키입력이 제대로 된다는 말씀이죵.


PS2. 조만간 코드 정리되면, 폰트팩 관련 유틸들의 업뎃이 있을 예정입니다.



2015년 6월 25일 목요일

FontPack 제작 #4 - 최종 스펙 정리

플래쉬롬의 빈 공간, SRAM, 코드 변환 등, 일주일정도 고민을 해봤는데요...

아래처럼 정리되었습니다. ㅋ


1. 코드 변환 테이블 5개 할당

  - 유니코드 -> CP949

  - 조합코드 -> CP949

  - CP949 -> 유니코드

  - CP949 -> 조합코드

  - CP949 한자 -> 한글독음


2. SRAM 영역 코드로 사용

  - 아스키16 매퍼 1메가롬팩 처럼 구동

  - 도스에서 다운로드 및 실행 


3. 유저 롬(128KB) 추가

 - 플래쉬롬에 유저 영역 128KB 할당.

 - 부팅 시 기본 BIOS 또는 유저 롬 선택 가능.

 - 유저 롬 선택 시, SRAM으로 롬코드 복사되어 실행


4. ASCII 폰트 셋 1개

 - 여러개 넣어봤자 크게 효용이 없을 듯....은 핑계구요.

   CPLD 용량이 꽉차서 -_- 폰트 셋 1개만 사용합니다.

   (8x16 한벌, 6x12 한벌)


그.래.서. 최종 레지스터 맵 나갑니다~ 빠빠빠~~




코드 변환 설정 용, BIT 영역이 좀 늘었구요.

SRAM을 메인 메모리 뱅크로 설정하는 기능이 들어갔습니다.

ASCII 16K 롬을 패치 없이 SRAM으로 로딩/구동이 가능합니다.



아래는 최종 메모리 맵입니다.




처음에 언급했던 USER ROM 영역(128KB) 추가되어있습니다.

사용자 취향에 따라 확장 BIOS롬 또는 일반 아스키16 메가롬 이미지를 넣으면 되겠습니다요.

부팅 시, "F" 키를 누르면, BIOS롬 대신 USER 롬이 구동됩니다.

물론 폰트 IO는 똑같이 동작하겠구요.


BIOS롬은 어떤 기능이 들어가게 될지 아직 정해진건 없습니다.

한글 입력기라던가.... KANJI 드라이버의 디스플레이(인터레이스 모드 등)에 한글 조합이라던가...

정도로 고려중입니다. ㅎ.ㅎ



아래는 코드변환 샘플 프로그램을 실행항 모습입니다

BASIC 프로그램이에요.



Hanja to Hangul 변환은 그냥 한자 음독이라고 생각하시면 되겠습니다.


아래는 실제 프로그램 소스입니다.

IO 포트 핸들링 참고하시면 되겠습니다.




머리털 나고 처음으로 PCB 한번 그려보았습니다.

왜 그렸냐구요? PCB 찍으려구요. ㅋㅋ

Eagle 캐드이구요. 오버리치님 케이스에 맞는 사이즈로 되어있습니다.




보드 오른쪽 공간에 SD카드 자리도 하나 넣었어요.

다른 개발 테스트 용도로...으헙...ㅎ.ㅎㅋ



아래는 PCB 실물 사진입니다.

납땜 실력이 메롱이라, CPLD 붙이는게 힘드네요.



비아홀이 Eagle 캐드 기본설정인데, 사이즈가 너무 크네요. -_-




여기까지입니다~

즐거운 밤 되셔요~ ㅎ.ㅎ


2015년 6월 16일 화요일

FontPack 제작 #3 - 문자 출력 테스트

이번에는 폰트팩의 문자 출력 및 코드 변환을 해보았습니다.


아래는 폰트팩의 I/O 레지스터 맵입니다.

기본적인 입출력은 I/O 포트를 통해 동작하도록 만들어져있습니다.




첫번째 레지스터(50H)는 read 시, 이전에 write한 값이 들어오지만,

그 외 레지스터(51H, 52H, 53H)들은 read/write 각각 기능이 다르게 동작합니다.

52H, 53H 레지스터는 읽을 때마다, 값이 변하게 되어있습니다.

레지스터 내부적으로는 메모리의 32bytes 공간을 순차적으로 read하도록 동작합니다. (1BPP 기준)

만약 4BPP 모드라면, 128번 read 가능합니다.



아래는 16 x 16 사이즈 폰트로 내장된 데이터입니다.

90년대 널리 쓰였던 844 조합 폰트로 만들어져있습니다.




아래는 간단한 BASIC 프로그램으로 폰트 데이터를 표시해주는 모습입니다.

1BPP 모드로 설정되므로, 글자 한개당 32bytes를 읽습니다.


문자코드 B0A1 '가' 입니다.




CP949 확장 코드인 8142 '갃' 입니다.




아래는 사용되었던 BASIC 프로그램 소스입니다.

한글 뷰어 HV로 표시한 모습입니다. (12 x 12 폰트 모드 사용)




아래는 컬러 레지스터를 활용하여, 4BPP 모드로 출력해본 모습입니다. (스크린 7 사용)

문자색이 설정되면, 포트에서 읽은 데이터에 이미 색이 입혀져(?) 있습니다.

VRAM에 그대로 써주면 되도록 만들어져있습니다.




같은 방식으로 아스키 문자를 표시한 모습이구요.

참고로 아스키 문자는 4벌이 들어있습니다.

모드 레지스터 설정으로 선택이 가능합니다.




아래는 한글뷰어(HV)로 16 x 16 및 12 x 12 폰트를 테스트한 모습입니다.

하이텔 파라동 시절 완성형 코드로 된 갈무리 문서를 표시했습니다.


16 x 16 사이즈~




요건 12 x 12 사이즈

폰트가 굴림체라서, 윈도 메모장 처럼 보이죠? ㅋ




아래는 조합형 코드를 사용하는 ISS 문서를 표시한 모습입니다.

ISS 파일 아시죠? IMS 음악 가사 파일이요. ㅎ.ㅎ



 

12 x 12 폰트로 표시한 모습~




아래는 12 x 12 폰트로 사용된 굴림체 데이터입니다.

원본 FNT 파일은 16 x 16 사이즈로 되어있지만, 폰트롬으로 변환할때는 12 x 12 외의 공백은 삭제되어 들어갑니다.




그럼, 이번에는 폰트팩 SRAM를 이용한 문자 출력 테스트입니다.

MS 도스시절 쓰이던 폰트의 특수 문자 몇개를 긁어왔습니다.ㅋ (4Kbytes)




아래처럼 FONTPACK.COM으로 다운로드 가능하구요.




아래는 4BPP 모드로 설정해서 표시한 모습입니다.

참고로 2bytes 문자 코드가 0000H ~ 7FFFH 사이값이면, 폰트팩 SRAM 데이터가 출력이 되구요.

코드가 8000H ~ FFFFH 사이값이면, 플래쉬롬의 데이터가 출력됩니다.




마지막으로 코드 변환 테스트입니다.

CP949 코드와 조합형 코드 사이 변환이 가능한 것을 볼수 있습니다.