맨위로가기

MSX 베이직

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

MSX BASIC은 MSX 컴퓨터를 위한 BASIC 프로그래밍 언어 및 인터프리터로, 다양한 버전이 존재하며 각 버전은 MSX 규격의 확장과 함께 새로운 기능을 제공한다. MSX BASIC 1.0은 16KB 크기로, 텍스트 및 그래픽 모드를 지원하며, 하드웨어 스프라이트와 인터럽트 기능을 제공한다. MSX2 이후 버전에서는 화면 모드, 다색 스프라이트, 하드웨어 가속 그래픽 기능 등이 추가되었고, MSXturboR에서는 PCM 기능과 R800 고속 모드를 지원한다. MSX BASIC은 확장이 용이하여, MSX 고유 기능을 활용하는 컴파일러인 "베이싯군"과 같은 애드온 모듈 개발이 활발히 이루어졌다. MSX BASIC은 VRAM 제어, 인터럽트 처리, 주변 장치 제어 등을 위한 고유 명령어를 제공하며, 프로그램의 고속 실행을 위한 컴파일러도 존재한다.

더 읽어볼만한 페이지

  • 1984년 개발된 프로그래밍 언어 - 비주얼 폭스프로
    비주얼 폭스프로는 xBase 언어군에 속하는 절차적 프로그래밍 언어이자 데이터베이스 관리 시스템으로, dBase를 기반으로 관계형 데이터베이스 엔진과 통합되어 SQL 쿼리 및 데이터 조작을 지원하며, 마이크로소프트 개발 중단 후 커뮤니티 주도의 개발이 진행되었다.
  • 1984년 개발된 프로그래밍 언어 - 커먼 리스프
    커먼 리스프는 1980년대 초 여러 리스프 방언 통합 시도에서 시작된 언어로, S-표현식 문법, 다양한 자료형, 일급 함수, 매크로, CLOS를 특징으로 하며, ANSI 표준으로 정의되어 다양한 분야에서 활용된다.
  • 베이직 인터프리터 - 비주얼 베이직
    비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다.
  • 베이직 인터프리터 - 큐베이직
    큐베이직은 GW-BASIC을 대체하기 위해 개발된 퀵베이직 컴파일러 기반의 인터프리터로, MS-DOS, 윈도우, IBM PC DOS 등에서 사용되었으며, 4개의 예제 프로그램과 이스터 에그를 제공한다.
  • 마이크로소프트 베이직 - 비주얼 베이직
    비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다.
  • 마이크로소프트 베이직 - 알테어 베이직
    알테어 베이직은 빌 게이츠와 폴 앨런이 알테어 8800 컴퓨터를 위해 개발한 BASIC 인터프리터로, 마이크로소프트의 초기 성공에 기여하고 소프트웨어 저작권 논쟁을 촉발했으며 MS-DOS로 전환될 때까지 핵심 사업으로 남았다.
MSX 베이직 - [IT 관련 정보]에 관한 문서

2. 특징

MSX BASIC 1.00을 기준으로 다음과 같은 특징이 있다.


  • 특별히 지정하지 않는 연산은 BCD 연산으로 처리하여, 2진 연산의 오차를 줄였다.[4]
  • 16비트의 정수형 연산이 추가되어 정수 연산 속도를 향상시켰다.
  • MSX 규격의 컴퓨터의 주변장치 접속을 위한 명령어들이 추가되었다.
  • 4가지 화면 모드를 지원한다. 지원하는 모드는 다음과 같다.
  • 최대 가로 40문자 세로 24문자의 텍스트 모드
  • 최대 가로 32문자 세로 24문자의 텍스트 모드
  • 256*192 화소의 고해상도 그래픽 모드
  • 64*48 블록의 다중 칼라 모드
  • 8옥타브음과 3중 화음이 가능한 PLAY 문과 사운드 발생기의 레지스터값을 변경할 수 있는 SOUND 문이 있다.
  • 그래픽 명령과 스프라이트 기능을 가지고 있다.
  • 인터벌 타이머 인터럽트(Interval Timer Interrupt) 및 조이스틱 등의 인터럽트 기능이 있다.
  • 한글 모아쓰기와 풀어쓰기의 기능을 가지고 있다.(한글 MSX BASIC에만 해당)


