마이크로소프트 베이직

**마이크로소프트 베이직**(Microsoft BASIC)은 마이크로소프트 회사의 기반 소프트웨어 제품이며, 다양한 마이크로컴퓨터에 맞춰진 베이직 인터프리터 및 컴파일러 계열로 발전했다. 1975년 알테어 베이직으로 처음 등장했는데, 이는 마이크로소프트가 발표한 첫 번째 베이직 버전이자 앨테어 8800 마이크로컴퓨터에서 사용할 수 있었던 최초의 고급 프로그래밍 언어였다.

1970년대 후반과 1980년대 초반의 가정용 컴퓨터 열풍 동안, 마이크로소프트 베이직은 많은 가정용 컴퓨터 디자인에 포팅되어 함께 제공되었다. 특히 그래픽과 같은 기계별 기능을 지원하기 위한 약간의 변형으로 인해 코모도어 베이직 및 아타리 마이크로소프트 베이직과 같은 관련 디자인이 넘쳐났다.

초기 가정용 컴퓨터가 IBM PC 및 매킨토시와 같은 새로운 디자인으로 대체되면서 베이직은 더 이상 널리 사용되지 않았지만, 강력한 추종자를 유지했다. 비주얼 베이직의 출시로 인기가 되살아났고, 최신 버전인 비주얼 베이직 닷넷은 마이크로소프트 윈도우 플랫폼에서 여전히 널리 사용되고 있다.

## 알테어 베이직과 초기 마이크로컴퓨터
섬네일|인기 있는 Model 33 ASR (자동 송수신) 텔레타이프를 터미널, 천공 테이프 판독기, 천공 테이프 펀치로 사용한 키트 제작 알테어 8800 컴퓨터|upright=1.2|alt=

알테어 베이직 베이직 인터프리터는 마이크로소프트 설립자인 폴 앨런과 빌 게이츠가 PDP-10 미니컴퓨터에서 실행되는 직접 작성한 인텔 8080 에뮬레이터를 사용하여 개발했다. MS 방언은 게이츠가 중등학교에서 사용했던 PDP-10의 디지털 이큅먼트 코퍼레이션의 BASIC-PLUS를 모델로 했다. 첫 번째 버전은 정수 수학만 지원했지만, 몬테 데이비도프가 부동소수점이 가능하다고 설득했고, 마이크로소프트 바이너리 포맷이 된 라이브러리를 작성했다.

DEC의 PDP-10 BASIC-PLUS에서 영감을 받은 마이크로소프트 베이직 8비트 인터프리터(알테어 베이직, TRS-80 베이직 등) 제품군과 명령은 키워드에 대한 단일 바이트 토큰, 정수에 대한 %, 문자열에 대한 $, 4바이트 부동 소수점 Microsoft Binary Format, : 문 구분 기호, 파일 핸들에 대한 #, 무작위 파일 접근(FIELD, GET, PUT, LSET, RSET) 등을 포함한다. 마이크로소프트 베이직 내장 줄 편집기인 EDIT 명령은 TOPS-10 EDIT 텍스트 편집기의 Alter 하위 명령에서 영감을 받았다.

알테어 베이직은 천공 테이프로 제공되었으며 원래 버전은 4 킬로바이트의 메모리를 차지했다. 다음 함수와 문이 사용 가능했다.

`LIST`, `NEW`, `PRINT`, `INPUT`, `IF...THEN`, `FOR...NEXT`, `SQR`, `RND`, `SIN`, `LET`, `USR`, `DATA`, `READ`, `REM`, `CLEAR`, `STOP`, `TAB`, `RESTORE`, `ABS`, `END`, `INT`, `RETURN`, `STEP`, `GOTO`, and `[[GOSUB]]`.

4K 베이직에는 문자열 변수가 없었고, 단일 정밀도 32비트 부동 소수점만이 지원되는 유일한 숫자 유형이었다. 변수 이름은 한 글자(A-Z) 또는 한 글자 뒤에 한 자리 숫자(0-9)로 구성되어 최대 286개의 숫자 변수를 허용했다.

