**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  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  kB ROM, ir buvo beveik galutinai užbaigtas Sinclair ZX Spectrum kompiuteryje, kuriame buvo įrašomas į 16  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

1. AND, NOT ir OR funkcijos yra loginės operacijos.
2. 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*).
3. *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.
4. Skirtingai nei dauguma kitų BASIC dialektų, Sinclair BASIC neturi *ELSE* operatoriaus sąlygos (IF) sakiniuose.
5. 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ų.
6. 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 buvo atgaliniai suderinama 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 Archyvuota kopija 2007-04-22 iš Wayback Machine projekto. – ZX81 BASIC programavimo vadovas, taip pat parašytas *Steven Vickers*
* Sinclair BASIC istorija