Atari Basic

ikona-text

- 1 -

Příklad řádku programu: 10 PRINT "WELCOME TO Atari BASIC"

Příkazy

ABSabsolutní hodnota proměnné nebo výrazu
ADRdecimální adresa řetězcové proměnné
ANDlogický operátor pro logický součin (a)
ASCATASCII hodnota prvního znaku řetězcové proměnné
ATNarcustangens čísla nebo výrazu v radiánech nebo stupních
BYEnávrat z Basicu do rezidentního operačního systému
CLOADzavádí data z magnetofonu do počítače
CHR$znak příslušející v ATASCII kódu určenému číslu
CLOGdekadický logaritmus čísla nebo výrazu
CLOSEve spojení se vstupní/výstupní operací uzavírá otevřený IOCB blok
CLRruší dimenzování všech polí a nuluje všechny proměnné
COLORvolí barvový registr
COMvykonává tutéž funkci jako DIM
CONTpokračování programu na následujícím řádku po přerušení STOPem
COScosinus čísla nebo výrazu ve stupních nebo radiánech
CSAVEuložení dat na magnetofonovou kazetu
DATAvytváří seznam čísel nebo písmen pro příkaz READ
DEGnásledující trigonometrické funkce se zpracují v úhlových hodnotách
DIMvyhrazuje v paměti prostor pro matice, pole a řetězcové proměnné
DOSpřechod do menu DOSu nebo Commanderu
DRAWTOkreslí úsečku mezi poslední polohou kurzoru a určeným bodem
ENDukončení programu, uzavírá všechny otevřené soubory a zvukové kanály
ENTERnačítá data nebo program ve zdrojové (textové) formě
EXPe(2.71828179) povýšené na určené číslo
FORspolečně s příkazem NEXT vytváří cyklus FOR-NEXT
FREpočet volných byte v uživatelské oblasti paměti
GETnačítá jeden byte z otevřeného IOCB bloku
GOSUBodskok do podprogramu
GOTOnepodmíněný odskok na určený řádek
GRAPHICSurčuje jeden ze 16-ti grafických módů
IFpodmíněný odskok nebo podmíněné vykonání operace na témže řádku
INPUTvstup dat z klávesnice nebo periférie
INTnejvyšší celé číslo, které je menší nebo rovno určené hodnotě
LENdélka určené řetězcové proměnné v bytech
LETpřiřazuje hodnoty číselným a řetězcovým proměnným
LISTpředává text programu na obrazovku nebo do periferního zařízení
LOADzavádí program z disku či kazety do počítače
LOCATEdo určené proměnné ukládá data, příslušející určenému bodu na obrazovce
LOGpřirozený logaritmus čísla
LPRINTpřikazuje řádkové tiskárně vytisknout určený text
NEWmaže veškerý obsah uživatelské paměti
NEXTpříkaz pro ukončení nebo pokračování cyklu
NOTlogický zápor, používá se s příkazem IF
NOTEpoužívá se pouze při práci s disketou
ONpoužívá se ve spojitosti s GOTO a GOSUB k provedení podmíněných odskoků
OPENotevírá určený IOCB blok pro vstupní nebo výstupní operace
ORoperátor pro logický součet (nebo)
PADDLEudává polohu ovládače PADDLE
PEEKdekadická hodnota obsahu určené adresy
PLOTukládá do místa určeného souřadnicemi X,Y obrazový element
POINTpoužívá se pouze při práci s disketou
POKEukládá určené číslo (0-255) na určenou adresu
POPruší návratovou informaci příslušející posledně vykonávanému příkazu FOR nebo GOSUB
POSITIONumisťuje kurzor do určeného místa na obrazovce
PRINTpříkaz pro tisk na obrazovku nebo do příslušného otevřeného IOCB bloku
PTRIGudává stav spouštěcího tlačítka na ovládači PADDLE
PUTposílá jeden byte z počítače do určeného zařízení
RADříká počítači, aby dával údaje u trigonometrických funkcí v radiánech
READnačítá položku ze seznamu v příkazu DATA a přiřazuje ji určené proměnné
REMoznačuje poznámky v programu
RESTOREdovoluje vícenásobné čtení z řádek DATA
RETURNukončuje podprogram a vrací program na příkaz, bezprostředně následující příkaz GOSUB, který podprogram vyvolal
RNDgeneruje náhodné číslo mezi 0 a 1, ale menší než 1
RUNspouští program, nuluje proměnné a ruší dimenzování polí a řetězců
SAVEukládá data z počítače na disketu nebo kazetu
SETCOLORurčuje barvu a světlost barvy pro zvolený barvový registr
SGNdává +1, je-li hodnota proměnné kladné číslo, 0, je-li nula a -1, je-li záporné číslo
SINsinus hodnoty udané ve stupních nebo radiánech
SOUNDvolí zvukový kanál, výšku tónu, zkreslení a hlasitost
SQRdruhá odmocnina určeného čísla
STATUSčte stav zařízení při otevřeném IOCB bloku
STEPkrok v cyklu FOR-NEXT, standardně je +1
STICKudává polohu ovládače typu joystick
STRIGpři stlačení tlačítka na joysticku dává 0, jinak +1
STOPpřerušení programu
STR$převádí číslo na řetězcovou proměnnou
THENpoužívá se s IF, za THEN se dávají příkazy, které se mají provést pokud podmínka vyhovuje
TOpoužívá se společně s FOR, určuje krajní hodnotu, do které bude v průběhu cyklu počítáno
TRAPpři výskytu chyby (error) přejde řízení na určený řádek programu
USRvolá programy ve strojovém kódu
VALpřevádí řetězec na číslo
XIOpřímá operace na zařízení typu disketa nebo obrazovka

