Your Spectrum software: MEGA BASIC + SPRITE DESIGNER Preklad a úprava František Fuka - F U X O F T 1985 _______________________________________________________________________________ Ako začať: Nahranie YS MegaBasicu je jednoduchosť sama. Vložte: LOAD "" YS MegaBasic je dodávaný na páske spolu s programom nazvaným Sprite Designer, ktorý vám umožňuje vytvárať sprajty, ktoré môžete potom používať vo svojich programoch. KLÁVESNICA Akonáhle sa MegaBasic nahrá, uvidíte krátku úvodnú správu a inverznú medzeru v ľavom dolnom rohu obrazovky. Toto je nový kurzor a udáva, kde sa budú objavovať vami zadávané príkazy. YS MegaBasic využíva pre input celú obrazovku, oproti normálnemu Spectru, ktoré má obrazovku rozdelenú na dve časti. Skúste stlačiť niekoľko tlačítok na klávesnici a všimnete si, že sa neobjavujú obvyklé kľúčové slová... Miesto toho vidíte samostatné písmená. Všetky príkazy musíte zadávať písmeno po písmene - vlastnosť, ktorá zmenila klávesnicu vášho Spectra v niečo, čo sa blíži klávesnici normálneho počítača. Toto má však nevýhodu v tom, že napr. príkaz PRINT, ktorý ste na Spectre získal stlačením jediného tlačítka, musíte teraz získať stlačením piatich tlačítok: P,R,I,N,T. Preto vám YS MegaBasic umožňuje mnoho príkazov písať skratkami. Teraz nasleduje kompletný zoznam kľúčových slov spolu s ich skratkami. Slová ktoré tu nenájdete nemajú skratky, a teda ich musíte vypisovať celé. Tiež si všimnite, že skratka príkazu musí končiť bodkou; napr. skratka z "CONTINUE" je "CON.". A.TTR ER.ASE ME.RGE RES.TORE BE.EP E.XP M.OVE RET.URN B.IN FL.ASH NE.XT R.ND BO.RDER F.ORMAT N.OT SA.VE BR.IGHT GO S.UB OP.EN # S.CREEN$ CH.R$ G.O TO OV.ER ST.R$ CI.RCLE I.NKEY$ PA.PER T.AB CLE.AR INP.UT PAU.SE TH.EN CL.OSE # INV.ERSE PE.EK U.SR C.ODE L.EN PL.OT V.AL$ CON.TINUE LI.NE P.OINT VE.RIFY DA.TA LL.IST PR.INT D.EF FN LP.RINT RA.NDOMIZE DR.AW LO.AD RE.AD Uvedomte si tiež, že ak chcete vkladať vcelku príkazy ako GO TO alebo OPEN #, nesmiete vypustiť medzery, ktoré sa v nich vyskytujú, počítač rozumie príkazu GO TO, ale GOTO dáva správu 'Syntax error'. Spodný riadok obrazovky je použitý na zobrazovanie módu kurzora. V nasledujúcej tabuľke sú uvedené normálne módy Spectra spolu s ekvivalentnými správami MegaBasicu: Mód kurzoru Správa v dolnom riadku ------------------------------------------ 'L' CAPS OFF 'C' CAPS ON 'E' CAPS OFF EXTENDED 'G' CAPS OFF GRAPHICS Mód kurzoru je menený obvyklým spôsobom - použitím tlačítok Caps Lock, Graphics, Caps Shift a Symbol Shift. EDITOR MegaBasic má výborné schopnosti editácie a preto niektoré tlačítka fungujú inak než u štandartného Spectra: EDIT Skopíruje programový riadok do editačného riadku TRUE VIDEO Zmaže celý text v editačnom riadku INVERSE VIDEO Vymaže text napravo od kurzora '<=' Presunie kurzor na začiatok editačného riadku '<>' Vymaže text od kurzoru do konca riadku '=' Presunie kurzor na koniec editačného riadku SCREEN$ Zobrazí automatický listing (do okna 1). Riadok s programovým kurzorom bude prvý na obrazovke. OR Posunie určený riadok hore a zobrazí automatický listing AND Posunie určený riadok dolu a zobrazí automatický listing STOP Posunie kopírovací kurzor o jeden znak doľava NOT Posunie kopírovací kurzor o jeden znak hore STEP Posunie kopírovací kurzor o jeden znak dole TO Posunie kopírovací kurzor o jeden znak doprava AT Skopíruje znak pod kopírovacím kurzorom pod editačný kurzor. Kopíruje iba znaky štandartnej veľkosti OVER Presunie kopírovací kurzor do ďalšieho okna INVERSE Presunie kopírovací kurzor do ľavého horného rohu daného okna Všimnite si, že obrazovka je rozdelená na štyri okná, z ktorých každé má svoje špecifické určenie: Okno nula zobrazuje užívateľský input a chybové hlásenia, okno jedna zobrazuje automatický listing, produkovaný riadkovým editorom, okno dve zobrazuje výsledky programu a okno tri je využité pre zobrazenie čelného panelu (viď ďalej). Keď nahráte YS MegaBasic, môžete si myslieť, že na obrazovke je iba jedno okno, ale to nie je pravda. Na obrazovke sú štyri okná, ktoré sa prekrývajú. Všimnite si tiež, že druhý kurzor môže byť používaný ku kopírovaniu textu z inej časti obrazovky pod editačný kurzor (input cursor). Tento kurzor (kopírovací) vyzerá ako blikajúci štvorec na obrazovke a môže byť premiestňovaný pomocou riadiacich tlačítok. Kopírovací kurzor pracuje iba v oknách nula, jedna a dva. Akýkoľvek riadok môže byť editovaný buď klasickým spôsobom ( CAPS SHIFT + '1' ) alebo pomocou príkazu 'EDIT_'. Za príkazom 'EDIT_' musí nasledovať numerický výraz, ktorý udáva, ktorý riadok má byť editovaný. Ak riadok s udaným číslom neexistuje, je použitý riadok s najbližším vyšším číslom. Ak taký riadok tiež neexistuje, zobrazí sa chybové hlásenie 'Line not found'. KLÁVESY DEFINOVATELNÉ UŽIVATEĽOM Je možné naprogramovať klávesy horného riadku klávesnice aby produkovali reťazec až 255 znakov dlhý. K naprogramovaniu klávesy použite príkaz 'KEY_' spolu s numerickým výrazom a reťazcom (oddeleným čiarkou). Numerický výraz udáva ktoré tlačítko má byť nadefinované, reťazec udáva čo má byť na tlačítku nadefinované. Umiestnenie znaku ENTER (CHR$ 13) za reťazec vám umožní aby sa nadefinované príkazy hneď automaticky vykonali. Aby ste sa nemuseli zdržovať definovaním tlačítok s príkazmi 'RUN' a 'LOAD', YS MegaBasic ich už obsahuje: VERIFY obsahuje reťazec 'RUN + CHR$ 13'. Toto tlačítko okamžite spustí program uložený v pamäti. VAL$ Obsahuje reťazec 'LOAD"":RUN + CHR$ 13'. Nahrá program z magnetofónu a spustí ho. RIADIACE KLÁVESY V dobe keď beží program je medzera (SPACE) použitá ako nové tlačítko SHIFT, takže aby ste získal medzeru, musíte stačiť dohromady SYMBOL SHIFT a SPACE. O medzere stlačenej spolu s iným tlačítkom budeme hovoriť ako o riadiacej klávese: CONTROL F Zobrazí čelný panel (viď ďalej) CONTROL E Zastaví vykonávanie programu - Spectrum vytlačí správu 'Escape' a vráti sa do editora. CONTROL R Zastaví vykonávanie programu, zapne BORDER, PAPER a INK na ich počiatočné hodnoty, vytlačí úvodnú správu a aktivuje editor. Nevymaže program ! VÝSTUP NA OBRAZOVKU OKNÁ Veľkosť a vzhľad znaku a spôsob akým môžu byť tlačené, sú faktory, ktoré boli YS MegaBasicom veľmi rozšírený. Teraz je napríklad možné smerovať výstupné hodnoty programu do určitej oblasti obrazovky. Tieto oblasti sa nazývajú 'OKNA' a môžu mať akúkoľvek veľkosť. YS MegaSpectrum má 10 okien - číslovaných od nuly do deväť a všetky môžete používať vo svojich programoch (aj keď, ako bolo povedané, okná nula až tri sú už používané systémom). Keď beží váš program, príkaz PRINT automaticky používa okno dve. Je ale možné prepnúť výstup do iného okna príkazom 'CURRENT_'. Príkazové slovo je nasledované číslom okna, ktoré má byť použité. Veľkosť a poloha okna sa definuje príkazom 'WINDOW_', ktorý má formu: WINDOW_y,x,d,w kde 'y' (číslo riadku, v ktorom sa nachádza ľavý horný roh okna) môže byť 0 až 23, 'x' (číslo stĺpca, v ktorom sa nachádza ľavý horný roh okna) môže byť 0 až 63, 'd' je výška okna a 'w' je šírka okna. Pretože YS MegaBasic zaviedol 64 znakov na riadok, obrazovka má vlastne rozmery 24x64. Štandartné funkcie Spectra ATTR a SCREEN$ stále používajú starý súradnicový systém, ale PRINT AT používa nový systém. Uvedomte si tiež, že súradnice príkazu PRINT AT sú relatívne vzhľadom k ľavému hornému rohu určeného okna, zatiaľ čo ATTR a SCREEN$ používajú absolútne súradnice. Po vykonaní príkazu 'WINDOW_' sa pozícia tlače presunie do ľavého horného rohu okna. CLS a CLW Štandartný príkaz CLS je používaný pre mazanie celej obrazovky. Nový príkaz CLW je určený k vymazaniu jedného okna. Slovo CLW je nasledované jedným alebo dvoma číslami. Ak sú čísla dve, potom prvé udáva číslo okna, ktoré má byť vymazané a druhé udáva o aký typ 'zmazania' ide. Ak je vložené iba jedno číslo, je použité okno, s ktorým sa práve pracuje. V nasledujúcej tabuľke 'n' je číslo okna: CLW_n,0 Vymaže okno (zaplní ho farbou permanentného papiera) CLW_n,1 Zaplní okno farbou permanentného inku CLW_n,2 Zmení INK v okne na PAPER a naopak CLW_n,3 Vymaže iba atribúty. Vo všetkých prípadoch sa pozícia pre tlač presunie do ľavého horného rohu. Príkaz CLW vždy používa permanentné atribúty z práve aktívneho okna. Takže napríklad ak je vykonaný príkaz CLW_0,0 a aktívne je okno 3, potom okno 0 bude vymazané s použitím atribútov okna 3. PAN a SCROLL Pomocou týchto príkazov môžete pohybovať okna po jednom pixli do všetkých smerov. PAN posunuje okno do strán, SCROLL posunuje okno hore alebo dole. Za oboma príkazmi musia byť dve čísla. Prvé číslo udáva, či má byť okraj okna vyplnený farbou inku alebo papiera. Ak je toto číslo jedna, okraj je vyplnený inkom. Ak je nula, okraj je vyplnený farbou papiera. Ďalšie číslo udáva ako ďaleko a do ktorého smeru má byť okno posunuté. Ak je pri príkaze 'PAN_' druhé číslo kladné, okno sa posunie doprava. Ak je záporné, okno sa posunie doľava. U príkazu 'SCROLL_' - ak je druhé číslo kladné, okno sa posunuje hore, ak je záporné, okno sa posunuje dole. Tiež je možné umožniť oknám aby sa po prekročení okraja obrazovky objavili na rovnakom mieste na protiľahlej strane (wraparound) použitím príkazu 'PANW_' a 'SCROLLW_' Pomocou príkazu FX môžete určovať, ktoré výstupy sa majú tlačiť do ktorých okien. FX_0,n Určí okno, v ktorom sa má zobrazovať zadávanie príkazu a chybové hlásenia FX_1,n Určí okno pre automatický listing FX_2,n Určí okno pre užívateľský výstup FX_3,n Určí okno, v ktorom sa má zobrazovať čelný panel Takže napr. 'FX_0,5' zaistí, že okno 5 bude zobrazovať chybové hlásenia. MODE Znaky môžu byť teraz tlačené na obrazovke v štyroch veľkostiach pomocou príkazu 'MODE_': MODE_n,1 Vyvolá mód 64x24 znakov - maximálne rozlíšenie MODE_n,2 Vyvolá štandartnú veľkosť znakov MODE_n,3 Vyvolá znaky s dvojitou výškou MODE_n,4 Vyvolá znaky s dvojitou výškou i šírkou. Pri tejto veľkosti môžete použiť tieňovanie (viď ďalej) Za slovom 'MODE_' môže byť jedno alebo dve čísla (ako pri príkaze CLW). V jednom okne sa môže vyskytovať niekoľko veľkostí naraz. Pri práci v móde 4 môžete používať STIPPLOVANIE pri ktorom znaky vypadajú tieňovane. Uvedomte si, že v móde 4 sú znaky 4x väčšie a teda každý pixel zaberie v skutočnosti pixle štyri. Stipplovanie umožňuje určiť zostavu týchto 4 pixlov. čím vzniká efekt tieňovania. Zostava pixlov sa zadáva príkazom 'STIPPLE_' a číslom z intervalu 0 až 15. Čím je číslo vyššie, tým tmavšie je tieňovanie. FONT MegaSpectrum má v pamäti tri druhy písma. Druh písma s ktorým má Spectrum pracovať sa určuje príkazom FONT: FONT_0 Vyvolá štandartné znaky FONT_1 Vyvolá 1.set rovnaké písmo ako na BBC Micro alebo na Acorn Electronu uložené od adresy 48000 FONT_2 Vyvolá 2.set (ako Amstrad CPC 464) od adresy 45000 Príkaz FONT zmení charaktery pre VŠETKY tlačené, nie iba pre jedno okno. CHR$,VDU a DOWN MegaSpectrum má niekoľko nových riadiacich znakov: CHR$ 1-4 ako MODE 1-4 CHR$ 7 Zinvertuje znak pod kurzorom CHR$ 24-31 Určí okno, ktoré má byť použité pre výstup; napr.CHR$ 24 = okno 0; CHR$ 31 = okno 7 Nový príkaz VDU vykoná to isté ako príkaz PRINT CHR$. Napríklad: VDU_2 Prepne na štandartnú veľkosť znaku VDU_65, 66 Vytlačí 'AB' Reťazec znaku môže byť vytlačený použitím príkazu DOWN vo forme: DOWN_y,x,a$ Kde y je riadok, x je stĺpec a a$ je reťazec, ktorý má byť vytlačený. Ak reťazec dosiahne spodného okraje okna, tlač ďalej pokračuje opäť od vrchu okna. SPRINT a PRINTER SPRINT umožňuje tlač znaku v akejkoľvek veľkosti. Jeho forma je: SPRINT_x,y,a,b,a$ Kde x a y udávajú pozíciu (v pixloch) odkiaľ má začať tlač, 'a' a 'b' udávajú zväčšenie v smere x a y, a a$ je reťazec, ktorý má byť vytlačený. (Pri príkaze SPRINT je pozícia 0,0 v ľavom HORNOM rohu) Príkaz PRINTER umožňuje výstup na periférne zariadenie (napr. na tlačiareň). Za príkazom nasleduje číslo. Ak toto číslo je iné než nula, všetky ďalšie výstupy pôjdu miesto na obrazovku na periférne zariadenie. Užívateľ musí do Spectra vložiť podprogram v strojovom kóde pre výstup znaku na zvolené periférne zariadenie. Adresa tohoto podprogramu musí byť uložená na adrese 59934/59935. Znak ktorý má byť vytlačený je pri volaní podprogramu uložený v akumulátore. Podprogram musí byť ukončený inštrukciou RET. POZOR ! ! ! Pri pokuse o použitie 'CLEAR #', 'OPEN #2' alebo 'CLOSE' sa systém zrúti ! GRAFIKA CHANGE, SWAP Príkaz CHANGE umožňuje zmenu určitých častí atribútov. Za príkazom nasledujú dve čísla: 'maska' a data. Maska určuje bity, ktoré majú byť v každom atribúte zmenené. Data určujú, k akým zmenám má dôjsť. CHANGE_1 Maska je negovaná t.j. všetky jedničky sa zmenia na nuly a naopak CHANGE_2 Každú byte atribútov je ANDovaný s negovanou maskou CHANGE_3 Každý byte atribútov je ORovaný s data bytom Príkaz SWAP je nasledovaný dvoma číslami v rozmedzí 0-255. Všetky atribúty ktoré majú hodnotu prvého čísla, sú nahradené druhou hodnotou. FADE Príkaz FADE je určený k produkovaniu efektov. Nasleduje za ním číslo x v rozsahu 0-255. Počítač prechádza všetky atribúty a tie, ktoré nemajú hodnotu x dekrementuje. Toto opakuje tak dlho, dokiaľ všetky atribúty nemajú hodnotu x. INVERT U atribútov celej obrazovky zamení PAPER za INK a naopak. DEFG Definuje UDG znaky. Má formát: DEFG_a$,b1,b2,b3,b4,b5,b6,b7,b8 Predefinuje definovateľný znak obsadený v a$ podľa bytu b1 až b8. Napr. DEFG_"H",255,255,255,255,255,255,255,255 nadefinuje grafické "H" ako plný štvorec. GET a PUT Je možné uchovávať časť obrazovky v pamäti a potom ju vrátiť späť na obrazovku, do inej pozície. Toto umožňujú dva príkazy: GET a PUT. 'GET' uloží obrazovku do pamäte a 'PUT' uloží obsah pamäte na obrazovku. Príkaz 'GET' má tvar: GET_0,a,y,x,d,w Kde 'a' je adresa v pamäti, od ktorej sa má obrazovka ukladať, 'y' je číslo riadku ľavého horného rohu, 'x' je číslo stĺpca ľavého horného rohu 'd' je výška a 'w' je šírka oblasti, ktorá má byť uložená. Príkazy PUT a GET používajú rovnaké súradnice, ako napr. štandardný SCREEN$ alebo ATTR. 'GET' ukladá do pamäte najskôr display file a potom atribúty. Použite príkaz CLEAR k vyhradeniu časti pamäte pre uchovanie obrazovky. Môžete vypočítať počet bytov ktoré zaberie uchovaná časť obrazovky podľa výrazu: 9 * w * d Príkaz 'PUT' má tvar PUT_f,a,y,x,d,w Kde f udáva spôsob, akým má byť obsah pamäti uložený späť na obrazovku. f=0 Obrazovka je prepísaná obsahom pamäte f=1 Obrazovka je ORovaná s obsahom pamäte f=2 Obrazovka je XORovaná s pamäťou f=4 Ako f=0, ale sú zachované pôvodné atribúty f=5 Ako f=1, ale sú zachované pôvodné atribúty f=6 Ako f=2, ale sú zachované pôvodné atribúty Premenné 'a','y','x','d' a 'w' majú rovnaký význam ako pri príkaze GET. SPUT je variácia príkazu PUT. Príkazom 'SPUT' môžete obrazovku uloženú v pamäti zväčšovať. SPUT má formu SPUT_a,x,y,b,c,w,d Kde 'a' je adresa začiatku bloku, 'x' a 'y' sú súradnice ľavého horného rohu (SPUT používa ten istý súradnicový systém ako SPRINT), 'b' a 'c' udávajú, koľkokrát má byť uchovaný blok zväčšený v smere 'x' a 'y', 'w' je šírka bloku (ako u GET) a 'd' je výška bloku (v pixloch !, t.j. 8 krát viac, než u GET) SPUT vždy zachová pôvodné atribúty. RIADENIE BEHU PROGRAMU PROCEDÚRY YS MegaBasic vybavil Spectrum procedúrami s parametrami. Nevýhodou týchto procedúr je, že neumožňujú používať lokálne premenné. Začiatok procedúry je označený symbolom '@' (zavináč) a menom procedúry. Tento príkaz musí byť prvým na riadku. Ak procedúra používa parametre, musí za menom procedúry nasledovať podčiarknutie '_' a názvy premenných oddelené čiarkami. Koniec procedúry je označený príkazom 'ENDPROC_'. Pre prehľadnosť je možné pridať za ENDPROC meno ukončovanej procedúry (napr. ENDPROC_DISP). Príklad procedúry: 9000 @DISPLAY_a,a$ 9010 PAPER a:INK 9 9020 MODE_4:STIPPLE_6 9030 PRINT a$ 9040 ENDPROC_DISPLAY Riadok 9000 definuje procedúru DISPLAY a určuje že je potrebná jednak numerická premenná (a), jednak reťazcová (a$). Riadok 9010 nastaví potrebné farby a riadok 9020 nastaví veľkosť znaku a druh šrafovania. Riadok 9030 vytlačí dodaný reťazec a riadok 9040 procedúru ukončí. K aktivovaniu procedúry použite kdekoľvek v programe napr. 'DISPLAY_2,"MEGABASIC"'. Procedúry môžu byť volané iba v rámci programu, takže nemôžu byť použité ako priame príkazy. REPEAT-UNTIL YS MegaBasic umožňuje používať slučky typu 'REPEAT-UNTIL'. Príkaz REPEAT označuje začiatok slučky a za príkazom 'UNTIL_' nasleduje numerický výraz. Ak je hodnota tohoto výrazu nula, program sa vráti za posledný príkaz REPEAT. Ak je výraz nenulový, program pokračuje na ďalšom riadku. Týchto slučiek môže byť vnorených až 10 do seba. STACK Stack je používaný procedúrami a slučkami 'REPEAT-UNTIL' k uloženiu čísla riadku a čísla príkazu na riadku. Pri volaní procedúry, alebo pri vykonávaní príkazu 'REPEAT' je na stack uložené číslo riadku a číslo nasledujúceho príkazu. Pri vykonávaní príkazu ENDPROC, alebo ak je parameter príkazu UNTIL pravdivý, program skočí na príkaz, ktorého číslo a číslo jeho riadku je uložené na stacku a táto hodnota je zo stacku odobraná. Ak na stacku žiadna hodnota nie je, Spectrum ohlási chybu. Na stack sa vojde celkom 10 hodnôt. Ak pokúsite sa uložiť jedenástu, Spectrum ohlási chybu 'PROC stack overflow'. POP a PUSH Príkaz POP vyberie hodnotu zo stacku, PUSH uloží hodnotu na stack. Za príkazom PUSH nasledujú dva numerické výrazy: číslo príkazu na riadku, číslo riadku. Každý kto používa procedúry alebo slučky 'REPEAT-UNTIL' by mal na začiatku svojich programov používať príkaz PCLEAR k vynulovaniu stacku. BRANCH vám umožní po vykonaní každého programového riadku vykonať určený podprogram. Za príkazom 'BRANCH_' nasleduje numerický výraz, ktorý udáva číslo prvého riadku podprogramu. Ak je tento výraz nulový, Spectrum bude vykonávať program normálnym spôsobom. Koniec podprogramu je označený príkazom 'ENDPROC_'. MTASK umožňuje vykonávanie programov z dvoch miest naraz. Predstavte si, že sa program skladá z dvoch častí: Prvá začína za príkazom MTASK a druhá na riadku, ktorého číslo nasleduje za príkazom MTASK. Akonáhle dôjde program k riadku s príkazom MTASK, je ďalej program vykonávaný tak, že sa vykonávajú striedavo po jednom riadku z oboch častí programu. Ak je výraz za príkazom MTASK nulový, program sa ďalej vykonáva normálnym spôsobom. Nemôžete súčasne používať príkazy MTASK a BRANCH. Keď používate MTASK, za všetkými príkazmi, ktoré pracujú so ZX Interface 1 musí nasledovať '::'. EDITOVANIE a SLEDOVANIE BEHU PROGRAMU TRON,TROFF a SPEED Ak použijete príkaz TRON, potom pri behu programu bude v ľavom dolnom rohu obrazovky zobrazované číslo práve vykonávaného riadku. Príkaz TROFF toto zobrazovanie zruší. Príkaz SPEED má tvar SPEED_x Kde 'x' je rýchlosť vykonávania programu (0=plná rýchlosť, 254=nejpomalšie ). Ak je 'x' rovné 255, Spectrum sa po vykonaní každého riadku zastaví a pokračuje až po stlačení klávesy. AUTO a DELETE AUTO_x,y vykoná automatické číslovanie riadkov od x s prírastkom y. Automatické číslovanie zrušíte stlačením Extended Symbol Shift 'L'. DELETE_x,y vymaže programové riadky od x do y. BRON,BROFF a RESTART Ak použijete na začiatku programu príkaz BROFF, program nemôže byť zastavený tlačítkom BREAK. Zastavenie programu umožníte príkazom BRON. Príkaz RESTART je ekvivalentom príkazu ON ERROR GOTO u iných počítačov. Číslo riadku, na ktorý má program skočiť pri výskyte chyby, nasleduje za príkazom 'RESTART_'. Po vykonaní príkazu 'RESTART_OFF' bude Spectrum fungovať normálnym spôsobom. Príkaz RESTART nezachytí chyby Interface 1 ani nové chyby MegaBasicu. Ak je zachytená chyba, niektoré užitočné informácie sú uložené na týchto adresách v pamäti: 59873/4 Riadok, na ktorom došlo k chybe 59875 Číslo príkazu (v riadku), v ktorom došlo k chybe 59862 Kód chyby ku ktorej došlo ZVUK YS MegaBasic umožňuje dva nové spôsoby ovládania zvuku: príkaz PLAY a ISG (interrupt sound generator). PLAY má tvar: PLAY_n,l,s,d,f Kde 'n' určuje čisté tóny (n=0) alebo sumy (n=1), 'l' je dĺžka každého kroku, 's' je počiatočná frekvencia, 'd' je počet krokov a 'f' je zmena frekvencie po každom kroku. Hodnoty 'd' a 'f' môžu byť niekoľkokrát opakované v jednom príkaze. INTERRUPT SOUND GENERATOR Zatiaľ čo PLAY je iba vylepšený príkaz BEEP, YS MegaBasic umožňuje, aby zvuk znel, zatiaľ čo je vykonávaný program. ISG je ovládaný týmito príkazmi: SOFF Vypne ISG SON ISG pokračuje v činnosti tam, kde prestal pri SOFF SREP_n Vyžaduje numerický výraz (n). Ak je výraz nulový, data v zvukovom bufferi sú hrané len raz. Ak je výsledok jedna, obsah buffera sa opakuje stále dokola. SOUND_ Tento pomerne zložitý príkaz je používaný k ovládaniu zvukového buffera. Má tvar: SOUND_n,a,b,c,d Kde: 'n' vymaže zvukový buffer pred tým, než sa doň uloží niečo nové (n=0) alebo pridá zvuk do buffera (n=1), 'a' určuje čisté tóny (a=0) alebo sumy (a=1), 'b' je hodnota, ktorá je pridávaná k frekvencii po každom kroku, 'c' je počet krokov v sekvencii a 'd' udáva, koľkokrát sa má sekvencia opakovať. Keď je vykonávaný príkaz PLAY, ISG je automaticky vyradený z činnosti. Takže, než môže byť produkovaný akýkoľvek zvuk, musíte použiť 'SON' k aktivovaniu ISG (všimnite si tiež, že ISG nefunguje pri editácii). Čím je zvuk zložitejší, tým pomalšie sa program vykonáva. Tu je príklad práce ISG: 10 SOUND_0,0,1,20,255 20 SREP_1 30 SON 40 MODE_4:STIPPLE_6:FONT_2 50 VDU_(128+RND*15) 60 PAPER RND*7:INK 9 70 GO TO 50 Riadky 10 až 30 aktivujú ISG a riadky 40 až 70 vykonávajú vedľajšiu činnosť. STROJOVÝ KÓD A YS MEGABASIC DOKE a CALL Pri práci so strojovým kódom v MegaBasicu je dôležité uvedomiť si dva fakty: Oblasť pamäte nad adresou 45000 je využitá YS MegaBasicom, takže do nej nemôžete ukladať programy v strojovom kóde. YS MegaBasic využíva Interrupt mode 2, takže programy, ktoré ho využívajú, budú potrebovať isté zmeny. Keď pracujete s procesorom Z80, často je nutné ukladať do pamäte dvojbajtové čísla. V YS MegaBasicu je možné toto robiť príkazom DOKE. Čísla sú ukladané v štandardnej notácii Z80, t.j. najskôr dolný, potom horný bajt. Príkaz CALL je používaný k volaniu podprogramov v strojovom kóde. Za príkazom 'CALL_' nasleduje štartovacia adresa strojového kódu. Za adresou môže nasledovať ľubovoľný počet numerických výrazov, ktoré budú pri volaní uložené na strojový stack. ČELNÝ PANEL Čelný panel umožňuje meniť obsah pamäte a registrov za použitia hexadecimálnych číslic. Čelný panel je aktivovaný príkazom MON alebo stlačením SPACE a 'F' pri behu programu. Čelný panel využíva okno 3, ktoré musí mať veľkosť aspoň 40 stĺpcov krát 20 riadkov. Čelný panel je riadený niekoľkými jednopísmennými príkazmi: SPACE Návrat do Basicu R nn Uloží do určeného registra šestnásť bitové číslo P Zmení 'určený' register L nn nn nn Premiestni blok pamäte. Prvé číslo určuje začiatok bloku, druhé určuje adresu, kam má byť blok premiestnený a tretie určuje dĺžku bloku. M nn Zobrazí inú časť pamäte S Nastaví bod prerušenia K Pokračuje vo vykonávaní programu za bodom prerušenia U Zruší bod prerušenia I nn nn n Zaplní oblasť pamäte. Prvé číslo udáva začiatok oblasti, druhé dĺžku oblasti, tretie udáva bajt, ktorým má byť oblasť zaplnená. J nn Zavolá podprogram v strojovom kóde na adrese nn ENTER Posunie zobrazenie úseku pamäte o jeden bajt '-' Posunie zobrazenie úseku pamäte o jeden bajt späť Ak vložíte dve hexadecimálne čísla, bude táto hodnota vložená do pamäte a zobrazenie sa posunie o jeden bajt. SPRAJTY MegaSpectrum má 8 sprajtov číslovaných 0 až 7. Príkaz SPRON je používaný k ich aktivovaniu. Je nasledovaný dvoma numerickými výrazmi - prvý udáva, ktorý sprajt má byť aktivovaný, druhý udáva, akým spôsobom má byť sprajt kreslený na obrazovke. (1 udáva, že sprite bude ORovaný, 2 udáva, že bude XORovaný). Príkaz SPROFF_n vypne sprajt n. Sprajty v MegaBasicu majú veľkosť 16x16 pixlov a každá skupina 8x8 pixlov môže mať svoj vlastný atribút. Pre definovanie sprajtu sú využité dve oblasti pamäte. Prvá oblasť (56750-56893) obsahuje všetky informácie o sprajte, okrem jeho tvaru a farby. Každý sprajt používa 18 bajtov. Počiatočnú adresu informácie o sprajte 'n' zistíte podľa vzorca: adr=56750+18*n Mód sprajtu je určený obsahom adresy 's+0'. Sprajt je buď ORovaný s obrazovkou (s=1), XORovaný s obrazovkou (s=2), alebo je sprajt vypnutý (s=0) t.j. nie je kreslený na obrazovku. Koniec oblasti informácií o sprajtoch je označený číslom 255. Dobrý spôsob, ako vypnúť všetky sprajty naraz, je POKE 56750,255 s+1 x-ová súradnica sprajtu (0-255) s+2 y-ová súradnica sprajtu (0-175) s+3 x-ový prírastok s+4 y-ový prírastok s+5 Čas potrebný k jednému pohybu s+7 Počet fáz s+9 Čas medzi zmenami fáz s+11/s+12 Adresa prvej fázy s+15 Atribút použitý pre mazanie sprajtu Druhá oblasť, ktorá je použitá pre informácie o tvaroch (fázach) sprajtu sa nachádza medzi RAMTOPom a adresou 44999. Pre každú fázu je využité 36 bajtov. Prvých 32 bajtov udáva tvar fázy a posledné 4 bajty obsahujú atribúty. Každý sprajt nemusí mať svoje vlastné fázy. Ak chcete používať niekoľko sprajtov s rovnakým tvarom, stačí mať v pamäti iba túto jedinú fázu. A na adresy s+11 a s+12 uložiť adresu tejto fázy (pre každý sprajt). Program SPRITE DESIGNER vám umožní vytvárať sprajty jednoducho a pomerne rýchlo. Keď pomocou SPRITE DESIGNERa nahrávate sprajty na magnetofón, počítač sa vás spýta na názov dát pre nahranie, Tento názov môže byť až 8 znakov dlhý. Ak bol názov napr. 'Winston', tak Spectrum nahrá na magnetofón data s názvami 'Winston.n', 'Winston.i' a 'Winston.s'. Data Winston.n sú jeden bajt dlhé a udávajú, koľko fáz je nahrávaných, Winston.i obsahujú fázy a Winston.s obsahujú informácie o sprajtoch. Aby ste nahral data vytvorené programom SPRITE DESIGNER do svojho vlastného programu, použite tento program: (N$ je meno dát - napr. 'Winston') 9000 LOAD N$+".n" CODE 23296 9010 CLEAR 44999-36*PEEK 23296 9020 LOAD N$+".i" CODE 9030 LOAD N$+".s" CODE ĎALŠIE PRÍKAZY MEGABASICU BACKUP Skopíruje file z jednej kazety na druhú. Ak je file dlhší než asi 20 kB, Spectrum sa môže zrútiť. Tento príkaz vymaže akýkoľvek program v pamäti. EXAMINE Zobrazí informácie o hlavičke, ktorú nahrá z magnetofónu NOVÉ CHYBOVÉ HLÁSENIA FX NOT IMPLEMENTED ILLEGAL WINDOW LINE NOT FOUND MISSING PARAMETERS PROC STACK OVERFLOW PROC STACK UNDERFLOW SYNTAX ERROR WINDOW TOO LARGE WINDOW TOO SMALL X TOO LARGE Y TOO LARGE