컬러 BASIC
Color BAS설계자 | 빌 게이츠[1] |
---|---|
개발자 | 마이크로소프트 |
처음 등장한 | 전( |
안정된 릴리스 | 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은 실행 시 디코딩됩니다.
배경

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]: 조이스틱 값 읽기
레퍼런스
- ^ 80-미국, 마이크로소프트의 빌 게이츠 인터뷰, 80-미국 - 제4권 제3호 (1981-05) (80-Northwest Publishing)(미국), 8페이지가장 최근에 그는 Radio Shack 컬러 컴퓨터 작업을 완료했다. 그는 자신이 작성한 Extended Color Basic 패키지에 가장 흥분하고 있다.
- ^ 엉망인 상황
- 메모들
- Getting Started With Color BASIC, 1980, Tandy Corporation.출판물 #8749266
- 컬러 컴퓨터 디스크 시스템(Tandy), 1981년, Tandy Corporation.출판물 #8749470-BCO
- Getting Started With Extended Color BASIC, 1984년, Tandy Corporation.출판물 #811013700a
- Color Computer 3 Extended Basic (Tandy), 1986년, Tandy Corporation.출판물 #81101910a