RUNNER
Z PMD 85 Infoserver
Obsah |
RUNNER je program pre PMD 85-3 v spojení s disketovou jednotkou PMD 32 bežiaci pod operačným systémom Mikros (CP/M 2.2). Umožňuje spúšťať z diskety programy pôvodne napísané pre PMD 85 a poskytuje im aj možnosť prístupu k diskovým operáciám BDOSu.
Zdanlivou nevýhodou je skutočnosť, že pôvodný program je potrebné "preskúmať", pôvodne nahrávané bloky z kazety previesť do súborov na diskete a pripraviť tzv. informačný súbor, ktorý popisuje kam sa majú dané súbory nahrať a ako sa má program spustiť. Výsledkom je ale neporovnateľne rýchlejšie a pohodlnejšie spúšťanie programu. Ak daný program používal kazetové operácie, tie je pochopiteľne nutné pomerne pracnejšie upraviť na diskové, avšak samotný RUNNER poskytuje služby pre volanie pôvodných služieb BDOSu, takže pri úprave sa stačí zamerať iba na prácu so samotným súborom pod CP/M, čo by mala byť pre človeka, ktorý sa do toho pustí, všeobecne známa záležitosť.
Informačný súbor
Ako bolo spomenuté vyššie, aby RUNNER vedel ako má program zaviesť do pamäti a spustiť, musí mať každý program vytvorený svoj informačný súbor s príponou INF. Súbor INF si možno predstaviť ako analógiu k programu v BASICu na ZX Spectre, ktorý sériou príkazov nahraje jednotlivé bloky programu a program spustí. K rovnakému účelu RUNNER poskytuje jednoduchý jazyk, pomocou ktorého sa v informačnom súbore "zadefinuje", čo sa má robiť.
Formát súboru INF a základné požiadavky
- je to obyčajný textový súbor
- môže mať maximalne 1kB, zbytok súboru nad 1kB sa ignoruje
- každý riadok obsahuje jeden prikaz
- príkaz musí byť od parametrov oddelený aspoň jednou medzerou
- poradie príkazov (okrem JUMP) je ľubovoľné
- príkazy sú spracovávané sekvenčne po jednotlivých riadkoch
- riadky začínajúce znakom ';' sú ignorované
Príkazy RUNNERa
NAME name
Príkaz NAME je povinný a je použitý iba pri vytváraní zoznamu programov na disku pre získanie dlhého mena programu, keďže na vhodné pomenovanie 8 znakov v názve súboru zvyčajne nepostačuje. Pri vykonávani príkazov je ignorovaný.
-
namemôže mať maximálne 20 znakov
MONIT t[,X]
Príkaz MONIT určuje typ monitora, ktorý sa zavedie do pamäti od adresy 8000h pred spustením programu, teda skokom na adresu uvedenú v príkaze JUMP. Ak to nie je potlačené parametrom X, je prevedená štandardná inicializácia systémových premenných. Preto nie je doporučované meniť obsah súborov s ROM monitormi. Príkaz je nepovinný, ale ak je uvedený, mal by sa vyskytnúť iba raz.
-
tje typ monitora - hodnota 1 pre MONIT1.ROM, hodnota 2 pre MONIT2.ROM. Tieto dva súbory sa musia nachádzať na diskete spolu so samotným RUNNERom. - parameter
Xje voliteľný a potlačuje obvyklú inicializáciu systémových premenných
PICTURE fn,t[,speed]
Príkaz pre zobrazenie obrázku z uvedeného súboru. Obrázok môže byť rôzneho typu, čo určuje parameter t.
-
fnje meno súboru s obrázkom -
turčuje typ obrazových dát v súbore-
V- celá VideoRAM 16kB - RUNNER uloží obrázok do VideoRAM, ale vynechá systémovú oblasť -
W- celá VideoRAM 16kB - RUNNER uloží obrázok do VideoRAM, vrátane systémovej oblasti (nedoporučované) -
D- čisté video data bez systémovej oblasti (12kB) -
C- komprimovaný obrázok programom GRED -
S- obrázok po štvorčekoch z programu GRED
-
-
speedje hodnota určujúca rýchlosť zobrazovania obrázku po štvorčekoch, ak je obrazok typuS- hodnota 0 (pomaly) až 3 (rýchlo)
FILE fn,hexadr
Príkaz nahraje do pamäti uvedený súbor.
-
fnje meno súboru, ktorý sa má nahrať do pamäti -
hexadrje hexadecimálna adresa, kam sa súbor nahraje
CALL hexadr
Zavolanie podprogramu.
-
hexadrje hexadecimálna adresa podprogramu - podprogram nemusí zachovávať žiadne registre. Na zásobníku je voľných asi 50 bytov.
JUMP hexadr
Spustenie samotného programu. JUMP by mal byť posledným príkazom, pretože všetky riadky za príkazom JUMP sú ignorované. Pred spustením programu je zavedený zvolený monitor a prevedená inicializácia systmových premenných (pokiaľ bol uvedený príkaz MONITOR a nebola inicializácia potlačená). Po skoku do programu na uvedenú adresu obsahuje register DE adresu vstupného bodu pre volanie služieb RUNNERa.
-
hexadrje hexadecimálna adresa, na ktorú sa predá riadenie
PAUSE time
Zdržanie, ktoré možno prerušiť stlačením klávesy.
-
timeurčuje čas v 1/10 sekundy, koľko sa má čakať (desiatková hodnota maximálne 65535). Ak je hodnotou 0, čaká sa na stlačenie klávesy.
POKE hexadr,hexval[,hexval ...]
Príkaz pre modifikáciu obsahu pamäti.
-
hexadrje hexadecimálna adresa, od ktorej sa začne zapisovať -
hexvalsú hexadecimálne 8 bitové hodnoty, ukladané postupne od zadanej adresy
DISP r,c,cl,"text"
Zoobrazenie textu na zvolenú pozíciu. Všetky parametre sú desiatkové čísla.
-
rje riadok od 0 do 27 -
cje stĺpec od 0 do 47 -
clje farba od 0 do 3 normalne, od 4 do 7 invertovane -
textje zobrazovaný text - musí byť v úvodzovkách
CLS
Zmazanie obrazovky.
Priklad:
; BOULDER DASH - VBG SOFTWARE (c) 1988 NAME BOULDER DASH CLS PICTURE BOULDER.PSC,C FILE BOULDER.COD,0150 MONIT 2 ; JOYSTICK NA GPIO1, PMD 32 NA GPIO0 POKE 09A1,C2 POKE 09A5,01 POKE 0A20,4D JUMP 4002
Chybové hlásenia RUNNERa
Ak dôjde k akejkoľvek chybe, prevedie sa návrat do CP/M, ak je to možné.
Ak RUNNER pri spustení nenájde žiadne INF súbory, zobrazí nasledujúce chybové hlásenie:
- No INF files found!
RUNNER kontroluje správnosť zadania príkazov a prípadné chyby hlási v tvare
- ERROR at line XXX
kde, ERROR je jedno z nasledujúcich hlásení a XXX je číslo riadku, na ktorom došlo ku chybe.
- Syntax error - všeobecná chyba syntaxe príkazu
- Bad file name - meno súboru nezodpovedá konvencii CP/M
- Load ROM MONITOR error - došlo ku chybe pri nahrávaní súboru ROM Monitora do pamäti, alebo samotný súbor sa nenašiel
- Command JUMP missing - dosiahol sa koniec INF súboru a príkaz JUMP sa nenašiel
- Bad number - chybne zadané číslo
- File loading error - chyba pri nahrávaní súboru, alebo súbor zadaného mena neexistuje
- Program name missing - za príkazom
NAMEchýba meno programu