- 2 -

Chybová hlášení

2Nedostatek paměti. Program přesahuje kapacitu paměti.
3Nesprávná hodnota. Číselná hodnota je větší než maximální možná nebo je záporná tam, kde musí být kladná.
4Příliš mnoho proměnných a jmen. Bylo překročeno maximální množství 128 různých proměnných a jmen.
5Chyba v délce řetězce. Pokus o vložení řetězcové proměnné, jejíž délka přesahuje dimenzovanou délku.
6K dispozici je méně dat, než kolik jich má být čteno příkazem READ.
7Číslo větší 32767 tam, kde tomu tak být nesmí.
8Chybný vstup dat. Pokus o vložení nečíselné hodnoty do číselné proměnné.
9Chyba v dimenzování pole nebo řetězce. Rozsah dimenzovaných polí přesahuje 5460 nebo rozsah dimenzovaných řetězcových proměnných přesahuje 32767. Pole nebo řetězcová proměnná byla znovu dimenzována nebo naopak nebyly dimenzovány vůbec.
10Přetečení zásobníku pro výrazy, výraz je příliš složitý.
11Přetečení nebo podtečení registru v pohyblivé řádové čárce. Pokus o dělení nulou, použití čísla většího 1x1098 nebo menšího než 1x10-99.
12Řádek nenalezen. Bylo použito číslo řádku, který se v programu nevyskytuje.
13Nesdružení příkazů FOR-NEXT. Program narazil na příkaz NEXT bez předchozího příkazu FOR nebo včleněné příkazy FOR-NEXT nejsou správně sdruženy.
14Chyba v délce řádku. Zápis příkazu je příliš dlouhý pro zpracování nebo je velmi složitý.
15Byl vynechán příkaz GOSUB k odpovídajícímu RETURN nebo příkaz NEXT k FOR.
16Chyba v návratu. Program narazil na příkaz RETURN bez odpovídajícího příkazu GOSUB.
17Syntaktické chyba. Program narazil na řádek se syntaktickou chybou.
18Neplatný znak řetězce. Řetězec v příkazu VAL není číselným řetězcem.
19Příliš dlouhý zaváděný program. Paměť nestačí k zavedení celého programu.
20Špatné číslo kanálu. Platná čísla kanálů jsou 0 až 7.
21Chyba zavádění souboru. Soubor nelze načíst příkazem LOAD, zřejmě jde o program ve strojovém kódu nebo data.
128Přerušení klávesou Break během vstupní/výstupní operace.
129Kanál již otevřen. Vstupní/výstupní kanál je již otevřen.
130Neexistující zařízení. Voláno zařízení jenž není definováno v tabulce HATABS.
131Kanál je otevřen pouze pro zápis.
132Chybný vstupní/výstupní příkaz.
133Kanál není otevřen.
134Chybné číslo IOCB kanálu.
135Kanál je otevřen pouze pro čtení.
136Konec souboru. Pokus o čtení souboru poté, co bylo dosaženo jeho konce.
137Záznam uříznut. Nahrávka delší než buffer.
138Zařízení blokováno. Zařízení neodpovídá.
139Záporný potvrzovací signál zařízení. Chyba je buď v sériovém kanálu nebo v periferním zařízení.
140Chyba při čtení vstupních dat. Chyba na sériové sběrnici.
141Kurzor mimo rozsah v daném grafickém módu.
142Chyba parity (kontrolního součtu) při přenosu dat po sériové sběrnici.