MSX BASIC 버전 3.0


MSX BASIC은 모든 MSX 컴퓨터의 롬에 번들로 제공되었다. 시스템 시작 시 MSX BASIC이 호출되어 명령 프롬프트가 표시되지만, 롬에 있는 다른 소프트웨어가 제어권을 가지는 경우에는 예외이다(이는 게임 카트리지와 디스크 인터페이스의 일반적인 경우이며, 후자는 DOS 시스템 파일이 포함된 디스크가 있는 경우 MSX-DOS 프롬프트를 표시한다).

MSX BASIC이 호출되면, BIOS와 BASIC 인터프리터 자체에 대한 롬 코드가 Z80 주소 공간의 하위 32K에서 보인다. 상위 32K는 램으로 설정되며, 이 중 약 23K에서 28K가 BASIC 코드 및 데이터에 사용 가능하다(정확한 양은 디스크 컨트롤러의 유무 및 MSX-DOS 커널 버전에 따라 다르다).

언어 사양으로 변수명이 처음 2자리만 유효하고, 행 번호를 추상화하는 레이블 개념이 없으며, GOTO 명령 등의 이동 대상에 레이블을 지정할 수 없는 등, 다른 기종에 채용되었던 마이크로소프트 제 BASIC이 확장되었던 것과 비교하면 초기의 버전에 가까웠다.

부동 소수점은 가수부는 단정밀도 6자리, 배정밀도 14자리의 BCD로 연산하고 있다. 다른 BASIC의 처리계의 가수부의 기저가 2인 것에 비해, 기저를 10으로 함으로써, 컴퓨터 초보자도 알기 쉬워졌다. 연산 서브루틴은 가상 계산기로 구현되어 있으며, 가상 레지스터 상당의 워크 영역에 인수를 써넣고 처리를 수행하는 루틴을 호출하는 형태가 되어 있다.[4]

Z80의 메모리 공간 중 전반 32KB를 BIOS와 BASIC 인터프리터의 ROM, 후반 32KB에 사용자 영역과 주변 기기 사용을 포함하는 워크 영역이 배치된다. MSX2 이후의 추가 기능이나 디스크 드라이브를 접속했을 때의 DISK-BASIC을 위한 ROM은 전반 32KB의 슬롯을 전환하는 형태로 구현되어 있었지만, 그 워크 영역은 프리 영역의 말단에 배치된다. 따라서, 기능을 확장할수록 프리 영역은 삭감된다.

MSX의 BIOS는 규격으로 하드웨어에 대한 액세스의 창구가 되고 있기 때문에, 순정 시스템을 벗어난 프로그램에서도 시스템 콜의 형태로 호출되는 성질의 것이 되어 있다.

MSX 규격에 따른 하드웨어가 가진 스프라이트 기능, VDP 명령의 보조에 의한 그래픽 처리 등으로, 다른 기종에서는 어려웠던 고속으로 캐릭터가 움직이는 실시간 게임을 BASIC 레벨로 제작하는 것이 쉬웠다.

3. 개발 환경

MSX 베이직 개발 환경은 다른 버전의 마이크로소프트 베이직과 매우 유사하다. 명령줄 기반의 통합 개발 환경(IDE) 시스템을 갖추고 있으며, 모든 프로그램 라인은 번호가 매겨져야 하고, 번호가 없는 모든 라인은 직접 모드(즉, 즉시 실행)의 명령으로 간주된다. 사용자 인터페이스는 전적으로 명령줄 기반이다.

4. 버전

MSX 베이직은 MSX 컴퓨터와 함께 제공되는 언어로, 새로운 버전이 나올 때마다 새로운 기능이 추가되었다. 모든 버전은 하위 호환성을 가지므로, 이전 버전의 프로그램도 실행할 수 있었다.

MSX 베이직은 다른 기종의 BASIC에 비해 초기 버전에 가까운 특징을 가지고 있었다. 예를 들어 변수 이름은 처음 두 자리만 유효하고, GOTO 명령 등에서 레이블을 사용할 수 없었다.

부동 소수점 연산은 가수부를 BCD 방식으로 처리하여 초보자도 이해하기 쉽도록 했다. 연산은 가상 계산기로 구현되어 있으며, BASIC 외에서도 직접 호출할 수 있었다.[4]

