싱클레어 BASIC

Sinclair BAS
싱클레어 BAS
패러다임필수
설계자존 그랜트, 스티브 비커스
개발자9개의 타일 네트워크,
싱클레어 리서치
처음 등장한1979년; 43년 전 (1979년)
플랫폼ZX80, ZX81, ZX 스펙트럼
면허증.독자 사양

Sinclair BASIC은 Sinclair Research와 Timex Sinclair8비트 가정용 컴퓨터에서 사용되는 프로그래밍 언어 BASIC의 방언입니다.Sinclair BASIC 인터프리터는 Nine Tiles Networks Ltd.[1]가 만들었습니다.

역사

Sinclair BASIC은 1979년 나인타일에 의해 ZX80용으로 개발되었습니다.프로그래머는 나인타일의 소유주인 존 그랜트와 스티브 비커스였다.

1978년 ANSI(American National Standards Institute) 미니멀 베이직 규격(정수 연산만 포함)의 불완전한 구현이었습니다.이 규격은 ZX80의 4K BASIC(ROM 크기 때문에)입니다.ZX81TS1000의 부동소수점 8K BASIC(ZX80의[2] 업그레이드로서도 이용 가능)을 통해 진화하여 16KB ROM ZX Spectrum의 거의 완전한 버전이 되었습니다.모든 ZX Spectrum 호환기에 포함되어 있습니다.

2015년 현재 Sinclair Basic을 쉽게 사용할 수 있는 최신 운영 체제 및 구형 시스템용 인터프리터가 존재합니다.

구문

새로운 BASIC 프로그래머는 간단한 프로그램으로 시작할 수 있습니다.아마도 이 언어의 PRINT 스테이트먼트를 사용하여 화면에 메시지를 표시할 수 있습니다.잘 알려져 있고 자주 복제되는 예는 Kernighan과 RitchieHello 월드 프로그램입니다.

  10 인쇄하다 "안녕, 월드!" 

키워드

16K/48K ZX 스펙트럼에서는 Sinclair BASIC에는 88개의 키워드가 있으며 명령어(50개), 함수 및 논리 연산자(31개), 기타 키워드(9개 포함)가 있습니다.

