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