Z80 메모리 공간은 BIOS와 BASIC 인터프리터 ROM, 사용자 영역, 주변 기기용 워크 영역으로 나뉘었다. MSX2 이후에는 슬롯 전환 방식으로 기능을 확장했지만, 사용자 영역은 32KB로 고정되어 있었다.

MSX 베이직은 스프라이트 기능, VDP 명령 보조 등을 통해 BASIC 레벨에서도 고속 그래픽 처리가 가능했다.

MSX 베이직은 규격 확장에 따라 기능에 대응하는 예약어가 추가되는 방식으로 버전이 업그레이드되었다. MSX turboR을 제외하면 시스템 변경 없이 이전 버전 소프트웨어를 실행할 수 있었다. MSX turboR에서는 프로세서 변경 등으로 인해 부팅 시 특정 키를 누르거나, 특정 디스크로 부팅해야 호환 모드로 실행할 수 있었다.

4. 1. MSX BASIC 1.0

MSX BASIC 1.00은 다음과 같은 특징을 가진다.

  • BCD 연산 방식을 사용하여 이진 연산에서 발생할 수 있는 오차를 줄였다.
  • 16비트 정수형 연산을 지원하여 정수 연산 속도가 향상되었다.
  • MSX 규격 컴퓨터의 주변 장치 접속을 위한 명령어가 추가되었다.
  • 다음과 같은 4가지 화면 모드를 지원한다.
  • 최대 가로 40문자, 세로 24문자의 텍스트 모드 (화면 0)
  • 최대 가로 32문자, 세로 24문자의 텍스트 모드 (화면 1) - 스프라이트 및 사용자 지정 색상 문자 지원
  • 256x192 화소의 고해상도 그래픽 모드 (화면 2) - 16색 지원
  • 64x48 블록의 다중 색상 모드 (화면 3) - 화면 2 해상도에서 4x4 픽셀 블록
  • 8옥타브 음과 3중 화음이 가능한 PLAY 문과 사운드 발생기 레지스터 값을 변경할 수 있는 SOUND 문을 지원한다.
  • 그래픽 명령과 스프라이트 기능을 가지고 있다.
  • 인터벌 타이머 인터럽트 및 조이스틱 등의 인터럽트 기능을 가지고 있다.
  • 한글 모아쓰기와 풀어쓰기 기능을 지원한다. (한글 MSX BASIC에만 해당)
  • MSX1 컴퓨터와 함께 제공된다.
  • 크기는 16KB이다.
  • 플로피 디스크를 기본적으로 지원하지 않으므로, 디스크 BASIC 카트리지 확장(4KB 오버헤드)이 필요하다.
  • 하드웨어 스프라이트 및 인터럽트 기반 자동 충돌 감지를 완벽하게 지원한다.
  • 제너럴 인스트루먼트 AY-3-8910 프로그래밍 가능한 사운드 제너레이터(PSG)를 완벽하게 지원한다.


샤프(Sharp)와 그라디엔테(Gradiente)에서 제작한 브라질 MSX "클론"은 다른 버전의 MSX BASIC (샤프의 경우 HOT-BASIC이라고도 불림)을 사용했지만, 기본적으로는 비인가 MSX BASIC 1.0이다. MSX용.

FDD를 포함한 확장 BASIC을 사용하지 않는 경우, ROM-BASIC의 워크 영역은 약 4KB이다. 사용자 영역은 다음과 같다.

RAM 용량사용 가능 영역
32KB 이상28,815바이트
16KB12,431바이트
8KB (CASIO PV-7)4,239바이트



32KiB 미만의 기종에서는 확장된 메모리가 직접 BASIC에서 사용 가능한 용량에 반영된다.

4. 2. MSX BASIC 2.0 / 2.1

MSX BASIC 2.0은 MSX2 컴퓨터와 함께 제공되었다. 크기는 32KB이며, 처음 16KB는 직접 사용 가능하고, 나머지 16KB는 다른 슬롯에 있어 사용을 위해 페이지 인/아웃이 필요했다.

MSX BASIC 2.0에는 다음과 같은 새로운 화면 모드가 추가되었다.[2][3]

