-- 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. -------------------------------------------------------- pro WWW upravil K5 --