MBASIC
MBASIC패러다임 | 필수적 |
---|---|
설계자 | 마이크로소프트 |
개발자 | 마이크로소프트 |
OS | CP/M |
웹 사이트 | www |
영향을 받다 | |
기본의 |
MBASIC은 CP/M 운영체제용 BASIC의 Microsoft BASIC 구현입니다.MBASIC은 마이크로소프트 최초의 제품 중 하나인 오리지널 Altair BASIC 인터프리터의 후손이다.MBASIC은 Osborn 1 컴퓨터에 번들된 BASIC의 두 가지 버전 중 하나였습니다."MBASIC"이라는 이름은 디스크 파일 이름 MBASIC에서 파생되었습니다.BASIC 인터프리터의 COM.
환경
MBASIC 버전5에서는 28kB 이상의 RAM과 1개 이상의 디스켓 드라이브를 갖춘 CP/M 시스템이 필요했습니다.
가정용 컴퓨터 제조업체가 컴퓨터의 특정 하드웨어 기능을 사용하도록 커스터마이즈한 Microsoft BASIC-80 버전과 달리 MBASIC은 CP/M 운영 체제 호출에만 의존했습니다.CP/M 콘솔(화면과 키보드), 라인 프린터 및 디스크 디바이스만 사용할 수 있었습니다.
커스터마이징되지 않은 형태의 MBASIC에는 그래픽, 컬러, 조이스틱, 마우스, 시리얼 통신, 네트워킹, 사운드, 실시간 클럭 기능이 없었습니다.MBASIC은 호스트 CP/M 운영 체제의 기능을 완전히 지원하지 않았습니다. 예를 들어, 디스켓에 파일을 정리하기 위한 CP/M의 사용자 영역을 지원하지 않았습니다.CP/M 시스템은 일반적으로 단일 사용자로 독립적이기 때문에 파일이나 레코드 잠금, 또는 어떤 형태의 멀티태스킹에 대한 프로비저닝은 없었습니다.이러한 제한과는 별도로, MBASIC은 당시 BASIC의 강력하고 유용한 구현으로 간주되었습니다.
특징들
언어 체계
MBASIC은 인터프리터입니다.프로그램 소스 텍스트는 토큰화된 형태로 메모리에 저장되었으며, BASIC 키워드는 메모리 공간을 절약하고 실행을 가속화하는 1바이트 토큰으로 대체되었습니다.회선번호가 부가된 모든 행은 프로그램텍스트로 저장되며, 회선번호가 부가되지 않은 BASIC 문은 명령어로 즉시 실행됩니다.프로그램을 편집하기 위해 화면에 나열하거나 압축된 이진 형식 또는 일반 ASCII 텍스트로 디스크에 저장할 수 있습니다.모든 소스 회선은 GOTO 또는 GOSUB 전송의 타겟으로 사용할 수 있는 번호로 식별되었습니다.행 편집 명령만 [1]제공되었습니다.프로그램을 일반 텍스트로 저장하고 풀 피처 에디터로 편집하는 것이 종종 도움이 되었습니다.
프로그램 텍스트, 변수, 디스크 버퍼 및 CP/M 운영 체제 자체는 모두 8080 프로세서의 64킬로바이트 주소 공간을 공유해야 했습니다.일반적으로 MBASIC을 처음 시작할 때는 64킬로바이트의 RAM을 장착한 머신에서도 프로그램과 데이터에 사용할 수 있는 메모리가 32킬로바이트 미만입니다.코멘트 행, 프리픽스에는 REM
키워드 또는 아포스트로피를 프로그램텍스트에 넣을 수 있지만 귀중한 메모리 공간을 차지하기 때문에 BASIC 사용자가 코드를 완전히 문서화할 수 없습니다.더 크고 복잡한 프로그램을 실행할 수 있도록 하기 위해, MBASIC의 이후 버전은 프로그램 텍스트의 일부를 프로그램 제어 하에 읽고 실행할 수 있는 함수를 지원했다. CHAIN
MERGE
스테이트먼트)를 참조해 주세요.결정된 프로그래머에 의해 이 기능이 복제될 수 있지만 "shell" 명령 실행을 지원하지 않았습니다.
MBASIC의 특별한 장점은 구문 오류 및 런타임 오류에 대해 제공되는 전체 텍스트 오류 메시지입니다.MBASIC에는 실행 시 회선번호를 표시하는 트레이스 기능도 있습니다.이것은 일반 프로그램 출력과 동일한 화면 공간을 차지하지만 무한 루프와 같은 조건을 감지하는 데 유용합니다.
파일 및 입출력
데이터는 순차 파일(각 행 끝에 있는 CR/LF의 CP/M 규칙에 따라 구분됨) 또는 고정 레코드 길이의 랜덤 액세스 파일로 읽혀 디스크에 저장될 수 있으며, 프로그래머가 충분히 결정되면 데이터베이스 유형의 레코드 조작을 수행하기 위해 사용할 수 있습니다.부동소수점 숫자에 대한 마이크로소프트 바이너리 포맷은 구현에 고유하며, 이는 데이터가 ASCII 텍스트 표현 또는 바이너리 포맷을 변환하기 위한 광범위한 프로그래밍을 통해서만 다른 프로그램과 교환될 수 있음을 의미합니다.
변수 및 데이터 유형
MBASIC은 다음 데이터 유형을 지원했습니다.
- 길이 0 ~ 255자의 문자열로 이루어진 8비트 문자 데이터
- 16비트 정수
- 32비트 부동소수점(단일 정밀도), 소수점 6자리, 두 자리 지수
- 64비트 부동소수점(이중 정밀도), 16자리 소수점, 2자리 지수.
문자열 연산자에는 하위 문자열 선택, 연결, 할당 및 동등성 테스트가 포함됩니다.
위의 유형의 어레이는 최대 7차원까지 허용되지만 어레이에서 기능이나 연산자가 작동하지 않았습니다.예를 들어 어레이 할당은 없었습니다.당시의 일부 BASIC 구현과 달리 MBASIC은 재무 계산을 위한 매트릭스 연산, 복소수 또는 10진수(BCD) 데이터 유형을 지원하지 않았습니다.일반적인 CP/M 시스템에는 부동소수점 하드웨어가 없었기 때문에 모든 부동소수점 작업은 소프트웨어로 수행되었습니다.내장된 수학 함수(사인, 코사인, 탄젠트, 자연 로그, 지수, 제곱근)는 단일 정밀도 결과만 제공합니다.소프트웨어 의사 난수 생성기가 제공되었으며, 이는 사용자가 시드 번호를 입력하여 게임 및 일부 시뮬레이션에 유용한 일련의 번호를 얻는 데 의존했습니다.MBASIC은 허용되지만 필요 없습니다. LET
assignment 스테이트먼트의 키워드.
마이크로컴퓨터의 BASIC의 초기 버전은 한 글자 또는 두 글자의 변수 이름으로 악명이 높았고, 이는 복잡한 프로그램에서 변수의 의미를 기억하기 어렵게 만들었다.MBASIC 버전5 에서는 최대 40글자의 식별자를 사용할 수 있었습니다.이것에 의해, 프로그래머는 변수를 읽어낼 수 있는 이름을 붙일 수 있었습니다.
프로그램 흐름 제어
MBASIC의 프로그램플로우 제어는 다음에 의해 제어되었습니다. IF...THEN...ELSE...
조건부 테스트, WHILE...WEND
루프 및 GOTO
그리고. GOSUB
지침들.아니요. CASE
스테이트먼트는 사용할 수 있었지만 ON...GOTO...
(계산된 GOTO)는 멀티웨이 브런치를 제공했습니다.서브루틴에는 파라미터가 없고 모든 변수가 글로벌했습니다.MBASIC은 프로그래머들에게 구조화된 프로그래밍을 의무화하지 않았고 스파게티 코드를 쓰는 것이 쉬웠다.
PEEK, POK 및 사용자 기능
70년대 후반과 80년대 초반의 8비트 컴퓨터에서의 BASIC에 대한 논의는 메모리에 직접 읽고 쓰기 위한 PEEK 및 POKE 기능의 중요성에 대해 언급하지 않고서는 완전하지 않을 것입니다.이러한 시스템은 일반적으로 메모리 보호 기능이 없었기 때문에 프로그래머는 운영 체제의 일부나 다른 방법으로는 사용할 수 없는 기능에 액세스할 수 있었습니다.또, 유저 프로그램이 (통상, 잘못해) 시스템을 행업 할 가능성도 있습니다.예를 들어, CP/M 프로그래머는 다음을 사용할 수 있습니다. POKE
BASIC이 콘솔 디바이스를 시리얼 포트로 전환할 수 있도록 합니다(시스템 BIOS가 이를 지원하는 경우).실시간 클럭이 탑재된 기계에서는PEEK
시간에 액세스하기 위해 지침이 사용되었을 수 있습니다.
보다 복잡한 조작의 경우 MBASIC은 BASIC 프로그램에서 호출할 수 있는 사용자 정의 함수를 허용했습니다.이들은 보통 일련의 기계 코드(op 코드)로서 메모리의 예약된 영역(또는 문자열 상수로 POKed)에 배치됩니다.MBASIC에서는 하드웨어도 제공INP
그리고.OUT
8080 하드웨어 입력/출력 포트에 직접 읽고 쓰는 명령입니다.시스템 하드웨어가 허용하는 경우 BASIC 프로그램에서 주변기기를 제어하기 위해 사용할 수 있습니다.
를 사용한 모든 MBASIC 프로그램PEEK
그리고.POKE
및 기계 코드 사용자 기능의 경우 수정 없이 기계 간에 이동할 수 없습니다.
MBASIC의 후계자
마이크로소프트의 CP/M용 BASIC-80 외에 IS-II 운영 체제에도 MBASIC의 변종이 제공되었습니다.
또한 MSX-BASIC은 MSX 머신 고유의 몇 가지 확장을 특징으로 하는 MBASIC의 후계기이기도 합니다.
CP/M MBASIC의 모든 기능은 IBM PC 디스크 기반 BASICA 또는 GWBASIC에서 사용할 수 있었으며, 이를 통해 CP/M 시스템에서 PC 호환 시스템으로 프로그램을 마이그레이션할 수 있었습니다.키워드를 나타내는 토큰이 다르기 때문에 CP/M 프로그램을 ASCII 소스 형식으로 저장해야 했습니다.일반적으로 CP/M 버전에 삽입된 화면 포맷 이스케이프 시퀀스는 PC 버전의 BASIC에 있는 커서 위치 결정 명령어로 대체됩니다.그렇지 않으면 다시 쓸 필요가 거의 없습니다.
바스콤
마이크로소프트는 MBASIC과 유사한 소스 언어를 사용한 CP/M BASIC 컴파일러(BASCOM)를 판매했습니다.MBASIC에서 디버깅된 프로그램은 BASCOM을 사용하여 컴파일할 수 있습니다.프로그램 텍스트는 더 이상 메모리에 없고 컴파일러의 런타임 요소가 인터프리터보다 작았기 때문에 사용자 데이터에 더 많은 메모리를 사용할 수 있었습니다.실제 프로그램 실행 속도가 약 3배 빨라졌다.
개발자들은 BASCOM을 인기 있지만 느리고 서투른 CBASIC의 대안으로 환영했다.CBASIC과 달리 BASCOM은 MBASIC 소스 코드용 프리프로세서를 필요로 하지 않기 때문에 대화식으로 [2]디버깅할 수 있습니다.단점은 마이크로소프트가 컴파일한 프로그램[3] 복사본마다 9%의 로열티와 하드웨어와 소프트웨어의 조합에 40달러를 요구했다는 것입니다.그 회사는 또한 개발자들의 재무 기록을 감사할 권리를 유보했다.소프트웨어에 대한 저자의 일반적인 로열티율은 10-25%였기 때문에 1980년 InfoWorld는 BASCOM의 9%의 로열티율은 "소프트웨어 개발을 전혀 수익성이 없게 만들 수 있다"며 "마이크로소프트는 (CBASIC의 결함에 대한) 기술적 해결책을 가지고 있지만 경제적인 [2]것은 아니다"라고 결론지었다.
MBASIC의 중요성
MBASIC은 8비트 CP/M 컴퓨터 시대에 중요한 도구였습니다.숙련된 사용자는 MBASIC로 루틴을 작성하여 오늘날의 시스템에서 강력한 애플리케이션 프로그램 명령 또는 스크립트 언어로 수행될 수 있는 작업을 자동화할 수 있습니다.유용한 MBASIC 프로그램의 교환은 컴퓨터 사용자 그룹의 공통적인 기능이었다.잡지 기사에서 긴 BASIC 목록을 입력하는 것은 소프트웨어를 새로운 CP/M 시스템에 "부트스트랩"하는 한 가지 방법입니다.적어도 하나의 고급 언어용 컴파일러가 MBASIC로 작성되었고, 몇 줄에서 몇 천 줄의 코드까지 많은 작은 게임과 유틸리티 프로그램이 작성되었다.
기타 용도
MBASIC은 Basic Micro, Inc.가 개발한 마이크로칩 테크놀로지 PIC 마이크로컨트롤러 패밀리용 상용 BASIC 컴파일러 이름으로 CP/M 인터프리터와 무관합니다.
레퍼런스
- ^ 전체 화면 편집을 지원하는 CP/M 제품은 시스템 콘솔로 사용되는 특정 컴퓨터 단말기에 대한 소프트웨어를 사용자 정의하기 위해 자체 설치 루틴이 필요했습니다.CP/M 내부에서는 터미널 기능을 표준화하기 위한 지원이 제공되지 않았습니다.
- ^ a b "Editorial". InfoWorld. 1980-08-18. p. 8.
- ^ Pournelle, Jerry (December 1980). "BASIC, Computer Languages, and Computer Adventures". BYTE. p. 222. Retrieved 18 October 2013.
- Thom Hogan and Mike Iannamico, Osborne 1 사용자 레퍼런스 가이드, Osborne Computer Corporation(1982)
- 데이비드 A.LIEN, 베이직 핸드북, 베이직 컴퓨터 언어 백과사전 제2판"(1981), Compusoft 출판사
- 베이직 80 레퍼런스 매뉴얼, Microsoft Corporation, 날짜 없음