모드설명
업데이트된 화면 0텍스트 모드 80 x 24
화면 5그래픽 모드 256 x 212/424 픽셀, 512색 중 16색
화면 6그래픽 모드 512 x 212/424 픽셀, 512색 중 4색
화면 7그래픽 모드 512 x 212/424 픽셀, 512색 중 16색
화면 8그래픽 모드 256 x 212/424 픽셀, 256색, 팔레트 없음


  • 다색 스프라이트(16색) 지원이 추가되었다.
  • 하드웨어 가속 그래픽 기능(복사, 채우기, 블리팅 등)이 추가되었다.
  • 컴퓨터의 하위 32KB RAM을 제한적인 RAM 디스크로 사용할 수 있게 되었다. (MSX BASIC 2.1은 메모리 매퍼를 사용해 이 RAM 디스크를 거의 90KB까지 확장 가능)


MSX BASIC 2.1은 필립스 MSX2 기기(VG 8230 제외), 야마하 YIS-805, 산요 MPC-2300[3]과 같은 컴퓨터에 탑재되었다.

MSX BASIC 2.1의 주요 특징은 다음과 같다.[2][3]

  • `SCREEN` 명령 및 스프라이트 명령 확장.
  • 마우스, 트랙볼 등의 입력 장치 정보 획득.
  • CMOS 메모리를 이용한 캘린더 시계 기능 및 설정 백업 기능 탑재, 설정을 위한 `SET` 명령 추가.
  • 캘린더 시계 설정 (`SET TIME`, `SET DATE`).
  • 캘린더 시계 획득 (`GET TIME`, `GET DATE`).
  • 화면 표시 위치 보정 값 설정 (`SET ADJUST`).
  • 비프음의 음량 및 종류 설정 (`SET BEEP`).
  • 기본 화면 설정 저장 (`SET SCREEN`).
  • 6자 이내의 문자열을 부팅 로고, 프롬프트로 표시, 부팅 시 암호 잠금 기능 (`SET TITLE`, `SET PROMPT`, `SET PASSWORD`).
  • `SET VIDEO` 등 그래픽 관련 `SET` 명령 다수 추가.
  • ROM 공간에 숨겨진 뒷면 RAM 32KB를 가상 RAM 디스크로 사용 ( `CALL MEMINI` ), 장치명 `MEM:` 추가.
  • 가상 RAM 디스크는 MSX2+까지는 RAM 디스크, MSXturboR에서는 메모리 디스크라고 불렸다. 전송 속도는 카세트 테이프 수준으로 느렸다.
  • 한자 ROM (옵션)의 내용을 출력하는 `PUT KANJI` 추가.
  • 가나 문자의 로마자 입력 모드 추가.
  • V9938의 VDP 명령을 이용한 `COPY` 명령.
  • 메인 메모리와 화면의 사각형 간 전송 및 이미지 복사 가능. 논리 연산 및 투명색 적용 가능.


MSX2는 모든 기종이 RAM 64KiB 이상이므로, ROM-BASIC의 사용자 영역은 28,815바이트이다. 2.x에서 확장된 명령은 1.x에서 미사용이었던 작업 영역에서 동작한다.

4. 3. MSX BASIC 3.0

MSX 베이직 3.0은 MSX2+ 컴퓨터에 번들로 제공되는 32KB 크기의 베이직이다.[1] 처음 16KB는 직접 사용 가능하며, 나머지 16KB는 다른 슬롯에 있어 사용하기 위해 페이징이 필요하다.[1]

MSX 베이직 3.0의 주요 특징은 다음과 같다:[1]

  • BASIC에서 부드러운 하드웨어 기반 스크롤을 위한 `SET SCROLL` 명령어가 추가되었다. MSX2에서는 VDP로 세로 스크롤이 가능했지만, VDP 명령을 직접 사용해야 했다. `SET SCROLL` 명령어를 통해 BASIC 상에서 세로, 가로 스크롤을 직접 제어할 수 있게 되었다.
  • 새로운 화면 모드 지원이 추가되었다.
  • 화면 10: 그래픽 모드 256 x 212/424 픽셀, 12499 YJK + ML에서 512 RGB 중 16색을 한 번에 표현 가능하다.
  • 화면 11: 그래픽 모드 256 x 212/424 픽셀, 12499 YJK + 512 RGB 중 16색을 한 번에 표현 가능하다.
  • 화면 12: 그래픽 모드 256 x 212/424 픽셀, 19268 YJK 색상을 한 번에 표현 가능하다.
  • `SCREEN` 명령어에 10~12 모드가 추가되었다.
  • 히라가나 등의 폰트가 변경되어 `SCREEN 0`의 가로 6도트 표시에서도 식별이 용이해졌다.
  • 한자 베이직이 표준으로 탑재되었다. 연문절 변환 기능의 MSX-JE는 규격상 옵션이며, 미탑재 기종에서는 단 한자 변환만 가능하다. 한자 폰트 스타일은 본체 제조사에 따라 다르다.
  • 펑션 키 F7의 등록 명령이 "cload"에서 "load"로 변경되었다.


