Sinclair BASIC

**Sinclair BASIC** – BASIC programavimo kalbos dialektas, naudotas 8 bitų Sinclair Research ir Timex Sinclair asmeniniuose kompiuteriuose bei jų klonuose. Sinclair BASIC interpretatorius buvo sukurtas „Nine Tiles Networks“ kompanijos.

Pradinė versija buvo sukurta 1979 m. *Nine Tiles* kompanijos, kuri tilpo 4&nbsp; kB Sinclair ZX80 kompiuterio pastoviojoje atmintyje. Tai buvo neužbaigta 1978 metų ANSI minimalaus BASIC standarto realizacija. Vėliau Sinclair BASIC evoliucionavo Sinclair ZX81 ir TS1000 kompiuteriuose, kur buvo talpinamas jau į 8&nbsp; kB ROM, ir buvo beveik galutinai užbaigtas Sinclair ZX Spectrum kompiuteryje, kuriame buvo įrašomas į 16&nbsp; kB pastoviąją atmintį.

## Sinclair BASIC aprašymas

### Raktiniai žodžiai
Spectrum kompiuteryje Sinclair BASIC turėjo 86 raktinius žodžius, žyminčius komandas (kurių buvo 50), funkcijas (31) ir *kitus raktažodžius* (5). Jie buvo įvedami ne pažodžiui, o kiekvienas klaviatūros mygtukas atitiko keletą reikšmių, kurios buvo keičiamos perjungimo klavišais. Pavyzdžiui, *BEEP* komanda buvo įvedama iš pradžių kartu nuspaudus *CAPS* ir *Symbol SHIFT*, poto *SYMBOL SHIFT* plius *Z*.

: ABS, ACS, AND1, ASN, *AT*, ATN, ATTR, BEEP, BIN, BORDER, BRIGHT, CAT2, CHR$3, CIRCLE, CLEAR, CLOSE#2, CLS, CODE3, CONTINUE, COPY, COS, DATA, DEF FN, DIM, DRAW, ERASE2, EXP, FLASH, FN, FOR, FORMAT2, GO SUB, GO TO, IF4, IN, INK, INKEY$3, INPUT, INT, INVERSE, LEN, LET5, *LINE*, LIST, LLIST, LN, LOAD, LPRINT, MERGE, MOVE2, NEW, NEXT, NOT1, OPEN#2, OR1, OUT, OVER, PAPER, PAUSE, PEEK, PI, PLOT, POINT, POKE, PRINT, RANDOMIZE, READ, REM, RESTORE, RETURN, RND, RUN, SAVE, SCREEN$3, SGN, SIN, SQR, *STEP*, STR$3, *TAB*, TAN, *THEN* 4, TO, USR, VAL3, 6, VAL$3, VERIFY

Komandos, kurios buvo unikalios tik ZX81 ir jo klonuose TS1000 ir TS1500 yra:

: FAST, SCROLL, SLOW, UNPLOT, GOSUB, GOTO (Spectrum turėjo funkciškai identiškas GO SUB, GO TO komandas)

Spectrum 128K ir Amstrad Spectrum +2, +3, +2A, +2B modeliuose BASIC komandų įvedimas jau buvo vykdomas tradiciniu būdu, užrašant juos paraidžiui. Taip pat šiuose modeliuose atsirado dvi naujos komandos, kurių senesni modeliai neatpažindavo: PLAY (veikė su nauju AY-3-8910 muzikiniu lustu) ir SPECTRUM (perjungdavo į 48K Spectrum modelio suderinamumo režimą).

### Pastabos
# AND, NOT ir OR funkcijos yra loginės operacijos.
# CAT, ERASE, FORMAT ir MOVE iš pradžių buvo sukurti naudojimui su periferine įranga, tačiau nebuvo iki galo užbaigti. Jų naudojimas sugeneruodavo klaidos pranešimą (*Invalid Stream*).
# *String* (tekstinės eilutės duomenų tipo) kintamųjų vardai galėjo susidėti tik iš vienos raidės. „LET A=5“, „LET Apples=5“ ir „LET A$="Hello"“ yra teisingi sakiniai, tačiau „LET APPLES$="Fruit"“ bus klaidingas sakinys.
# Skirtingai nei dauguma kitų BASIC dialektų, Sinclair BASIC neturi *ELSE* operatoriaus sąlygos (IF) sakiniuose.
# LET yra būtinas, norint priskirti kintamajam reikšmę (pavyzdžiui, „LET A=1“, bet niekada „A=1“). Ši praktika irgi skiriasi nuo daugumos BASIC dialektų.
# VAL funkcija išreiškia ne tik skaičius, bet ir visus reiškinius, pavyzdžiui, „PRINT VAL(A$)“ išves 14, jei A$ yra lygus „3*3+4+COS(0)“.

Skirtingai nuo LEFT$(), MID$() ir RIGHT$() funkcijų plačiai naudotame Microsoft BASIC dialekte, tekstinių eilučių dalis Sinclair BASIC buvo galima pasiekti į masyvus panašiu stiliumi. Pavyzdžiui, „A$ (5 TO 10)“ atitiks A$ kintamojo tekstinės eilutės dalį nuo 5 iki 10 simbolio (imtinai).

## Timex BASIC
**Timex BASIC** dialektas buvo naudojamas Spectrum suderinamuose TS2068 kompiuteriuose, bet ne TC2048, kuriame buvo naudojamas originalus Sinclair BASIC. Timex Sinclair turėjo papildomus 6 raktinius žodžius:

: DELETE, FREE, ON ERR, RESET, SOUND, STICK

* **DELETE** ištrina BASIC programos eilutes.
* **FREE** yra funkcija, grąžinanti laisvos operatyvios atminties kiekį. „PRINT FREE“ atvaizduos, kiek yra laisvos atminties tuo momentu.
* **ON ERR** yra klaidų atpažinimo funkcija, dažniausiai naudojama kaip „ON ERR GO TO“ arba „ON ERR GO SUB“.
* **RESET** neturėjo jokios paskirties pagrindiniam kompiuteriui ir buvo numatytas periferinių įrenginių pakartotinei kelčiai.
* **SOUND** komanda AY-3-8192 garso lustui.
* **STICK** – funkcija, grąžinanti vidinės vairalazdės (Timex Sinclair 2090) poziciją.

## Praplėtimai ir variantai
* Beta BASIC, parašytas *Andy Wright*, iš pradžių buvo BASIC praplėtimas, bet vėliau virto į pilnavertį interpretatorių.
* SAM BASIC, taip pat parašytas *Andy Wright* ir buvo naudojamas SAM Coupé kompiuteriuose. Ši versija turėjo atgalinį suderinamumą su ZX Spectrum kompiuterio BASIC variantu.
* Sinclair Extended BASIC yra vystomas retro projektas, kurio tikslas sukurti patobulintą Sinclair BASIC versiją. Galima atsisiųsti beta versijas.

## Šaltiniai
* Vickers, Steven (1982). *Sinclar ZX Spectrum BASIC Programming*. Sinclair Research.
* Ardley, Neil (1984). *Sinclair ZX Spectrum+ User Guide*. Dorling Kindersley kartu su Sinclair Research. ISBN 0-86318-080-9.

## Nuorodos
* Sinclair ZX Spectrum BASIC Programming – originalus 1982 metų *Steven Vickers* parašytas programavimo vadovas
* Sinclair ZX81 Basic Programming  – ZX81 BASIC programavimo vadovas, taip pat parašytas *Steven Vickers*
* Sinclair BASIC istorija