싱클레어 BASIC
Sinclair BAS![]() |
패러다임 | 필수 |
---|---|
설계자 | 존 그랜트, 스티브 비커스 |
개발자 | 9개의 타일 네트워크, 싱클레어 리서치 |
처음 등장한 | 전 ( |
플랫폼 | ZX80, ZX81, ZX 스펙트럼 |
면허증. | 독자 사양 |
Sinclair BASIC은 Sinclair Research와 Timex Sinclair의 8비트 가정용 컴퓨터에서 사용되는 프로그래밍 언어 BASIC의 방언입니다.Sinclair BASIC 인터프리터는 Nine Tiles Networks Ltd.[1]가 만들었습니다.
역사
Sinclair BASIC은 1979년 나인타일에 의해 ZX80용으로 개발되었습니다.프로그래머는 나인타일의 소유주인 존 그랜트와 스티브 비커스였다.
1978년 ANSI(American National Standards Institute) 미니멀 베이직 규격(정수 연산만 포함)의 불완전한 구현이었습니다.이 규격은 ZX80의 4K BASIC(ROM 크기 때문에)입니다.ZX81 및 TS1000의 부동소수점 8K BASIC(ZX80의[2] 업그레이드로서도 이용 가능)을 통해 진화하여 16KB ROM ZX Spectrum의 거의 완전한 버전이 되었습니다.모든 ZX Spectrum 호환기에 포함되어 있습니다.
2015년 현재 Sinclair Basic을 쉽게 사용할 수 있는 최신 운영 체제 및 구형 시스템용 인터프리터가 존재합니다.
구문
새로운 BASIC 프로그래머는 간단한 프로그램으로 시작할 수 있습니다.아마도 이 언어의 PRINT 스테이트먼트를 사용하여 화면에 메시지를 표시할 수 있습니다.잘 알려져 있고 자주 복제되는 예는 Kernighan과 Ritchie의 Hello 월드 프로그램입니다.
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 | 명령/기타 | 다음과 같은 모든 색상을 더 밝게 만듭니다.number 1 또는 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 -NEXT loop.[30] 변수 이름은 1자만[31] 사용할 수 있습니다. |
GO SUB | number | H | 명령어 | 프로그램에 의해 지정된 BASIC 행으로 점프합니다.number ; 프로그램이 명령어를 검출했을 때RETURN , 이 명령어는 다음 명령어 후에 스테이트먼트로 돌아갑니다.GO SUB [32] |
GO TO | number | G | 명령어 | 프로그램에 의해 지정된 BASIC 행으로 점프합니다.number |
IF | condition THEN | U | 명령어 | 평가하다condition true일 경우 키워드 뒤에 이어지는 문을 실행합니다.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 이므로, 배경에 현재의 잉크색을, 텍스트에 현재의 용지색을 사용합니다.또는, 다음의 경우는, 통상대로 되돌립니다.number 0[note 5][38] 입니다. |
LEN | string | EXTENDED MODE 그럼 | 기능. | 문자수(바이트)를 반환합니다.string [39] |
LET | variable=value | L | 명령어 | 할당하다value 지정된[40] 변수까지 |
LINE | | EXTENDED MODE 그럼 +3 | 다른. | |
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 -NEXT loop: 변수는 대응하는 변수와 일치해야 합니다.FOR command[47] : "empty"NEXT s는 직전 참조FOR 프로그램에서 허용되지 않습니다. |
NOT | condition | SYMBOL SHIFT+S | 논리 연산자 | 다음 경우 true를 반환합니다.condition false, 그렇지 않으면 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 조작에 의해, 다음의 텍스트가 이미 화면에 표시되는 것을 덮어쓰게 됩니다.number 1이 됩니다.지우는 대신, 또는 지우는 경우는,number 0[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 | 명령어 | 소스 코드로 코멘트를 시작합니다.즉, 모든 것이 다음 순서로REM statement 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 그럼 | 다른. | 에PRINT statement: 출력할 텍스트가 지정된 열에서 시작하여 필요에 따라 다음 행으로 줄 바꿈되도록 합니다.단, 한 줄[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]프로그램 또는 데이터가 손상되지 않고 저장되었는지 확인합니다. |
키워드 입력
48K 이상 모델에서는 표와 같이 싱클레어 고유의 키워드 입력 시스템을 통해 키워드를 입력한다.가장 일반적인 명령어에는 1개의 키 입력만 필요합니다.예를 들어 Spectrum의 회선 선두에서만 누르면 완전한 명령어가 생성됩니다.PRINT
. 빈도가 낮은 명령어에는 보다 복잡한 키 시퀀스가 필요합니다.BEEP
(예를 들어 )는 확장모드에 액세스하기 위해 + 키를 눌러 키를 누릅니다(나중의 모델에는 키가 포함됩니다).키워드는 원래 Spectrum 키보드로 컬러 코딩되어 [64]필요한 모드를 나타냅니다.
- 흰색: 키만
- 키 자체에 빨간색: 키 추가
- 키 위에 녹색: 키 다음에 이어 키
- 키 아래 빨간색: 키 뒤에 더하기 키
ZX81 8K BASIC은 보다 짧은 형식을 사용했습니다.GOTO
,GOSUB
,CONT
그리고.RAND
반면 Spectrum은 더 긴 형식을 사용했습니다.GO TO
,GO SUB
,CONTINUE
그리고.RANDOMIZE
ZX80 4K BASIC도 이러한 긴 형식을 사용했지만 철자법에 따라 차이가 있었습니다.RANDOMISE
ZX81 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개의 새로운 커맨드를 도입했습니다.
PLAY
128k 모델의 General Instrument AY-3-8910 음악 칩을 작동시켰습니다.SPECTRUM
128k 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
또, 주변기기를 리셋 하는 목적도 있습니다.SOUND
AY-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!
- RAM 드라이브 명령:
기타 버전, 확장 버전, 파생 모델 및 후속 버전
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 Wearmouth의 Gosh Wonderful은 버그를 수정하고 토큰라이저,[73][75] 스트림 리스터, 삭제 및 renumber 명령을 추가하는 대체 ROM입니다.
- Andrew Owen의 OpenSE 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용 무료 다운로드 가능.
「 」를 참조해 주세요.
- 컴퓨터 시스템 에뮬레이터 목록 © Sinclair ZX80
- 컴퓨터 시스템 에뮬레이터 목록 © Sinclair ZX81
- 컴퓨터 시스템 에뮬레이터 © Sinclair ZX Spectrum 및 클론
메모들
- ^ 선택적 매개 변수는 [각 괄호]로 묶습니다.
- ^ 이 예에서는 컴퓨터가 K(키워드) 모드라고 가정합니다.일반적으로 BASIC을 시작할 때 K(키워드) 모드입니다.Spectrum 16K 및 48K에서는 Spectrum+ 이후의 모델에 존재하는 키가 아닌 키를 눌러 동시에 확장모드를 시작합니다.
- ^ a b c Sinclair BASIC의 "False"는 0(제로)에 해당하며, 다른 모든 것은 "true"에 해당합니다.true 또는 false 값을 반환하는 함수는 실제로 false의 경우 0, true의 경우 1을 반환합니다.
AND
보통 true에 대해 제공된 조건 중 첫 번째 조건을 반환합니다.숫자 값이 지정되지 않은 경우 1을 반환합니다.예를들면,6 AND 7
6을 반환하고,NOT 6=7
1이 반환됩니다. - ^ a b c 색상으로 사용할 수 있는 숫자는 다음과 같습니다.
1 2 3 4 5 6 7 0 파랑색 빨간. 마젠타 초록의 청록색 노란 색 하얀색 블랙입니다. 모든 색상 관련 명령에서 숫자 8은 "투명"을 나타내기 위해 사용될 수 있습니다.
INK
그리고.PAPER
또, 「조명」의 경우는 9 로 설정할 수도 있습니다.즉, 밝은 배경에 어두운 색을 자동적으로 입히거나, 그 반대의 경우도 마찬가지입니다. - ^ a b c d e f
INK
,PAPER
,FLASH
,BRIGHT
,OVER
그리고.INVERSE
화면에 텍스트 및 그래픽을 출력하기 위한 속성을 설정합니다.이러한 명령어는 다시 설정될 때까지 이후의 모든 출력에 적용하거나 명령어로 사용할 수 있습니다.PRINT
스테이트먼트: 그 시점부터 스테이트먼트의 마지막까지만 적용됩니다. - ^ a b c d e f
CAT
,ERASE
,FORMAT
그리고.MOVE
는 원래 주변기기와 함께 사용하도록 설계되었지만 ZX Spectrum 출시 시 완전히 구현되지 않아 오류 메시지(Invalid Stream)가 생성되었습니다.나중에 ZX 인터페이스 1 섀도우 ROM의 도움으로, 그것들은 ZX 마이크로드라이브에 사용되었습니다. (섀도우 ROM은 BASIC 인터프리터가 구문 오류를 감지했을 때 페이징되었습니다.이것이 대부분의 ZX 마이크로드라이브 명령에서 사용되는 이유입니다."*"
). - ^ a b 다른 많은 베이직 사투리와 달리 싱클레어 베이직 사투리에는 다음 사투리가 포함되지 않았습니다.
ELSE
의 오퍼레이터IF
–THEN
[–ELSE
> 조항.회피책으로서는, 다음과 같은 것을 사용하는 것이 있습니다.IF
–THEN
–GO TO
대신, 에 있는 행을 바이패스하여ELSE
에 대한 조항GO TO
- ^ Spectrum 디스플레이 메모리는 주소 16384에서 시작되며 길이는 6912바이트입니다.
- ^ 문자열 내의 문자열은 Sinclair BAS에서 따옴표를 2배로 해야 합니다.IC
레퍼런스
- ^ 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.
- ^ a b "ZX80 - 8K BASIC ROM Upgrade". www.fruitcake.plus.com.
- ^ a b c d 비커스 1983 페이지 59
- ^ a b 비커스 1983, 페이지 70
- ^ a b c 비커스 1983 페이지 85
- ^ 비커스 1983, 페이지 69~70
- ^ a b c d 비커스 1983 페이지 101
- ^ 비커스 1983, 페이지 116
- ^ 비커스 1983, 페이지 135
- ^ a b 비커스 1983, 페이지 93
- ^ 비커스 1983, 페이지 113
- ^ 비커스 1983, 페이지 110~111
- ^ 케임브리지 통신 1983, 페이지 15
- ^ a b 비커스 1983, 페이지 91
- ^ a b 비커스 1983, 페이지 123
- ^ a b c 비커스 1983 페이지 103
- ^ "World of Spectrum - Documentation - ZX Spectrum manual - Chapter 24". worldofspectrum.org.
- ^ 비커스 1983, 페이지 168
- ^ 비커스 1983, 페이지 19
- ^ a b c 비커스 1983, 페이지 151
- ^ a b 비커스 1983, 페이지 68
- ^ a b 비커스 1983 페이지 41
- ^ a b c 비커스 1983, 페이지 142
- ^ a b c 비커스 1983, 페이지 60
- ^ 비커스 1983, 페이지 79-81
- ^ 비커스 1983, 페이지 11~123
- ^ 케임브리지 통신 1983, 페이지 18
- ^ 비커스 1983 페이지 66
- ^ 케임브리지 통신 1983, 19페이지
- ^ 비커스 1983, 페이지 31
- ^ a b 비커스 1983, 페이지 32
- ^ a b 비커스 1983, 페이지 37
- ^ a b 비커스 1983, 페이지 25
- ^ a b 비커스 1983, 페이지 159
- ^ a b 비커스 1983, 페이지 110
- ^ 비커스 1983, 페이지 131
- ^ a b c d 비커스 1983, 페이지 16
- ^ a b 비커스 1983, 페이지 112
- ^ 비커스 1983, 페이지 57
- ^ a b 비커스 1983, 페이지 13
- ^ 비커스 1983, 페이지 144
- ^ 비커스 1983, 페이지 15
- ^ a b 비커스 1983, 페이지 67
- ^ 비커스 1983, 페이지 142~143.
- ^ 비커스 1983, 페이지 147
- ^ 케임브리지 통신 1983, 39페이지
- ^ 비커스 1983, 페이지 31~32
- ^ 케임브리지 통신 1983, 22페이지
- ^ 비커스 1983, 페이지 129
- ^ 비커스 1983, 130페이지
- ^ 비커스 1983, 페이지 121
- ^ 비커스 1983, 페이지 163
- ^ 비커스 1983, 74페이지 74
- ^ 비커스 1983, 페이지 42
- ^ 비커스 1983, 페이지 73
- ^ a b 비커스 1983, 페이지 14
- ^ 비커스 1983 페이지 143
- ^ 비커스 1983 페이지 58
- ^ 비커스 1983, 페이지 69
- ^ 비커스 1983, 페이지 32, 51
- ^ 비커스 1983, 페이지 180
- ^ 비커스 1983년
- ^ 비커스 1983, 페이지 141
- ^ 비커스 1983, 페이지 7-8
- ^ "Picture of ZX80".
- ^ "Spectrum 128 ROM Disassembly - Spanish Spectrum 128". www.fruitcake.plus.com.
- ^ "Sinclair ZX80 User Manual 4K Basic for ZX80".
- ^ a b "World of Spectrum - Documentation - ZX Spectrum +3 - Chapter 7". worldofspectrum.org.
- ^ "World of Spectrum - Documentation - ZX Spectrum 128 Manual Page 6". worldofspectrum.org.
- ^ "Timex tech info - Basic 64 for TC2048". timex.comboios.info.
- ^ "Microsete N.º46, Maio 1987" (PDF). loadzx.com.
- ^ "Timex Computer 3256, Timex Portugal". k1.spdns.de.
- ^ 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.
- ^ "Sinclair BASIC history - Sinclair Wiki". sinclair.wiki.zxnet.co.uk.
- ^ "The Incomplete Spectrum ROM Assembly". Archived from the original on 2015-09-01.
- ^ "ULAplus". sites.google.com.
- ^ "ZX Interface 2 - SE BASIC (3rd Party ROM Cartridge)". www.fruitcake.plus.com.
- ^ "OpenSE BASIC". SourceForge.
- ^ "World of Spectrum - HiSoft COLT Compiler". World of Spectrum.
- ^ "World of Spectrum - HiSoft BASIC". World of Spectrum.
- ^ "World of Spectrum - Laser Compiler". World of Spectrum.
- ^ "World of Spectrum - Softek 'IS' BASIC Compiler". World of Spectrum.
- ^ "World of Spectrum - Integer Compiler". World of Spectrum.
- ^ "World of Spectrum - Softek 'FP' Full Compiler". World of Spectrum.
- ^ "World of Spectrum - ZIP Compiler". World of Spectrum.
- ^ "Sparky eZX BASIC Project". rk-internet.com.
- ^ "Philip Kendall - Basic". www.shadowmagic.org.uk.
- ^ "Philip Kendall - CheckBasic". www.shadowmagic.org.uk.
- ^ "Binsic Is Not Sinclair Instruction Code". June 25, 2012.
- ^ "ZX Spin and BASin - ULAplus". sites.google.com.
- ^ "ZXDunny/SpecBAS". June 5, 2021 – via GitHub.
- ^ "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.
외부 링크
- Sinclair ZX 스펙트럼 기본 프로그래밍:Steven Vickers의 1982년 원본 매뉴얼(위 참조)
- Sinclair ZX81 기본 프로그래밍: Vickers도 제공
- 싱클레어 베이직의 역사: 앤드류 오웬
- Timex Computer World: Timex Computer 2048용 기본 64 사용자 매뉴얼
- Sinclair BASIC 문법: Sinclair BASIC 16/48K 해석용 LL(1) 문법 규격