MSX2+는 모든 기종이 64KiB 이상의 RAM을 탑재하고 있어, ROM-BASIC의 사용자 영역은 28,815바이트이다.[1] 3.x에서 확장된 명령어는 1.x, 2.x에서 미사용이었던 워크 영역에서 동작한다.[1]

4. 4. MSX BASIC 4.0


  • 파나소닉 FS-A1ST MSX 터보 R 모델에 번들로 제공되었다.
  • BASIC에서 현재 CPU와 클럭에 관계없이 지연을 만들 수 있는 `_PAUSE` 명령이 추가되었다.
  • PCM 장치에 대한 추가 명령(`_PCMPLAY`, `_PCMREC`)이 MSXturboR용으로 추가되었다.
  • R800의 고속 모드에 대응한다.
  • PCM 기능 등의 명령을 추가하였다.
  • MSX-DOS2 내장으로 인해 DISK-BASIC이 Version 2가 되었으며, 현재 디렉토리를 변경하는 `CALL CHDIR` 명령이나 메모리 맵퍼를 RAM 디스크로 사용하는 `CALL RAMDISK` 명령 등이 추가되었다. 호환 Z80 모드에서는 Version 1으로 시작한다.
  • 카세트 테이프 I/O에 관한 명령 (`CSAVE`/`CLOAD`/`CLOAD?`/`MOTOR`) 및 장치명 `CAS:`가 삭제되어 실행하면 오류가 발생한다.
  • `CSAVE`/`CLOAD`/`CLOAD?`/`MOTOR`는 'Syntax error'가 되며, `CAS:`는 'Bad file name'이 된다. 'Device I/O error'가 되지는 않는다.
  • 대응하는 BIOS의 엔트리는 남아 있지만, 호출해도 아무것도 하지 않고 정상 종료되거나 오류를 반환할 뿐이다.
  • 지금까지의 BASIC 인터프리터는 PLAY 문이 종료될 때 1 카운트 분의 여분의 공백이 들어가는 버그가 있었는데, MIDI 인터페이스가 본체에 탑재될 때 해결되었다[5].

4. 5. MSX BASIC 4.1


  • 파나소닉 FS-A1GT MSX 터보 R 모델과 함께 제공되었다.
  • MIDI 확장 기능이 추가되었다.
  • MSXturboR용이다.
  • R800의 고속 모드에 대응한다.
  • PCM 기능 등의 명령이 추가되었다.
  • MSX-DOS2 내장으로 인해 DISK-BASIC이 Version 2가 되었으며, 현재 디렉터리를 변경하는 `CALL CHDIR` 명령이나 메모리 매퍼를 RAM 디스크로 사용하는 `CALL RAMDISK` 명령 등이 추가되었다. 호환 Z80 모드에서는 Version 1으로 시작한다.
  • 카세트 테이프 I/O에 관한 명령 (`CSAVE`/`CLOAD`/`CLOAD?`/`MOTOR`) 및 장치명 `CAS:`가 삭제되어 실행하면 오류가 발생한다.
  • `CSAVE`/`CLOAD`/`CLOAD?`/`MOTOR`는 'Syntax error'가 되며, `CAS:`는 'Bad file name'이 된다. 'Device I/O error'가 되지는 않는다.
  • 대응하는 BIOS의 엔트리는 남아 있지만, 호출해도 아무것도 하지 않고 정상 종료되거나 오류를 반환할 뿐이다.
  • 지금까지의 BASIC 인터프리터는 PLAY 문이 종료될 때 1 카운트 분의 여분의 공백이 들어가는 버그가 있었는데, MIDI 인터페이스가 본체에 탑재될 때 해결되었다[5].