더 많은 메모리를 가진 기기들을 위해 8KB 버전은 31개의 추가 문과 문자열 변수 및 MID$와 문자열 연결과 같은 관련 작업에 대한 지원을 추가했다. 문자열 변수는 $ 접미사로 표시되었는데, 이는 언어의 이후 버전에서도 유지되었다. 이후 마이크로소프트는 12K 확장 베이직을 출시했는데, 여기에는 배정밀도 64비트 변수, `IF`...`THEN`...`ELSE` 구조, 사용자 정의 함수, 더 고급 프로그램 편집 명령, 그리고 오류 번호 대신 설명적인 오류 메시지가 포함되었다. 숫자 변수는 이제 세 가지 기본 유형을 가졌는데, %는 16비트 정수를, #는 64비트 배정밀도를, !는 32비트 단정밀도를 나타냈지만, 이것이 기본 형식이었기 때문에 !는 프로그램에서 거의 보이지 않았다.

확장된 8KB 버전은 BASIC-80(8080/85, Z80)으로 일반화되었고, BASIC-68(6800), BASIC-69(6809), 그리고 6502-BASIC으로 이식되었다. 6502는 약간 덜 밀집된 어셈블러 코드를 가지고 있었고, 단정밀도 버전의 경우 8K 미만으로, 원래 32비트 버전 대신 중간 40비트 부동 소수점 형식을 사용하는 버전의 경우 9K로 크기가 확장되었다. 이 새로운 40비트 형식은 당시 대부분의 6502 기반 기기에서 사용되었기 때문에 가장 일반적인 형식이 되었다. 또한 16비트 BASIC-86(8086/88)으로도 이식되었다.

BASIC-80의 최종 주요 릴리스는 1981년에 출시된 버전 5.x로, 40자 변수 이름, `WHILE`...`WEND` 루프, 동적 문자열 할당 및 기타 여러 기능에 대한 지원을 추가했다. BASIC 5.x는 프로그램 줄을 압축하는 기능을 제거했다.

마이크로소프트 베이직의 모든 구현에서 핵심 명령 세트와 구문은 동일하며, 일반적으로 프로그램은 하드웨어별 기능이나 배정밀도 숫자(일부 구현에서는 지원되지 않음)를 사용하지 않는다면 어떤 버전에서도 실행될 수 있다.

## 가정용 컴퓨터 제조사 라이선스
알테어 베이직의 초기 성공 이후, 마이크로소프트 베이직은 수익성 높은 소프트웨어 라이선스 사업의 기반이 되었고, 1970년대, 특히 1980년대의 수많은 가정용 컴퓨터 및 기타 개인용 컴퓨터의 대부분에 이식되었으며, 그 과정에서 확장되었다. 원래의 알테어 베이직과 달리, 대부분의 가정용 컴퓨터 베이직은 ROM에 상주하며, 따라서 전원이 켜지면 특징적인 "`READY`" 프롬프트 형태로 기계에서 사용할 수 있다. 따라서 마이크로소프트 및 기타 베이직 변종들은 많은 가정용 컴퓨터의 기초적인 운영체제의 상당하고 눈에 띄는 사용자 인터페이스를 구성한다.

마이크로소프트는 자사의 DECsystem-20을 사용하여 동일한 소스 코드에서 조건부 컴파일을 통해 수십 가지의 다양한 컴퓨터 시스템과 CPU용 어셈블리 코드를 생성했다. 1981년까지 마이크로소프트 베이직은 너무 인기가 많아서 이미 베이직을 가지고 있던 회사들조차도 이 언어를 라이선스했다. 예를 들어 IBM은 IBM PC용으로 라이선스했으며, 아타리는 아타리 마이크로소프트 베이직과 자체 아타리 베이직을 모두 판매했다. IBM의 필립 돈 에스트리지는 "마이크로소프트 베이직은 전 세계적으로 수십만 명의 사용자를 가지고 있었다. 어떻게 그것에 반박할 수 있겠는가?"라고 말했다. 마이크로소프트는 서로 경쟁하는 회사들에게 유사한 버전을 라이선스했다. 예를 들어 IBM 어드밴스드 베이직(BASICA)을 IBM에 라이선스한 후, 마이크로소프트는 호환 가능한 GW 베이직을 PC 클론 제조사들에게 라이선스하고 소매 고객에게 판매했다. 이 회사는 마찬가지로 애플소프트 베이직 호환 베이직을 VTech의 Laser 128 클론에 라이선스했다.

