RUNNER

Z PMD 85 Infoserver

(Rozdiel medzi revíziami)
Djb (Diskusia | príspevky)
D (Blog:Runner premiestnená na RUNNER: je to klasický sofwarový produkt a preto patrí na samostatnú wikistránku do sekcie Sofvér.)
Djb (Diskusia | príspevky)
(celková reštylizácia do formy softvérového článku)
Riadok 1: Riadok 1:
{{VelkyNadpis|RUNNER}}
{{VelkyNadpis|RUNNER}}
-
__TOC__
+
{{Infobox Software
 +
| name = RUNNER
 +
| screenshot = [[Obrázok:runner.png|center|288px]]
 +
| developer = '''RM-TEAM'''
 +
| author = Roman Bórik
 +
| version = {{Príkaz|RUNNER}}, v1.2 (2009)<br />''(PMD 85-3 + PMD 32)''
 +
| operating_system = CP/M
 +
| language = angličtina
 +
| download = '''[[download:45|RUNNER.P32]]''' - obraz disku s programom a zdrojovým kódom<br /><br />'''[[download:46|GAMES.P32]]''' - obraz disku s prevedenými hrami, ktoré sa spúšťajú prostredníctvom RUNNERa<br /><br />''(Postupne, podľa časových možností, prevedieme aj ďalšie hry i systémové programy. U systémových programov sa pokúsime doplniť aj diskové operácie, aby s nimi bola práca pohodlná.)''
 +
}}
-
[[Obrázok:runner.png|thumb|RUNNER - zoznam programov na diskete]]
+
__TOC__
'''RUNNER''' je program pre [[PMD 85#PMD 85-3|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.
'''RUNNER''' je program pre [[PMD 85#PMD 85-3|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.
Riadok 25: Riadok 34:
=== Príkazy RUNNERa ===
=== Príkazy RUNNERa ===
-
{{Príkaz|NAME name}}
+
{{CodeBig|NAME name}}
-
Príkaz <code>NAME</code> 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ý.
+
Príkaz {{Kbd|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ý.
-
* <code>name</code> môže mať maximálne 20 znakov
+
* {{Kbd|name}} môže mať maximálne 20 znakov
-
{{Príkaz|MONIT t[,X]}}
+
{{CodeBig|MONIT t[,X]}}
-
Príkaz <code>MONIT</code> 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 <code>JUMP</code>. Ak to nie je potlačené parametrom <code>X</code>, 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.
+
Príkaz {{Kbd|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 {{Kbd|JUMP}}. Ak to nie je potlačené parametrom {{Kbd|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.
-
* <code>t</code> je 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.
+
* {{Kbd|t}} je 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 <code>X</code> je voliteľný a potlačuje obvyklú inicializáciu systémových premenných
+
* parameter {{Kbd|X}} je voliteľný a potlačuje obvyklú inicializáciu systémových premenných
-
{{Príkaz|PICTURE fn,t[,speed]}}
+
{{CodeBig|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 <code>t</code>.
+
Príkaz pre zobrazenie obrázku z uvedeného súboru. Obrázok môže byť rôzneho typu, čo určuje parameter {{Kbd|t}}.
-
* <code>fn</code> je meno súboru s obrázkom
+
* {{Kbd|fn}} je meno súboru s obrázkom
-
* <code>t</code> určuje typ obrazových dát v súbore
+
* {{Kbd|t}} určuje typ obrazových dát v súbore
-
** <code>V</code> - celá VideoRAM 16kB - RUNNER uloží obrázok do [[VideoRAM]], ale vynechá systémovú oblasť
+
** {{Kbd|V}} - celá VideoRAM 16kB - RUNNER uloží obrázok do [[VideoRAM]], ale vynechá systémovú oblasť
-
** <code>W</code> - celá VideoRAM 16kB - RUNNER uloží obrázok do [[VideoRAM]], vrátane systémovej oblasti (nedoporučované)
+
** {{Kbd|W}} - celá VideoRAM 16kB - RUNNER uloží obrázok do [[VideoRAM]], vrátane systémovej oblasti (nedoporučované)
-
** <code>D</code> - čisté video data bez systémovej oblasti (12kB)
+
** {{Kbd|D}} - čisté video data bez systémovej oblasti (12kB)
-
** <code>C</code> - komprimovaný obrázok programom [[GRED]]
+
** {{Kbd|C}} - komprimovaný obrázok programom [[GRED]]
-
** <code>S</code> - obrázok po štvorčekoch z programu [[GRED]]
+
** {{Kbd|S}} - obrázok po štvorčekoch z programu [[GRED]]
-
* <code>speed</code> je hodnota určujúca rýchlosť zobrazovania obrázku po štvorčekoch, ak je obrazok typu <code>S</code> - hodnota 0 (pomaly) až 3 (rýchlo)
+
* {{Kbd|speed}} je hodnota určujúca rýchlosť zobrazovania obrázku po štvorčekoch, ak je obrazok typu {{Kbd|S}} - hodnota 0 (pomaly) až 3 (rýchlo)
-
{{Príkaz|FILE fn,hexadr}}
+
{{CodeBig|FILE fn,hexadr}}
Príkaz nahraje do pamäti uvedený súbor.
Príkaz nahraje do pamäti uvedený súbor.
-
* <code>fn</code> je meno súboru, ktorý sa má nahrať do pamäti
+
* {{Kbd|fn}} je meno súboru, ktorý sa má nahrať do pamäti
-
* <code>hexadr</code> je hexadecimálna adresa, kam sa súbor nahraje
+
* {{Kbd|hexadr}} je hexadecimálna adresa, kam sa súbor nahraje
-
{{Príkaz|CALL hexadr}}
+
{{CodeBig|CALL hexadr}}
Zavolanie podprogramu.
Zavolanie podprogramu.
-
* <code>hexadr</code> je hexadecimálna adresa podprogramu - podprogram nemusí zachovávať žiadne registre. Na zásobníku je voľných asi 50 bytov.
+
* {{Kbd|hexadr}} je hexadecimálna adresa podprogramu - podprogram nemusí zachovávať žiadne registre. Na zásobníku je voľných asi 50 bytov.
-
{{Príkaz|JUMP hexadr}}
+
{{CodeBig|JUMP hexadr}}
-
Spustenie samotného programu. <code>JUMP</code> by mal byť posledným príkazom, pretože všetky riadky za príkazom <code>JUMP</code> sú ignorované. Pred spustením programu je zavedený zvolený monitor a prevedená inicializácia systmových premenných (pokiaľ bol uvedený príkaz <code>MONITOR</code> a nebola inicializácia potlačená). Po skoku do programu na uvedenú adresu obsahuje register <code>DE</code> adresu vstupného bodu pre volanie služieb RUNNERa.
+
Spustenie samotného programu. {{Kbd|JUMP}} by mal byť posledným príkazom, pretože všetky riadky za príkazom {{Kbd|JUMP}} sú ignorované. Pred spustením programu je zavedený zvolený monitor a prevedená inicializácia systmových premenných (pokiaľ bol uvedený príkaz {{Kbd|MONITOR}} a nebola inicializácia potlačená). Po skoku do programu na uvedenú adresu obsahuje register {{Kbd|DE}} adresu vstupného bodu pre volanie služieb RUNNERa.
-
* <code>hexadr</code> je hexadecimálna adresa, na ktorú sa predá riadenie
+
* {{Kbd|hexadr}} je hexadecimálna adresa, na ktorú sa predá riadenie
-
{{Príkaz|PAUSE time}}
+
{{CodeBig|PAUSE time}}
Zdržanie, ktoré možno prerušiť stlačením klávesy.
Zdržanie, ktoré možno prerušiť stlačením klávesy.
-
* <code>time</code> urč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.
+
* {{Kbd|time}} urč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.
-
{{Príkaz|POKE hexadr,hexval[,hexval ...]}}
+
{{CodeBig|POKE hexadr,hexval[,hexval ...]}}
Príkaz pre modifikáciu obsahu pamäti.
Príkaz pre modifikáciu obsahu pamäti.
-
* <code>hexadr</code> je hexadecimálna adresa, od ktorej sa začne zapisovať
+
* {{Kbd|hexadr}} je hexadecimálna adresa, od ktorej sa začne zapisovať
-
* <code>hexval</code> sú hexadecimálne 8 bitové hodnoty, ukladané postupne od zadanej adresy
+
* {{Kbd|hexval}} sú hexadecimálne 8 bitové hodnoty, ukladané postupne od zadanej adresy
-
{{Príkaz|DISP r,c,cl,"text"}}
+
{{CodeBig|DISP r,c,cl,"text"}}
Zobrazenie textu na zvolenú pozíciu. Všetky parametre sú desiatkové čísla.
Zobrazenie textu na zvolenú pozíciu. Všetky parametre sú desiatkové čísla.
-
* <code>r</code> je riadok od 0 do 27
+
* {{Kbd|r}} je riadok od 0 do 27
-
* <code>c</code> je stĺpec od 0 do 47
+
* {{Kbd|c}} je stĺpec od 0 do 47
-
* <code>cl</code> je farba od 0 do 3 normalne, od 4 do 7 invertovane
+
* {{Kbd|cl}} je farba od 0 do 3 normalne, od 4 do 7 invertovane
-
* <code>text</code> je zobrazovaný text - musí byť v úvodzovkách
+
* {{Kbd|text}} je zobrazovaný text - musí byť v úvodzovkách
-
{{Príkaz|CLS}}
+
{{CodeBig|CLS}}
Zmazanie obrazovky.
Zmazanie obrazovky.
-
'''Priklad:''' súbor BOULDER.INF
+
'''Príklad:''' súbor {{Príkaz|BOULDER.INF}}
; BOULDER DASH - VBG SOFTWARE (c) 1988
; BOULDER DASH - VBG SOFTWARE (c) 1988
NAME BOULDER DASH
NAME BOULDER DASH
Riadok 120: Riadok 129:
RUNNER kontroluje správnosť zadania príkazov a prípadné chyby hlási v tvare
RUNNER kontroluje správnosť zadania príkazov a prípadné chyby hlási v tvare
-
* ERROR at line XXX
+
* '''ERROR at line XXX'''
kde, ERROR je jedno z nasledujúcich hlásení a XXX je číslo riadku, na ktorom došlo ku chybe.
kde, ERROR je jedno z nasledujúcich hlásení a XXX je číslo riadku, na ktorom došlo ku chybe.
Riadok 130: Riadok 139:
* '''Bad number''' - chybne zadané číslo
* '''Bad number''' - chybne zadané číslo
* '''File loading error''' - chyba pri nahrávaní súboru, alebo súbor zadaného mena neexistuje
* '''File loading error''' - chyba pri nahrávaní súboru, alebo súbor zadaného mena neexistuje
-
* '''Program name missing''' - za príkazom <code>NAME</code> chýba meno programu
+
* '''Program name missing''' - za príkazom {{Kbd|NAME}} chýba meno programu
== Služby RUNNERa a rozloženie pamäti ==
== Služby RUNNERa a rozloženie pamäti ==
Riadok 175: Riadok 184:
=== Služby RUNNERa ===
=== Služby RUNNERa ===
-
Po spustení zvoleného programu (skokom na adresu uvedenú v príkaze <code>JUMP</code>) obsahuje register <code>DE</code> adresu vstupného bodu pre volanie služieb RUNNERa. Číslo služby sa predáva v registri <code>B</code>, ostatné parametre podľa potreby v ďalších registroch.
+
Po spustení zvoleného programu (skokom na adresu uvedenú v príkaze {{Kbd|JUMP}}) obsahuje register {{Kbd|DE}} adresu vstupného bodu pre volanie služieb RUNNERa. Číslo služby sa predáva v registri {{Kbd|B}}, ostatné parametre podľa potreby v ďalších registroch.
 +
 
 +
 
 +
{{CodeBig|0 - CALL BDOS}}
-
==== 0 - CALL BDOS ====
 
Volanie pôvodných služieb BDOSu. Originálny vstupný bod BDOSu na adrese 0005h sa nesmie použiť, pretože na tejto adrese vlastne ani skok do BDOSu nemusí existovať. Používať iba pre diskové sluzby s číslami 13 a viac. Konzolové služby sa nedoporučuje používať, pretože tie využívajú systémové premenné Monitora a tak by mohlo dôjsť ku "kolízii" so zobrazovaním pri volaní klasických rutín Monitora.
Volanie pôvodných služieb BDOSu. Originálny vstupný bod BDOSu na adrese 0005h sa nesmie použiť, pretože na tejto adrese vlastne ani skok do BDOSu nemusí existovať. Používať iba pre diskové sluzby s číslami 13 a viac. Konzolové služby sa nedoporučuje používať, pretože tie využívajú systémové premenné Monitora a tak by mohlo dôjsť ku "kolízii" so zobrazovaním pri volaní klasických rutín Monitora.
* Vstup:
* Vstup:
Riadok 186: Riadok 197:
** podľa danej BDOS služby
** podľa danej BDOS služby
-
==== 1 - FCB ADDRESS ====
+
 
 +
{{CodeBig|1 - FCB ADDRESS}}
 +
 
Služba vráti adresu internej FCB, ktorá je používaná ďalšími službami.
Služba vráti adresu internej FCB, ktorá je používaná ďalšími službami.
* Vstup:
* Vstup:
Riadok 193: Riadok 206:
** HL=adresa interneho FCB
** HL=adresa interneho FCB
-
==== 2 - BUFFER ADDRESS AND SIZE ====
+
 
 +
{{CodeBig|2 - BUFFER ADDRESS AND SIZE}}
 +
 
Služba vráti adresu a veľkosť interného buffra.
Služba vráti adresu a veľkosť interného buffra.
* Vstup:
* Vstup:
Riadok 201: Riadok 216:
** BC=veľkosť interného buffra
** BC=veľkosť interného buffra
-
==== 3 - PREPARE FILE NAME ====
+
 
 +
{{CodeBig|3 - PREPARE FILE NAME}}
 +
 
Služba spracuje reťazec, ktorý zodpovedá menu súboru v tvare filename.ext (8.3)
Služba spracuje reťazec, ktorý zodpovedá menu súboru v tvare filename.ext (8.3)
a pripravi do internej FCB.
a pripravi do internej FCB.
Riadok 211: Riadok 228:
** CY=0, ak je meno súboru v poriadku, vyplnené interné FCB
** CY=0, ak je meno súboru v poriadku, vyplnené interné FCB
-
==== 4 - LOAD FILE ====
+
 
 +
{{CodeBig|4 - LOAD FILE}}
 +
 
Služba pre načítanie súboru na požadovanú adresu a o maximálne povolenej dĺžke.
Služba pre načítanie súboru na požadovanú adresu a o maximálne povolenej dĺžke.
* Vstup:
* Vstup:
Riadok 223: Riadok 242:
** S=0, CY=0 - OK
** S=0, CY=0 - OK
-
==== 5 - SAVE FILE ====
+
 
 +
{{CodeBig|5 - SAVE FILE}}
 +
 
Služba pre uloženie súboru z požadovanej adresy a o požadovanej dĺžke. Dĺžka sa zarovná na násobok 128.
Služba pre uloženie súboru z požadovanej adresy a o požadovanej dĺžke. Dĺžka sa zarovná na násobok 128.
* Vstup:
* Vstup:
Riadok 235: Riadok 256:
** S=0, CY=0 - OK
** S=0, CY=0 - OK
-
==== 6 - RUNNER VERSION ====
+
 
 +
{{CodeBig|6 - RUNNER VERSION}}
 +
 
Vráti číslo verzie RUNNERa.
Vráti číslo verzie RUNNERa.
* Vstup:
* Vstup:
Riadok 245: Riadok 268:
RUNNER možno spustiť dvoma spôsobmi.
RUNNER možno spustiť dvoma spôsobmi.
-
* <code>RUN</code>
+
* {{Príkaz|RUN}}
-
* <code>RUN PROGRAM[.INF]</code>
+
* {{Príkaz|RUN PROGRAM[.INF]}}
-
V prvom prípade RUNNER vyhľadá v adresári všetky INF súbory, prečíta z príkazu <code>NAME</code> dlhé názvy programov a zobrazí zotriedený zoznam. Zoznam môže obsahovať maximálne 32 položiek. Ak je ich menej ako 17, zobrazí sa jeden stĺpec. Ak je ich viac ako 16, zobrazia sa dva stĺpce. Pred každým menom programu je písmeno alebo číslica, ktorým sa prevádza voľba. Stlačením príslušnej klávesy sa zvolený program zavedie podľa obsahu INF súboru do pamäti a spustí.
+
V prvom prípade RUNNER vyhľadá v adresári všetky INF súbory, prečíta z príkazu {{Kbd|NAME}} dlhé názvy programov a zobrazí zotriedený zoznam. Zoznam môže obsahovať maximálne 32 položiek. Ak je ich menej ako 17, zobrazí sa jeden stĺpec. Ak je ich viac ako 16, zobrazia sa dva stĺpce. Pred každým menom programu je písmeno alebo číslica, ktorým sa prevádza voľba. Stlačením príslušnej klávesy sa zvolený program zavedie podľa obsahu INF súboru do pamäti a spustí.
Druhý prípad slúži pre priame spustenie konkrétneho programu.
Druhý prípad slúži pre priame spustenie konkrétneho programu.
-
== Na stiahnutie ==
+
[[Kategória:Softvér]]
-
 
+
-
* [[download:45|RUNNER.P32]] - obraz disku s programom a zdrojákom
+
-
* [[download:46|GAMES.P32]] - obraz disku s prevedenými hrami, ktoré sa spúšťajú prostredníctvom RUNNERa
+
-
 
+
-
Postupne, podľa časových možností, prevedieme aj ďalšie hry i systémové programy. U systémových programov sa pokúsime doplniť aj diskové operácie, aby s nimi bola práca pohodlná.
+
-
 
+
-
[[Kategória:Blog| 006]]
+

Verzia zo dňa a času 13:18, 16. november 2009

RUNNER


RUNNER
Autor:Roman Bórik
Vývojár:RM-TEAM
Verzia:RUNNER, v1.2 (2009)
(PMD 85-3 + PMD 32)
Operačný systém:CP/M
Lokalizácia:angličtina
Download: RUNNER.P32 - obraz disku s programom a zdrojovým kódom

GAMES.P32 - obraz disku s prevedenými hrami, ktoré sa spúšťajú prostredníctvom RUNNERa

(Postupne, podľa časových možností, prevedieme aj ďalšie hry i systémové programy. U systémových programov sa pokúsime doplniť aj diskové operácie, aby s nimi bola práca pohodlná.)

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ý.

  • name môž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.

  • t je 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 X je 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.

  • fn je meno súboru s obrázkom
  • t urč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
  • speed je hodnota určujúca rýchlosť zobrazovania obrázku po štvorčekoch, ak je obrazok typu S - hodnota 0 (pomaly) až 3 (rýchlo)


FILE fn,hexadr

Príkaz nahraje do pamäti uvedený súbor.

  • fn je meno súboru, ktorý sa má nahrať do pamäti
  • hexadr je hexadecimálna adresa, kam sa súbor nahraje


CALL hexadr

Zavolanie podprogramu.

  • hexadr je 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.

  • hexadr je hexadecimálna adresa, na ktorú sa predá riadenie


PAUSE time

Zdržanie, ktoré možno prerušiť stlačením klávesy.

  • time urč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.

  • hexadr je hexadecimálna adresa, od ktorej sa začne zapisovať
  • hexval sú hexadecimálne 8 bitové hodnoty, ukladané postupne od zadanej adresy


DISP r,c,cl,"text"

Zobrazenie textu na zvolenú pozíciu. Všetky parametre sú desiatkové čísla.

  • r je riadok od 0 do 27
  • c je stĺpec od 0 do 47
  • cl je farba od 0 do 3 normalne, od 4 do 7 invertovane
  • text je zobrazovaný text - musí byť v úvodzovkách


CLS

Zmazanie obrazovky.


Príklad: súbor BOULDER.INF

; 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 NAME chýba meno programu

Služby RUNNERa a rozloženie pamäti

Základnou požiadavkou pri tvorbe RUNNERa bola najprv iba jednoduchá možnosť spúšťať pôvodné programy z PMD 85. Neskôr sa ale ukázalo, že bude účelné sprístupniť diskové operácie CP/M a tak umožniť programom zápis a čítanie súborov z disku.

Keďže takmer všetky programy na PMD 85 sa vošli (alebo museli vôjsť) do dolných 32 kB pamäti, horná časť RAM PMD 85-3 od 9000h je voľná (od 8000h je zvolený Monitor) a v našom prípade to znamená, že CP/M (BDOS a BIOS) zostávajú neporušené v pamäti, čo možno s výhodou využiť.

Treba ešte spomenúť jednu nepríjemnosť. Mnohé programy si po štarte inicializujú GPIO (porty 4Ch až 4Fh) kvôli joysticku (hry) alebo napr. tlačiarni (textové/grafické editory). Tým sa ale zruší nastavenie portu PA v móde 2, ktorý potrebuje PMD 32. Následné volanie diskových služieb zlyhá, pretože komunikácia s disketovkou je nefunkčná. Preto je nutné "opatchovať" daný program, tak aby ku nevhodnej inicializácií GPIO nedošlo. Port PA musí byť preto inicializovaný do módu 2 a porty PB a PCL podľa potreby samotného programu. Príkladom môže byť predošlá ukážka INF súboru pre hru Boulder Dash, kde sa hra patchuje tak, aby sa joystick čítal na porte PB (namiesto PA) a disketovka (aj keď nie je pre hru potrebná) zostala na porte PA.

Mapa pamäti

     ------------------------------------------------------
0000 |                                                    |
     |          RAM 32 kB pre nahrávaný program           |
7FFF |                                                    |
     ------------------------------------------------------
8000 |                                                    |
     |             zvolený Monitor 1 alebo 2              |
8FFF |                                                    |
     ------------------------------------------------------
9000 |                                                    |
     | voľné 3 kB pre prípadné diskové operácie programov |
9BFF |                                                    |
     ------------------------------------------------------
9C00 |                                                    |
     |                    RUNNER v 1.2                    |
     |            premenné a zásobník RUNNERa             |
     |                buffer pre INF súbor                |
     |         buffer zálohovanj oblasti SPA CP/M         |
ADFF |                                                    |
     ------------------------------------------------------
AE00 |                                                    |
     |                 CP/M - BDOS a BIOS                 |
BFFF |                                                    |
     ------------------------------------------------------
C000 |                                         |          |
     |                 Video RAM               | zápisník |
FFFF |                                         |          |
     ------------------------------------------------------

Po spustení konkrétneho programu už RUNNER buffer pre INF súbor a buffer zálohovanj oblasti SPA CP/M nepotrebuje a tak je voľný pre program. Adresu tejto oblasti a jej veľkosť môže program získať zavolaním príslušnej služby. V súčasnej verzii je veľkosť tejto oblasti 1409 bytov.

Služby RUNNERa

Po spustení zvoleného programu (skokom na adresu uvedenú v príkaze JUMP) obsahuje register DE adresu vstupného bodu pre volanie služieb RUNNERa. Číslo služby sa predáva v registri B, ostatné parametre podľa potreby v ďalších registroch.


0 - CALL BDOS

Volanie pôvodných služieb BDOSu. Originálny vstupný bod BDOSu na adrese 0005h sa nesmie použiť, pretože na tejto adrese vlastne ani skok do BDOSu nemusí existovať. Používať iba pre diskové sluzby s číslami 13 a viac. Konzolové služby sa nedoporučuje používať, pretože tie využívajú systémové premenné Monitora a tak by mohlo dôjsť ku "kolízii" so zobrazovaním pri volaní klasických rutín Monitora.

  • Vstup:
    • B=0
    • C=číslo BDOS služby (>=13)
    • ostané parametre podľa danej BDOS služby
  • Výstup:
    • podľa danej BDOS služby


1 - FCB ADDRESS

Služba vráti adresu internej FCB, ktorá je používaná ďalšími službami.

  • Vstup:
    • B=1
  • Výstup:
    • HL=adresa interneho FCB


2 - BUFFER ADDRESS AND SIZE

Služba vráti adresu a veľkosť interného buffra.

  • Vstup:
    • B=2
  • Výstup:
    • HL=adresa interneho buffra
    • BC=veľkosť interného buffra


3 - PREPARE FILE NAME

Služba spracuje reťazec, ktorý zodpovedá menu súboru v tvare filename.ext (8.3) a pripravi do internej FCB.

  • Vstup:
    • B=3
    • HL=adresa vstupného textu s menom súboru ukončeného CR (0Dh)
  • Výstup:
    • CY=1 pri chybe
    • CY=0, ak je meno súboru v poriadku, vyplnené interné FCB


4 - LOAD FILE

Služba pre načítanie súboru na požadovanú adresu a o maximálne povolenej dĺžke.

  • Vstup:
    • B=4
    • [interné FCB]=pripravené meno súboru
    • HL=DMA adresa kam sa súbor nahraje
    • DE=maximálna dĺžka súboru
  • Výstup:
    • S=1 - disková chyba
    • CY=1 - súbor je dlhý
    • S=0, CY=0 - OK


5 - SAVE FILE

Služba pre uloženie súboru z požadovanej adresy a o požadovanej dĺžke. Dĺžka sa zarovná na násobok 128.

  • Vstup:
    • B=5
    • [interné FCB]=pripravené meno súboru
    • HL=DMA adresa
    • DE=dĺžka
  • Výstup:
    • S=1 - disková chyba
    • CY=1 - súbor je dlhý
    • S=0, CY=0 - OK


6 - RUNNER VERSION

Vráti číslo verzie RUNNERa.

  • Vstup:
    • B=6
  • Výstup:
    • A=číslo verzie RUNNERa. Súčasná verzia vráti 12h

Spustenie RUNNERa

RUNNER možno spustiť dvoma spôsobmi.

  • RUN
  • RUN PROGRAM[.INF]

V prvom prípade RUNNER vyhľadá v adresári všetky INF súbory, prečíta z príkazu NAME dlhé názvy programov a zobrazí zotriedený zoznam. Zoznam môže obsahovať maximálne 32 položiek. Ak je ich menej ako 17, zobrazí sa jeden stĺpec. Ak je ich viac ako 16, zobrazia sa dva stĺpce. Pred každým menom programu je písmeno alebo číslica, ktorým sa prevádza voľba. Stlačením príslušnej klávesy sa zvolený program zavedie podľa obsahu INF súboru do pamäti a spustí.

Druhý prípad slúži pre priame spustenie konkrétneho programu.