# Sinclair BASIC

Sinclair BASIC is een variant van de programmeertaal BASIC die op de Sinclair ZX80, ZX81, ZX Spectrum en Timex Sinclair 1000 computers gebruikt werd.
De interpreter ervoor werd in 1979 geschreven door Nine Tiles Networks Ltd., en was bedoeld om in de 4 KB ROM te passen waarover de ZX80 beschikte. Hierdoor was de taal feitelijk niet compleet volgens de ANSI-standaard voor BASIC uit 1978. In de ZX81 was 8 KB ROM beschikbaar, en Sinclair BASIC werd daarom ook uitgebreid; de ZX Spectrum had 16 KB ROM en ook weer een nog uitgebreidere BASIC, die echter nog altijd niet helemaal aan de ANSI-standaard voldeed. Zo kon de naam van string-, array- en FOR-NEXT variabelen uit slechts één letter bestaan en waren de functies LEFT$, MID$ en RIGHT$ vervangen door slicing-operators. Om bijvoorbeeld uit een string A$ een substring van 2 tekens vanaf het 3e teken te 'slicen' gebruikte je de expressie A$(3 TO 4).

## Gereserveerde Woorden

Er zijn 86 gereserveerde woorden in Sinclair BASIC op de ZX Spectrum:
* 50 opdrachten: BEEP, BIN, BORDER, BRIGHT, CAT, CIRCLE, CLEAR, CLOSE#, CLS, CONTINUE, COPY, DATA, DEF FN, DIM, DRAW, ERASE, FLASH, FOR, FORMAT, GO SUB, GO TO, IF, INK, INPUT, INT, INVERSE, LIST, LLIST, LOAD, LPRINT, MERGE, MOVE, NEW, NEXT, OPEN#, OUT, OVER, PAPER, PAUSE, PLOT, POKE, PRINT, RANDOMIZE, READ, REM, RESTORE, RETURN, RUN, SAVE en VERIFY;
* 31 functies: ABS, ACS, AND, ASN, ATN, ATTR, CHR$, CODE, COS, EXP, IN, INKEY$, INT, LEN, LN, NOT, OR, PEEK, PI, POINT, RND, SCREEN$, SGN, SIN, SQR, STR$, TAN, TO, USR, VAL en VAL$;
* 5 overige woorden: AT, LINE, STEP, TAB en THEN.
Op de ZX81 en de Timex Sinclair TS1000 en TS1500 werden ook deze woorden nog gebruikt:
* FAST, SCROLL, SLOW, UNPLOT, GOSUB en GOTO (deze laatste twee waren identiek aan GO SUB en GO TO op de ZX Spectrum)
Het bijzondere aan Sinclair BASIC is dat deze woorden niet ingetypt werden (zoals bij de meeste computers), maar via toetscombinaties in één keer ingevoerd werden. Om bijvoorbeeld de opdracht LOAD te geven, hoefde er alleen maar op de J-toets gedrukt te worden, maar om minder vaak gebruikte woorden in te voeren moesten ingewikkeldere combinaties ingedrukt worden: door de CAPS-toets en SYMBOL SHIFT-toets tegelijk in te drukken, deze dan los te laten, en dan SYMBOL SHIFT en de Z-toets in te drukken, kwam bijvoorbeeld de opdracht BEEP op het scherm.
De reden voor deze manier van doen was om ruimte te sparen: voor het opslaan in het geheugen was voor elk woord had op deze manier in feite maar 1 byte nodig, in plaats van 1 byte per letter: een lang woord als CONTINUE spaart op deze manier 7 bytes uit (8 bytes als de spatie erna meegerekend wordt). Tegenwoordig komt dit wellicht vreemd over, maar in de jaren 80 was computergeheugen duur, en dus probeerde men zo veel mogelijk uit het weinige beschikbare geheugen te halen.
Vanaf de ZX Spectrum 128K (die over 128 KB geheugen beschikte) was dit niet meer zo'n probleem, en dus werden hierbij de woorden normaal ingetypt en opgeslagen. Ook kwamen er twee woorden bij:
* PLAY om muziek te spelen op de muziekchip, die in de Spectrum 128K geïntroduceerd werd;
* SPECTRUM waarmee de computer omschakelde naar een Spectrum 48K.
Een tweede bijzonderheid van Sinclair BASIC was de ingebouwde syntaxis-controle. Wanneer er een BASIC-regel met onjuiste syntaxis werd ingevoerd werd deze geweigerd en verscheen er een knipperend vraagteken naast het foute teken op de regel, zodat je het kon corrigeren. Andere BASIC-dialecten accepteerden de foute regel maar gaven bij de uitvoering dan de melding SYNTAX ERROR.

## Hello World!

Hier een voorbeeld van Hello World! in Sinclair BASIC:
Dit wordt echter ingetypt met de volgende toetsaanslagen: 1 0 p " Caps Shift+h e l l o Spatiebalk Caps Shift+w o r l d Caps Shift+1 " Enter, en dan uitgevoerd door een druk op de r-toets (voor de opdracht RUN) en dan weer een druk op Enter.