RUNNER

Z PMD 85 Infoserver

Revízia z 13:47, 15. november 2009; Rombor (Diskusia | príspevky)
(rozdiel) ← Staršia verzia | Zobrazenie aktuálnej úpravy (rozdiel) | Novšia verzia → (rozdiel)
RUNNER


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"

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


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

Služby RUNNERa

Spustenie RUNNERa

Na stiahnutie