2003년 MSX에서 쓸 수 있는 C 컴파일러를 찾아보니 너댓개 정도 나오더라구요.
MSX-C, z88dk, HI-TECH C 등.
일단 MSX-C는 구닥다리 K&R 스타일이라서 그닥 관심이 없었는데요.
DOS2 전용 버전도 파일 입출력만 겨우 구현된 거라서 딱히 장점은 없었습니다.
이리저리 살피다가 결국 CP/M용 HI-TECH C를 선택했습니다.
89년에 나온 v3.09 버전인데, 이게 일단 ANSI C입니다.
나중에 제작사가 퍼블릭으로 풀어버렸더라구요. (이미 CP/M이 시장에서 사라졌)
사후지원을 안하는 대신 라이브러리는 소스로 포함해줬네요.
CP/M보다는 DOS/DOS2쪽으로 개발하는 게 목적이라서, 제게 딱 맞는 툴이었습니다 ㅎ.ㅎ
테스트 해보니,
스택의 로컬 변수 접근은 IX, IY 레지스터를 사용하는 방식이었구요.
라이브러리는 CP/M 스타일의 레코드 단위(128바이트) 처리라서 MSX에서는 손해를 보는 구조.
옵티마이저는 근거리 JR 선택해주는 기능 뿐이라서, 이건 버리고 따로 툴을 만들면 되겠더라구요.
컴파일러를 구동하는 환경은 처음에는 paraMSX를 이용했습니다.
에뮬의 CPU 속도를 올리면 그럭저럭 쓸만했어요.
나중에는 윈도용 에뮬레이터인 CP/M EXEcutor를 이용했습니다.
윈도의 폴더를 CP/M의 드라이브로 매핑해주는 기능이 있어서, make나 기타 툴을 사용할 때도 좋았죠.
최종 목표는
- DOS2 메모리매퍼
- R800 최적화
- 비트맵 그래픽 및 각종 사운드
등의 구현입니다.
MSX의 BDOS는
CP/M 2.2의 기본 호환에 MSX-DOS 전용 콜을 덧붙인 모습이구요.
이후 MSX-DOS2가 나오면서 전용 콜이 추가되었죠.
전체적으로 구버전의 MS-DOS랑 비슷합니다.
1차 목표는,
당시 MMC/SD 개발 관련으로 필요한 것들로 선정했습니다.
- 실행중인 DOS 버전에 따른 BDOS 콜 처리 (DOS2의 파일 핸들러가 더 좋죠)
- VDP 기본 기능 (VRAM R/W 등)
- SLOT R/W
ATLOAD -> 플래쉬롬 다운로더
DISKMAN, FLASHMAN -> MMC/SD 툴
MPXP -> MPX용 MP3 플레이어
등의 필요한 프로그램들을 하나씩 만들었네요.
당시 MMC/SD V1, V2 관련 툴은 기본 사양을 DOS용으로 만들어야해서 많이 힘들었어요.
램 64KB의 압박 ㅎ.ㅎ
2008년 MMC/SD V2.2 때, 많은 분들이 램을 늘려서 DOS2를 쓰게 됩니다.
'램은 기본 512KB로 늘리세요', 'DOS2가 좋아요', '터보알 ST는 램업 안하면 무쓸모'
등의 잡설로 제가 좀 압박을 했었지요ㅋ
2003년 ~ 2008년은 주로 MSX-DOS 프로그램을 만들게 되었네요.
그럼, 다음 편에서 이어집니다요~