5. 확장

MSX 베이직은 확장이 가능하도록 설계되어 애드온 모듈을 쉽게 작성할 수 있었다. 특정 하드웨어 지원은 보통 확장 카트리지를 통해 추가되었으며, 이는 하드웨어 인터페이스 역할도 했다. MSX 디스크 베이직은 디스크 드라이브 하드웨어 인터페이스를 제공하는 카트리지에 포함되어 플로피 디스크 드라이브 접근 명령어를 추가하는 방식이 그 예시이다.

MSX 베이직은 다른 기종에 채택되었던 마이크로소프트 베이직이 확장된 것과 비교하면 초기 버전에 가까웠다. 변수명이 처음 두 자리만 유효하고, 행 번호를 추상화하는 레이블 개념이 없었으며, `GOTO` 명령 등에서 레이블을 대상으로 지정할 수 없었다.

부동 소수점 연산은 가수부는 단정밀도 6자리, 배정밀도 14자리의 BCD를 사용했다. 다른 BASIC 처리계의 가수부 기저가 2인데 비해, 기저를 10으로 하여 초보자도 쉽게 이해할 수 있었다. 연산 서브루틴은 가상 계산기로 구현되었고, 가상 레지스터 상당의 워크 영역에 인수를 써넣고 처리 루틴을 호출하는 방식이었다. 이 연산의 핵심 부분은 Math-Pack으로 사양이 공개되어 BASIC 외에서도 직접 호출할 수 있었다.[4] 부동 소수점 연산은 정밀도는 높지만 비용이 크기 때문에, 응답 속도나 처리 속도를 중시하는 게임 제작에서는 변수를 정수로 선언하는 것이 유용했다.

Z80 메모리 공간 중 전반 32KB는 BIOS와 BASIC 인터프리터 ROM, 후반 32KB는 사용자 영역과 주변 기기 사용을 포함하는 워크 영역이 배치되었다. MSX2 이후 추가 기능이나 디스크 드라이브 접속 시 DISK-BASIC용 ROM은 전반 32KB 슬롯을 전환하는 형태로 구현되었고, 워크 영역은 프리 영역 말단에 배치되어 기능을 확장할수록 프리 영역이 줄었다. 후반 사용자 영역은 페이지가 고정되어 있어, BASIC 버전이나 하드웨어에 관계없이 32KiB 이상 구현된 기종이나 메모리 매퍼를 가진 기종에서도 BASIC 사용자 영역은 늘지 않고, 초기 상태 RAM 외에는 RAMDISK 등의 확장 기능으로 사용되었다.

시스템 부분이 ROM으로 구성되어 기능 확장이나 변경용 훅이 메모리 마지막 부분에 배치되었고, 디스크 드라이브 등의 BIOS가 워크 영역으로 사용하므로, 사용자가 직접 메모리에 쓰기를 할 때는 사용 가능한 말단 주소를 미리 확인해야 했다. BASIC에서 기능 확장을 하려면 call 명령으로 초기화, 유효화를 해야 했고, 하드웨어 확장의 경우 BASIC에서의 이용에 대응하는 경우 같은 절차로 제어 루틴 포함과 초기화도 수행했다.

MSX BIOS는 당시 구현에서의 머신어 모니터와 달리, 규격으로 하드웨어 접근 창구가 되어 순정 시스템을 벗어난 프로그램에서도 시스템 콜 형태로 호출되었고, 머신어 모니터로서 간략화된 메모리나 바이트 조작은 표준 구성으로 제공하지 않았다. 슬롯, 하드웨어 제어 외에는 BASIC 구현에 따른 서브루틴이지만, 공개된 엔트리는 사용자도 호출하여 이용할 수 있었다.

MSX 규격 하드웨어가 가진 스프라이트 기능, VDP 명령 보조에 의한 그래픽 처리 등으로, 다른 기종에서는 어려웠던 고속 캐릭터가 움직이는 실시간 게임을 BASIC 레벨로 제작하기 쉬웠다. 명령 단위에서는 저급 언어에 의한 하드웨어 직접 제어에 육박하는 속도로 동작시킬 수 있었다. 그러나 그래픽 제어는 알고리즘 레벨로 최적화하지 않으면 직접 하드웨어를 제어해도 그 이상 속도는 기대할 수 없었고, VDP 처리 속도로부터 반드시 다른 구현에 비해 고속은 아니었다.