### 확장 BASIC-80

* Tangerine Microtan 65
* Spectravideo SV-318 및 SV-328

알려진 변형:
* NCR 베이직 플러스 6, 1977년 1분기에 NCR 7200 모델 VI 데이터 입력 터미널용으로 출시되었다. 마이크로소프트의 확장 BASIC-80의 개작은 1976/1977년에 마크 맥도널드가 수행했다.

### 디스크 BASIC-80

MBASIC은 CP/M-80 및 ISIS-II에서 사용 가능하다. 또한 TEKDOS에서도 사용 가능하다.

MBASIC은 하드웨어 중립적인 기능만 있는 간소화된 BASIC-80이다. 그러나 CP/M의 인기로 인해 대부분의 Z80 기기는 특정 하드웨어에 맞춤화된 버전이 아닌 MBASIC을 실행했다(TRS-80 BASIC은 몇 안 되는 예외 중 하나였다). 애플 II용 마이크로소프트의 CP/M 카드는 HPLOT과 같은 애플소프트 베이직의 일부 그래픽 명령을 통합한 MBASIC 수정 버전을 포함했지만, 전체 명령 세트는 지원되지 않았다.

### 독립형 디스크 BASIC-80

파일 할당 테이블(FAT)의 8비트 변형을 사용한 첫 번째 구현은 1977/1978년에 8인치 플로피 디스크가 있는 인텔 8080 기반 NCR 7200, 7520, 또는 7530 데이터 입력 터미널을 위한 베이직 적응이었다.

### 베이직 컴파일러
마이크로소프트는 1980년 또는 그 이전에 CP/M용 BASIC-80 베이직 컴파일러를 제공했다. 컴파일러 실행 파일은 BASCOM 또는 BASCOM32로 명명되었다.

### TRS-80 레벨 II/III 베이직
TRS-80 컴퓨터는 처음에는 리첸 왕의 타이니 베이직(레벨 I 베이직)의 개작 버전으로 제공되었다. 몇 달 내에 이는 레벨 I 베이직의 일부 명령 세트, 특히 그래픽 문자를 설정하는 명령을 통합한 BASIC-80 포트로 대체되었다. 레벨 II 베이직은 확장 베이직의 일부 기능을 포함했지만, `SET` 및 `PSET`와 같은 레벨 I 명령을 포함해야 했기 때문에 설명적인 오류 메시지와 같은 다른 기능은 여전히 제외되어야 했다. 이러한 기능은 나중에 TRS-80 디스크 베이직에 추가되었다.

TRS-80 모델 4는 BASIC-80 5.x 코어를 사용하는 새로운 디스크 기반 베이직을 가졌으며, 여기에는 40자 변수 이름 지원이 포함되었다. 따라서 레벨 II에서 가능했던 프로그램 줄 압축(키워드와 인수 사이에 공백 없음) 기능은 더 이상 불가능했다. 문자열 공간을 예약할 필요도 없어졌다. 새로운 기능에는 사용자 정의 함수(`DEF FN`)와 `SYSTEM` 키워드를 통한 TRSDOS 6 시스템 기능 접근이 포함되었다. 나중에 OS 공급업체인 Logical Systems가 LS-DOS 버전 6.3 업데이트에서 발표한 수정 버전은 베이직 제어 기능(예: `LIST` 및 `EDIT`)에 대한 한 글자 접근과 LS-DOS 관리자 호출에 대한 직접 접근을 추가했다. 프로그램 편집 환경은 여전히 줄 기반이었다. 레벨 II에서 배열을 정렬하는 기능(`CMD"O"`)은 사용할 수 없었으므로 프로그래머와 사용자는 자체 해결책을 강구해야 했다.

### BASIC-86
독립형 디스크 기반 언어 시스템으로서의 첫 구현은 1979년 시애틀 컴퓨터 프로덕츠의 S-100 버스 8086 CPU 카드용이었다. 이는 8-비트 FAT 파일 시스템을 사용하고 있었다.

