Sinclair BASIC - Sinclair BASIC
Paradigma | Rozkazovací způsob |
---|---|
Navrhl | John Grant, Steve Vickers |
Vývojář | Networks Nine Tiles, Sinclair Research |
Poprvé se objevil | 1979 |
Plošina | ZX80 , ZX81 , ZX Spectrum |
Licence | Proprietární |
Sinclair BASIC je dialekt programovacího jazyka BASIC používaný v 8bitových domácích počítačích od společností Sinclair Research a Timex Sinclair . Tlumočník Sinclair BASIC vytvořil Nine Tiles Networks Ltd.
Dějiny
Sinclair BASIC byl původně vyvinut v roce 1979 pro ZX80 společností Nine Tiles. Programátory byli John Grant, majitel společnosti Nine Tiles, a Steve Vickers .
Původně se jednalo o neúplnou implementaci minimálního BASIC standardu American National Standards Institute (ANSI) z roku 1978 pouze s celočíselnou aritmetikou, pro ZX80 označovaný jako 4K BASIC (pro jeho velikost ROM). Vyvinul se pomocí 8K BASIC s plovoucí desetinnou čárkou pro ZX81 a TS1000 (který byl také k dispozici jako upgrade pro ZX80) a stal se téměř kompletní verzí v 16 KB ROM ZX Spectrum . Je přítomen ve všech kompatibilních ZX Spectrum.
Od roku 2015 existují tlumočníci pro moderní operační systémy a starší systémy, které umožňují snadné použití Sinclair Basic.
Syntax
Noví programátoři BASICu by mohli začít s jednoduchým programem, možná pomocí příkazu PRINT jazyka k zobrazení zprávy na obrazovce; známý a často replikovány příkladem je Kernighan a Ritchie ‚s Hello world Program :
10 PRINT "Hello, World!"
Klíčová slova
Na 16K / 48K ZX Spectrum obsahuje 88 klíčových slov v Sinclair BASIC, označujících příkazy (kterých je 50), funkce a logické operátory (31) a další klíčová slova (16, včetně 9, které jsou také příkazy nebo funkcemi):
Klíčové slovo | Parametry | Zadáno pomocí | Typ | souhrn |
---|---|---|---|---|
ABS
|
number
|
EXTENDED MODE pak G | Funkce | Vrací absolutní hodnotu znumber
|
ACS
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+W | Funkce | Vrátí arckosinus znumber
|
AND
|
SYMBOL SHIFT+Y | Logický operátor | Vrátí true, pokud jsou obě podmínky na obou stranách AND klíčového slova true, else vrátí false
|
|
ASN
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+Q | Funkce | Vrátí arcsine znumber
|
AT
|
line, column;
|
SYMBOL SHIFT+I | jiný | Používá se ve PRINT výpisu k tisku na zadaný řádek a sloupec; například PRINT AT 5,10;"*" vloží hvězdu do sloupce 10 řádku 5.
|
ATN
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+E | Funkce | Vrací arkustangens znumber
|
ATTR
|
(line, column)
|
EXTENDED MODEpak SYMBOL SHIFT+L | Funkce | Vrátí bajt obsahující informace o barvách textové buňky na obrazovce odpovídající zadaným line a column ; Všimněte si, že na rozdíl od většiny klíčových slov Sinclair BASIC jsou závorky povinné; první tři bity označují barvu inkoustu (popředí), čtvrtý, pátý a šestý bity barvu papíru (pozadí), sedmý bit, zda jsou barvy jasné nebo ne, a osm, zda blikají
|
BEEP
|
duration, pitch
|
EXTENDED MODEpak SYMBOL SHIFT+Z | Příkaz | Produkuje zvuk z reproduktoru počítače; duration je v sekundách, výška tónu je v půltónech nad (kladná hodnota) nebo pod (záporná hodnota) uprostřed C
|
BIN
|
number
|
EXTENDED MODE pak B | jiný | Označuje, že number je v binární notaci
|
BORDER
|
number
|
B | Příkaz | Nastaví vnější ohraničení obrazovky na barvu určenou pomocí number
|
BRIGHT
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+B | Velení / jiné | Zvýrazní všechny následující barvy, pokud number je 1, nebo její normální odstín, pokud je 0
|
CAT
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+9 | Příkaz | Zobrazuje obsah ZX Microdrive specifikovaný uživatelemnumber
|
CHR$
|
number
|
EXTENDED MODE pak W | Funkce | Vrátí znak odpovídající desetinnému místu number ve znakové sadě počítače
|
CIRCLE
|
x, y, r
|
EXTENDED MODEpak SYMBOL SHIFT+H | Příkaz | Nakreslí kruh se středem na souřadnicích ( x , y ) a poloměrur
|
CLEAR
|
address
|
X | Příkaz | Vymaže obrazovku, všechny proměnné a GO SUB zásobník a volitelně nastaví maximální adresu RAM, kterou má BASIC použít
|
CLOSE #
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+5 | Příkaz | Zavře zadané číslo streamu pro přístup |
CLS
|
V | Příkaz | Vymaže veškerý text a grafiku z obrazovky | |
CODE
|
string
|
EXTENDED MODE pak I | Funkce / jiné | Vrátí číslo odpovídající prvnímu znaku ve znakové saděstring počítače ; také slouží k uložení libovolné kousky paměti na pásku, disk, atd a nahrát je zpátky - viz , a podrobnosti
LOAD SAVE VERIFY |
CONTINUE
|
C | Příkaz | Restartuje program poté, co byl zastaven v důsledku chyby nebo uživatel stisknutím tlačítka CAPS SHIFT+ SPACEnebo BREAKklíče | |
COPY
|
Z | Příkaz | Odešle aktuálně zobrazenou obrazovku do tiskárny | |
COS
|
number
|
EXTENDED MODE pak W | Funkce | Vrátí kosinus znumber
|
DATA
|
comma-separated values
|
EXTENDED MODE pak D | Velení / jiné | Poskytuje čísla nebo řetězce, které se mají použít s READ příkazem, a umožňuje uložit obsah pole na pásku, když se použije s SAVE příkazem (jakoSAVE filename DATA array name()
|
DEF FN
|
name(variable) = operation
|
EXTENDED MODE pak 1 | Příkaz | Definuje vlastní funkce, které lze použít s FN příkazem; definice funkce musí být ve formě f(x)=operations , například f(x)=x*2 i název funkce nesmí skládat z více než jedno písmeno, plus $ -Symbol v případě, že funkce vrací řetězec
|
DIM
|
variable(dimensions)
|
D | Příkaz | Deklaruje pole se zadaným dimensions , které může být vícerozměrné (například DIM a(10,10) ; pokud je použito s řetězci, poslední dimenze označuje délku každého z řetězců (tedy DIM a$(2,5) je pole dvou řetězců, každý o délce pěti znaků, a DIM b$(5) je jeden řetězec pěti znaků)
|
DRAW
|
x, y [, r]
|
W | Příkaz | Nakreslí čáru v aktuální INK barvě na souřadnice ( x , y ) ze souřadnic použitých předchozím PLOT nebo DRAW příkazem; pokud je volitelný r doplněn, označuje poloměr kruhového segmentu, který má být nakreslen, v radiánech
|
ERASE
|
drive;"filename"
|
EXTENDED MODEpak SYMBOL SHIFT+7 | Příkaz | Odstraní zadaný soubor ze ZX Microdrive |
EXP
|
number
|
EXTENDED MODE pak X | Funkce | Vrací e k sílenumber
|
FLASH
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+V | Velení / jiné | Nastaví, aby veškerý následující text střídal barvy popředí ( INK ) a pozadí ( PAPER )
|
FN
|
function(value)
|
EXTENDED MODEpak SYMBOL SHIFT+2 | Funkce | Volá function definované dříve v programu pomocíDEF FN
|
FORMAT
|
drive;"name"
|
EXTENDED MODEpak SYMBOL SHIFT+0 | Příkaz | Naformátuje kazetu v označeném Microdrive a přiřadí jí identifikátorname
|
FOR
|
variable = start TO end
|
F | Příkaz | Spustí smyčku FOR - NEXT ; název proměnné může mít pouze jeden znak
|
GO SUB
|
number
|
H | Příkaz | Umožní programu přeskočit na řádek BASIC určený number ; když program narazí na příkaz RETURN , přeskočí zpět na příkaz poGO SUB
|
GO TO
|
number
|
G | Příkaz | Umožní programu přeskočit na ZÁKLADNÍ řádek specifikovaný number
|
IF
|
condition THEN
|
U | Příkaz | Vyhodnotí condition , a pokud je to pravda, provede příkaz, který následuje za klíčovým slovem, THEN které musí následovat například za podmínkouIF a=1 THEN LET b=2
|
IN
|
address
|
EXTENDED MODEpak SYMBOL SHIFT+I | Funkce | Vrátí bajt načtený z hardwarového vstupního / výstupního portu odpovídající znakuaddress
|
INK
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+X | Velení / jiné | Nastaví barvu popředí pro text a grafiku |
INKEY$
|
|
EXTENDED MODEpak SYMBOL SHIFT+Z | Funkce | Vrátí řetězec představující klávesu stisknutou na klávesnici v okamžiku volání funkce, nebo prázdný řetězec, pokud žádný není, ale nečeká na stisknutí klávesy |
INPUT
|
[prompt,] variable
|
I | Příkaz | Zastaví provádění programu, dokud uživatel na klávesnici něco nenapíše a nestiskne Enter klávesu, poté uloží zadanou hodnotu do zadaného variable ; je-li prompt dodáván volitelný doplněk , zobrazí se na obrazovce
|
INT
|
number
|
EXTENDED MODE pak R | Funkce | Vrátí celočíselnou hodnotu number zaokrouhlenou dolů na nejbližší celé číslo (tedy INT -1.1 vrátí −2, ne −1)
|
INVERSE
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+M | Velení / jiné | Obrátí barvy na celý následující text, pokud number je 1, takže použije aktuální barvu inkoustu pro pozadí a aktuální barvu papíru pro text, nebo je nastaví zpět na normální, pokud number je 0
|
LEN
|
string
|
EXTENDED MODE pak K | Funkce | Vrátí počet znaků (bajtů) v string
|
LET
|
variable=value
|
L | Příkaz | Přiřadí value pojmenované proměnné
|
LINE
|
|
EXTENDED MODEpak SYMBOL SHIFT+3 | jiný |
|
LIST
|
[number]
|
K | Příkaz | Výstup aktuálního programu BASIC na obrazovku; pokud je k dispozici nepovinný number údaj, vynechá všechny řádky s nižším číslem
|
LLIST
|
[number]
|
EXTENDED MODEpak SYMBOL SHIFT+V | Příkaz | Jako LIST kromě výpisu je výstup na tiskárně
|
LN
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+Z | Funkce | Vrátí přirozený logaritmus znumber
|
LOAD
|
"[filename]" [CODE [address[, length]]| DATA variable()]
|
J | Příkaz | Načte program nebo data do paměti RAM z pásky, ZX Microdrive , disku atd. A odstraní jakýkoli existující základní program a proměnné; je-li zadán prázdný řetězec ( "" ), načte se první nalezený program, jinak bude na pásce vyhledán program pojmenovaný v řetězci; je-li k dispozici volitelný doplněk CODE , načte program do paměti na adresu, kterou měl při uložení, nebo na zadanou address ( length je zamýšleno jako bezpečnost, pokusit se načíst správný program v případě, že je na pásku s správné jméno, ale různé délky); pokud je k dispozici volitelný doplněk DATA variable() , načte data z pásky do pojmenovaného polevariable()
|
LPRINT
|
text
|
EXTENDED MODEpak SYMBOL SHIFT+C | Příkaz | Stejně jako PRINT výstup je odeslán do tiskárny
|
MERGE
|
"[filename]"
|
EXTENDED MODEpak SYMBOL SHIFT+T | Příkaz | As LOAD , kromě toho, že neodstraní aktuální program a proměnné; pokud číslo řádku existuje v obou, přepíše číslo nově načteného programu stávající
|
MOVE
|
stream1 TO stream2
|
EXTENDED MODEpak SYMBOL SHIFT+6 | Příkaz | Přesouvá data z jednoho streamu (klávesnice, obrazovka, soubor, tiskárna, síť atd.) Do druhého |
NEW
|
A | Příkaz | Vymaže aktuální program BASIC a všechny proměnné | |
NEXT
|
variable
|
N | Příkaz | Uzavře smyčku a FOR - NEXT ; proměnná musí odpovídat proměnné příslušného FOR příkazu - „prázdné“ NEXT s odkazem na bezprostředně předcházející FOR v programu nejsou povoleny
|
NOT
|
condition
|
SYMBOL SHIFT+S | Logický operátor | Vrátí true, pokud condition je false, else vrátí false
|
OPEN #
|
stream
|
EXTENDED MODEpak SYMBOL SHIFT+4 | Příkaz | Otevírá stream pro čtení a zápis do |
OR
|
SYMBOL SHIFT+Y | Logický operátor | Vrátí true, pokud je některá z podmínek na obou stranách OR klíčového slova true, else vrátí false
|
|
OUT
|
address, value
|
EXTENDED MODEpak SYMBOL SHIFT+O | Příkaz | Odešle value ( bajt ) hardwaru [Paměťově mapovaný I / O | vstupní / výstupní port] odpovídajícíaddress
|
OVER
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+N | Velení / jiné | Provede následující textový přetisk pomocí operace XOR, co je již na obrazovce, pokud number je 1, místo jeho mazání, nebo smaže, pokud number je 0
|
PAPER
|
number
|
EXTENDED MODEpak SYMBOL SHIFT+C | Velení / jiné | Nastaví barvu pozadí pro text a grafiku |
PAUSE
|
delay
|
M | Příkaz | Zastaví provádění programu na zadané zpoždění, za sekundu v Evropě nebo v Severní Americe ( zastaví se tedy na jednu sekundu v Evropě)
PAUSE 50 |
PEEK
|
address
|
EXTENDED MODE pak O | Funkce | Vrátí bajt představující obsah umístění paměti, na který ukazuje address
|
PI
|
|
EXTENDED MODE pak M | Funkce | Vrátí hodnotu pí |
PLOT
|
x, y
|
Q | Příkaz | Nakreslí pixel v aktuální INK barvě na obrazovku na souřadnice ( x , y )
|
POINT
|
(x,y)
|
EXTENDED MODEpak SYMBOL SHIFT+8 | Funkce | Vrátí 1, pokud je pixel namířený na grafické souřadnice ( x , y ) aktuálně v barvě inkoustu (popředí), jinak vrátí 0
|
POKE
|
address, value
|
O | Příkaz | Nastaví obsah address paměti RAM navalue
|
PRINT
|
[AT x,y;] text
|
P | Příkaz | Vytiskne text (což musí být řetězec nebo číslo) na obrazovku; pokud se použije s AT , vytiskne se na zadaných souřadnicích textu, jinak v prvním sloupci řádku po řádku použitém posledním PRINT příkazem
|
RANDOMIZE
|
[number]
|
T | Příkaz | Inicializuje generátor náhodných čísel ; pokud se použije bez number (nebo s 0), provede to na základě interních hodin počítače, jinak použije number dodané, které musí být v rozsahu [1 65535]
|
READ
|
variable
|
EXTENDED MODE pak A | Příkaz | Vezme hodnotu z DATA příkazu a uloží ji do pojmenovaného variable : při prvním READ použití se získá první hodnota za první DATA , podruhé se získá další atd.
|
REM
|
text | E | Příkaz | Začíná komentář ve zdrojovém kódu, což znamená, že vše po REM příkazu je ignorováno, až do konce řádku - všimněte si, že to zahrnuje vše za dvojtečkou, která normálně začíná nový segment: 10 REM Nothing to see here : PRINT "Unprintable" nebude produkovat žádný výstup, například
|
RESTORE
|
[number]
|
EXTENDED MODE pak S | Příkaz | Resetuje, kde READ příkazy hledají hodnoty v DATA příkazech: pokud se použije bez čísla, další READ použije první DATA v programu, s číslem použije první DATA na nebo za řádkem, jehož číslo je uvedeno
|
RETURN
|
Y | Příkaz | Vrátí provedení k prvnímu příkazu následujícímu za posledním provedeným GO SUB příkazem
|
|
RND
|
|
EXTENDED MODE pak T | Funkce | Vrátí pseudonáhodné číslo s osmi platnými číslicemi v rozsahu [0,1) |
RUN
|
[number]
|
R | Příkaz | Spustí aktuální program BASIC, z jeho prvního řádku, pokud není number zadán, jinak z řádku s tímto číslem (nebo prvního za ním, pokud neexistuje)
|
SAVE
|
"filename" [DATA variable() | LINE number]
|
S | Příkaz | Uloží aktuální program BASIC na pásku nebo jiné úložné zařízení se filename zadaným; pokud se použije volitelná LINE položka, za kterou následuje číslo řádku, program se automaticky spustí od uvedeného čísla řádku, když je LOAD znovu zadán; s volitelným DATA příkazem uloží obsah pole pojmenovaného proměnnou namísto aktuálního programu BASIC
|
SCREEN$
|
[(line, column)]
|
EXTENDED MODEpak SYMBOL SHIFT+ | Funkce / jiné | Jako funkce identifikuje znak na zadaném řádku a sloupci na obrazovce. Použito za názvem souboru v příkazu LOAD nebo SAVE , znamená, že by měl být načten nebo uložen obsah paměti displeje ; to v podstatě z něj dělá zkratku, CODE 16384,6912 ale nefunguje s ním, VERIFY protože obsah paměti displeje se bude lišit v době, kdy příkaz přečte uložená data;
|
SGN
|
number
|
EXTENDED MODE pak F | Funkce | Vrátí 1, pokud number je kladné, 0, pokud je 0, a -1, pokud je záporné
|
SIN
|
number
|
EXTENDED MODE pak Q | Funkce | Vrací sinus nanumber
|
STEP
|
number
|
SYMBOL SHIFT+D | jiný | Označuje interval používaný FOR příkazem, například FOR n=2 TO 6 STEP 2 přeskočí n=3 a n=5 ve smyčce
|
STOP
|
SYMBOL SHIFT+A | Příkaz | Ukončí provádění aktuálního programu a opustí editor BASIC; lze jej také zadat, když počítač čeká na zadání pomocí INPUT příkazu; jakmile je program zastaven, lze jej obnovit pomocíCONTINUE
|
|
SQR
|
number
|
EXTENDED MODE pak H | Funkce | Vrátí druhou odmocninu znumber
|
STR$
|
number
|
EXTENDED MODE pak Y | Funkce | Vrátí znak ze znakové sady počítače odpovídajícínumber
|
TAB
|
column
|
EXTENDED MODE pak P | jiný | V PRINT příkazu zajistí, že text, který má být výstup, začíná v zadaném sloupci, podle potřeby se zalomí na další řádek, ale nikdy více než jeden řádek
|
TAN
|
number
|
EXTENDED MODE pak E | Funkce | Vrací tangentu znumber
|
THEN
|
statement
|
SYMBOL SHIFT+G | jiný | Sleduje podmínku ve IF výpisu a označuje, co by se mělo stát, když se podmínka vyhodnotí jako true
|
TO
|
|
SYMBOL SHIFT+F | jiný | Označuje rozsah od čísla vlevo od TO do čísla vpravo od něj, včetně; při použití s FOR oběma čísly musí být dodány, zatímco pokud je použito k rozřezání řetězců, může být buď vynecháno, aby označilo začátek nebo konec řetězce
|
USR
|
string or address
|
EXTENDED MODE pak L | Funkce | Při volání s jednoznakovým řetězcem to vrátí adresu paměti, na které je definován glyf pro uživatelem definovaný grafický znak odpovídající tomuto znaku. Pokud je volán s adresou, spustí spuštění strojového kódu na této adrese (čímž se stane jednou z mála funkcí Sinclair BASIC, která má vedlejší efekt ) a vrátí obsah dvojice registrů BC Z80 . |
VAL
|
string
|
EXTENDED MODE pak J | Funkce | Vyhodnotí string jako číslo a vrátí výsledek; to může provádět výpočty: VAL "1+2" vrátí například 3 a také vyhodnotí proměnné a dokonce i další VAL příkazy: LET a=1: VAL "a+VAL ""2""" vrátí také 3
|
VAL$
|
string
|
EXTENDED MODEpak SYMBOL SHIFT+J | Funkce | Podobně jako, VAL ale vyhodnotí řetězec jako řetězec
|
VERIFY
|
"[filename]"
|
EXTENDED MODEpak SYMBOL SHIFT+R | Příkaz | Přečte program z pásky nebo jiného úložiště, podobně LOAD , ale místo načtení do paměti jej porovná s programem, který je aktuálně v paměti; to má zajistit, aby byl program SAVE správně d
|
Zadání klíčového slova
V modelech 48K a starších se klíčová slova zadávají prostřednictvím jedinečného systému zadávání klíčových slov společnosti Sinclair, jak je uvedeno v tabulce. Nejběžnější příkazy potřebují pouze jeden stisk klávesy; například stisknutí pouze Pna začátku řádku na spektru vytvoří úplný příkaz PRINT
. Méně časté příkazy vyžadují složitější sekvence kláves: BEEP
(například) se zadává stisknutím klávesy CAPS SHIFTplus SYMBOL SHIFTpro přístup do rozšířeného režimu (novější modely obsahují EXTENDED MODEklávesu), podržením SYMBOL SHIFTa stisknutím Z. Klíčová slova jsou barevně odlišena na původní klávesnici Spectrum a označují požadovaný režim:
- Bílá : pouze klíč
- Červená na samotném klíči: SYMBOL SHIFTplus klíč
- Zelená nad klíčem: EXTENDED MODEnásledovaná klíčem
- Červená pod klávesou: EXTENDED MODEnásledovaná SYMBOL SHIFTklávesou plus
ZX81 8K BASIC použít kratší formy GOTO
, GOSUB
, CONT
a RAND
, vzhledem k tomu, Spectrum použít delších forem GO TO
, GO SUB
, CONTINUE
a RANDOMIZE
. ZX80 4K BASIC také používal tyto delší formy, ale lišil se použitím pravopisu RANDOMISE
. ZX81 8K BASIC byl jediný verzi použít FAST
, SCROLL
, SLOW
a UNPLOT
. ZX80 4K BASIC měl exkluzivní funkci TL$()
; to bylo ekvivalentní operátoru řetězce (2 TO )
v pozdějších verzích.
Jedinečný kód body jsou přidělovány na znakové sadě ZX80 , znakovou sadu ZX81 a znakové sady ZX Spectrum pro každé klíčové slovo nebo provozovatele multi-charakter, tj <=
, >=
, <>
, ""
(tokenized pouze na ZX81), **
(nahrazena ↑
na Spectrum). Ty jsou rozšířeny odkazem na tabulku tokenů v ROM. Klíčové slovo tedy používá pouze jeden bajt paměti, což je významná úspora oproti tradičnímu ukládání po písmenech. To také znamenalo, že interpret BASIC mohl rychle určit jakýkoli příkaz nebo funkci vyhodnocením jednoho bajtu a že klíčová slova nemusí být vyhrazená slova jako v jiných dialektech BASIC nebo jiných programovacích jazycích, např. Je povoleno definovat proměnnou s názvem PRINT
a výstupem jeho hodnota s PRINT PRINT
. Souvisí to také s požadavkem na syntaxi, že každý řádek začíná klíčovým slovem příkazu a stisknutím klávesy one pro daný příkaz na začátku řádku se editor přepne z režimu příkazů do režimu písmen. Přiřazení proměnných LET
tedy vyžaduje (tj. Nejen ). Tato praxe se také liší od ostatních základních dialektů. Dále to znamenalo, že na rozdíl od jiných základních dialektů nepotřeboval tlumočník k identifikaci funkcí žádné závorky; bylo dostatečné, nebylo potřeba (i když to bylo povoleno). 4K BASIC ROM z ZX80 měl krátký seznam výjimek z tohoto: funkcí , , , , , , a neměl jeden bajt žetony, ale byly zadány v dopise-by-dopisu a požadované závorky. Byly uvedeny jako INTEGRÁLNÍ FUNKCE na štítku nahoře a napravo od klávesnice.
LET a=1
a=1
SIN x
SIN(x)
CHR$()
STR$()
TL$()
PEEK()
CODE()
RND()
USR()
ABS()
Modely 128K Spectrum, ZX Spectrum 128, +2, +3, + 2A a + 2B, také ukládaly klíčová slova interně do jednobajtových kódových bodů, ale používaly konvenční vstupní systém BASIC po písmenech. Představili také dva nové příkazy:
-
PLAY
, který provozoval hudební čip General Instrument AY-3-8910 modelů 128k -
SPECTRUM
, který přepnul 128k Spectrum do režimu kompatibility 48k Spectrum
Původní španělský ZX Spectrum 128 obsahoval čtyři další příkazy ve španělštině, z nichž jeden nebyl dokumentován. Lze je přeložit jako:
-
EDIT
(upravit číslo řádku nebo vyvolat editor řetězců na celé obrazovce) -
RENUM
(k přečíslování programových řádků) -
DELETE
(smazat řádky programu) -
WIDTH
(pro nastavení šířky sloupce zařízení RS232, ale nezdokumentováno, protože kód byl porušen)
Na rozdíl od LEFT$()
, MID$()
a RIGHT$()
funkcích používaných v všudypřítomných Microsoft BASIC dialektů pro domácí počítače, části řetězce v Sinclair BASIC jsou přístupné pomocí číselné řady. Například a$(5 TO 10)
dává podřetězec začínající 5. a končící 10. znakem proměnné a$
. Tak je možno nahradit LEFT$()
i RIGHT$()
příkazy jednoduchým vynecháním levé nebo pravé polohy pole v uvedeném pořadí; například a$( TO 5)
je ekvivalentní s LEFT$(a$,5)
. Dále a$(5)
stačí vyměnit MID$(a$,5,1)
.
Názvy proměnných
Proměnné obsahující číselné hodnoty mohou mít libovolnou délku, zatímco názvy proměnných řetězců a matic musí obsahovat pouze jeden abecední znak. Tedy , , , a jsou dobré, zatímco , a nejsou.
LET a=5
LET Apples=5
LET a$="Hello"
DIM a(10)
DIM a$(10)
LET Apples$="Fruit"
DIM Apples(10)
DIM Apples$(10)
Dlouhé názvy proměnných povolené pro číselné proměnné mohou obsahovat alfanumerické znaky za prvním znakem, takže je povoleno, ale nikoli . Dlouhé názvy proměnných mohou také obsahovat mezery, které jsou ignorovány, takže jsou stejné jakoLET a0=5
LET 0a=5
LET number of apples = 5
LET numberofapples = 5
Oficiální verze
- 4K BASIC je původní ZX80 BASIC s celočíselnou aritmetikou od Johna Granta z Nine Tiles pro ZX80, pojmenovaný pro bydlení ve 4 KiB paměti jen pro čtení (ROM).
- 8K BASIC je ZX81 BASIC (k dispozici také jako upgrade pro ZX80), aktualizovaný aritmetikou s plovoucí desetinnou čárkou od Steva Vickerse , tak pojmenovaného pro bydlení v 8 KiB ROM.
- 48 BASIC je ZÁKLAD pro původní 16/48 kB paměti ZX Spectrum (a klony) s náhodným přístupem (RAM), s barevnými a dalšími periferiemi, které přidali Steve Vickers a John Grant. Je umístěno v 16 KiB ROM a začalo se mu říkat 48 BASIC zavedením ZX Spectrum 128, kdy se 16 kB Spectrum již neprodávalo a většina stávajících používaných byla upgradována na 48 kB
- 128 BASIC je ZÁKLADNÍ pro ZX Spectrum 128. Nabízí další příkazy a používá zadávání písmen po písmenech.
- +3 BASIC je BASIC s podporou disku pro ZX Spectrum +3.
-
T / S 2000 BASIC byl použit na Spectrum kompatibilní Timex Sinclair 2068 (TS2068) a má následujících šest klíčových slov a běžná klíčová slova Sinclair BASIC:
-
DELETE
odstraní ZÁKLADNÍ rozsahy programových řádků. CAPS SHIFT+ 0sK
kurzorem vytvoří příkazDELETE
. -
FREE
je funkce, která udává množství volné paměti RAM.PRINT FREE
ukáže, kolik RAM je volné. -
ON ERR
je funkce pro zpracování chyb, která se většinou používá jakoON ERR GO TO
neboON ERR CONT
. -
RESET
lze použít k resetování chováníON ERR
. Rovněž bylo zamýšleno resetovat periferie. -
SOUND
ovládá zvukový čip AY-3-8192. -
STICK
je funkce, která udává polohu vnitřního joysticku (Timex Sinclair 2090).
-
- BASIC64 od společnosti Timex z Portugalska je softwarové rozšíření umožňující lepší základní programování s grafickým režimem 512 × 192 dostupným pouze na počítačích řady Timex 2000 . Toto rozšíření přidává příkazy a provádí úplné přemapování paměti, aby se zabránilo přepsání oblasti paměti rozšířené obrazovky systémem. Dvě verze existují kvůli různým mapám paměti - verze pro TC2048 a verze pro TS / TC2068 .
Další verze, rozšíření, deriváty a nástupci
Tlumočníci pro rodinu ZX Spectrum
Existuje několik tlumočníků ZX Spectrum.
- Beta BASIC od Dr. Andy Wrighta byla původně základním rozšířením , ale stala se úplným tlumočníkem.
- YS MegaBasic od Mike Leamana .
- ZebraOS od společnosti Zebra Systems v New Yorku, kazetová verze T / S 2000 BASIC, která používala režim obrazovky 512 × 192.
- Sea Change ROM od Steva Vickerse a Iana Logana, upravený Geoffem Wearmouthem, náhradní ROM s vylepšeným Sinclair BASIC.
- Gosh Wonderful od Geoffa Wearmoutha , náhradní ROM, který opravuje chyby a přidává tokenizer, stream lister, mazání a přečíslování příkazů.
- OpenSE BASIC (dříve SE BASIC) Andrewa Owena , náhradní ROM s opravami chyb a mnoha vylepšeními včetněpodpory ULAplus , publikovaný jako open source v roce 2011
Překladače pro rodinu ZX Spectrum
Existuje několik kompilátorů ZX Spectrum.
- HiSoft COLT Compiler (aka HiSoft COLT Integer Compiler)
- HiSoft BASIC (aka HiSoft BASIC Compiler), kompilátor s integer a plovoucí desetinnou čárkou
- Laserový kompilátor
- Softek 'IS' Integer Compiler (nástupce Softek Integer Compiler)
- Softek 'FP' Full Compiler
- Překladač ZIP
Deriváty a nástupce pro jiné počítače
- SuperBASIC , mnohem pokročilejší dialekt BASIC představený sosobním počítačem Sinclair QL , s některými podobnostmi s předchozími Sinclair BASIC
- SAM Basic , BASIC na SAM Coupé , obecně považován za klon ZX Spectrum
- ROMU6 od Cesara a Juana Hernándeze - MSX
- Spectrum 48 od Whitby Computers - Commodore 64
- Sparky eSinclair BASIC od Richarda Kelsha, operační systém volně založený na ZX Spectrum BASIC - Zilog eZ80
- Sinbas od Pavla Napravnika - DOS
- Základní (a CheckBasic) od Philipa Kendalla - Unix
- BINSIC od Adriana McMenamina, reimplementace v Groovy úzce modelovaná na ZX81 BASIC - Java
- BASin Paul Dunn, kompletní integrované vývojové prostředí (IDE) Sinclair BASIC založené na emulátoru ZX Spectrum - Windows
- SpecBAS (aka SpecOS) od Paula Dunna, integrovaného vývojového prostředí (IDE) poskytujícího vylepšenou nadmnožinu Sinclair BASIC - Windows , Linux , Pandora a Raspberry Pi
- ZX-Basicus od Juan-Antonia Fernándeze-Madrigala, syntetizátor, analyzátor, optimalizátor, tlumočník a debugger Sinclair BASIC 48K pro PC, volně ke stažení pro Linux a Windows .
Viz také
- Seznam emulátorů počítačového systému § Sinclair ZX80
- Seznam emulátorů počítačového systému § Sinclair ZX81
- Seznam emulátorů počítačového systému § Sinclair ZX Spectrum a klony
Poznámky
Reference
Bibliografie
- Ardley, Neil (1984). Uživatelská příručka pro Sinclair ZX Spectrum + . Dorling Kindersley ve spolupráci s Sinclair Research. ISBN 0-86318-080-9.
- Vickers, Steven (1982). ZÁKLADNÍ programování Sinclair ZX Spectrum . Sinclairův výzkum.
- Vickers, Steven (1983). ZÁKLADNÍ programování Sinclair ZX Spectrum (2. vyd.). Sinclairův výzkum.
- Cambridge Communication (1983). Manuál Sinclair ZX Spectrum Microdrive and Interface 1 . Sinclairův výzkum.
externí odkazy
- ZÁKLADNÍ programování Sinclair ZX Spectrum : Původní manuál z roku 1982 od Stevena Vickerse (výše uvedený odkaz)
- Základní programování Sinclair ZX81 : také Vickers
- Historie Sinclair ZÁKLAD : Andrew Owen
- Timex Computer World : Základní 64 uživatelská příručka pro Timex Computer 2048
- Gramatika Sinclair BASIC : Specifikace gramatiky LL (1) pro analýzu Sinclair BASIC 16 / 48K