본체 또는 카트리지 슬롯에 플로피 디스크 드라이브가 있으면, 내장 ROM에 의해 확장된 DISK-BASIC이 기동되었다. 물리적으로 드라이브가 1대여도 작업 영역은 2대 분이 확보되었다. CTRL 키를 누른 채 기동하면 1대 분으로 제한되어 빈 영역을 늘릴 수 있었다. SHIFT 키를 누른 채 기동하면 플로피 디스크 환경은 일절 무효화되어, 기존 ROM-BASIC 빈 영역을 전제로 한 애플리케이션을 실행할 수 있었다.

6. 문법 (일본어판 기준)

MSX 베이직은 MSX 규격에 맞춰 다음과 같은 확장된 명령어를 가지고 있었다.


  • '''`VPOKE`''', '''`VPEEK`''' : VRAM에 대한 쓰기 명령과 읽기 함수이다. MSX에서는 VRAM을 VDP가 관리하며, CPU의 주소 공간과는 별도로 되어있기 때문에 준비되었다.
  • '''`VDP`''' : 이미지 컨트롤러 VDP의 레지스터를 BASIC에서 직접 읽고 쓰는 함수이다.
  • '''`ON`''' ~ '''`GOSUB`''' : 인터럽트 명령이다. 펑션 키 누름 (''`KEY`''), 인터벌 타이머 (''`INTERVAL`''), 스프라이트 충돌 (''`SPRITE`''), 프로그램 중단 조작 (''`STOP`'') 등을 감지하여 특정 서브루틴을 호출한다.
  • '''`CALL`''' : 슬롯에 연결된 장치의 확장 명령을 호출한다. 주변 기기가 가진 확장 BIOS에 ''`CALL`'' 명령의 처리 루틴이 저장되어 있으며, BASIC 프로그램에서 주변 기기를 제어할 수 있었다. 단축형은 언더바(''`_`'')이다.
  • '''`PUT SPRITE`''' : 스프라이트의 표시 위치, 패턴, 색상을 제어한다.
  • '''`SPRITE$(n)`''' : 스프라이트의 패턴을 정의하는 함수이다.

6. 1. 확장된 명령 (일본어판 기준)

MSX 규격에 맞춰 다음과 같은 명령을 가지고 있었다.

  • '''VPOKE''', '''VPEEK''' : VRAM에 대한 쓰기 명령과 읽기 함수이다. MSX에서는 VRAM은 VDP가 관리하며, CPU의 주소 공간과는 별도로 되어있기 때문에 준비되었다.
  • '''VDP''' : 이미지 컨트롤러 VDP의 레지스터를 BASIC에서 직접 읽고 쓰는 함수이다.
  • '''ON''' ~ '''GOSUB''' : 인터럽트 명령. 펑션 키 누름 (''KEY''), 인터벌 타이머 (''INTERVAL''), 스프라이트 충돌 (''SPRITE''), 프로그램 중단 조작 (''STOP'') 등을 감지하여 특정 서브루틴을 호출한다.
  • '''CALL''' : 슬롯에 연결된 장치의 확장 명령을 호출한다. 주변 기기가 가진 확장 BIOS에 ''CALL'' 명령의 처리 루틴이 저장되어 있으며, BASIC 프로그램에서 주변 기기를 제어할 수 있었다. 단축형은 언더바(''_'')이다.
  • 예: MSX-DOS에서 "''BASIC''" 명령으로 DISK-BASIC을 시작한 경우, ''CALL SYSTEM''을 실행하면 MSX-DOS가 시작된다.
  • '''PUT SPRITE''' : 스프라이트의 표시 위치, 패턴, 색상을 제어한다.
  • '''SPRITE$(n)''' : 스프라이트의 패턴을 정의하는 함수이다.

7. MSX BASIC 컴파일러 (베이직군)

베이싯군MSX 고유 기능을 활용할 수 있는 컴파일러이다.[6]

