SORD M5 BASIC-G
|
|
English, PDF, 52.1 MB |
English (OCR), DOCX, 2.57 MB |
-- SORD m.5 ------------------------------------------------------------------
1. Uvod
*************
Tato prirucka obsahuje seznam prikazu a funkci jazyka BASIC-G s jejich blizsim
vysvetlenim. BASIC-G je dlouhy 16kB a muze byt obsazen v pametich EPROM osaze-
nych v modulu BASIC-G nebo muze byt zaveden do pameti RAM (v modulu 64kB RAM).
Jazyk BASIC-G sestava z programu ve strojovem kodu od adresy &2000 do adresy
&5FFF.
Jazyk umi obsluhovat vsech 32 spritu z toho lze soucasne samocinne pohybovat
12ti sprity s plne kontrolovanym pohybem. Dale umi obsluhovat interpretr SML
( zvukovy generator ) basickym prikazem PLAY, umi pracovat s jemnou grafikou.
2. Specifikace jazyka
***************************
Jazyk BASIC-G je urcen pro elegantni tvorbu pocitacovych her.Svymi 160ti pri-
kazy a funkcemi pokryva vsechny pozadavky moderniho programovani. Jde zejmena
o osmistupnovou uroven preruseni ( reakce na chybu,na dotek klavesnice,ovlada-
ce,dovrseni nastaveneho casu, pravidelne prerusovani, stret spritu a multipro-
ces ), naprostou funkcni kontrolu vsech prikazu [ napriklad na prikaz PLAY A$
zacne hrat zvukovy generator podle notove predlohy ulozene v promenne A$
a funkci PLAY(0) lze zjistit, zda-li jeste hraje ], strukturovane prikazy
REPEAT UNTIL, moznost pouziti navesti ( tedy ignorovani pro BASIC typickych
cisel radku ), zpristupneni moznosti procedur s parametry pres prikazy POP
a PUSH a zejmena multiproces mezi CPU ( vypocet ), VDP ( zobrazeni ) a SG
( zvuk ) ovladany na urovni BASICu pomoci CTC ( v praxi to znamena, ze pocitac
muze soucasne pocitat, zobrazovat a hrat ).
Programy v jazykce BASIC-I lze bez problemu provozovat i v jazyce BASIC-G. Je-
dinou vyjimku tvori prikazy CLEAR a SAVE, kdy neni totozne zadavani parametru
a dale potom existuji ruzne konfliktni stavy systemu, ktere BASIC-I ignoruje,
zatim co BASIC-G je hodnoti jako chybne.
3. Prikazy jazyka
***********************
$<label name>
Prirazuje radce jmeno. Delka navesti muze byt maximalne 32 znaku.
! <character string>
Viz REM.
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 nebo stiskem <SHIFT>+<RESET>.
ALARM {ON/OFF}
Povoleni nebo zakazani preruseni pri dosazeni casu stejneho jako v ALARM$.
ALARM$
Promenna pro zadani casu "buzeni". Nelze pouzit v prikazu PRINT.
BAR <GR coordinates 1>,<GR coordinates 2>
Prikaz jemne grafiky, namaluje plny pravouhly ctyruhelnik urceny dvema rohy.
Barva je urcena FCOLem.
BCOL [<color code>]
Urcuje parvu pozadi obrazovky a zaroven barvu "barvy 0".
BOX <GR coordinates 1>,<GR coordinates 2>
Obdoba BAR, ale vykresli jen obrys.
CALL <assembler program address>
Provede skok na urcenou adresu do programu ve strojovem kodu.
CIRCLE XR[,YR][,UHEL][,OD][,DO][,NATOC][,SPOJ]
Prikaz jemne grafiky. Podle pouzitych parametru nakresli:
XR=YR, nebo nepouzity YR - kruznice o polomeru XR;
XR<>YR - elipsa
UHEL - vytvari z puvodni kruznice "N-uhelnik", pricemz UHEL=360/N.
OD - urcuje pocatecni uhel kresleni
DO - urcuje koncovy uhel kresleni
NATOC - simuluje natoceni v prostoru
SPOJ=1 - spojuje pocatecni bod kresleni se stredem useckou
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) ).
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.
COINC {ON/OFF}
Povoleni nebo zakazani preruseni behu programu pri stretu dvou a vice spritu.
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 - rolovani obrazovky pri dopsani dolu (0/1)
D - urceni viditelne obrazovky (0/1)
E - urceni obrazovky pro kurzor (0/1)
F - rezim obrazovky: 0=M, 1=GII, 2=GI, 3=T
G - nahravaci rychlost ( 33=2030 Bd )
CONT
Pokracovani behu programu, byl-li pred tim zastaven pomoci prikazu STOP
v programu, nebo stiskem <CTRL>+<RESET>.
DATA <constant>[,..]
Ciselna i retezcova data ulozena v programu. Viz READ, RESTORE.
DEL [<line number 1>][,<line number 2>]
Prikaz smaze programove radky v uvedenem rozsahu.
DIM <array name>(<array size>[,..])[,..]
Provadi dimenzovani ciselneho nebo retezcoveho pole ( nebo matice ). Jmeno
pole je uvedeno primo, pocet dimenzi 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.
ELIST [<#ID>/<file name>][,<line number 1>][,<line number 2>]
Provede vypis programu na obrazovku, tiskarnu nebo magnetofon, pricemz smaze
obrazovku a odstrani z ni i sprity. Podrobnosti viz LIST.
ELISTC [<#ID>/<file name>][,<line number 1>][,<line number 2>]
Stejne jako ELIST s tim, ze vypis je velkymi pismeny.
END
Ukoncuje beh programu a maze jeho promenne.
ERASE [[<sprite number>][,..]]
Odstranuje z obrazovky sprity urcene jejich cislem, pricemz nenarusi jejich
nadefinovany tvar. Bez parametru odstrani vsechny sprity.
ESCRN [<screen number>][,<switch>]
Umoznuje pracovat s dalsimi obrazovkami systemu. Prvni parametr urcuje
obrazovku 0 - 8, druhy parametr urcuje zpusob jak do teto obrazovky vstoupit:
0 - pouhe prepnuti do nove
1 - prepnuti do nove + jeji CLS
2 - prepnuti do nove s prekopirovanim obsahu stare obrazovky na novou.
Prikaz nelze pouzit, je-li na nektere zakladni obrazovce rezim GII.
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.
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.
GCOPY [<format type>]
Provadi okopirovani obsahu obrazovky ( GII ) na pripojenou tiskarnu. Parametr
urcuje format, s jakym se bude kopirovat:
0 = 40 znaku na radek
1 = 80 znaku na radek
2 az 7 = osmdesati znakove formaty lisici se formou zobrazeni jednoho bodu
obrazovky na tiskarne.
Zaroven je zavislost na nastavenych parametrech pomoci PMODE.
GINIT [<screen clear specifier>][,<screen clear request>
Inicializuje jemnou grafiku v GII a MULTICOLURu. Prvni parametr urcuje
od ktereho znaku bude probihat inicializace ( nepouzit je roven 255 ). Druhy
parametr urcuje typ inicializace obrazovky:
0 = uplna inicializace ( znaky, barvy, graficky kurzor, graficke rezimy )
1 = castecna inicializace, tvar a barvy znaku zustanou zachovany, obrazovka
je pouze znovu pokryta znaky, tedy vsechny kresby, ktere byly nakresleny,
jsou zachovany.
2 = castecna inicializace, je inicializovana pouze barva a tvar znaku, pre-
kryti obrazovky zustava zachovano.
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 kurzor 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>]
Nahraje program v jazyce BASIC-I nebo BASIC-G jako prikaz OLD a spusti jej.
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>]{,/; }<variable>[,..]
Prikaz pro vstup dat z klavesnice, je-li za textem pouzita jako oddelovac me-
zera vytiskne se za text otaznik a na obrazovce se objevi kurzor. 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>.
JOINT [<sprite number 1>[ TO <sprite number 2>],<link position>]
Spojovani spritu. Prvni uvedeny sprit se vaze na druhy sprit podle urceni po-
zice. Typ spojeni:
0 - zruseni prave jednoho spojeni uvedenych spritu
1 - spojeni prvniho spritu s druhym spritem na teze pozici
2 - spojeni prvniho spritu vpravo od druheho spritu
3 - spojeni prvniho spritu dolu od druheho spritu
4 - spojeni prvniho spritu vlevo od druheho spritu
5 - spojeni prvniho spritu nahoru od druheho spritu
6 - rozpojeni vsech spojeni od prvniho spritu. Spojeni pod prvni sprit jsou
zachovana
7 - rozpojeni vsech spojeni
JOY {ON/OFF}
Povoleni nebo zakazani preruseni behu programu pri zadani smeru na ovladaci.
KEY {ON/OFF}
Povoleni nebo zakazani preruseni behu programu pri stisku jakekoli klavesy.
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 128 ( maximalne lze, pri dostatecne
velkem operacnim prostoru pro basic, mit LEN 255 ). Chceme-li mit vice pro-
mennych 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 [<#ID>/<file name>][,<line number 1>][,<line number 2>]
Prikaz k vypsani programu v BASICu na obrazovku, tiskarnu nebo magnetofon.
Parametr za # znamena:
0 - vypis na obycejnou obrazovku, rezim T, GI, GII
1 - vypis na grafickou obrazovku ( GII ) po GINIT
2 - vypis na tiskarnu, znaky jsou pojaty jako znaky ze souboru tiskarny
3 - vypis na tiskarnu, znaky jsou pojaty ze souboru pocitace a bere se ohled
na parametry urcene PMODE
Nepouzita cisla radek jsou dosazena jako 0 a 32767. Vypis programu na obra-
zovku lze zastavovat stiskem <SPACE> a po zastaveni prerusit stiskem <RETURN>
nebo kdykoli stiskem <SHIFT>+<RESET>. Pouzije-li se <file name>, napriklad
LIST "UFO GAME",je vypis proveden na magnetofon. Vznikly soubor je typu FILE,
tj. nesouvisly, s priponou .LS.
LISTC [<#ID>/<file name>][,<line number 1>][,<line number 2>]
Viz LIST, s tim ze vypis je proveden velkymi pismeny.
LOC <sprite number> TO <GR coordinates x>,<GR coordinates y>
Umisteni spritu na zadane souradnice. Pouzitim LOC se zrusi vsechny pohyby
a nerespektuje se spojeni pomoci JOINT.
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
MOVE <sprite number>[ IN <post number>] TO <GR coordinates>[,<speed>]
provede plynule presunuti spritu, ktery jiz nekde na obrazovce je, na novou
pozici urcenou souradnicemi danou rychlosti ( 1 - nejvyssi rychlost ).
<post number> predstavuje poradove cislo pohybu tohoto spritu, neni-li pou-
zito je rovno cislu spritu a jeden sprite ma tak narok pouze na jeden pohyb.
MOVE <sprite number>[ IN <post number>] STEP <x direction,<y direction>
[,<speed>]
Pohybuje spritem s krokem X a Y. Viz MOVE .. TO ..
MOVE <sprite number>[ IN <post number>] ON <GR coordinates>
Nahle premisti sprite na danou pozici. Nenarusi ostatni slozky pohybu.
MOVE {ON/OFF}
Povoleni nebo zakazani pohybu spritu. Po RUN je vzdy ON.
MPRINT(<rank number>,<line number>);<character rank>
Vytiskne <character rank> jako matici o <rank> sloupcich a <line> radcich.
Levy horni roh je urcen pozici kurzoru.
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),1 prvni byte a program je mozne
listovat a nekdy i spustit. Editovat jej lze pouze tehdy, obnovime-li puvodni
hodnoty systemovych promennych &726C a &726E - konec programu a promennych. )
NEXT [<control variable>[,..]]
Uzavreni cyklu FOR .. TO .. . Viz FOR .. .
OLD [<file name>]
Nahraje program nebo data z magnetofonu. Neni-li uvedeno jmeno, nahraje prvni
nalezeny soubor ( preskoci programy typu .BF, .DT a .FC )
ON ALARM GOSUB { <line>/<destination> }
Definice podprogramu pro obslouzeni preruseni pri dosazeni zadaneho casu.
( Viz ALARM$ a ALARM )
ON COINC GOSUB { <line>/<destination> }
Definice podprogramu pro obslouzeni preruseni pri stretu dvou a vice spritu.
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 JOY GOSUB { <line>/<destination> }
Definice podprogramu pro obslouzeni preruseni pri stisku ovladace.
ON KEY GOSUB { <line>/<destination> }
Definice podprogramu pro obslouzeni preruseni pri stisku klavesy na klavesni-
ci ( mimo RESET ), nebo tlacitka ATTACK na ovladaci.
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.
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.
OUTW <port number>[,<data>[,..]]
Posila data na urceny sestnactibitovy port. Port je urcen primo adresou,
data jsou z rozsahu &0000 - &FFFF.
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.
PLAY [<melody 1>][,<melody 2>][,<melody 3>]
Inicializuje hudebni generator. Podrobnosti viz kapitola Prikaz PLAY.
PLOT <GR coordinates>[;..]
V GII vykresli na danou pozici jeden nebo vice bodu. Barva je dana FCOLem.
PMODE [<longest output line>][,<POUT characteristic>][,<image characteristic>]
[,<image list pitch>][,<image copy pitch>][,<image mode set sequence>]
Nastavuje parametry pro tisk na tiskarnu. Viz BASIC-G MANUAL.
POKE <memory address>,<output data>
Uklada do RAM od zadane adresy ciselna data v rozsahu 0 - 255.
POKEW <memory address>,<output data>
Uklada do RAM ciselna data v rozsahu &0000 - &FFFF.
POP <variable>[,..]
Vybere ze zasobniku hodnotu a ulozi ji do promenne. Viz PUSH.
PRINT [<#ID>][<expression>[{,/;/ }..]]
Zobrazi data, text, hodnoty promennych a vyrazu na obrazovce nebo tiskarne.
Parametr ID viz LIST. <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 rizeni tisteneho textu.
PUSH <expression>
Provadi ulozeni hodnoty do zasobniku. Zasobnik je zvlastni utvar, ze ktereho
lze vybirat POPem hodnoty pouze v opacnem poradi, nez tam byly ulozeny.
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.
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.
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 [<destination>]
Spusti program v BASICu od uvedeneho radku nebo od prvniho radku programu.
SAVE <file name>[,<first address>,<last address>[,<start address>]]
Zaznamena data nebo program na magnetofon. 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 zpet-
nem nahravani provadeji. 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
SKIP [<file name>]
Preskoci data nebo program zaznamenany na magnetofonu. Vypisuje se Find "..."
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 hexadecimalnich kodu vyjadrujicich 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.
STCHR [<character set selection>]
Podle pouziteho <set> inicializuje dle systemoveho standardu:
0 - znaky a sprity
1 - znaky.
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.
TAPE
Nahraje a spusti program ve strojovem kodu.Jmeno lze uvest ale je ignorovano.
Prikaz TAPE neni mozne zrusit.
TRACE [#ID]{ON/OFF}
Povoleni nebo zakazani trasovani. Trasovani - pocitac vypisuje cisla radku
ve forme [ xxx ] ktere prave vykonava bud na tiskarnu, nebo na obrazovku.
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 magnetofonu se souborem ulozenym v pameti
pocitace. Neni-li uvedeno jmeno, kontroluje prvni nalezeny soubor. Kontrola
se neprovadi, je-li program typu FILE, tj. nesouvisly s priponou .LS.
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>]
Nahraje obsah pameti VRAM na magnetofon. Syntaxe je stejna jako u 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$.
ASW(X)
Vraci informaci o stavu tlacitka ATTACK na joypadech. Parametr X:
0 - z leveho joypadu
1 - z praveho joypadu;
Vraci:
0 - nic nestisknuto
1 - stisknuta leva polovina tlacitka
2 - stisknuta prava polovina tlacitka
3 - stisknuto cele tlacitko
COINC(X[,M][,N])
Vraci cislo spritu, jenz se srazil se spritem X. Nedoslo-li ke srazce, vraci
hodnotu -1. Doslo-li k nekolika srazkam, vraci cislo spritu jenz ma cislo
nejnizsi. Pouziji-li se parametry M a N, je kontrolovana na srazku pouze
oblast od spritu M do spritu N. Nepouzita se dosadi jako 0 a 31.
COLOR(X)
Vraci barvu znaku podle rezimu:
TEXT: X=0 - barva znaku
X=1 - barva pozadi
GI: barva znaku X
GII: kod nastavene barvy ( prikaz FCOL ). Neni-li proveden GINIT, vraci
barvu znaku X
MCOL: stejne jako v GII.
COS(R,X)
Vraci hodnotu odpovidajici goniometricke funkci R*COS X.
CURSOR(X,Y)
Umisti kurzor na souradnice X,Y. Funkce je soucasti prikazu PRINT.
DIST(X0,Y0,X1,Y1)
Vraci druhou mocninu vzdalenosti dvou bodu jez jsou zadany souradnicemi.
DRCT(X0,Y0,X1,Y1)
Vraci informaci o poloze v kvadrantech bodu XY0 vuci myslenemu stredu XY1.
Kvadranty: 3 | 4
---------
2 | 1
Je-li bod XY0 na jakekoli ose, vraci taz cisla, ale zaporna.
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.
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
HEX$(X)
Vraci ctyrznakovy retezec odpovidajici v hexadecimalni soustave cislu X.
CHR$(X)
Opak ASCII. Vraci znak, jehoz kod je hodnota parametru X.
INKEY(X)
Vraci informace odpovidajici stavu klavesnice. Pro X=0 vraci cislo odpovida-
jici stiskle klavese, pro X=1 vraci cislo odpovidajici stavu tlacitek CTRL,
FUNC a SHIFT. Viz poznamka na strane 14.
Neni-li stiskle zadne tlacitko, vraci 0.
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.
INPW(X)
Vraci hodnotu ( 0 - &FFFF ) ze vstupniho sestnactibitoveho 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.
JOY(X)
Vraci informaci o stavu packy ( nebo kolecka ) na joypadech.
Pro X=0 vraci z leveho joypadu ( pro X=1 z praveho joypadu ) hodnoty:
8 1 2
\ | /
7 --- 3
/ | \
6 5 4
Neni-li stisknuto nic, vraci nulu.
LEFT$(X$,Y)
Vraci X znaku zleva z retezce X$.
LEN(X$)
Vraci delku retezce X$.
LINK(X[,Y])
Vraci informaci o spojovani spritu. X urcuje cislo spritu. Pro nepouzite Y,
nebo pro Y=0, vraci cislo spritu, jenz je spojen se spritem X. Pro Y=1 vraci
poradi spojeni podle typu napsanych u JOINT.
MID$(X$,Y[,Z])
Vraci Z znaku od Y-te pozice z retezce X$. Neuvedene Z je dosazeno jako 1.
MRCRT$(X,Y)
Vraci retezec odpovidaci matici X*Y znaku na obrazovce ( opak MPRINT ).
Roh matice je urcen pozici kurzoru pro tisk.
NUM$(X)
Vraci retezec odpovidajici obsahem cislu X. Prevadi tak cislo na retezec.
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).
PLAY(X)
Vraci stav zvukoveho kanalu X. 0=mlci, 1=hraje. Dulezita funkce pro synchro-
nizaci hudby.
POINT(X,Y)
V rezimu MULTICOLOR vraci barvu ( 0-15 ) bodu na souradnicich X a Y. V rezimu
GII vraci barvu bodu ( 0-15 ), ktery nebyl vytvoren primo nekterym z grafic-
kych prikazu, nebo barvu bodu ( 0-32 ) existujiciho ( je v predloze jako 1 ).
POS(X)
Vraci informaci o pozicich kurzoru. Pro X vraci:
0 - X souradnici kurzoru
1 - Y souradnici kurzoru
2 - X souradnici grafickeho kurzoru
3 - Y souradnici grafickeho kurzoru.
POST [ ([M],[N]) ]
Vraci informaci o vyuzitelnosti POST cisla ( viz MOVE ), je-li post cislo M
nevyuzito, vraci -1, jinak vraci cislo spritu, ktery toto post cislo vyuziva
ke svemu pohybu. Uvede-li se parametr N lze kontrolovat naraz celou oblast
post cisel M az N na jejich vyuziti.
POSTAD(X)
Vraci adresu umisteni udaju o spritu X v pameti ( jde o oblast systemovych
promennych ).
RCRT(X,Y)
Vraci ASCII kod znaku, jez se nachazi na obrazovce na pozici X,Y.
RDCHR$(X,Y)
Vraci retezec hexadecimalniho rastru znaku X ze setu Y.
RDST$(X)
Vraci retezec znaku o delce maximalne X precteny od pozice kurzoru.
RETL
Vraci cislo radky nebo adresu, kam ma byt proveden nejblizsi RETURN.
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.
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(R,X)
Vraci hodnotu odpovidajici goniometricke funkci R*SIN X.
SPRITE(X,Y)
Vraci informace o spritu X. Pro Y vraci:
0 - Y souradnice spritu
1 - X souradnice spritu
2 - ASCII kod predlohy spritu
3 - barvu spritu
STATUS(X)
Vraci informaci o vyuziti post cisla spritu X: 0 = nevyuzito, 1 = pouzito
( pohybuje se ). Viz prikaz MOVE.
TAB(X)
Lze pouzit v prikazu PRINT. Provede posunuti kurzoru na Xtou pozici od zacat-
ku radku, nelze-li, provede odradkovani.
TERMC
Tato funkce neni nikde popsana.
TIME
Vraci cas ( v sekundach ), ktery uplynul od zapnuti pocitace. Tento cas nelze
zmenit jinak, nez "pouky" do systemovych promennych.
TIME$
Vraci cas v systemovych hodinach ve tvaru HH:MM:SS. Tento cas lze menit pomo-
ci prirazeni TIME$="HH:MM:SS" a nelze pouzit v INPUT.
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.
4.1. Poznamka k funkci INKEY(1)
===================================
Funkce INKEY(1) vraci hodnoty podle nasledujici tabulky ( hodnoty jsou
vyjadreny hexadecimalne) :
0 - neni stiskla zadna z klaves CTRL, FUNC, levy SHIFT nebo pravy SHIFT
1 - CTRL
2 - FUNC
3 - CTRL + FUNC
4 - levy SHIFT
5 - CTRL + levy SHIFT
6 - FUNC + levy SHIFT
7 - CTRL + FUNC + levy SHIFT
8 - pravy SHIFT
9 - CTRL + pravy SHIFT
A - FUNC + pravy SHIFT
B - CTRL + FUNC + pravy SHIFT
C - levy SHIFT + pravy SHIFT
D - CTRL + levy SHIFT + pravy SHIFT
E - FUNC + levy SHIFT + pravy SHIFT
F - CTRL + FUNC + levy SHIFT + pravy SHIFT
Zobrazime-li si vracene cislo v binarni forme, pak znamenaji jednotlive bity:
xxx1 - stiskly CTRL
xx1x - stiskly FUNC
x1xx - stiskly levy SHIFT
1xxx - stiskly pravy SHIFT
5. Poznamka k praci s prerusovanim programu
*************************************************
Poznamka se tyka prikazu "ON ... GOSUB". Nastane-li naprogramovana udalost
( to znamena bylo-li ON ERROR GOSUB a dojede k chybe, nebo bylo-li ON KEY ...
a dojde ke stisku klavesy ... ) prerusi se vykonavani programu a jeho provade-
ni pokracuje na radku uvedenem v "ON ... GOSUB ...", tzn. v podprogramu preru-
seni. Beh hlavniho programu se obnovi po prikazu RETURN. Pokud nastane preru-
seni v okamziku vykonavani prerusovaciho podprogramu, preruseni se ignoruje.
To je dulezite pokud mame "ON COINC ...". Muze se totiz stat, ze driv nez sta-
cime vyhodnotit jednu srazku,nastane druha, kterou jiz nemame sanci obslouzit.
Proto je potreba, aby byly prerusovaci podprogramy kratke a rychle. Je-li to
mozne, je dobre pri vstupu do jednoho preruseni zakazat ostatni preruseni
a pohyb spritu a pred odchodem vse opet povolit. Mame-li "ON KEY ..." a drzi-
me-li klavesu i po navratu z preruseni, k novemu preruseni jiz nedojde a to
i kdyz je zaply AUTOREPEAT. Protoze v basiku nejsou lokalni a globalni promen-
ne, je nutne aby podprogram vyuzival jen sve vlastni promenne a promenne hlav-
niho programu pouzival jen tehdy,je-li to potrebne. Preruseni maji ruznou
prioritu, ktera je dana jejich charakterem. Nejvyssi prioritu ma obslouzeni
chyby.
6. Upozorneni na chyby v interpretru
******************************************
V interpretru basiku se jeho autori dopustili techto nekolika drobnych chyb:
Prikaz LET - nasleduje-li po seznamu promennych misto znaku "=" nektery
z prikazu TIME$, COLOR, LEN, JOY, COINC nebo PLAY, dojde k nedefinovanemu
chovani ( napriklad A,B PLAY "C" ).
Prikaz LINK - druhy parametr prikazu nefunguje.
Tyto chyby lze opravit zmenou hodnot v interpretru, napriklad, je-li natazen
v pameti RAM, prikazy POKE &adresa,&novy.
adresa stary novy
3869 - 3E - 5C
386E - 39 - 57
464B - 42 - 43
5FFF - A6 - 69
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 v promennych pole mimo rozsah DIM ( 0>X>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 a EVENT
24 chyba v RESUME nektere chyby nelze ignorovat
25 chyba v INPUT odeslani bez dat
------------------------------------------------------------------------------
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.
------------------------------------------------------------------------------
Původní verze příručky
Původní podoba příručky: BASICG.SM5 (38KB, plain text including escape sequences for the LA120 DECWriter III) od LZR Soft.