컬러 BASIC

Color BAS
컬러 BAS
설계자빌 게이츠[1]
개발자마이크로소프트
처음 등장한1980년; 42년 전(1980년)
안정된 릴리스
Color BASIC 1.3 (1982)
확장 컬러 베이직 ('ECB') (1984)
디스크 확장 컬러 베이직 ('DECB') (1984)
플랫폼TRS-80 컬러 컴퓨터

Color BASIC은 1980년부터 1991년까지 제조된 Tandy/Radio Shack TRS-80 컬러 컴퓨터의 ROM에 포함된 Microsoft BASIC 구현입니다.BASIC(Beginner's All-Purpose Symbolic Instruction Code)는 간단한 구문을 가진 고급 언어로서 간단한 프로그램을 쉽게 작성할 수 있습니다.Color BASIC은 실행 시 디코딩됩니다.

배경

TandyColor 컴퓨터 3의 디스크 확장 컬러 베이직 2.1

Color BASIC의 핵심은 탠디가 마이크로소프트로부터 라이선스를 받은 Microsoft BASIC-69였습니다.Color BASIC 1.0은 1980년에 오리지널 4k TRS-80 컬러 컴퓨터와 함께 출시되었습니다.8k바이트의 ROM에 상주하며 시스템의 모든 '하우스키핑' 업무를 담당합니다.여기에는 하드웨어 초기화, 메모리 관리, 인터럽트 처리 등이 포함됩니다.대부분의 BASIC 구현과 마찬가지로 각 코드 행은 행 번호로 시작하며 변수와 연산자를 가진 하나 이상의 문장으로 구성됩니다.다음 레벨의 BASIC 확장 컬러 베이직에는 16k의 메모리가 필요합니다.「ECB」확장 BASIC은 플로피 디스크 컨트롤러에 필요합니다.「디스크 확장 컬러 베이직」을 제공합니다.「DECB」는, 이 인터프리터를 실행하고 있는 칼라 컴퓨터의 에뮬레이터와 그 외의 컴퓨터에는, 「스냅샷」이 필요한 것이 있습니다.물리 [2]머신의 e.

변수

Color BASIC은 숫자 변수와 문자열 변수의 한 가지 유형을 이해합니다.Color BASIC 변수 이름에는 처음 두 글자가 중요합니다.변수 이름의 첫 번째 문자는 문자여야 합니다.두 번째는 문자 또는 숫자일 수 있습니다.문자열 변수는 변수 이름 뒤에 달러 기호($)를 추가하여 나타냅니다.

A=5 A$="이것은 스트링입니다" K7=10 BB$="안녕하세요!" ZZ=1.54 

숫자 변수에는 이진 부동 소수점 구현이라는 한 가지 유형만 있습니다.각 숫자 변수는 5바이트의 메모리를 사용하며 -1E+38 ~1E+37 범위의 메모리를 사용할 수 있습니다.

Microsoft BASIC 의 대부분의 실장과는 달리, Color BASIC 에서는, CLEAR 스테이트먼트를 사용해 문자열 변수의 스페이스를 예약할 필요가 있습니다.

다차원 배열은 숫자 변수와 문자열 변수 모두에서 지원됩니다.배열의 경우 요소 주소는 괄호로 둘러싸여 있습니다.

A(1)=1 A$(1)="책" 

여러 차원은 쉼표로 구분됩니다.

A(1,3)=4 A$(2,2)="XYZ123" 

연산자 및 기호

Color BASIC은 수학 연산과 보다 적은 범위의 문자열 연산 모두에 대해 여러 연산자를 제공합니다.

+는 문자열을 연결하거나 수학적 덧셈에 사용할 수 있습니다.
-는 감산에 사용됩니다.
*는 곱셈에 사용됩니다.
/는 나눗셈에 사용됩니다.

괄호()는 연산 순서를 재정의하는 데 사용됩니다.

AND는 논리적 'and' 연산에 사용됩니다.
논리적인 '또는' 연산에 OR이 사용됩니다.
NOT는 논리적 '없음' 작업에 사용됩니다.

테스트에는 다음 연산자가 사용됩니다.

=는 다음과 같습니다.
>가 보다 크다
<은(는) 이하
>= 이상(=>도 허용됨)
<=> 이거나 같음(=<도 허용됨)
<< 고객명 >>님은 동일하지 않습니다(< 고객명 >님도 허용됩니다).

BASIC에서 사용되는 기타 기호:

"는 문자열 데이터가 상수(정적)임을 나타냅니다.
: 1개의 프로그램 행에 여러 명령어를 구분합니다.
PRINT 함수에서 세미콜론이 발견되면 출력이 동일한 라인 위에 유지됩니다.
PRINT 함수에 쉼표가 있으면 다음 열로 이동합니다.

열쇠

num은 숫자식이 필요함을 나타냅니다.이것은 고정수, 변수 또는 숫자를 반환하는 다른 연산 또는 함수일 수 있습니다.

str은 문자열 식이 필요함을 나타냅니다.이것은 정적 문자열 값(따옴표로 묶음), 문자열 변수 또는 문자열을 반환하는 기타 함수 또는 식입니다.

device number는 디바이스를 나타냅니다.디폴트로는 디바이스0(화면 및 키보드)이 상정되어 있습니다.Color BASIC에서 프로그래머는 #-1(카세트) 및 #-2(프린터) 장치를 사용할 수 있습니다.

편집 모드

행 입력을 잘못했을 경우는, 처음부터 다시 입력할 수도 있습니다(또는 DEL로 입력할 수도 있습니다.또는 편집할 수 있습니다.EDIT 모드에서 행의 재인쇄와 문자 간 스페이스바의 두 번째 복사를 얻을 수 있습니다.화살표 키는 사용할 수 없습니다.백스페이스는 왼쪽으로 이동하지만 실제로 버퍼에서 지우지는 않습니다.'i'를 선택하면 삽입 모드가 됩니다.리턴을 누르면 빠져나갈 수 있습니다.'c'는 1자를 변경하고 'd'는 1자를 삭제합니다."x"는 줄의 끝으로 이동하며, 이를 "x"로 표시할 수 있습니다."l"은 선을 다시 긋습니다.

기능들

ABS(num)
num의 절대값을 반환합니다.
ASC(str)
str의 첫 번째 문자의 ASCII 코드를 반환합니다.
CHR$(num)
ASCII 코드 num을 가진 단일 문자열 문자를 반환합니다.
EOF(device number)
파일에 데이터가 있는 경우 0을 반환하고 파일 끝에 있는 경우 -1을 반환합니다.
INKEY$
키보드의 키를 누른 경우 문자를 반환하고 아무것도 누르지 않은 경우 Null을 반환합니다.
INT(num)
num의 정수 부분을 반환합니다.
INSTR(startpos,search str,target str)
는 타깃 스트링의 첫 번째 스트링을 검색합니다.startpos는 옵션입니다.
JOYSTK(num)
0 ~ 63의 값으로 조이스틱 축의 위치(0-3)를 반환합니다.
LEFT$(str,num)
string str의 첫 번째("왼쪽") num 문자를 반환합니다.
LEN(str)
string str의 길이(문자 단위)를 반환합니다.
MEM
사용 가능한 빈 메모리를 바이트 단위로 반환합니다.
MID$(str,start num,length num)
position start num 및 length num 문자로 시작하는 문자열의 서브스트링을 반환합니다.="new value"를 추가하여 재할당할 수도 있습니다.
PEEK(num)
메모리 로케이션 번호(0~65535)의 값을 반환합니다.
POINT(x num,y num)
x numm(0-63) 및 y num(0-31) 위치에 있는 반자형 닷의 색상을 반환합니다.
RIGHT$(str,position num)
문자열 문자열의 끝("오른쪽") 부분을 문자 위치 번호에서 시작합니다.
RND(number)
1에서 num 사이의 난수(소수)를 반환합니다.
SGN(num)
숫자 기호(양수인 경우 1, 음수인 경우 -1, 0인 경우 0)을 반환합니다.
SIN(num)
라디안 단위의 숫자 사인을 반환합니다.
STR$(num)
숫자 num 문자열을 반환합니다.
USR(num)
는 주소가 메모리 위치 275 및 276에 저장되어 있는 기계어 서브루틴을 호출합니다.num은 루틴에 전달되며 루틴이 완료되면 반환값이 할당됩니다.

명령어

AUDIO [ON OFF]
카세트 오디오를 TV 사운드와 연결하거나 연결을 끊습니다.
CLEAR variable space[,highest memory location]
문자열 변수용 메모리 예약 및 기계어 프로그램(옵션)
CLOAD ["name"]
카세트에서 BASIC 프로그램을 로드합니다.이름을 지정하지 않으면 다음 프로그램이 로드됩니다.
CLOADM ["name"]
카세트에서 기계어 프로그램을 로드합니다.이름을 지정하지 않으면 다음 프로그램이 로드됩니다.
CLOSE [device number]
장치를 닫습니다(Color BASIC에서는 #-1, 카세트만 가능합니다).
CLS(num)
화면을 클리어합니다.옵션의 색상 번호(0-8)를 지정할 수 있습니다.
CONT
BREAK 또는 STOP 문을 누른 후 프로그램을 계속합니다.
CSAVE ["name"]
BASIC 프로그램을 옵션 이름으로 카세트에 저장합니다.
DATA var,var,var...
데이터를 BASIC 프로그램에 저장하여 READ 명령으로 검색할 수 있도록 합니다.
DIM variable(dimension[,dimension 2,...]
어레이의 치수와 메모리 용량 예약
END
BASIC 프로그램의 종료를 나타냅니다.
EXEC
[memory address]는 메모리 주소에서 기계어 프로그램을 실행합니다.지정하지 않으면 테이프에서 로드된 프로그램의 실행 주소가 사용됩니다.
INPUT [device number] [{prompt text};] variable [,variable 2, variable n]
디바이스 번호로부터의 입력을 기다립니다.지정하지 않으면 디바이스 0(키보드)이 상정됩니다.입력문에 대한 프롬프트(옵션)를 화면에 인쇄할 수 있습니다.
LIST [starting line] - [ending line]
에, 사용하고 있는 프로그램의 행을 나타냅니다.시작 또는 종료 중 하나를 생략할 수 있습니다. 또는 둘 다 생략할 경우 전체 프로그램이 나열됩니다.
LLIST [starting line] - [ending line]
LIST와 같이 동작하지만 프린터로 출력됩니다.
MOTOR [ON OFF]
카세트 모터를 켜거나 끕니다.
NEW
메모리 내용(프로그램 및 변수)을 지웁니다.
ON {num} GOSUB line 1, line 2, ... line n
expression num을 평가하여 나열된 num번째 서브루틴을 호출합니다.
ON (num) GOTO line 1, line 2, ... line n
num을 평가하고 나열된 num번째 행으로 점프합니다.
OPEN "[I O]",device number[,"filename"]
통신을 위한 장치를 열다
POKE memory address, data
메모리 주소(0~65535)에 데이터 쓰기(0~255)
PRINT device number,expression
는 지정된 디바이스에 데이터를 인쇄합니다.생략할 경우 #0(화면)으로 간주됩니다.
PRINT @{screen position} expression
PRINT와 같이 동작하지만 지정된 위치(0-511)에서 인쇄합니다.
READ variable[,variable,...]
DATA 문이 내장된 BASIC 프로그램에서 다음 변수를 읽습니다.
RENUM num
프로그램의 각 행을 숫자 배수로 바꿉니다.
RESET(x,y)
위치 x(0-63) 및 y(0-31)의 반자화 픽셀을 검은색으로 설정합니다.
RESTORE
READ 포인터를 첫 번째 DATA 문으로 리셋합니다.
RETURN
서브루틴으로부터의 반환
RUN num
BASIC 프로그램을 실행합니다(옵션).지정된 회선번호로 실행합니다.
SET(x,y,color)
위치 x(0-63) y(0-31)의 반음파 픽셀을 색상(0-8)으로 설정합니다.
SKIPF ["filename"]
지정된 프로그램 이름이 검색될 때까지 테이프의 BASIC 프로그램을 건너뜁니다.
SOUND tone,duration
주파수(1~255)와 지속시간(1~255)의 톤이 울린다.
STOP
프로그램 실행을 중지합니다.
TAB(column)
지정된 열에 대한 탭(PRINT와 함께 사용)
VAL(str)
문자열 형식의 숫자를 포함하는 문자열의 숫자 값을 반환합니다.

흐름 제어

GOSUB {line number}
지정된 회선번호로 서브루틴을 호출한다.
GOTO {line number}
지정된 프로그램의 행 번호로 점프합니다.
IF {test} THEN {command(s)} [ELSE {command(s)}]
는 조건부 테스트를 수행합니다.테스트가 참이면 THEN 명령이 실행되고 그렇지 않으면(ELSE) 다른 명령이 실행됩니다.[No ELSE]가 지정되어 있고 테스트가 false일 경우 프로그램의 다음 행이 실행됩니다.
{num} = {number} 종료 {number} [STEP {number}]의 경우...다음 (숫자)
는 숫자 변수(num)가 시작 번호에서 끝 번호까지 번호 증분(STEP) 단위로 실행되는 루프를 만듭니다.스텝을 생략하면 1이 됩니다.

에러 메시지

/0
0으로 나누기
AO
지정한 파일이 이미 열려 있습니다.
BS
부정한 서브스크립트첨자가 DIM 범위를 벗어났습니다.
CN
계속할 수 없음(CONT 명령 참조)
DD
어레이의 리다이멘션을 시도하다
DN
유효하지 않은 장치 번호
DS
직접 문의 오류(프로그램에 줄 번호가 없음)
FC
잘못된 함수 호출: 함수에 범위를 벗어난 값이 포함되어 있습니다.
FD
잘못된 파일 데이터: 숫자를 문자열 값으로 읽으려고 시도하는 등
FM
잘못된 파일 모드, OUTPUT을 위해 열려 있는 파일에 데이터 입력 시도 등
ID
invalid direct: 지정한 명령어는 프로그램에서만 실행할 수 있습니다.
IE
입력이 파일 끝을 지나갑니다.'EOF' 참조
IO
입출력 오류
LS
long string : 문자열에는 255자만 사용할 수 있습니다.
NF
다음, 다음:
NO
파일이 열리지 않음
OD
데이터 부족: 프로그램의 마지막 데이터 이상 읽기를 시도합니다.
OM
기억력이 떨어져서
OS
문자열 공간 부족: "CLEAR" 참조
OV
overflow: 번호가 범위를 벗어났습니다.
RG
GOSUB 없이 반환
SN
구문 오류
ST
문자열 작업이 너무 복잡함
TM
유형 불일치(A$=3, A="CAT")
UL
존재하지 않는 회선으로 GOTO 또는 GOSUB를 시도하다

문서화된 ROM 서브루틴

Color BASIC ROM의 기계어 프로그램에는 범용 프로그래밍에 사용할 수 있는 서브루틴이 몇 개 있습니다.

POLCAT
주소 [$A000]: 키보드의 문자 폴링
CHROUT
주소 [$A002]:화면 또는 장치에 문자를 출력합니다.
CSRDON
주소 [$A004]: 카세트를 시작하고 읽을 준비를 합니다.
BLKIN
주소 [$A006]: 카세트에서 블록을 읽습니다.
BLKOUT
주소 [$A008]: 카세트에 블록 쓰기
JOYIN
주소 [$A00A]: 조이스틱 값 읽기

레퍼런스

  1. ^ 80-미국, 마이크로소프트의 빌 게이츠 인터뷰, 80-미국 - 제4권 제3호 (1981-05) (80-Northwest Publishing)(미국), 8페이지가장 최근에 그는 Radio Shack 컬러 컴퓨터 작업을 완료했다. 그는 자신이 작성한 Extended Color Basic 패키지에 가장 흥분하고 있다.
  2. ^ 엉망인 상황
메모들