Just a Blog

z88dk를 통한 MSX용 C 프로그래밍 소감 본문

IT, Computer

z88dk를 통한 MSX용 C 프로그래밍 소감

wehong 2024. 7. 16. 20:47

MSX에서 자주 쓰던 BASIC 프로그램을 빠르게 구동하고 싶어서 비슷한 기능을 하는 프로그램을 BASIC이 아닌 다른 방법으로 만들어 보아야 겠다는 생각이 들었다. 8비트 컴퓨터에서는 어셈블리 언어로 프로그램을 만드는 것이 가장 성능 좋은 결과를 뽑겠지만, 관련해서 스터디도 필요하기에 현재 개인적인 상태에서는 효율성이 떨어질 것 같아서 차선으로 C 언어를 고려해 보았다.

MSX 플랫폼에서 선택할 수 있는 C 컴파일 환경의 종류는 네이티브 컴파일 환경과 크로스 컴파일 환경으로 나눌 수 있었다. MSX-C 등 MSX 기기 내에서 네이티브 프로그램을 직접 빌드하는 환경의 경우 현재 기기들의 성능과 너무 동떨어져 효율이 낮을 것 같았으며, 그래서 HI-TECH Z80, SDCC, z88dk 등의 크로스 컴파일 환경을 고려해 보았다. 그 중에 우선적으로 간단하게 보이는 z88dk을 살펴보고 사용을 시도해 보았다.

 

z88dk는 8080, 8085, z80 등의 z80 유사 프로세서를 타겟으로 사용할 수 있는 C 또는 어셈블러 등의 개발 도구이다.  Windows 운영체제나 macOS 운영체제에서 관련 파일을 복사하고 환경설정을 하는 정도만으로 쉽게 사용할 수 있었다. 비교적 간단한 옵션만으로 MSX용 실행 파일(ROM 이미지, MSXDOS 파일 등)을 생성할 수 있어서 초보자가 다가가기 쉬워 보였다.

 

개인적으로 사용해 본 개발 방법은, 텍스트 에디터로 C 언어를 작성한 뒤 커맨드 창(명령어 프롬프트)에서 빌드 커맨드를 입력하여 빌드한 뒤 해당 결과물을 blueMSX 에뮬레이터에서 구동하여 확인하는 방식이었다.

 

아주 짧은 시간 간단하게 사용해 보았지만 사용해본 소감은, z88dk를 MSX 전용으로 사용하기에는 불편해 보인다는 것이다.

우선, 관련 라이브러리를 찾기가 힘들어 MSX BASIC 만큼의 다양한 기능을 쉽게 사용하기 어려웠다. include 디렉토리 안에 많은 헤더 파일이 있고 lib 디렉토리 안에 다양한 라이브러리 파일이 있지만, MSX를 타겟으로 했을 때 사용할 수 있는지 또는 MSX에 적용할 수 있는 라이브러리 함수는 무엇인지 알기 쉽지 않았다. 표준 clib 이외에 다른 환경에서 종종 사용하던 이름과 비슷한 헤더 파일을 include 하고 라이브러리 함수를 호출해 보아도 생각대로 동작하지 않는 경우가 많았다. 예를 들어 MSX의 80 컬럼의 screen 0 모드로 진입하도록 코드와 라이브러리를 설정하는데 꽤 많은 시행착오를 거쳤으며, BASIC의 LOCATE 구문처럼 커서의 위치를 스크린 내에서 쉽게 변경하는 라이브러리를 찾기도 어려웠다.

다음으로, z88dk가 여러 프로세서와 타겟 시스템을 다루다 보니 MSX에 특화된 해답을 찾기도 어려웠다. 내부에 타겟 별로 example 코드가 있지만, MSX의 경우 대부분 그래픽 사용 코드들이어서 텍스트 출력 프로그램에 도움을 받기 어려웠다. 자체 온라인 포럼이 있지만 MSX 관련된 주제의 글을 많지 않았으며, 웹에서 검색해 보아도 ZX 스펙트럼이나 Commodore 128 같은 서구권 기기 중심의 내용이 주를 이루었다.

 

(SDCC와 Fusion-C에 대한 내용)

 

 

SDCC와 Fusion-C를 통한 MSX용 C 프로그래밍 소감

C언어로 MSX 프로그램을 만들기 위해 얼마전에 시도해 보았던 z88dk 환경에서 MSX 라이브러리 사용에 불편함이 느껴졌다. z88dk를 통한 MSX용 C 프로그래밍 소감MSX에서 자주 쓰던 BASIC 프로그램을 빠

wehong.tistory.com

 

 

 

Comments