키워드 파라미터[note 1] 를 사용하여 입력했습니다[note 2]. 유형 요약
ABS number EXTENDED MODE 그럼 기능. 절대값을 반환합니다.number[3]
ACS number EXTENDED MODE 그럼 +W 기능. 의 아크코사인을 반환합니다.number[4]
AND SYMBOL SHIFT+Y 논리 연산자 양쪽 조건 모두 true를 반환한다.AND키워드는 true, 그렇지 않으면 false를[note 3][5] 반환합니다.
ASN number EXTENDED MODE 그럼 +Q 기능. 의 아크사인을 반환합니다.number[6]
AT line, column; SYMBOL SHIFT+I 다른. 에서 사용PRINT지정한 [7]행과 열에 인쇄하는 문(예:PRINT AT 5,10;"*"5행의 10열에 별을 넣습니다.
ATN number EXTENDED MODE 그럼 +E 기능. 아크탄젠트를 반환합니다.number[4]
ATTR (line, column) EXTENDED MODE 그럼 +L 기능. 지정된 텍스트 셀 색상에 대한 정보를 포함하는 바이트를 반환합니다.line그리고.column대부분의 Sinclair BASIC 키워드와 달리 괄호는 필수입니다.첫 번째 3비트는 잉크(전경) 컬러, 네 번째, 다섯 번째 및 여섯 번째 비트는 용지(배경) 컬러, 일곱 번째 비트는 밝은지 여부, 여덟 번째 비트는 점멸 여부를[8] 나타냅니다.
BEEP duration, pitch EXTENDED MODE 그럼 +Z 명령어 컴퓨터 스피커에서 소리를 낸다.duration초 단위, 피치는 중간 C보다 위(양수 값) 또는 아래(음수[9] 값) 반음입니다.
BIN number EXTENDED MODE 그럼 다른. 나타내다number바이너리[10] 표기법
BORDER number B 명령어 화면의 테두리를 에 의해 지정된 색상으로 설정합니다.number[주 4][11]
BRIGHT number EXTENDED MODE 그럼 +B 명령/기타 다음과 같은 모든 색상을 더 밝게 만듭니다.number1 또는 0인 경우[note 5][12] 일반 음영입니다.
CAT number EXTENDED MODE 그럼 +9 명령어 지정된 ZX Microdrive의 내용을 표시합니다.number[주 6][13]
CHR$ number EXTENDED MODE 그럼 기능. 소수점에 해당하는 문자를 반환합니다.number컴퓨터 문자[14] 집합에서
CIRCLE x, y, r EXTENDED MODE 그럼 +H 명령어 좌표를 중심으로 원을 그립니다(x,y) 및 반지름r[15]
CLEAR address X 명령어 화면,[16] 모든 변수 및 데이터 저장 공간을 지웁니다.GO SUB스택 [17]및 옵션으로 BAS에 의해 사용되는 최대 RAM 주소를 설정합니다.IC[18]
CLOSE # number EXTENDED MODE 그럼 +5 명령어 액세스를 위해[note 6] 지정된 스트림 번호를 닫습니다.
CLS V 명령어 화면에서[16] 모든 텍스트와 그래픽을 지웁니다.
CODE string EXTENDED MODE 그럼 기능/기타 의 첫 번째 문자에 대응하는 번호를 반환합니다.string또한 임의[14]청크 메모리를 테이프, 디스크 등에 저장하고 다시 로딩하기 위해 사용됩니다.를 참조해 주세요.LOAD,SAVE그리고.VERIFY자세한 것은
CONTINUE C 명령어 오류 또는 사용자가 SPACE+ 또는 키를[19] 눌러 프로그램을 중지한 후 재시작합니다.
COPY Z 명령어 현재 표시된 화면을 프린터로[20] 보냅니다.
COS number EXTENDED MODE 그럼 기능. 코사인을 반환합니다.number[21]
DATA comma-separated values EXTENDED MODE 그럼 명령/기타 에서 사용하는 숫자 및/또는 문자열을 제공합니다.READ명령어를[22] 사용하여 어레이의 내용을 테이프에 저장할 수 있습니다.SAVE명령하다[23]SAVE filename DATA array name()
DEF FN name(variable) = operation EXTENDED MODE 그럼 명령어 에서 사용할 수 있는 커스텀 함수를 정의합니다.FN명령어; 함수 정의는 형식이어야 합니다.f(x)=operations,예를들면f(x)=x*2함수명은 1글자를 초과할 수 없습니다.또, 함수가[24] 문자열을 반환하는 경우는, $-http://ftp:/ftp://ftp:/ftp:
DIM variable(dimensions) D 명령어 지정된 배열을 선언합니다.dimensions(예를 들어 다차원일 수 있습니다(예를 들어,DIM a(10,10); 문자열과 함께 사용하는 경우 마지막 치수는 각 문자열의 길이를 나타냅니다(예:DIM a$(2,5)는 각각5글자 길이의2개의 문자열 배열입니다.DIM b$(5)5글자 [25]중 하나의 문자열입니다.)
DRAW x, y [, r] W 명령어 전류에 선을 그립니다.INK색상에서 좌표로(x,y)의 좌표를 참조해 주세요.PLOT또는DRAW명령어, 옵션인 경우r공급되며, 그릴 원 세그먼트의 반지름을 라디안 단위[26] 나타냅니다.
ERASE drive;"filename" EXTENDED MODE 그럼 +7 명령어 ZX Microdrive에서[note 6][27] 지정된 파일을 삭제합니다.
EXP number EXTENDED MODE 그럼 기능. e를 거듭제곱으로 반환한다.number[28]
FLASH number EXTENDED MODE 그럼 +V 명령/기타 다음 텍스트가 모두 포그라운드로 바뀝니다(INK및 배경 ( )PAPER)의[note 5] 색상
FN function(value) EXTENDED MODE 그럼 +2 기능. 를 호출합니다.function프로그램 초기에 정의되어 있습니다.DEF FN[24]
FORMAT drive;"name" EXTENDED MODE 그럼 +0 명령어 지정된 Microdrive의 카트리지를 포맷하고 식별자를 할당합니다.name[주 6][29]
FOR variable = start TO end F 명령어 를 기동합니다.FOR-NEXTloop.[30] 변수 이름은 1자만[31] 사용할 수 있습니다.
GO SUB number H 명령어 프로그램에 의해 지정된 BASIC 행으로 점프합니다.number; 프로그램이 명령어를 검출했을 때RETURN, 이 명령어는 다음 명령어 후에 스테이트먼트로 돌아갑니다.GO SUB[32]
GO TO number G 명령어 프로그램에 의해 지정된 BASIC 행으로 점프합니다.number
IF condition THEN U 명령어 평가하다conditiontrue일 경우 키워드 뒤에 이어지는 문을 실행합니다.THEN예를 들어,[33] 조건 뒤에 와야 합니다.IF a=1 THEN LET b=2[주 7]
IN address EXTENDED MODE 그럼 +I 기능. 하드웨어 입력/출력 포트에서 읽은 바이트를 반환합니다.address[34]
INK number EXTENDED MODE 그럼 +X 명령/기타 텍스트 및 그래픽의[note 4][note 5][35] 전경색을 설정합니다.
INKEY$ EXTENDED MODE 그럼 +Z 기능. 함수를 호출할 때 키보드에서 누르고 있는 키를 나타내는 문자열을 반환하고,[36] 그렇지 않으면 빈 문자열을 반환하지만 키를 누르기를 기다리지 않습니다.
INPUT [prompt,] variable I 명령어 사용자가 키보드로 무언가를 입력하고 를 누를 때까지 프로그램 실행을 중지합니다.Enter입력한 값을 지정한 위치에 저장합니다.variable; 옵션인 경우prompt제공된 경우 화면에 표시됩니다[37].
INT number EXTENDED MODE 그럼 기능. 정수값을 반환합니다.number, 가장 가까운 정수로[3] 반올림한다(정수,INT -1.1-1이 아닌 -2를 반환합니다.)
INVERSE number EXTENDED MODE 그럼 +M 명령/기타 다음 모든 텍스트의 색상을 반전합니다.number는 1 이므로, 배경에 현재의 잉크색을, 텍스트에 현재의 용지색을 사용합니다.또는, 다음의 경우는, 통상대로 되돌립니다.number0[note 5][38] 입니다.
LEN string EXTENDED MODE 그럼 기능. 문자수(바이트)를 반환합니다.string[39]
LET variable=value L 명령어 할당하다value지정된[40] 변수까지
LINE EXTENDED MODE 그럼 +3 다른.
  • 에서 사용하는 경우INPUT문자열 변수 앞에 있는 문에서는 [7]프롬프트 주위에 따옴표("")를 붙이지 않습니다.INPUT "Name: "; LINE n$
  • 에서 사용하는 경우SAVE저장 중인 BASIC 프로그램이 다시 로드될 때 지정된 라인 번호에서[41] 자동으로 시작되도록 합니다.
LIST [number] K 명령어 현재 BASIC 프로그램을 화면에 출력합니다(옵션인 경우).number제공되며 번호가 작은[42] 행은 모두 생략됩니다.
LLIST [number] EXTENDED MODE 그럼 +V 명령어 ~하듯이LIST다만[20], 리스트가 프린터에 출력되는 것은 제외합니다.
LN number EXTENDED MODE 그럼 +Z 기능. 자연 로그를 반환합니다.number[43]
LOAD "[filename]" [CODE [address[, length]] DATA variable()] J 명령어 테이프, ZX Microdrive, 디스크 등에서 RAM으로 프로그램 또는 데이터를 로드하여 기존 BASIC 프로그램 및 [37]변수를 삭제합니다(빈 문자열인 경우)."")가 제공되고 처음 발견된 프로그램이 로드됩니다.그렇지 않으면 테이프에서 문자열에 이름이 지정된 프로그램이 검색됩니다.옵션인 경우CODE프로그램이 제공되며 저장 시 주소 또는 지정된 위치에 프로그램을 메모리에 로드합니다.address(length는, 테이프에 올바른 이름으로 길이가 다른 복수의 프로그램이 있는 경우에 대비해, 적절한 프로그램을 로드하는 것을 목적으로 하고 있습니다.[44]옵션인 경우.DATA variable()테이프에서 이름이 붙은 어레이로 데이터를 로드합니다.variable()[23]
LPRINT text EXTENDED MODE 그럼 +C 명령어 ~하듯이PRINT출력은 프린터로[20] 송신됩니다.
MERGE "[filename]" EXTENDED MODE 그럼 +T 명령어 ~하듯이LOAD단, 현재 프로그램과 변수는 삭제되지 않습니다.양쪽에 행 번호가 존재하는 경우 새로 로드된 프로그램의 행 번호가 기존 행 번호를 덮어씁니다.사용.MERGE를 사용하여 프로그램을 저장하는 것을 방지합니다.LINE로드된[45] 후 자동 실행에서
MOVE stream1 TO stream2 EXTENDED MODE 그럼 +6 명령어 데이터를 스트림(키보드, 화면, 파일, 프린터, 네트워크 등)에서 다른 스트림으로 이동합니다[note 6][46].
NEW A 명령어 현재 BASIC 프로그램과 모든 변수를[37] 지웁니다.
NEXT variable N 명령어 를 닫습니다.FOR-NEXTloop: 변수는 대응하는 변수와 일치해야 합니다.FORcommand[47] : "empty"NEXTs는 직전 참조FOR프로그램에서 허용되지 않습니다.
NOT condition SYMBOL SHIFT+S 논리 연산자 다음 경우 true를 반환합니다.conditionfalse, 그렇지 않으면 false가 반환됩니다[note 3][5].
OPEN # stream EXTENDED MODE 그럼 +4 명령어 읽기 및/또는 쓰기[note 6][48] 스트림을 엽니다.
OR SYMBOL SHIFT+Y 논리 연산자 양쪽 조건 중 하나가 true를 반환한다.OR키워드는 true, 그렇지 않으면 false를[note 3][5] 반환합니다.
OUT address, value EXTENDED MODE 그럼 +O 명령어 송신하다value(a 바이트)에 대응하는 하드웨어 [메모리 매핑 I/O 입출력 포트]에 대한address[34]
OVER number EXTENDED MODE 그럼 +N 명령/기타 XOR 조작에 의해, 다음의 텍스트가 이미 화면에 표시되는 것을 덮어쓰게 됩니다.number1이 됩니다.지우는 대신, 또는 지우는 경우는,number0[note 5][38] 입니다.
PAPER number EXTENDED MODE 그럼 +C 명령/기타 텍스트 및 그래픽의[note 4][note 5][35] 배경색을 설정합니다.
PAUSE delay M 명령어 지정된 지연 동안 프로그램 실행을 중지합니다(유럽에서는 ({displaystyle 북미에서는[49] PAUSE 50유럽에서는 1초간 정지)
PEEK address EXTENDED MODE 그럼 기능. 가 가리키는 메모리 위치의 내용을 나타내는 바이트를 반환합니다.address[50]
PI EXTENDED MODE 그럼 기능. pi[43] 값을 반환합니다.
PLOT x, y Q 명령어 전류에 픽셀을 그립니다.INK화면의 좌표에 색을 입힌다(x,y[51]
POINT (x,y) EXTENDED MODE 그럼 +8 기능. 픽셀이 그래픽 좌표를 가리킬 경우 1을 반환합니다(x,y)는 현재 잉크(전경) 색상입니다.그렇지 않으면 0이 반환됩니다[15].
POKE address, value O 명령어 의 내용을 설정합니다.address로의 RAM에value[52]
PRINT [AT x,y;] text P 명령어 인쇄물text([40]문자열 또는 숫자여야 함)과 함께 사용하는 경우AT는 지정된 텍스트 좌표로 인쇄됩니다.그렇지 않으면 마지막에서 사용한 행의 첫 번째 열에 인쇄됩니다.PRINT진술서[7]
RANDOMIZE [number] T 명령어 랜덤 번호 생성기를 초기화합니다.랜덤 번호 생성기를 사용하지 않고 사용하는 경우number(또는 0으로 설정), 이것은 컴퓨터의 내부 클럭에 근거해 행해집니다.그렇지 않으면,number[1,65535][53] 범위에 있어야 합니다.
READ variable EXTENDED MODE 그럼 명령어 a에서 값을 가져옵니다.DATA스테이트먼트와 이름을 저장합니다.variable:처음READ사용되는 경우 첫 번째 값 뒤에 첫 번째 값이 표시됩니다.DATA두 번째가 다음 번이 되면 등입니다[22].
REM 본문 E 명령어 소스 코드로 코멘트를 시작합니다.즉, 모든 것이 다음 순서로REMstatement is ignored, to the line[37] until the end of the line: 콜론 뒤에 있는 모든 것이 포함됩니다.콜론 뒤에는 보통 새로운 세그먼트가 시작됩니다.10 REM Nothing to see here : PRINT "Unprintable"예를 들어 출력은 생성되지 않습니다.
RESTORE [number] EXTENDED MODE 그럼 명령어 리셋 장소READ명령어는 다음에서 값을 찾습니다.DATA스테이트먼트: 번호를 지정하지 않고 사용하는 경우 다음 번호READ첫 번째를 사용합니다.DATA프로그램에서는 첫 번째 번호를 사용합니다.DATA번호가 표시된[54] 라인 위 또는 뒤에
RETURN Y 명령어 마지막 문 뒤에 있는 첫 번째 문으로 실행을 되돌립니다.GO SUB실행된[32] 명령어
RND EXTENDED MODE 그럼 기능. [0,1)][55] 범위의 유효 숫자 8개가 포함된 의사 난수를 반환합니다.
RUN [number] R 명령어 현재 BASIC 프로그램을 시작합니다.시작하지 않은 경우 첫 번째 줄부터 시작합니다.number지정됩니다.그 이외의 경우는, 그 [56]번호의 행(또는 존재하지 않는 경우는 그 후의 첫 번째 행)으로부터 지정됩니다.
SAVE "filename" [DATA variable() LINE number] S 명령어 현재 BASIC 프로그램을 테이프 또는 기타 스토리지 디바이스에 저장합니다.filename지정, 옵션인 경우LINE다음에 회선번호가 사용됩니다.그러면 프로그램은 지정된 회선번호에서 자동으로 시작됩니다.LOAD옵션으로 되돌아가다DATA명령어는 현재 BASIC[23] 프로그램이 아닌 변수에 의해 명명된 배열의 내용을 저장합니다.
SCREEN$ [(line, column)] EXTENDED MODE 그럼 + 기능/기타 함수로,[7] 화면의 지정된 줄과 열의 문자를 식별합니다.의 파일 이름 뒤에 사용됩니다.LOAD또는SAVE명령어, 디스플레이 메모리의 내용을 로드 또는 저장해야 함을 나타냅니다.이것은 기본적으로, 이 명령어를 사용하는 숏컷이 됩니다.CODE 16384,6912[note 8] 와는 동작하지 않습니다.VERIFY명령어가 저장된 [57]데이터를 다시 읽을 때까지 디스플레이 메모리의 내용이 달라지기 때문입니다.
SGN number EXTENDED MODE 그럼 기능. 다음 경우 1을 반환합니다.number양의 값, 0의 경우 0, 음의[3] 경우 -1
SIN number EXTENDED MODE 그럼 기능. 사인값을 반환합니다.number[21]
STEP number SYMBOL SHIFT+D 다른. 가 사용하는 간격을 나타냅니다.FOR스테이트먼트([31]예:FOR n=2 TO 6 STEP 2건너뜁니다n=3그리고.n=5순환하여
STOP SYMBOL SHIFT+A 명령어 현재 프로그램의 실행을 종료하고 BASIC 편집기를 종료합니다.컴퓨터가 를 사용하여 입력을 대기하고 있을 때도 표시할 수 있습니다.INPUT명령어.[56] 프로그램이 중지되면 다음 명령을 사용하여 다시 시작할 수 있습니다.CONTINUE
SQR number EXTENDED MODE 그럼 기능. 제곱근을 반환합니다.number[24]
STR$ number EXTENDED MODE 그럼 기능. 다음 항목에 해당하는 컴퓨터의 문자 집합에서 문자를 반환합니다.number[58]
TAB column EXTENDED MODE 그럼 다른. PRINTstatement: 출력할 텍스트가 지정된 열에서 시작하여 필요에 따라 다음 행으로 줄 바꿈되도록 합니다.단, 한 줄[16] 이상은 사용할 수 없습니다.
TAN number EXTENDED MODE 그럼 기능. 탄젠트를 반환합니다.number[59]
THEN statement SYMBOL SHIFT+G 다른. 의 조건을 따릅니다.IF조건이 true로[note 7][33] 평가되었을 때 어떤 일이 일어나야 하는지를 나타내는 문장
TO SYMBOL SHIFT+F 다른. 왼쪽 번호부터의 범위를 나타냅니다.TO그 오른쪽의 번호(포함)[60]와 함께 사용할 경우FOR두 숫자를 모두 입력해야 하며, 문자열을 슬라이스하는 데 사용되는 경우 문자열의 시작 또는 끝을 나타내기 위해 둘 중 하나를 생략할 수 있습니다.
USR string or address EXTENDED MODE 그럼 기능. 단일 문자열로 호출하면 해당 문자에 대응하는 사용자 정의 그래픽 문자의 글리프[10]정의되는 메모리 주소가 반환됩니다.주소를 사용하여 호출하면 해당 주소에서 기계 코드 실행을 시작하고(따라서 Sinclair BASIC [61]함수는 몇 안 되는 부작용하나임) Z80의 BC 레지스터 쌍의 내용을 반환합니다.
VAL string EXTENDED MODE 그럼 기능. 평가하다string를 수치로 하여 [62]결과를 반환합니다.이것에 의해, 다음의 계산을 실행할 수 있습니다.VAL "1+2"예를 들어 3을 반환하고 변수 및 기타 값도 평가합니다.VAL스테이트먼트:LET a=1: VAL "a+VAL ""2"""[note 9] 또한 3을 반환합니다.
VAL$ string EXTENDED MODE 그럼 +J 기능. 와 유사하다VAL스트링을 스트링으로[3] 평가합니다.
VERIFY "[filename]" EXTENDED MODE 그럼 +R 명령어 테이프 또는 기타 스토리지에서 프로그램 또는 데이터를 읽습니다.LOAD단, 메모리에 로드하는 것이 아니라 이미 메모리에 있는 프로그램 또는 데이터와 비교합니다.이것은, 다음의 직후에 사용하는 것을 목적으로 하고 있습니다.SAVE명령어를 사용하여 [63]프로그램 또는 데이터가 손상되지 않고 저장되었는지 확인합니다.
ZX 스펙트럼
ZX 스펙트럼+

키워드 입력

48K 이상 모델에서는 표와 같이 싱클레어 고유의 키워드 입력 시스템을 통해 키워드를 입력한다.가장 일반적인 명령어에는 1개의 키 입력만 필요합니다.예를 들어 Spectrum의 회선 선두에서만 누르면 완전한 명령어가 생성됩니다.PRINT. 빈도가 낮은 명령어에는 보다 복잡한 키 시퀀스가 필요합니다.BEEP(예를 들어 )는 확장모드에 액세스하기 위해 + 키를 눌러 키를 누릅니다(나중의 모델에는 키가 포함됩니다).키워드는 원래 Spectrum 키보드로 컬러 코딩되어 [64]필요한 모드를 나타냅니다.

  • 흰색: 키만
  • 자체에 빨간색: 키 추가
  • 위에 녹색: 키 다음에 이어 키
  • 아래 빨간색: 키 뒤에 더하기 키

ZX81 8K BASIC은 보다 짧은 형식을 사용했습니다.GOTO,GOSUB,CONT그리고.RAND반면 Spectrum은 더 긴 형식을 사용했습니다.GO TO,GO SUB,CONTINUE그리고.RANDOMIZEZX80 4K BASIC도 이러한 긴 형식을 사용했지만 철자법에 따라 차이가 있었습니다.RANDOMISEZX81 8K BASIC이 유일한 버전이었다.FAST,SCROLL,SLOW그리고.UNPLOT. ZX80 4K BASIC은 독점 기능을 가지고 있습니다.TL$(); 이것은 이후 버전의 문자열 연산자와 동등합니다.

ZX80 문자 집합, ZX81 문자 집합 및 ZX Spectrum 문자 집합에는 키워드 또는 다중 문자 연산자별로 고유한 코드 포인트가 할당됩니다.<=, >=,<>,""(ZX81에서만 토큰화),**(와 함께 사용)(스펙트럼의 경우)이것들은 ROM 내의 토큰 테이블을 참조함으로써 확장됩니다.따라서 키워드는 1바이트의 메모리만 사용하기 때문에 기존의 문자 단위 스토리지에 비해 대폭 절약됩니다.이것은 또한 BASIC 인터프리터가 1바이트를 평가함으로써 어떤 명령어 또는 함수를 빠르게 결정할 수 있다는 것을 의미하며, 키워드는 다른 BASIC 방언이나 다른 프로그래밍 언어에서처럼 예약된 단어일 필요가 없다는 것을 의미합니다. 예를 들어, 다음과 같이, 다음과 같은 변수를 정의할 수 있습니다.PRINT그리고 그 가치를 출력합니다.PRINT PRINT이것은 또한 모든 행이 명령 키워드로 시작하는 구문 요건과 관련이 있으며, 행의 시작 부분에서 해당 명령어의 키를 한 번 누르면 편집기가 명령어 모드에서 문자 모드로 변경됩니다.따라서 변수 할당에는 다음과 같이 해야 합니다.LET(즉,LET a=1만 아니라a=1) 이 방법은 다른 BASIC 방언과도 다릅니다.또한 다른 BASIC 방언과 달리 인터프리터는 함수를 식별하기 위해 괄호가 필요하지 않다는 것을 의미했다.SIN x충분했다, 아니다SIN(x)(후자는 허용되지만) 필요.ZX80의 4K BASIC ROM에는 다음과 같은 간단한 예외가 있습니다.CHR$(),STR$(),TL$(),PEEK(),CODE(),RND(),USR()그리고.ABS()에는 1바이트 토큰이 없지만 문자 단위로 입력되어 괄호가 필요합니다.키보드 [65]우측의 라벨에 「통합 기능」이라고 기재되어 있습니다.

128K Spectrum 모델인 ZX Spectrum 128, +2, +3, +2A 및 +2B에서는 내부적으로 키워드를 1바이트 코드 포인트에 저장했지만 기존의 문자 단위 BASIC 입력 시스템을 사용했습니다.또, 다음의 2개의 새로운 커맨드를 도입했습니다.

  • PLAY128k 모델의 General Instrument AY-3-8910 음악 칩을 작동시켰습니다.
  • SPECTRUM128k Spectrum을 48k Spectrum 호환성 모드로 전환했습니다.

원래 스페인어 ZX Spectrum 128에는 스페인어로 [66]된 명령어가 4개 추가되어 있으며, 그 중 1개는 문서화되어 있지 않습니다.이는 다음과 같이 해석할 수 있습니다.

  • EDIT(회선 번호를 편집하거나 전체 화면 문자열 편집기를 호출하려면)
  • RENUM(프로그램 라인의 번호를 다시 매기려면)
  • DELETE(프로그램 행을 삭제하려면)
  • WIDTH(RS232 장치의 열 너비를 설정하지만 코드가 파손되었기 때문에 문서화되지 않음)

와는 달리LEFT$(),MID$()그리고.RIGHT$()가정용 컴퓨터용 유비쿼터스 Microsoft BASIC 방언에서 사용되는 함수, Sinclair BASIC 문자열의 일부는 숫자 범위로 액세스됩니다.예를 들어, 는 변수의 5번째 문자로 시작하여 10번째 문자로 끝나는 하위 문자열을 제공합니다.a$이 때문에, 의 교환이 가능합니다.LEFT$()그리고.RIGHT$()각각 왼쪽 또는 오른쪽 배열 위치를 생략하는 것만으로 명령어를 실행할 수 있습니다.예를 들어 다음과 같습니다.LEFT$(a$,5).더,a$(5)대신할 수 있는 것은MID$(a$,5,1).

변수 이름

숫자 값을 포함하는 변수는 임의의 길이일 수 있지만 문자열 및 배열 변수 이름은 하나의 알파벳 문자로만 구성되어야 합니다.따라서,LET a=5,LET Apples=5,LET a$="Hello",DIM a(10)그리고.DIM a$(10)다 좋은데LET Apples$="Fruit",DIM Apples(10)그리고.DIM Apples$(10)그렇지 않습니다.

숫자 변수에 사용할 수 있는 긴 변수 이름에는 첫 번째 문자 뒤에 영숫자를 포함할 수 있습니다.LET a0=5허용되지만 허용되지 않음LET 0a=5. 긴 변수 이름에는 공백도 포함할 수 있으며, 이러한 공백은 무시됩니다.LET number of apples = 5와 같다LET numberofapples = 5

공식 버전

4K 베이직

  • 4K BASIC for[67] ZX80 (4 KiBread Only Memory (ROM; 4 KiBread 전용 메모리)에 상주한다고 해서 붙여진 이름)는 ZX80용 Nine Tiles의 John Grant에 의해 개발되었습니다.정수만의 산술이 있습니다.
    • 시스템 명령:NEW RUN LIST LOAD SAVE
    • 제어문:GOTO IF THEN GOSUB STOP RETURN FOR TO NEXT CONTINUE
    • Input/Output/output문:PRINT INPUT
    • 할당문:LET
    • 기타 스테이트먼트:CLEAR CLS DIM REM RANDOMIZE POKE

8,000 베이직

  • 8K BASIC은 ZX81 BASIC(ZX80의[2] 업그레이드로서도 이용 가능)으로, Steve Vickers가 작성한 부동 소수점 산술로 업데이트 되어 있기 때문에, 8 KiB ROM에 상주한다고 하는 이름이 붙여졌습니다.
    • 스테이트먼트:PRINT RAND LET CLEAR RUN LIST GOTO CONT INPUT NEW REM PRINT STOP BREAK IF STOP FOR NEXT TO STEP SLOW FAST GOSUB RETURN SAVE LOAD CLS SCROLL PLOT UNPLOT PAUSE LPRINT LLIST COPY DIM POKE NEW
    • 기능:ABS SGN SIN COS TAN ASN ACS ATN LN EXP SQR INT PI RND FUNCTION LEN VALSTR$ NOT CODE CHR$ INKEY$ AT TAB INKEY$ PEEK USR

48 베이직

  • 48 BASIC은 오리지널 16/48 kB 랜덤 액세스 메모리(RAM) ZX 스펙트럼(및 클론)의 베이직이며, Steve Vickers와 John Grant가 색상과 주변기기를 추가했습니다.16KiB ROM에 존재하며 ZX Spectrum 128이 출시되면서 48 BASIC으로 불리기 시작했습니다.이때 16 kB Spectrum은 더 이상 판매되지 않고 대부분의 기존 사용 중인 것이 48 kB로[68] 업그레이드되었습니다.

128 베이직

  • 128 BASIC은 ZX Spectrum [69]128의 기본입니다.추가 명령어를 제공하며 문자별 입력을 사용합니다.
    • 새로운 명령어:LOAD ! SAVE ! MERGE ! ERASE PLAY

+3 베이직

  • +3 BASIC은 ZX Spectrum +3 및 +2A [68]디스크 지원 기본입니다.
    • 새로운 명령어:FORMAT COPY

T/S 2000 BASIC

  • T/S 2000 BASIC는 Spectrum 호환 Timex Sinclair 2068(T/S 2068)에서 사용되며 다음 6개의 새로운 키워드가 추가되었습니다.
    • DELETE기본 프로그램 라인 범위를 삭제합니다.
    • FREE는 빈 RAM의 양을 제공하는 기능입니다. PRINT FREE사용 가능한 RAM 용량이 표시됩니다.
    • ON ERR에러 처리 기능으로서 주로 사용됩니다.ON ERR GO TO또는ON ERR CONT.
    • RESET동작을 리셋하기 위해 사용할 수 있다ON ERR또, 주변기기를 리셋 하는 목적도 있습니다.
    • SOUNDAY-3-8192 사운드칩을 제어합니다
    • STICK내부 조이스틱(Timex Sinclair 2090)의 위치를 알려주는 기능입니다.

베이직 64

  • 포르투갈의 Timex사의 BASIC64는 Timex Sinclair 컴퓨터에서만 사용할 수 있는 512×192 및 듀얼 디스플레이 영역 그래픽 모드로 더 나은 Basic 프로그래밍을 가능하게 하는 소프트웨어[70] 확장입니다.이 확장에 의해, 커맨드가 추가되어 메모리 전체의 재매핑이 행해져, 확장 화면 메모리 영역이 덧쓰기되는 것을 방지합니다.메모리 맵이 다르기 때문에 TC 2048용 버전과 T/S 2068 및 TC 2068용 버전이 있습니다.
    • PRINT #특정 출력 채널에 인쇄합니다.
    • LIST #프로그램을 특정 출력 채널에 나열합니다.
    • CLS*양쪽 디스플레이 영역을 클리어합니다.
    • INK*두 디스플레이 영역의 잉크 색상을 설정합니다.
    • PAPER*양쪽 디스플레이 영역의 용지 색상을 설정합니다.
    • SCREEN$고분해능/일반 분해능 모드를 선택합니다.
    • PLOT*픽셀을 플롯하고 그리기 위치를 업데이트합니다.
    • LINE이전 플롯 위치에서 호 그림을 지원하는 선을 그립니다.
    • CIRCLE*화면 모드에 따라 원형 또는 타원형을 그립니다.

Timex 확장 기본

  • 포르투갈의 Timex Extended Basic은 Timex Computer 3256에서 사용되며 AY-3-8912 사운드 칩, RS232 네트워크 및 512x192 픽셀 고해상도 그래픽 모드를 [71][72]지원하는 TEC - Timex Extended Commands 명령을 추가합니다.
    • RAM 드라이브 명령:LOAD! SAVE! CAT! MERGE! ERASE! CLEAR!
    • RS232 명령:FORMAT! LPRINT LLIST
    • AY-3-8912 명령어:BEEP!
    • 512x192 해상도 명령:SCREEN$ DRAW! PLOT! CIRCLE!

기타 버전, 확장 버전, 파생 모델 및 후속 버전

ZX Spectrum 패밀리용 인터프리터

여러 개의 ZX 스펙트럼인터프리터가 [73]있어요

  • 베타 베이직 by Dr.Andy Wright는 원래 BASIC 확장자였지만 완전한 통역자가 되었다.
  • YS MegaBasic by Mike Leaman.[73]
  • ZebraOS by Zebra Systems in New York, T/S 2000 BAS 카트리지 버전512×192 화면 모드를 사용한 IC.
  • 스티브 비커스와 이안 로건이 수정한 Sea Change ROM(Sea Change ROM)은 강화된 Sinclair [74]BASIC으로 대체 ROM입니다.
  • Geoff WearmouthGosh Wonderful은 버그를 수정하고 토큰라이저,[73][75] 스트림 리스터, 삭제 및 renumber 명령을 추가하는 대체 ROM입니다.
  • Andrew OwenOpenSE BASIC(구 SE BASIC)은 버그 수정 및 ULAplus 지원을 포함[76] 많은 확장 기능을 갖춘 대체 ROM으로, 2011년에[77][78] 오픈 소스로 공개되었습니다.

ZX Spectrum 패밀리용 컴파일러

여러 ZX Spectrum 컴파일러가 있습니다.[73]

  • HiSoft COLT 컴파일러(일명.k.a).HiSoft COLT 정수 컴파일러)[79]
  • HiSoft BASIC (일명.k.a)HiSoft BASIC 컴파일러), 정수 및 부동소수점 대응[80] 컴파일러
  • 레이저 컴파일러[81]
  • 소프텍IS' Integer[82] Compiler (Softek Integer[83] Compiler의 후계자)
  • Softek 'FP' 풀 컴파일러[84]
  • ZIP 컴파일러[85]

다른 컴퓨터용 파생상품 및 후계제품

  • SuperBASIC은 Sinclair QL 퍼스널컴퓨터에 도입된 고급 베이직 사투리로 초기 Sinclair BASIC과 몇 가지 유사점을 가지고 있습니다.
  • SAM Basic, SAM Coupé의 BASIC은 일반적으로 ZX 스펙트럼 클론이라고 생각됩니다.
  • Cesar와 Juan Hernandez의 ROMU6 - MSX[73]
  • Spectrum 48 by Whitby Computers - Commodore 64[73]
  • Richard Kelsh의 Sparky eSinclair BASIC, ZX Spectrum[86] BASIC 기반 운영체제 - Zilog eZ80
  • Pavel Napravnik의 Sinbas - DOS[73]
  • Philip[87] Kendall의 베이직(및[88] Check Basic) - Unix
  • ZX81 BASIC - Java를 기반으로 Groovy에서 재실행된 Adrian McMenamin의 BINSIC[89]
  • BASIN[90] by Paul Dunn, ZX Spectrum 에뮬레이터를[73] 기반으로 한 완전한 싱클레어 베이직 통합 개발 환경(IDE) - Windows
  • SpecBAS[91](일명.k.a)SpecOS) by Paul Dunn - Sinclair BASIC의 확장 슈퍼셋을 제공하는 통합 개발 환경(IDE) - Windows, Linux, Pandora 및 Rasberry Pi
  • ZX-Basicus[92] by Juan-Antonio Fernandez-Madrigal, PC용 Sinclair BASIC 48K의 신시사이저, Analyzer, Optimizer, 인터프리터 및 디버거, Linux 및 Windows용 무료 다운로드 가능.

「 」를 참조해 주세요.

메모들

  1. ^ 선택적 매개 변수는 [각 괄호]로 묶습니다.
  2. ^ 이 예에서는 컴퓨터가 K(키워드) 모드라고 가정합니다.일반적으로 BASIC을 시작할 때 K(키워드) 모드입니다.Spectrum 16K 및 48K에서는 Spectrum+ 이후의 모델에 존재하는 키가 아닌 키를 눌러 동시에 확장모드를 시작합니다.
  3. ^ a b c Sinclair BASIC의 "False"는 0(제로)에 해당하며, 다른 모든 것은 "true"에 해당합니다.true 또는 false 값을 반환하는 함수는 실제로 false의 경우 0, true의 경우 1을 반환합니다.AND보통 true에 대해 제공된 조건 중 첫 번째 조건을 반환합니다.숫자 값이 지정되지 않은 경우 1을 반환합니다.예를들면,6 AND 76을 반환하고,NOT 6=71이 반환됩니다.
  4. ^ a b c 색상으로 사용할 수 있는 숫자는 다음과 같습니다.
    1 2 3 4 5 6 7 0
    파랑색 빨간. 마젠타 초록의 청록색 노란 색 하얀색 블랙입니다.

    모든 색상 관련 명령에서 숫자 8은 "투명"을 나타내기 위해 사용될 수 있습니다.INK그리고.PAPER또, 「조명」의 경우는 9 로 설정할 수도 있습니다.즉, 밝은 배경에 어두운 색을 자동적으로 입히거나, 그 반대의 경우도 마찬가지입니다.

  5. ^ a b c d e f INK,PAPER,FLASH,BRIGHT,OVER그리고.INVERSE화면에 텍스트 및 그래픽을 출력하기 위한 속성을 설정합니다.이러한 명령어는 다시 설정될 때까지 이후의 모든 출력에 적용하거나 명령어로 사용할 수 있습니다.PRINT스테이트먼트: 그 시점부터 스테이트먼트의 마지막까지만 적용됩니다.
  6. ^ a b c d e f CAT,ERASE,FORMAT그리고.MOVE는 원래 주변기기와 함께 사용하도록 설계되었지만 ZX Spectrum 출시 시 완전히 구현되지 않아 오류 메시지(Invalid Stream)가 생성되었습니다.나중에 ZX 인터페이스 1 섀도우 ROM의 도움으로, 그것들은 ZX 마이크로드라이브에 사용되었습니다. (섀도우 ROM은 BASIC 인터프리터가 구문 오류를 감지했을 때 페이징되었습니다.이것이 대부분의 ZX 마이크로드라이브 명령에서 사용되는 이유입니다."*").
  7. ^ a b 다른 많은 베이직 사투리와 달리 싱클레어 베이직 사투리에는 다음 사투리가 포함되지 않았습니다.ELSE의 오퍼레이터IFTHEN[–ELSE> 조항.회피책으로서는, 다음과 같은 것을 사용하는 것이 있습니다.IFTHENGO TO대신, 에 있는 행을 바이패스하여ELSE에 대한 조항GO TO
  8. ^ Spectrum 디스플레이 메모리는 주소 16384에서 시작되며 길이는 6912바이트입니다.
  9. ^ 문자열 내의 문자열은 Sinclair BAS에서 따옴표를 2배로 해야 합니다.IC

레퍼런스

  1. ^ Garfield, Simon (2010-02-28). "Sir Clive Sinclair: "I don't use a computer at all"". The Guardian. Retrieved 2011-05-23. He is keen to credit [...], not least Nine Tiles, the company that made the Basic operating software.
  2. ^ a b "ZX80 - 8K BASIC ROM Upgrade". www.fruitcake.plus.com.
  3. ^ a b c d 비커스 1983 페이지 59
  4. ^ a b 비커스 1983, 페이지 70
  5. ^ a b c 비커스 1983 페이지 85
  6. ^ 비커스 1983, 페이지 69~70
  7. ^ a b c d 비커스 1983 페이지 101
  8. ^ 비커스 1983, 페이지 116
  9. ^ 비커스 1983, 페이지 135
  10. ^ a b 비커스 1983, 페이지 93
  11. ^ 비커스 1983, 페이지 113
  12. ^ 비커스 1983, 페이지 110~111
  13. ^ 케임브리지 통신 1983, 페이지 15
  14. ^ a b 비커스 1983, 페이지 91
  15. ^ a b 비커스 1983, 페이지 123
  16. ^ a b c 비커스 1983 페이지 103
  17. ^ "World of Spectrum - Documentation - ZX Spectrum manual - Chapter 24". worldofspectrum.org.
  18. ^ 비커스 1983, 페이지 168
  19. ^ 비커스 1983, 페이지 19
  20. ^ a b c 비커스 1983, 페이지 151
  21. ^ a b 비커스 1983, 페이지 68
  22. ^ a b 비커스 1983 페이지 41
  23. ^ a b c 비커스 1983, 페이지 142
  24. ^ a b c 비커스 1983, 페이지 60
  25. ^ 비커스 1983, 페이지 79-81
  26. ^ 비커스 1983, 페이지 11~123
  27. ^ 케임브리지 통신 1983, 페이지 18
  28. ^ 비커스 1983 페이지 66
  29. ^ 케임브리지 통신 1983, 19페이지
  30. ^ 비커스 1983, 페이지 31
  31. ^ a b 비커스 1983, 페이지 32
  32. ^ a b 비커스 1983, 페이지 37
  33. ^ a b 비커스 1983, 페이지 25
  34. ^ a b 비커스 1983, 페이지 159
  35. ^ a b 비커스 1983, 페이지 110
  36. ^ 비커스 1983, 페이지 131
  37. ^ a b c d 비커스 1983, 페이지 16
  38. ^ a b 비커스 1983, 페이지 112
  39. ^ 비커스 1983, 페이지 57
  40. ^ a b 비커스 1983, 페이지 13
  41. ^ 비커스 1983, 페이지 144
  42. ^ 비커스 1983, 페이지 15
  43. ^ a b 비커스 1983, 페이지 67
  44. ^ 비커스 1983, 페이지 142~143.
  45. ^ 비커스 1983, 페이지 147
  46. ^ 케임브리지 통신 1983, 39페이지
  47. ^ 비커스 1983, 페이지 31~32
  48. ^ 케임브리지 통신 1983, 22페이지
  49. ^ 비커스 1983, 페이지 129
  50. ^ 비커스 1983, 130페이지
  51. ^ 비커스 1983, 페이지 121
  52. ^ 비커스 1983, 페이지 163
  53. ^ 비커스 1983, 74페이지 74
  54. ^ 비커스 1983, 페이지 42
  55. ^ 비커스 1983, 페이지 73
  56. ^ a b 비커스 1983, 페이지 14
  57. ^ 비커스 1983 페이지 143
  58. ^ 비커스 1983 페이지 58
  59. ^ 비커스 1983, 페이지 69
  60. ^ 비커스 1983, 페이지 32, 51
  61. ^ 비커스 1983, 페이지 180
  62. ^ 비커스 1983년
  63. ^ 비커스 1983, 페이지 141
  64. ^ 비커스 1983, 페이지 7-8
  65. ^ "Picture of ZX80".
  66. ^ "Spectrum 128 ROM Disassembly - Spanish Spectrum 128". www.fruitcake.plus.com.
  67. ^ "Sinclair ZX80 User Manual 4K Basic for ZX80".
  68. ^ a b "World of Spectrum - Documentation - ZX Spectrum +3 - Chapter 7". worldofspectrum.org.
  69. ^ "World of Spectrum - Documentation - ZX Spectrum 128 Manual Page 6". worldofspectrum.org.
  70. ^ "Timex tech info - Basic 64 for TC2048". timex.comboios.info.
  71. ^ "Microsete N.º46, Maio 1987" (PDF). loadzx.com.
  72. ^ "Timex Computer 3256, Timex Portugal". k1.spdns.de.
  73. ^ a b c d e f g h "World of Spectrum - Sinclair BASIC - Home of the Sinclair Extended Basic Project". www.worldofspectrum.org. Archived from the original on 2002-10-13.
  74. ^ "Sinclair BASIC history - Sinclair Wiki". sinclair.wiki.zxnet.co.uk.
  75. ^ "The Incomplete Spectrum ROM Assembly". Archived from the original on 2015-09-01.
  76. ^ "ULAplus". sites.google.com.
  77. ^ "ZX Interface 2 - SE BASIC (3rd Party ROM Cartridge)". www.fruitcake.plus.com.
  78. ^ "OpenSE BASIC". SourceForge.
  79. ^ "World of Spectrum - HiSoft COLT Compiler". World of Spectrum.
  80. ^ "World of Spectrum - HiSoft BASIC". World of Spectrum.
  81. ^ "World of Spectrum - Laser Compiler". World of Spectrum.
  82. ^ "World of Spectrum - Softek 'IS' BASIC Compiler". World of Spectrum.
  83. ^ "World of Spectrum - Integer Compiler". World of Spectrum.
  84. ^ "World of Spectrum - Softek 'FP' Full Compiler". World of Spectrum.
  85. ^ "World of Spectrum - ZIP Compiler". World of Spectrum.
  86. ^ "Sparky eZX BASIC Project". rk-internet.com.
  87. ^ "Philip Kendall - Basic". www.shadowmagic.org.uk.
  88. ^ "Philip Kendall - CheckBasic". www.shadowmagic.org.uk.
  89. ^ "Binsic Is Not Sinclair Instruction Code". June 25, 2012.
  90. ^ "ZX Spin and BASin - ULAplus". sites.google.com.
  91. ^ "ZXDunny/SpecBAS". June 5, 2021 – via GitHub.
  92. ^ "ZX-Basicus: analyzer/synthesizer/optimizer/interpreter of Sinclair BASIC programs for the ZX Spectrum 48K". jafma.net.

참고 문헌

  • Ardley, Neil (1984). Sinclair ZX Spectrum+ User Guide. Dorling Kindersley in association with Sinclair Research. ISBN 0-86318-080-9.
  • Vickers, Steven (1982). Sinclair ZX Spectrum BASIC Programming. Sinclair Research.
  • Vickers, Steven (1983). Sinclair ZX Spectrum BASIC Programming (2 ed.). Sinclair Research.
  • Cambridge Communication (1983). Sinclair ZX Spectrum Microdrive and Interface 1 manual. Sinclair Research.

외부 링크