마이크로소프트는 또한 1980년 인텔의 8086 단일 보드 컴퓨터 플랫폼용 SBC-86/12용 독립형 BASIC-86 버전을 제공했다.

### 텍사스 인스트루먼트 베이직
이것은 TI-99/4A 가정용 컴퓨터에서 사용된 베이직 버전이다. 마이크로소프트 베이직과 매우 유사하지만, 널리 소문과는 달리 마이크로소프트가 작성한 것은 아니다. TI 엔지니어 H. 슈어만에 따르면, "그들(마이크로소프트의 밥 그린버그 형태)은 SR-70(때로는 99/7로도 불림)용 베이직을 개발하기 위해 계약되었지만, 99/4용 베이직은 내부적으로 개발되었다." TI-99/4 베이직은 다트머스 베이직을 기반으로 하며 최소 베이직을 위한 미국 국가 표준(ANSI X3.60-1978)을 준수한다.

### 6502 베이직
마이크로소프트는 1976년 여름 BASIC-80을 6502로 이식했다. 이는 주로 BASIC-80의 8K 버전을 그대로 이식한 것으로, 메모리 크기를 묻는 프롬프트와 부동 소수점 기능을 활성화할지 여부(활성화 시 135바이트의 추가 메모리 사용)를 묻는 프롬프트가 포함되어 있었다. 6502 베이직을 사용한 초기 기기는 1977년 Ohio Scientific 모델 500과 KIM-1이었다. 6502 베이직은 사용자 정의 함수와 설명적인 오류 메시지와 같은 확장 베이직의 특정 기능을 포함했지만, 배정밀도 변수와 `PRINT` `USING` 문과 같은 다른 기능은 생략했다. 배정밀도 변수가 없는 것에 대한 보상으로, 마이크로소프트는 BASIC-80의 32비트 부동 소수점 대신 40비트 부동 소수점 지원을 포함했고, 문자열 할당은 동적이었다(따라서 사용자는 BASIC-80처럼 문자열 공간을 예약할 필요가 없었다). 그러나 공급업체는 더 작은 메모리 풋프린트를 위해 32비트 부동 소수점을 가진 베이직을 여전히 요청할 수 있었다. 예를 들어, 아타리 8비트용 디스크 베이직은 40비트 대신 32비트 부동 소수점을 사용했다.

마이크로소프트 6502 베이직 9K 버전의 표준 기능은 다음과 같다.

* 키 누름을 감지하는 `GET` 문.
* 줄 크런치 프로그램 줄은 줄 번호와 문 사이에만 공백이 필요하다.
* 지원되는 변수 유형은 문자열, 단정밀도 부동 소수점, 16비트 부호 있는 정수뿐이다(배열에서 공간을 절약하지만, 모든 계산이 부동 소수점으로 이루어지기 때문에 쓸모없고 부동 소수점보다 느리다).
* 긴 변수 이름을 사용할 수 있지만, 처음 두 문자만 중요하다.
* 동적 문자열 할당.

6502 베이직은 디스크 및 프린터 출력에 대한 표준화된 명령 집합이 부족했으며, 이는 공급업체가 추가해야 하는 부분이었고 각 구현마다 크게 달랐다.

6502 베이직의 이후 구현(1983년 이후)에는 공급업체별로 많은 개선 사항이 있었다. 예를 들어 코모도어 베이직의 이후 버전은 다음을 포함한다.
* 디스크 명령(`DIRECTORY`, `DSAVE`, `DLOAD`, `BACKUP`, `HEADER`, `SCRATCH`, `COLLECT`, `DVERIFY`, `COPY`, `DELETE`, `RENAME` 등)
* 그래픽 명령(`CIRCLE`, `DRAW`, `BOX`, `COLOR` (배경, 테두리 등), `PAINT`, `SCALE`)
* 기존 그래픽 화면과 그래픽 블록 복사 및 논리 연산(`OR`, `AND`, `XOR` 등을 사용한 `SSHAPE` 및 `GSHAPE`)
* C128의 스프라이트 정의, 표시 및 애니메이션 명령, 심지어 스프라이트를 바이너리로 저장하는 기능
* 사운드 명령(`VOL`, `SOUND`), 이후 C=128 음악 명령(ADSR 및 SID 필터 프로그래밍(`ENVELOPE` 및 `FILTER`), `PLAY`, `TEMPO` 명령)
* 보다 구조화된 프로그래밍의 흔적: `IF`–`THEN`–`ELSE`, `DO`–`LOOP`–`WHILE`/`UNTIL`–`EXIT`.
* 특수 기능에 대한 확장 I/O 명령: `JOY`, 기능 키
* 디버깅 명령: `STOP`, `CONT`, `TRON`, `TROFF`, `RESUME`
* 문자 화면의 확장된 처리: `WINDOW`
* 쉬운 프로그램 개발 지원: `RENUMBER`, `NEW`, `MONITOR`, `RREG`

