-- SORD m.5 ------------------------------------------------------------------
1. Uvod
*************
Tato prirucka obsahuje seznam prikazu a funkci jazyka BASIC-F s jejich blizsim
vysvetlenim. BASIC-F je dlouhy 20kB a muze byt obsazen v pametech EPROM osaze-
nych v modulu BASIC-F nebo muze byt zaveden do pameti RAM (v modulu 64kB RAM).
Jazyk BASIC-F sestava z programu ve strojovem kodu od adresy &2000 do adresy
&6FFF. Jazyk umi pracovat jak v integer ( 2 byte ) aritmetice, tak i v real
( 8 byte ). Promenne a konstanty se zapisuji podle typu s % nebo # ( nebo pri-
padne retezcove promenne se znakem $ ).
2. Specifikace jazyka
***************************
Jazyk BASIC-F je urcen pro vedecko-technicke vypocty. Jeho ideove zamereni vy-
chazi z moznosti a pozadavku na velke pocitace.Presnost vypoctu realnych cisel
je zajistena vzdy minimalne na 13 platnych cislic, zobrazit lze potom podle
pozadavku 16 vypoctenych cislic ( nebo vice, s tim ze budou nasledovat nuly ).
Rychlost vypoctu je zcela bezkonkurencni. Pomoci prikazu OPEN a CLOSE se poci-
tac stava univerzalnim z hlediska pouzitelnosti periferii a jejich snadneho
ovladani. Prikaz EXE je naprosto unikatni.
2.1. Programovani a beh programu v jazyce BASIC-F
=====================================================
Interpretr jazyka BASIC-F byl navrzen tak,aby tvorba programu byla pokud mozno
co nejefektivnejsi a vlastni ukladani programu do pocitace stalo minimum casu.
Proto lze zadavat prikazy neuplne, pomoci tzv. teckove konvence s tim, ze
interpretr si neuplne prikazy sam doplni. Prikazem TYPE si uzivatel definuje
jakeho typu budou neoznacene promenne ( pri zadavani prikazovych radku ), ale
i styl vypoctu ( ma-li se pocitat v INTEGER nebo v REAL logice ) coz je vyhod-
ne u zkopirovanych programu z BASIC-G a rychlych her.
Jazyk BASIC-F neni kompatibilni s jazykem BASIC-I a BASIC-G primo. Nahravat
lze pouze programy z BASIKU-G typu .LS jejichz atribut se zmeni z 64 na 84
s tim, ze nektere prikazy BASIC-F samozrejme nezna.
3. Prikazy jazyka
***********************
$<label name>
Prirazuje radce jmeno. Delka navesti muze byt maximalne 32 znaku.
! <character string>
Viz REM. Ve vypisu programu je ! nahrazen znakem ' .
' <character string>
Viz REM.
? [#<channel number>][<expression>[{,/;}..]]
Viz PRINT.
AUTO [<first line number>][,<increment>]
Automaticke cislovani redek pri tvorbe programu od cisla zvoleneho 1 para-
metrem, s krokem urcenym druhym parametrem. Neuvedeny parametr = 10. Zrusit
prikaz lze bud odeslanim prazdneho radku ( puvodni radek s timto cislem
zustane zachovan ) nebo stiskem <SHIFT>+<RESET>.
BCOL [<color code>]
Urcuje parvu pozadi obrazovky a zaroven barvu "barvy 0".
CALL <assembler program address>[,[<AF>][,[<BC>][,[<DE>][,[<HL>]]]]]
Provede skok na urcenou adresu do programu ve strojovem kodu s naplnenim
registru AF, BC, DE a HL.
CLEAR [<work field>][,<last user field>]
a) bez parametru smaze obsah vsech promennych, vcetne "ON ... GOSUB ...".
b) prvni prarametr vyhrazuje uzivatelsky prostor pro provadeni nekterych
basickych operaci, jehoz velikost musi byt alespon 256. Stavajici velikost
lze zjistit funkci FRE(0).
c) druhy parametr urcuje nejvyssi adresu RAM, dosazitelnou pro basic. Od na-
sledujici adresy lze ulozit data nebo program ve strojovem kodu, aniz by
hrozilo jejich poskozeni cinnosti systemu ( viz FRE(4) ).
promenne se mazou ve vsech trech uvedenych pripadech.
CLS [<initialize code>]
Provede smazani obrazovky. Uvede-li se za prikazem cislo v rozsahu 0 - 255,
zaplni se obrazovka znaky, jejichz ASCII kod odpovida danemu cislu.
CLIST [<#ID>/<file name>][,<line number 1>][,<line number 2>]
Viz LIST, s tim ze vypis je proveden velkymi pismeny.
CLOSE [#<channel number>[,..]]
Uzavre kanaly,ktere byly otevreny prikazem OPEN. Samotne CLOSE uzavre vsechny
kanaly.
COLOR <character code>,<color code>
Obarvi znak urceny prvnim parametrem na barvu urcenou druhym parametrem.
V GI obarvi vzdy osmici znaku, v GII kazdy jednotlivy znak zvlast. Barva je
urcena: <color>=&HL, kde H=barva znaku, L=barva pozadi znaku.
CONSOLE [<A>][,<B>][,<C>][,<D>][,<E>][,<F>][,<G>]
Definuje vlastnosti klavesnice a obrazovky podle pouzitych parametru
( ANO/NE pripadne STRANKA 0/STRANKA 1 ):
A - zvuk pri stisku klavesy (1/0)
B - moznost pouziti FUNC (1/0)
C - urceni viditelne obrazovky (0/1)
D - urceni obrazovky pro kursor (0/1)
E - rezim obrazovky: 0=M, 1=GII, 2=GI, 3=T
F - rolovani obrazovky pri dopsani dolu (0/1)
G - nahravaci rychlost ( 33=2030 Bd )
CONT
Pokracovani behu programu, byl-li pred tim zastaven pomoci prikazu STOP
v programu, nebo bylo-li pouzito STOP ON, nebo stiskem <CTRL>+<RESET>
a nebyla-li provedena editace programu.
DATA <constant>[,..]
Ciselna i retezcova data ulozena v programu. Viz READ, RESTORE.
DEL [<line number 1>][,<line number 2>]
Smaze radky programu v uvedenem rozsahu. Je-li prikaz pouzit v programu, pro-
vede se pri behu po DEL prikaz END, jsou-li mazany radky s cisly mensimi nez
je cislo radku, na kterem je prikaz DEL, nebo pokud se maze radek, na kterem
je prikaz DEL. Smazou-li se radky s cisly vetsimi, program pokracuje dal,
promenne programu zustavaji zachovany. Nechceme-li, aby se provedl prikaz END
po smazani radku, lze mazat radky prikazem EXE("DEL m,n:GOTO x").
DIM <array name>(<array size>[,..])[,..]
Provadi dimenzovani ciselneho nebo retezcoveho pole ( nebo matice ). Jmeno
pole je uvedeno primo, pocet dimensi nesmi byt vetsi nez 255, maximalni
velikost jednoho rozmeru je 65 535. Rozmery zacinaji od 0.
DRAW <GR coordinates>[;<GR coordinates>][;..]
Nakresli v jemne grafice jednu nebo vice usecek dane dvema krajnimi body nebo
pozici grafickeho kurzoru.
END
Ukoncuje beh programu a maze jeho promenne.
EVENT <interrupt interval>[,<delay time>]
Zadani intervalu pro pravidelne prerusovani pres "ON EVENT GOSUB ...". Prvni
parametr urcuje delku intervalu preruseni v sedesatinach sekundy. Druhy para-
metr znamena cas, ktery se ma pockat nez se zacne s prerusovanim a je rovnez
v sedesatinach sekundy.
EVENT {ON/OFF}
Povoleni nebo zakazani intervaloveho prerusovani.
EXE <character string>
Argumentem prikazu je libovolny retezec znaku ktery obsahuje jeden prikazovy
radek jazyka BASIC-F. Prikaz zajisti jeho provedeni. Pokud zacina prikazovy
radek cislem, je interpretovan prvni prikaz jako GOTO na uvedeny radek.
FCOL [<color code>]
Obarveni textu nebo urceni barvy pro kresleni. Parametr udava kod barvy.
FOR <control variable>=<initial value> TO <final value> [STEP <step value>]
Provadi postupne prirazovani hodnoty od pocatecni ( <initial> ) do koncove
( <final> ) se zvolenym krokem prirustkem hodnot ( <step> ) do promenne uve-
dene za FOR. Kazdy FOR musi mit odpovidajici NEXT. Cykly do sebe lze vnorit,
avsak nesmeji se krizit. Pri vypoctu se porovnavaji hodnoty v desitkove sou-
stave, nelze tedy pouzit cykl FOR I=&7FF0 TO &8010 .. NEXT I, protoze deka-
dicky je &7FF0 vetsi nez &8010.
FX <drive number>,<character string>[,[<AF>][,[<BC>][,[<DE>][,[<HL>]
[,[output buffer adress,lenght][input buffer adress,lenght][,memory]]]]]]
Prikaz pro komunikaci s disketovou jednotkou FD-5. Memory je typ pameti,
odkud nebo kam se maji zapsat data ( 0 = RAM, 1 = VRAM ).
GCOPY [<format type>]
Provadi okopirovani obsahu obrazovky ( GII ) na pripojenou tiskarnu. Parametr
urcuje format, s jakym se bude kopirovat:
0 = 1:1 - jeden bod na obrazovce odpovida jednomu bodu na tiskarne
1 = 2:1 - jeden bod na obrazovce odpovida ctyrem bodum na tiskarne
GET [#<channel number>[[,..]<variable>[,..]]
Nacteni hodnoty z daneho kanalu. Typ nacitanych konstant musi byt shodny
s typy uvedenymi v prikazu PUT. Prikaz je obdobou READ.
GINIT
Inicializuje jemnou grafiku v GII a MULTICOLURu.
GMODE [<mode 1>][,<mode 2>]
Nastaveni vlastnosti jemne grafiky - nastaveni grafickych rezimu. Tyka se
predevsim moznosti pri stretnuti se dvou bodu nebo barev v jednom bode obra-
zovky. Hodnoty parametru:
0 - pri stretu dvou barev dojde k jejich vymene, tj prednost ma nova barva
1 - pri stretu dvou barev se mezi nimi provede logicky soucet "OR" a vysledek
je kod nove barvy
2 - pri stretu dvou barev se mezi nimi provede logicky soucin "AND" a vysle-
dek je kod nove barvy
3 - pri stretu dvou barev je zachovana barva stara
4 - pri stretu dvou bodu ( nebo umistuje-li se bod na pozici, kde uz nejaky
bod je ) se tyto vymeni, tj. zbyde ten novy
5 - pri stretu dvou bodu se mezi nimi provede logicky soucin "AND" a vysledek
je bod
6 - pri stretu dvou bodu se mezi nimi provede logicky exklusivni soucet "XOR"
a vysledek je bod
7 - pri stretu dvou bodu se zachovava bod stary
GMOVE <GR coordinates>
V GII umistuje graficky kursor na bod o zadanych souradnicich.
GOSUB { <line>/<destination> }
Skok do podprogramu. Misto skoku je urceno bud primo cislem radku, kde pod-
program zacina, nebo navestim ( $ ), pro navrat do hlavniho programu slouzi
prikaz RETURN.
GOTO { <line>/<destination> }
Prikaz skoku. Vykonavani programu pokracuje na uvedene radce.
CHAIN [<file name>][,ALL]
Nahraje a spusti program v jazyce BASIC-F ( vcetne typu FILE - .DT ). Para-
metr ALL urcuje, ze se maji zachovat promenne a jejich hodnoty.
IF <conditional expression> THEN <statement>[:..][ ELSE <statement>[:..]]
Podminka. Prikazy za THEN se provedou pouze tehdy, je-li logicky vyraz mezi
IF a THEN pravdivy. V opacnem pripade se provedou prikazy za ELSE a pokud
nejsou uvedeny ( bez ELSE ) pokracuje beh programu na dalsi radce. V zadnem
pripade nemohou byt oboje prikazy provedeny zaroven. Jako relacni operatory
( porovnavaci ) lze pouzit: '<' '>' '<=' '>=' '=' '<>'
INPUT [<text>[#<channel number>]]{,/; }<variable>[,..]
Prikaz pro vstup dat z daneho kanalu; je-li za textem pouzita jako oddelovac
mezera vytiskne se za text otaznik a na obrazovce se objevi kursor. V jednom
prikazu INPUT lze naplnit nekolik promennych. Pri psani z klavesnice se hod-
noty naplnovanych promennych oddeluji carkami. Data navic se ignoruji, naopak
pri jejich nedostatku je hlasena chyba 25. K nacteni dat dojde po stisku exe-
kucni klavesy <RETURN>.
KILL <file name>
Maze soubor na diskete ( FX: ), nebo jinem specifikovanem zarizeni.
LEN <character string length>
Urcuje maximalni delku retezcove promenne. Po zapnuti pocitace nebo po RUN je
urcena na 18. Lze ji menit v rozsahu 1 az 140 ( maximalne az 255, je-li dos-
tatecne zvetsen operacni prostor pro basic - viz FRE(2) ). Chceme-li mit vice
promennych ruznych delek, provede se ( napr. ):
10 LEN 1:A$,B$="":LEN 9:MESIC$="":...
LET <variable>[,..]=<expression>
Prikaz prirazeni. Prikaz vypocte dany vyraz a jeho hodnotu zapise do promenne
pred rovnitkem. Prikaz LET se nemusi vypisovat ( prikaz A=B+C je ekvivalentni
prikazu LET A=B+C ).
LIST [<descriptor>/<file name>][,<line number 1>][,<line number 2>]
Prikaz k vypsani programu v BASICu na obrazovku, tiskarnu, magnetofon nebo
jine zarizeni. Nepouzita cisla radek jsou dosazena jako 0 a 32767. Vypis
programu na obrazovku lze zastavovat stiskem <SPACE> a po zastaveni prerusit
stiskem <RETURN> nebo kdykoli stiskem <SHIFT>+<RESET>. Pouzije-li se
<file name>, je vypis proveden na zarizeni specifikovane ve jmenu. Neni-li
zarizeni ve jmenu uvedeno je vypis proveden na implicitni zarizeni. Soubor
ukladany na magnetofon ci disk je typu FILE ( tj. nesouvisly - "jmeno.DT" ).
LOC <sprite number> TO <GR coordinates x>,<GR coordinates y>
Umisteni spritu na zadane souradnice.
LOCATE <X>,<Y>
Nastavi kurzor na dane souradnice. Ekvivalentni "PRINT CURSOR(X,Y);".
MAG [<sprite modifier>]
Urceni velikosti vsech spritu. Parametr udava:
0 - 8*8 bodu ( normalni velikost jako znaky )
1 - 8*8 bodu dvakrat zvetseno ( jeden bod spritu prekryva 4 body znaku )
2 - 16*16 bodu ( predloha je ulozena ve ctyrech po sobe jdoucich spritech )
3 - 16*16 bodu dvakrat zvetseno
NEW
Provede smazani programu z pameti pocitace. ( Fyzicky prikaz nuluje jenom
prvni dva byte programu a v systemovych promennych nastavi konec programu
a konec promennych na hodnotu zacatku programu. Po omylem zadanem NEW staci
dosadit pomoci prikazu POKEW PEEKW(&726A),N delku prvniho radku programu a
program je mozne listovat a nekdy i spustit. Editovat jej lze pouze tehdy,
obnovime-li puvodni hodnoty systemovych promennych na kterych jsou adresy
konce programu (&726C) a promennych (&726E). Nejmensi delka radku N je 6. )
NEXT [<control variable>[,..]]
Uzavreni cyklu FOR .. TO .. . Viz FOR .. .
NOLIST [<line number>]
Zakaze provadeni prikazu LIST a CLIST. Program lze spustit a doplnit do neho
nove radky, ktere se ulozi pred nezobrazitelne radky. Nove radky lze zobrazit
prikazy LIST a CLIST. Uvedene cislo umoznuje urcit pocatecni cislo nezobrazi-
telnych radek.
OLD [<file name>]
Nahraje program nebo data ze specifikovaneho zarizeni. Neni-li ve jmenu za-
rizeni uvedeno je soubor nacten z implicitniho zarizeni ( magnetofon, disk ).
Neni-li uvedeno jmeno, je z magnetofonu nahran prvni nalezeny soubor ( pre-
skoceny jsou programy typu .BI, .BG, .LS, .SC a .FC ).
ON ERROR GOSUB { <line>/<destination> }
Definice podprogramu pro obslouzeni preruseni pri vyskytu chyby pri behu pro-
gramu. Pomoci prikazu RESUME je mozne chybu zapomenout a vratit se zpet do
hlavniho programu. Nektere chyby ignorovat nelze. Prikaz CLEAR rusi nastaveny
ON ERROR GOSUB .. .
ON EVENT GOSUB { <line>/<destination> }
Definice podprogramu pro obslouzeni pravidelneho prerusovani.
ON <expression> GOSUB <seznam>
Tzv. prepinac. <expression> musi mit po vyhodnoceni hodnotu vetsi nez nula.
<seznam> je rada cisel radku. Pocet radku v seznamu musi odpovidat maximalni
hodnote vyrazu. Po vyhodnoceni vyrazu, vysledek je treba 5, se skoci
do podprogramu urcenym patym cislem v seznamu ( nemusi byt jen cislo, ale
i navesti ).
ON <expression> GOTO <seznam>
Viz ON .. GOSUB ..
ON <expression> RESTORE <seznam>
Viz ON .. GOSUB .. , DATA, READ, RESTORE.
OPEN <file name>[FOR {INPUT/OUTPUT/APPEND}] AS#<CH>[Record<record lenght>]
Otvira soubor pro cteni nebo zapis na danem perifernim zarizeni. Pocitac
rozeznava tato periferni zarizeni:
vstupni: vystuni:
CNS - klavesnice znakova obrazovka
GRP - graficka obrazovka
PRT - znakova tiskarna
PRI - graficka tiskarna
CMT - kazetovy magnetofon kazetovy magnetofon
FX - diskova jednotka diskova jednotka
SIO - seriova komunikace seriova komunikace
Ve specifikaci souboru se periferni zarizeni oddeluje od jmena souboru dvoj-
teckou.
OUT <port number>,[<output data>[,..]]
Posila data na urceny osmibitovy port. Port je urcen adresou ( 0 - 255 ),
neuvedena data ( z rozsahu 0 - 255 ) se dosazuji jako 0.
PAINT <GR coordinates>[,<boundary color>[,..]]
V jemne grafice umoznuje vybarvovat plochu ohranicenou krivkou nebo krajem
obrazovky. Barva je dana FCOLem. <GR coordinates> jsou souradnice bodu,
od ktereho se zacne barvit. Odbarvit lze pomoci FCOL 0.
PLOT <GR coordinates>[;..]
V GII vykresli na danou pozici jeden nebo vice bodu. Barva je dana FCOLem.
POKE <memory address>[,<data>[,..]]
Uklada do RAM ciselna data v rozsahu 0 - 255.
POKEW <memory address>,<output data>
Uklada do RAM ciselna data v rozsahu &0000 - &FFFF.
PRINT [#<channel number>][<expression>[{,/;}..]]
Zobrazi data, text, hodnoty promennych a vyrazu na danem zarizeni ( neuvedene
zarizeni - tj. bez '#cislo' - je brano jako #0, coz je CNS ).
<expression> muze byt:
text - PRINT "Ahoj!"
cislo - PRINT 54
promenna - PRINT A;A$
vyraz - PRINT 1+7/B-C*LEN(A$)
funkce - PRINT CURSOR(3,4); nebo - PRINT TAB(18);
slozeny - PRINT CURSOR(1,10);"Vysledek nasobeni";A;"*";B;"=";A*B
Oddelovace ";" a "," slouzi k omezovani textu tisteneho do obrazovky.
PUT [#<channel number>][[,..]<expression>[,..]]
Generuje data na zarizeni otevrene prikazem OPEN. Opak prikazu GET.
RANDOMIZE [<numeric value>]
Inicializuje generator nahodnych cisel.
READ <variable list>
Cte ze seznamu data, ktera jsou ulozena na radcich za prikazem DATA. Ukazatel
odkud se maji data zacit cist je urcem prikazem RESTORE nebo po RUN nalezenim
prvnich dat v programu.
RECORD #<channel number>[,..]<record number>
Nastavuje explicitni delku zaznamu pro jednu polozku pri operacich GET a PUT
( obdoba LEN u retezce ).
REM <character string>
Oddeluje komentare v programu od vlastnich prikazu. Program komentar nijak
nezpracovava.
RENUM [<new line number>][,<old line number>][,<added line number>]
Provadi precislovani radek programu se vsemi GOTO, GOSUB, RESUME a RESTORE,
pripadne i RETURN. <old> predstavuje cislo radky, od ktere se zacne s precis-
lovanim a <new> je budouci cislo teto radky. <added> je krok precislovani.
Prikaz neprecisluje LIST a DEL. Nelze pouzit po provedeni prikazu NOLIST.
REPEAT
Oznaceni zacatku cyklu "repeat". Viz UNTIL.
RESTORE [<line number>]
Prikaz souvisejici s DATA a READ. Pri cteni dat z programu existuje ukazatel,
ktery urcuje, odkud se data prave ctou a timto prikazem lze tento ukazatel
posunout na zacatek jineho radku. Vynechanim parametru se ukazatel umisti
na prvni data v programu.
RESUME [<line number>]
Umoznuje zapomenuti chyby ( viz ON ERROR GOSUB ) a pokracovani v behu progra-
mu. Neuvedene cislo radku znamena totez co RETURN s tim, ze se program spusti
besprostredne za mistem, kde k chybe doslo. Uvede-li se cislo radku, beh pro-
gramu pokracuje na radce s timto cislem.
RETURN [<line number>]
Navrat do vyssi urovne programu z podprogramu. Viz GOSUB.
RUN [<file name>/<line number>]
Je-li pouzito jmena, provede se nejprve nahrani programu v BASICu jako pri
prikazu OLD. V kazdem pripade se spusti program v BASICu od uvedeneho radku
nebo od prvniho radku programu.
SAVE <file name>[,<first address>,<last address>[,<start address>]][#<n>]
Zaznamena data nebo program na magnetofon nebo jine zarizeni. Pouzije-li se
SAVE "123456789", nahraje se program v BASICu s nazvem 123456789. V maximalne
devitiznakovem jmenu programu nebo dat se mohou vyskytovat i ridici kody,
ktere se pri zpetnem nahravani provadeji. Pri zaznamenavani na jine zarizeni
nez implicitni, se pred jmenem programu uvede jmeno zarizeni ( max 3 znaky )
a oddeli se dvojteckou. Uvedenim cisla za <file name># se urcuje, zda-li ma
byt program v jazyce BASIC:
0 - po nahrani automaticky spusten;
1 - nekopirovatelny ( nelze jiz jeho SAVE );
2 - uzamcen pro editaci;
3 - uzamcen pro listing.
Jednotliva cisla urcuji primo dolni 4 bity cisla <n>. Napriklad #15 znamena
nastaveni vsech bitu.
Ostatni parametry se pouziji v pripade zaznamenavani programu nebo dat .CM:
<first> - pocatecni adresa nahravani
<last> - koncova adresa nahravani
<start> - pripadna startovaci adresa pro program ve strojovem kodu, ktery se
ma po nahrani sam spustit.
SCOD <sprite number>,<numeric code>
Definuje tvar spritu podle zadanych parametru:
<number> - cislo spritu 0 az 31
<numeric> - kod predlohy 0 az 255 ( urcuje, kde je v setu 0 nadefinovany za-
dany tvar )
SCOL <sprite number>,<color>
Urcuje barvu spritu. Je-li barva vetsi nez 128, provede se zmena rohove sou-
radnice spritu z leveho horniho rohu na pravy horni roh.
SG <channel number>,[{<frequency>/<noise>}][,<volume>]
Aktivizuje zvukovy generator. Parametry:
<channel> - cislo zvukoveho kanalu, 0 az 2 pro tonovy, 3 pro sumovy.
<freq.> - urcuje frekvenci tonu dle vzorce: F=111860/<pozadovana frekvence>;
<noise> - urcuje charakter sumu:
pro sum periodicky:
0 - N/512
1 - N/1024
2 - N/2048
3 - frekvence je rovna frekvenci druheho kanalu.
pro sum bily:
4 - N/512
5 - N/1024
6 - N/2048
7 - frekvence je rovna frekvenci druheho kanalu.
Maximalni frekvence je 111860 Hz. Pro tonove kanaly je <freq.> v rozsahu
0 - 1023. Hlasitost <volume> je v rozsahu 0 - 15 od nejmensi po nejvetsi.
Umlceni jednoho kanalu se provede prikazem ve tvaru: SG <channel>,,0
SLEEP <sleep count>[,<increment time>]
Casova prodleva v behu programu. <count> je doba prodlevy,<increment> je krok
casu. Neuvedeny se dosadi jako 60 a <count> je pak v sekundach. Doba prodlevy
se vypocte: SLEEP = <count> * <increment> * 1/60 sec.
STCHR <pattern code> TO <character code>[,<chracter set number>
Definuje tvar znaku a spritu nebo barev znaku v GII. Parametry:
<pattern code> - retezec ( nasobek 8mi dvojic ) hexadecimalnich kodu vyjadru-
jicich tvar nebo barvu
<character code> - predstavuje cislo znaku kam se ma predloha zapsat
<set> - jeden ze sedmi moznych generatoru tvaru ( a barev ) znaku:
0 - vyhrazen pro predlohy spritu
1 - v GI a T - tvar znaku, v GII - tvar znaku pro horni tretinu obrazovky
2 - v GII - tvar znaku pro stredni tretinu obrazovky
3 - v GII - tvar znaku pro dolni tretinu obrazovky
4 - v GII - barva znaku pro horni tretinu obrazovky
5 - v GII - barva znaku pro stredni tretinu obrazovky
6 - v GII - barva znaku pro dolni tretinu obrazovky
7 - v GII - tvar znaku pro vsechny tretiny obrazovky
8 - v GII - barva znaku pro vsechny tretiny obrazovky.
Nepouzity <set> se dasazuje jako 0.
STEP {ON/OFF}
Povoluje nebo zakazuje trasovani programu. Po spusteni programu pri povolenem
trasovani je jakoby na konci kazdeho radku prikaz STOP.
STOP
Zastaveni behu programu. Pokracovani od mista zastaveni je mozne prikazem
CONT. Po zastaveni se vypise hlaska STOP AT xxx, kde xxx je cislo radku,
na kterem se beh programu zastavil.
SWAP <variable>,<variable>
Provede vymenu hodnot danych promennych. Zamenuje i retezce, ale ma drobnou
vadu ( pozor na LEN! ).
TAPE
Zinicializuje system a nahraje z magnetofonu jakykoli soubor ( krome .VM
a .DT ) a pripadne jej odstartuje. Pri chybe nacita dalsi soubor z pasky.
Prikaz TAPE neni mozne zrusit.
THETA X
Prikaz urcuje,bude-li se u goniometrickych funkci pracovat v radianech (X=0),
nebo ve stupnich (X=1).
TRACE {ON/OFF}
Povoleni nebo zakazani trasovani. Trasovani - pocitac vypisuje cisla radku
ve forme [ xxx ] ktere prave vykonava na obrazovku.
TYPE {INT/DBL/STR}
Urci, jakeho typu maji byt neoznacene promenne na prikazove radce a v jakem
rezimu maji probihat vypocty ( INT - integer, DBL - real, STR - string ).
UNTIL <logical expression>
Prikaz cyklu. Uzce souvisi s REPEAT. Obecny tvar prikazu:
REPEAT: ... :UNTIL logicky vyraz
Provadi se prikazy mezi REPEAT a UNTIL dokud neni splnen logicky vyraz.
VERIFY [<file name>]
Kontroluje soubor zaznamenany na uvedenem ( nebo implicitnim ) zarizeni
se souborem ulozenym v pameti pocitace. Neni-li uvedeno jmeno, kontroluje
prvni nalezeny soubor. Kontrola se neprovadi, je-li soubor typu FILE ( .DT ).
VIEW [<X0>,<Y0>,<X1>,<Y1>]
Nastavi rozmer aktivni casti obrazovky.Po zapnuti je VIEW 0,0,31,23, po prep-
nuti do rezimu TEXT je VIEW 0,0,39,23. Bez parametru nastavi maximalni okno.
VPOKE <memory address>,<output data>[,..]
Obdoba prikazu POKE, ale operuje s pameti VRAM. Adresa 0 - &3FFF urcuje misto
ulozeni dat, ktere jsou z rozsahu 0 - 255.
VSAVE <file name>,<beginning address>,<ending address>
Zaznamena obsah pameti VRAM - podrobnosti syntaxe viz SAVE.
WAIT <time out count>[,<increment time>]
Casova prodleva pro cteni z klavesnice. Zadani casu je stejne jako u SLEEP.
4. Funkce jazyka
**********************
ABS(X)
Vraci absolutni hodnotu cisla ( vyrazu, funkce ) X.
ASCII(X$)
Vraci ASCII kod prvniho znaku retezce X$.
ATN(X)
Vraci hodnotu goniometricke funkce arcus tangens X.
CALC(<string>)
Argumentem funkce je libovolna retezcova konstanta nebo promenna, ktera
obsahuje libovolny aritmeticky vyraz s funkcemi ve znakove forme. Pri pro-
vadeni se do vyrazu dosadi okamzite hodnoty promennych a vyraz se vypocita.
CDBL(X)
Prevede integer hodnotu na jeji realny ekvivalent.
CINT(R)
Prevede realnou hodnotu na jeji zaokrouhleny integer ekvivalent.
COS(X)
Vraci hodnotu odpovidajici goniometricke funkci COS X. Rozsah hodnot X
je ± 2.8E16.
CURSOR(X,Y)
Umisti kurzor na souradnice X,Y. Funkce je soucasti prikazu PRINT.
ERR
Vraci cislo posledni vyskytnute chyby. Nebyla-li, vraci 0.
ERRL
Vraci cislo radku, kde nastala posledni chyba. Nebyla-li, vraci -1.
ERRL$
Vraci navesti radku, kde nastala posledni chyba. Nebylo-li zadne navesti po-
uzito, vraci znak, jehoz kod je 00.
EXP(X)
Vraci vysledek e ( e = 2.718281828459 ) umocneneho na X. Cislo X je z roz-
sahu -175 < X < 174.
FIX(X)
Vraci hodnotu dle vzorce FIX(X)=SGN(X)*INT(ABS(X)), tj. cele cislo, ktere je
nejblizsi cislu 0 na ciselne ose.
FRE(X)
Vraci informaci o obhospodareni pameti. Parametr X urcuje:
0 - maximalni volno pro uzivatelsky prostor
1 - volno pro program a promenne
2 - volno pro zasobnik a operacni prostor
3 - FRE 1 + 2
4 - posledni adresa dosazitelna systemem BASIC
5 - konec fyzicke RAM pameti
HEX$(X)
Vraci ctyrznakovy retezec odpovidajici v hexadecimalni soustave cislu X.
CHR$(X)
Opak ASCII. Vraci znak, jehoz kod je hodnota parametru X.
INKEY$
Vraci znak odpovidajici stiskle klavese. Nereaguje na stisk samotne klavesy
FUNC, CTRL, SHIFT a ignoruje RESET. Je-li povolena funkce FUNC vraci pri
stisku <FUNC>+<neco> postupne vsechny znaky dane funkce ci prikazu.
INP(X)
Vraci hodnotu ( 0 - 255 ) ze vstupniho osmibitoveho portu na adrese X.
INSTR([X],Y$,Z$)
Hleda retezec Z$ v retezci Y$. Je-li pouzito parametru X, hleda od pozice X
v retezci Y$. Nepouzite X je dosazeno jako 1. Byl-li zadany retezec nalezen,
vraci cislo pozice, od ktere byl nalezen. Nebyl-li nalezen, vraci hodnotu 0.
INT(X)
Vraci nejblizsi mensi cele cislo nez je X.
LEFT$(X$,Y)
Vraci X znaku zleva z retezce X$.
LEN(X$)
Vraci delku retezce X$.
LN(X)
Vraci hodnotu prirozeneho logaritmu X. LN(EXP(X))=X
LOG(X)
Vraci hodnotu dekadickeho logaritmu X. LOG(10^(X))=X
MID$(X$,Y[,Z])
Vraci Z znaku od Y-te pozice z retezce X$. Neuvedene Z je dosazeno jako 1.
NUM$(X,Y,Z)
Prevadi cislo X na alfanumericky retezec. Parametr Y udava celkovou delku
retezce pred desetinnou teckou i s pripadnymi mezerami. Parametr Z udava
celkovy pocet znaku za desetinnou teckou i s desetinnou teckou. Soucet obou
parametru dava celkovou delku retezce.
PEEK(X)
Vraci hodnotu odpovidajici obsahu bytu v pameti na adrese X.
PEEKW(X)
Vraci hodnotu odpovidajici obsahu dvou bytu v pameti na adrese X. Matematicky
definovano: PEEKW(X)=PEEK(X)+256*PEEK(X+1).
PI
Vraci hodnotu cisla PI ( PI=3.14151265359 ).
RDST$(X)
Vraci retezec znaku o delce maximalne X precteny od pozice kurzoru.
REG(X)
Vraci obsah registru procesoru Z80A, pokud nastane po volani CALL navrat zpet
do BASICu. Parametr X urci, o jaky registr se jedna:
0 - AF
1 - BC
2 - DE
3 - HL
RIGHT$(X$,Y)
Obdoba LEFT$, vraci Y znaku zprava z retezce X$.
RND(X)
Vraci nahodne cislo, z intervalu <0,X>, pricemz musi platit X>0. Typ vysledku
je shodny s typem parametru X.
RPT$(X,Y$)
Vraci X krat retezec Y$.
SGN(X)
Vraci informaci o znamenku cisla X: -1 pro X<0, 0 pro X=0 a +1 pro X>0.
SIN(X)
Vraci hodnotu odpovidajici goniometricke funkci SIN X. Rozsah hodnot X
je ± 2.8E16.
SQR(X)
Vraci hodnotu druhe odmocniny z X.
TAB(X)
Lze pouzit v prikazu PRINT. Provede posunuti kurzoru na Xtou pozici od zacat-
ku radku, nelze-li, provede odradkovani.
TAN(X)
Vraci hodnotu goniometricke funkce tangens X. Rozsah hodnot X je ± 2.8E16.
TIME
Vraci cas ( v sekundach ), ktery uplynul od zapnuti pocitace. Tento cas nelze
zmenit jinak, nez "pouky" do systemovych promennych.
VAL(X$)
Vraci hodnotu prvni konstanty v retezci X$. Napriklad: VAL("28*5") vrati 28.
VARPTR({X/X$})
Vraci adresu ulozeni promenne X nebo X$ v pameti pocitace.
VPEEK(X)
Vraci obsah bytu pameti VRAM na adrese X.
XCHG(X)
Provadi vymenu dvou bytu promenne X.
5. Poznamky k praci
*************************
Editaci programu ( rozumej pridavani, mazani a oprava programovych radku )
se nerusi jiz existujici basicke promenne ( rozdil oproti BI a BG ). Prikaz
END promenne zrusi, stejne jako CLEAR nebo stisk <SHIFT>+<RESET>. U dlouhych
( vic nez 10kB ) programu, se nektere prikazy provedou az za chvili ( zatimco
u kratkych programu se provadeji "ihned" ). Napriklad pri SAVE ( na CMT: )
chvili trva, nez sepne rele, pri RUN zase, nez se program rozbehne. Totez
plati i pri stisku <SHIFT>+<RESET>. Nez se vypise "Ready", musime mit chvili
trpelivost. V zadnem pripade vsak <SHIFT>+<RESET> nemackejte znovu, ve snaze
vypsani "Ready" urychlit!
6. Uzamykani a odemykani programu
***************************************
Prikaz NOLIST zpusobi precislovani radku programu na zaporna a prikaz LIST
pote neprovadi jejich vypis. Precislovani zpet na kladna cisla se provede
zavolanim rutiny RENUM: CALL &44F5,,,1
V pripade, ze se pri odeslani prikazu LIST nebo pri odeslani programoveho
radku, ktery zacina cislem vypise hlaska Err 5 in 0, lze program odemknout:
SAVE "jmeno"#0, nebo POKE PEEKW(&726C)-1,0
7. Chybova hlaseni jazyka
*******************************
ERR Vyznam Blizsi specifikace
-----------------------------------------------------------------------------
1 FOR - NEXT nespravne razeni NEXTu ve FORech
2 syntaxe neznamy prikaz nebo spatne parametry
3 chyba v rutine CLEAR, GOTO, GOSUB, RETURN
4 chyba pri cteni dat READ, DATA
5 pletete si promenne nevhodna promenna
6 preteceni moc velke cislo
7 neni pamet moc dlouhy program, mnoho promennych, CLEAR
8 neexistujici cislo radku GOTO, GOSUB, RESUME, RESTORE, ( RETURN )
9 chyba poli mimo rozsah DIM
10 chyba poli druhe DIM na teze jmeno
11 deleni nulou
12 chybne pouziti prikazu CONT, poskozeny program, prilis dlouhy radek
13 chybna data zamena ciselne promenne za retezcovou
14 preteceni zasobniku maly pracovni prostor pri operacich s retezci
15 moc dlouhy retezec male LEN, vice nez 256 $
16 chyba poli neexistujici pole
17 dvakrat stejne navesti
18 chyba pri praci s magnetofonem
19 nespravny rezim obrazovky napr. sprite v TEXT, GINIT jindy nez v GII
20 chyba spritu MOVE, SPRITE po ERASE
21 chyba zasobniku POP bez PUSH
22 UNTIL - REPEAT UNTIL bez REPEAT
23 casove preteceni INPUT, EVENT a READY od mechaniky
24 chyba v RESUME nektere chyby nelze ignorovat
25 chyba v INPUT odeslani bez dat
30 chyba komunikace SIO spatna vstupni data do kanalu
100 zadny volny kanal vsechny kanaly byly otevreny
101 kanal nebyl otevren kanal nelze pouzivat, je treba pouzit OPEN
102 kanal je jiz pouzit na kanalu smi byt otevren jen jeden soubor
103 zarizeni je jiz pouzito zarizeni umoznuje otevrit jen jeden soubor
104 nevhodne jmeno souboru neexistujici zarizeni nebo dlouhe jmeno
105 nevhodny pristup tato operace neni na danem zarizeni pripustna
106 chybny soubor chyba v attributech souboru
107 chyba komunikace data prenasena do a z FD-5 jsou spatna
130 neznamy prikaz pro FD-5 v prikazu FX pouzivej jen existujici prikazy
131 nevhodne cislo mechaniky pri "FXmn:" pouzivej pro n jen 0 a 1
132 nekorektni jmeno souboru prazdne jmeno souboru neni dovoleno
133 mimo rozsah diskety zadane cislo bloku neni v povolenych mezich
139 spatny parametr hodnota parametru v prikazu FX je nepripustna
140 chyba komunikace data prenasena do FD-5 jsou spatna
141 chybna delka dat FD-5 ocekava jinou delku vysilanych dat
142 break operace v FD-5 byla nasilne prerusena
150 konec radky
151 prekroceni typu zaznam o cteni nebo zapis polozky se spatnou delkou
152 konec dat na mediu pokus o cteni dat za koncem souboru
153 konec souboru pokus o cteni dat za koncem souboru
154 plny disk neni misto pro dalsi data
155 mnoho souboru neni misto pro hlavicku souboru
156 zaznam neni ukoncen predchozi polozka nebyla prectena cela
160 neni volny kanal vsechny kanaly jsou vyuzity. Na jedne jednotce
FD-5 mohou byt soucasne otevreny jen 4 soubory
161 kanal je jiz pouzit
162 kanal neni otevren kanal byl uzavren nejakym prikazem pro FD-5
163 zadny kanal neni pouzit
164 mechanika je aktivni neni mozne pouzit nektere prikazy FX
170 chybejici soubor specifikovany soubor neni na disku
171 soubor je jiz pouzit soubor je otevren na jinem kanalu
172 soubor jiz existuje specifikovany soubor je jiz na disku
175 spatne jmeno diskety disketa se jmenuje jinak
180 cteni souboru zakazano
181 zapis do souboru zakazan
182 smazani souboru zakazano
183 zakaz zmeny ochran souboru
184 soubor je chranen heslem
185 disketa je chranena heslem
186 cteni diskety zakazano
187 zapis na disketu zakazan
188 cteni bloku diskety zakazano
189 zapis bloku na disketu zakazan
190 jina disketa behem operace je ocekavana jina disketa
191 nevhodny pristup kolize parametru pri otevirani souboru
199 panika predpokladane udaje nesouhlasi se skutecnosti
Vnitrni chyby od radice v jednotce FD-5
=======================================
200 chybny prikaz pro radic
201 mechanika nereaguje na prikazy
202 zakaz zapisu na disketu
203 ztrata signalu ST1 ready
204 nedokoncena operace s disketou
205 nenalezen zadany sektor
206 chyba CRC
207 ztrata dat, CPU nestaci predavat/prebirat data
208 chyba recalibrate
209 nenalezena zadana stopa
210 cteni za koncem stopy
213 chybny vyber hlavicky
214 mechanicky problem pri cteni nebo zapisu
215 ztrata signalu ready
216 nenalezena stopa 0
------------------------------------------------------------------------------
Podle ruznych materialu a
na zaklade vlastnich zku-
senosti sestavil a napsal
LZR Soft. V Kladne 1988.
Vydani treti,pocet vytisku
dle potreby. Vytisteno na
tiskarne LA120 firmy DEC.
-------------------------------------------------------- pro WWW upravil K5 --