WIPIVERSE

MBASIC

MBASIC은 마이크로소프트(Microsoft)가 CP/M 운영 체제용으로 구현한 BASIC 프로그래밍 언어 인터프리터이다. 마이크로소프트의 초기 제품 중 하나였던 알테어(Altair) BASIC 계열의 후속 버전으로, 1970년대 후반부터 1980년대 초반까지 8비트 CP/M 시스템에서 널리 사용된 프로그래밍 언어 중 하나이다.

명칭의 유래

"MBASIC"이라는 이름은 BASIC 인터프리터의 디스크 파일명인 "MBASIC.COM"에서 유래하였다. 또한 BASIC-80이라고도 불리며, Microsoft BASIC-80 참조 매뉴얼에서 세 가지 버전의 BASIC-80을 총칭하는 이름으로 사용되기도 하였다.

개발 배경과 역사

MBASIC은 마이크로소프트의 첫 제품군이었던 알테어 BASIC 인터프리터의 직계 후손이다. 마이크로소프트의 8비트 인터프리터 계열 전반이 그렇듯이, MBASIC은 디지털 이큅먼트 코퍼레이션(DEC)의 PDP-10용 BASIC-PLUS에서 많은 영향을 받았으나, 구조화(structured) 정도는 덜하고 속도는 느린 구현이었다. 오스본 1(Osborne 1) 컴퓨터에 번들로 포함된 두 가지 BASIC 버전 중 하나이기도 하였다.

기술적 특징

MBASIC은 인터프리터 방식으로 동작하였다. 프로그램 소스 텍스트는 메모리에 토큰화된 형태로 저장되었으며, BASIC 키워드는 1바이트 토큰으로 대체되어 메모리 공간을 절약하고 실행 속도를 높였다. 줄 번호가 붙은 줄은 프로그램 텍스트로 저장되었고, 줄 번호가 없는 BASIC 문장은 즉시 실행되는 명령으로 처리되었다.

MBASIC 버전 5를 실행하려면 최소 28KB의 랜덤 액세스 메모리(RAM)와 최소 1개의 디스크 드라이브가 장착된 CP/M 시스템이 필요하였다. 가정용 컴퓨터 제조사가 특정 하드웨어 기능에 맞게 맞춤 제작한 BASIC-80 버전들과 달리, MBASIC은 모든 입출력을 CP/M 운영 체제 호출에만 의존하였다. 콘솔(화면과 키보드), 라인 프린터, 디스크 장치만 사용할 수 있었으며, 그래픽, 색상, 조이스틱, 마우스, 직렬 통신, 네트워킹, 사운드, 실시간 시계 기능은 기본 형태에서는 제공되지 않았다.

자료형

MBASIC은 다음과 같은 자료형을 지원하였다.

  • 0~255자 길이의 8비트 문자 데이터(문자열)
  • 16비트 정수
  • 32비트 부동소수점(단정밀도, 유효 숫자 6자리, 2자리 지수)
  • 64비트 부동소수점(배정밀도, 유효 숫자 16자리, 2자리 지수)

배열은 최대 7차원까지 허용되었으나, 배열 전체를 대상으로 하는 함수나 연산자는 제공되지 않았다. 행렬 연산, 복소수, 금융 계산용 10진(BCD) 자료형은 지원되지 않았다. 모든 부동소수점 연산은 일반적인 CP/M 시스템에 부동소수점 하드웨어가 없었기 때문에 소프트웨어로 처리되었다. 삼각함수, 자연로그, 지수, 제곱근 등 내장 수학 함수는 단정밀도 결과만 제공하였다.

변수와 프로그램 흐름 제어

초기 마이크로컴퓨터용 BASIC은 변수명이 한두 문자로 제한되는 경우가 많았으나, MBASIC 버전 5는 최대 40자 길이의 식별자를 허용하여 읽기 쉬운 변수명을 사용할 수 있었다. 프로그램 흐름 제어는 IF...THEN...ELSE 조건문, WHILE...WEND 반복문, GOTO 및 GOSUB 명령으로 이루어졌다. CASE 문은 없었으나 ON...GOTO(계산식 GOTO)로 다중 분기가 가능하였다. 서브루틴은 매개변수를 갖지 않았으며 모든 변수는 전역 변수였다.

파일과 입출력

데이터는 CP/M 관례대로 각 줄 끝에 CR/LF로 구분되는 순차 파일(sequential file) 또는 고정 레코드 길이의 랜덤 액세스 파일로 디스크에 저장할 수 있었다. 후자를 이용하면 데이터베이스식 레코드 조작도 가능하였다. 부동소수점 표현에 사용된 Microsoft Binary Format은 고유한 규격이어서, 다른 프로그램과 데이터를 교환하려면 ASCII 텍스트 형식을 사용하거나 별도의 변환 프로그래밍이 필요하였다.

오류 메시지와 디버깅

MBASIC의 장점 중 하나는 문법 오류와 실행 오류에 대해 전체 텍스트(full-text) 오류 메시지를 제공한다는 점이었다. 또한 실행 중인 줄 번호를 화면에 표시하는 "trace" 기능이 있어 무한 루프와 같은 조건을 감지하는 데 유용하였다.

후속 및 관련 제품

CP/M용 BASIC-80 외에도 ISIS-II 운영 체제용 변형 버전이 제공되었다. MSX-BASIC은 MBASIC의 잘 알려진 후속 버전으로, MSX 기기 특유의 여러 확장 기능을 갖추었다. IBM PC의 디스크 기반 BASICA 또는 GWBASIC에는 CP/M용 MBASIC의 기능이 모두 포함되어 있어, CP/M 시스템에서 PC 호환 기종으로 프로그램을 이전하는 것이 가능하였다.

마이크로소프트는 MBASIC과 유사한 소스 언어를 사용하는 CP/M용 BASIC 컴파일러인 BASCOM도 판매하였다. MBASIC에서 디버깅된 프로그램은 BASCOM으로 컴파일할 수 있었으며, 실행 속도는 약 3배 정도 향상되었다.

중요성

MBASIC은 8-bit CP/M 컴퓨터 시대의 중요한 도구였다. 숙련된 사용자는 MBASIC으로 오늘날의 시스템에서는 강력한 응용 프로그램 명령이나 스크립트 언어로 처리되는 작업을 자동화하는 루틴을 작성할 수 있었다. 유용한 MBASIC 프로그램의 교환은 컴퓨터 사용자 그룹의 일반적인 활동이었으며, 잡지에 게재된 긴 BASIC 리스트를 직접 입력하는 것은 새로운 CP/M 시스템에 소프트웨어를 도입하는("부트스트래핑") 한 가지 방법이었다.

다른 용도

MBASIC은 CP/M용 인터프리터와 별개로, Basic Micro, Inc.가 개발한 마이크로칩 테크놀로지(Microchip Technology) PIC 마이크로컨트롤러 계열용 상업 BASIC 컴파일러의 이름이기도 하다. 이 컴파일러는 CP/M용 인터프리터와는 무관한 별개의 제품이다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기