### BASIC-68 및 BASIC-69
1980년대 마이크로소프트 카탈로그에는 모토로라 6800 및 6809 마이크로프로세서용 BASIC-68 및 BASIC-69가 FLEX 운영체제에서 실행된다고 나와 있으며, 퍼킨-엘머, Ohio Nuclear, Pertec 및 Societe Occitane d'Electronique 시스템용 OEM 버전도 언급되어 있다.
이는 Epson HX-20 휴대용 컴퓨터의 마이크로소프트/엡손 베이직의 기반이 될 가능성이 높은 것으로 보인다. 이 컴퓨터는 본질적으로 "강화된" 6801인 두 개의 히타치 6301 CPU를 가지고 있다. BASIC-68 및 BASIC-69의 핵심 기능 대부분은 BASIC-80에서 직접 복사되었다.

BASIC-69는 특히 탠디에도 라이선스되어 TRS-80 컬러 컴퓨터의 컬러 베이직의 핵심을 형성했다. BASIC09와 혼동해서는 안 된다. BASIC09는 마이크로웨어가 OS-9의 주요 언어로 만든 매우 다른 베이직으로, 컬러 컴퓨터에서 사용할 수 있는 다른 OS이다(마이크로웨어도 마이크로소프트가 거부했을 때 확장 컬러 베이직 버전 2.0을 작성했다). 마이크로소프트 베이직은 웨일스에서 제작되어 1980년대 초 영국 가정용 컴퓨터 시장에서 제한적인 성공을 거둔 드래곤 32/64 컴퓨터에도 포함되었다. 드래곤 컴퓨터는 탠디 TRS-80과 매우 유사한 하드웨어로 제작되었기 때문에 다소 호환성이 있었다.

### MSX
마이크로소프트는 Z80 프로세서를 사용하는 MSX 가정용 컴퓨터용 ROM 기반 MSX 베이직을 제작했다. 이 버전은 MSX 컴퓨터의 그래픽 및 사운드 시스템을 지원했으며, 일부 변형은 디스크 드라이브도 지원했다.

## 현대 후손들
마이크로소프트 베이직의 어떤 종류도(BASICA, GW 베이직, 퀵베이직, 큐베이직) 현재 마이크로소프트 윈도우나 도스와 함께 배포되지 않는다. 그러나 최신 기기에서도 실행될 수 있는 버전은 다양한 인터넷 사이트에서 다운로드하거나 오래된 도스 디스크에서 찾을 수 있다.

마이크로소프트 베이직의 최신 버전은 비주얼 베이직 닷넷으로, C++ 및 C 샤프의 일부 기능을 통합하고 웹 양식, 윈도우 양식, 콘솔 애플리케이션 및 서버 기반 애플리케이션을 개발하는 데 사용될 수 있다. 대부분의 .NET 코드 샘플은 VB.NET과 C#으로 제공되며, VB.NET은 이전 비주얼 베이직 프로그래머들이 계속 선호한다.

2008년 10월, 마이크로소프트는 스몰 베이직을 출시했다. 이 언어는 14개의 키워드만 가지고 있다. 스몰 베이직 버전 1.0(2011년 6월 12일)은 업데이트된 마이크로소프트 MSDN 웹사이트와 함께 출시되었으며, 여기에는 전체 교사 교육과정, 시작 안내서, 및 여러 전자책이 포함되어 있었다. 스몰 베이직은 8세 어린 학생들도 컴퓨터 프로그래밍의 기초를 배우고, 다운로드 가능한 소프트웨어인 비주얼 스튜디오 익스프레스를 통해 비주얼 베이직으로 발전하여 비주얼 C#, VB.NET, 그리고 Visual C++를 배우면서 기반을 계속 다질 수 있도록 돕기 위해 존재한다.