아스키 소속 프로그래머 스즈키 히토시가 개발했다.[6] 초판은 잡지에 발표되었으며, 1986년 아스키에서 ROM 카트리지로 발매되었다. 제품명은 당시 로그인지에 연재되던 4컷 만화 제목에서 따왔으며, 소프트웨어 패키지에도 주인공 베이싯군의 일러스트가 그려져 있어 게임 소프트웨어를 연상케 했다. 부속된 플로피 디스크에는 샘플 만델브로 집합 묘사나 와이어프레임 3D 미로 자동 생성 프로그램이 수록되어 있었다.

MSX2+가 발표되자 신기능에 대응하는 "베이싯군 플러스"가 발매되었으며, 산요의 MSX2+인 WAVY77 시리즈에 동일한 기능이 내장되었다. 또한, MSXturboR이 발표되자 소프트벤더 타케루에서 디스크 버전으로 "베이싯군 터보"가 발매되었다.

MSX-BASIC 컴파일러는 베이싯군 외에도 소프트 웨스트, 하트 전자 산업이 각각 개발·발매한 것이 존재한다. 온 메모리 컴파일러로, 확장 BASIC으로 구현되어 있다. ROM 매체나 본체 내장 버전에서는 ROM 카트리지나 본체 내 슬롯에, 디스크 매체 버전에서는 메인 RAM의 미사용 영역(뒷 RAM)에 격납되어 동작한다.

기존 BASIC 프로그램에 약간의 수정을 가하는 것만으로 고속화할 수 있다는 개념으로 설계되었다.

일반적인 컴파일러와 달리, 중간 코드나 기계어 오브젝트를 파일로 생성하지 않고, 프로그램 실행 시마다 컴파일을 수행하며, 온 메모리에서 기계어 오브젝트를 생성하여 실행하는 사양이다. 이 때문에, MSX-BASIC의 프로그램 소스 자체가 MSX 베이직군의 소스가 되며, 일반 BASIC 프로그램과 동등하게 관리할 수 있으므로, BASIC의 취급 편의성과 기계어의 고속성을 함께 갖춘 개발 환경이 되었다.

실행 속도는 최대 10배 정도 고속화된다.

단, MSX-BASIC과의 완전한 호환은 아니며, 디스크 입출력 등 미지원 명령이 일부 있기 때문에, 프로그램 전체를 컴파일할지, 일부분만 컴파일할지를 선택할 수 있게 되어 있다.

`RUN` 대신 확장 명령 `CALL RUN`으로 실행을 시작한 경우, 프로그램 전체의 기계어 오브젝트를 생성하여 실행한다.

일부분만 컴파일하는 경우에는, BASIC 프로그램 내에 확장 명령(`CALL TURBO ON`, `CALL TURBO OFF`)을 사용하여, 고속화하고 싶은 부분의 전후에 이 확장 명령을 기술한다. 실행 시에 그 확장 명령으로 처리가 넘어가면, 워크 영역에 컴파일 대상 부분의 기계어 오브젝트가 일시적으로 생성되어 실행되는 구조이다. 컴파일 대상 외의 부분은 그대로 BASIC 인터프리터로 동작하므로, MSX 베이직군 비대응 명령이 프로그램 소스 내에 공존할 수 있다.

부동소수점수는, MSX-BASIC이 BCD로 구현하고 있는 것에 비해 효율성을 이유로 3바이트의 2진수라는 독자적인 방식으로 구현하고 있기 때문에, 비컴파일 부분과 주고받을 수 없다.

참조

[1] 간행물 MSX Is Coming - Part II: Inside MSX http://www.atarimaga[...] 1985-01
[2] 웹사이트 Yamaha YIS-805 (Soviet Digital Electronics Museum) http://www.leningrad[...] 2011-04-06
[3] 웹사이트 Sanyo MPC-2300 (Soviet Digital Electronics Museum) http://www.leningrad[...] 2011-04-06
[4] 문서 MSX2 テクニカルハンドブック Appendix A.2 Math-Pack
[5] 웹사이트 "#004 2003/12/14 MSXの思い出" http://takumi-cb.com[...]
[6] 서적 「超速コンパイラMSXべーしっ君たーぼとR800の秘密! 岸岡和也×鈴木仁志」『MSX MAGAZINE 永久保存版 2』アスキー書籍編集部編著 アスキー 2003
[7] 간행물 MSXマガジン永久保存版2 「超速コンパイラMSXべーしっ君たーぼとR800の秘密!」



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com