- 3 -

Příklady programu

Níže jsou vypsány kódy tří jednoduchých prográmků v jazyku Atari Basic. Jeden z nich vložte do vašeho Atari a vyzkoušejte si tak základní programování!!!

Jak na to? Jednoduše a pěkně postaru. Přepište na obrazovku jeden logický řádek programu počínaje řádkem 10 (včetně čísla řádku a mezer) a stiskněte klávesu RETURN. Není-li řádek správně (syntakticky) zadán, Basic to pozná a vypíše Vám na obrazovku chybu - pak tento řádek opravte. Tímto způsobem vložte postupně do paměti všechny řádky programu. Hotový program spusťte napsáním příkazu RUN a stiskem klávesy RETURN. Pak už se jen dívejte...

Spuštěný program v Basicu můžete kdykoliv zastavit stiskem klávesy BREAK nebo globálně přes RESET. Výpis programu na obrazovku můžete provést příkazem LIST (+ RETURN), po zadání příkazu NEW (+ RETURN) pak celý program vymažete (takže zde pozor, přijdete tak o svou dosavadní práci). Pokud budete chtít smazat jen některý programový řádek, zadejte číslo řádku a stiskněte klávesu RETURN.


10 GRAPHICS 11
20 LL=191
30 RL=79
40 FOR ZEBRA=0 TO 48
50 REM GTIA HIWAY *FAST LANE*
60 COLOR ZEBRA
70 PLOT RL,LL
80 DRAWTO 0,0
90 RL=RL-1
10 NEXT ZEBRA
110 GOTO 110
120 END

10 GRAPHICS 7+16: SETCOLOR 4,0,0: SETCOLOR 1,0,4
20 COLOR 2
30 PLOT 2,2: DRAWTO 30,34: DRAWTO 78,40: DRAWTO 100,57: DRAWTO 110,50: DRAWTO 140,76
40 FOR LIGSOU=1 TO 255
50 SOUND 0,LIGSOU,8,10
60 IF LIGSOU=8 THEN SETCOLOR 1,0,14
70 NEXT LIGSOU
80 SETCOLOR 1,0,0
90 FOR DELAY=1 TO 200: NEXT DELAY
100 GOTO 10

10 GRAPHICS 0: DIM NAME$(20): POSITION 2,7
20 PRINT "TYPE IN YOUR NAME AND PRESS THE RETURN KEY"
30 POSITION 4,12: PRINT "NAME";: INPUT NAME$
40 GRAPHICS 2+16
50 POSITION (19-LEN(NAME$))/2,4: REM CENTERS THE NAME
60 PRINT #6; NAME$
70 POSITION 1,7: PRINT #6; "IS A FLASHY PERSON"
80 FOR FLIP=0 TO 20
90 FOR FLASH=0 TO 4
100 SETCOLOR 0,0,FLASH: SOUND 0,FLASH,10,10
110 NEXT FLASH
120 FOR DELAY=1 TO 20: NEXT DELAY
130 NEXT FLIP
140 SETCOLOR 0,0,14: SOUND 0,0,0,0
150 FOR DELAY=1 TO 1000: NEXT DELAY
160 SETCOLOR 0,0,0: SETCOLOR 2,0,0
170 FOR DELAY=1 TO 800: NEXT DELAY
180 RUN
190 END

Zdroj kódu: "Inside Atari BASIC, A Fast, Fun, and Friendly Approach" by William Carris, 1983





Program v Basicu (2kB)