## 소스 코드 공개

빌 게이츠는 마이크로소프트 창립 50주년을 기념하여 폴 앨런과 하버드의 PDP-10 메인프레임에서 BASIC으로 작성된 마이크로소프트의 원본 소스 코드를 공개했다. 게이츠가 자신의 "가장 멋진" 것으로 여기는 이 코드는 알테어 8800에서 영감을 받아 BASIC 인터프리터를 만들고 인텔 8080 칩을 시뮬레이션하는 과정을 포함했다. 스캔된 코드의 157페이지 PDF는 열람 가능하며, 마이크로소프트의 초기 역사를 엿볼 수 있다.
## 마이크로소프트 베이직의 변형 및 파생물
* 알테어 베이직 (MITS 알테어 및 기타 S-100 컴퓨터)
* 아미가 베이직 (코모도어 아미가 제품군)
* 애플소프트 베이직 (애플 II 제품군)
* 아타리 마이크로소프트 베이직 I 및 II (아타리 8비트 컴퓨터)
* Basic 1.0 (톰슨 컴퓨터 제품군)
* BASICA ("BASIC Advanced") (PC&nbsp;DOS, IBM PC용)
* Canon X-07 (캐논 휴대용 포켓 컴퓨터)
* Color BASIC (TRS-80 컬러 컴퓨터)Canon X-07
* Color BASIC 및 Disk Extended Color BASIC (TRS-80 컬러 컴퓨터 및 Dragon 32/64)
* 코모도어 베이직 (코모도어 8비트 제품군, C64 포함)
* 프리베이직 퀵베이직에서 영감을 받은 무료 구현
* Galaksija BASIC (갈락시야 가정용 컴퓨터)
* 감바스 비주얼 베이직에서 영감을 받은 무료 구현
* GW 베이직 (MS-DOS용 BASICA, PC 호환기종용)
* HP2640 HP2647 프로그래밍 가능 터미널 (AGL 그래픽 확장 포함)
* IBM Cassette BASIC (원본 IBM PC, ROM에 내장)
* Microsoft Level III BASIC (탠디/라디오-섁 TRS-80)
* MBASIC (CP/M, 8080, 8085, Z80 기반 컴퓨터용)
* MS BASIC for Macintosh (애플 매킨토시의 Mac OS용)
* MSX 베이직 (MSX 표준 가정용 컴퓨터)
* N88-BASIC (NEC PC8801/9801)
* N82-BASIC (NEC PC-8201/8201A, TRS-80 모델 100)
* Oric 확장 베이직 (오릭 8비트 제품군)
* 큐베이직 (PC&nbsp;DOS/MS-DOS, IBM PC 및 호환기종용)
* 퀵베이직 (PC&nbsp;MS-DOS, IBM PC 및 호환기종용)
* QB64 큐베이직의 무료 클론
* 스몰 베이직 (MS 윈도우, IBM PC 및 호환기종용)
* T-BASIC (도시바 파소피아) 및 T-BASIC7 (도시바 파소피아 7)
* TRS-80 레벨 II 베이직 (탠디/라디오-섁 TRS-80)
* 비주얼 베이직 (클래식 및 .NET) (PC&nbsp;DOS/MS-DOS/MS 윈도우, IBM PC 및 호환기종용)
* Video Technology Basic (레이저 350/500/700)
* WordBasic (프리-VBA) (MS 윈도우)

## 같이 보기
* 아타리 베이직
* BBC 베이직
* 정수 베이직
* 로코모티브 베이직
* 애호가에게 보내는 공개 서한
* 타이니 베이직

## 내용주




## 각주

## 외부 링크
* 빌 게이츠의 8비트 베이직 개인 부활절 달걀

분류:베이직 프로그래밍 언어 계열
분류:마이크로소프트 개발 도구
분류:마이크로소프트 베이직
분류:1975년 개발된 프로그래밍 언어
분류:마이크로소프트의 프로그래밍 언어