ROM Modul
Z PMD 85 Infoserver
ROM Modul predstavuje vonkajšiu pamäť, ktorá nie je priamo v adresnom priestore CPU, ale je prístupná prostredníctvom paralelného interfejsu postaveného na obvode PIO 8255.
ROM Modul sa vyrábal v dvoch veľkostiach - 16 kB (16 x 1 KB (E)PROM typu 2708) alebo 32 kB (16 x 2 kB (E)PROM typu 2716). Konštrukčne, resp. zapojením sa vyskytovalo viac verzií, ale všetky sú navzájom hardvérovo a softvérovo kompatibilné a líšia sa iba maximálnou veľkosťou.
Štandardne bolo PMD 85 dodávané s ROM Modulom, ktorý obsahoval programovací jazyk BASIC G, ktorého verzia zodpovedala modelu samotného počítača. BASIC zaberá iba 9 (10) kB a v ROM Module tak zostali voľné pozície pre ďalšie 1 kB alebo 2 kB (E)PROM. Predávali sa ale aj ROM Moduly, ktoré obsahovali programovací jazyk Pascal alebo vývojové nástroje na programovanie v assembleri, programy DAM alebo MRS. Zároveň sa napr. k tlačiarňam, plotrom, kazetopáskovým pamätiam, či iným prídavným zariadeniam dodávali ovládače, ako samostatné EPROM, ktoré sa potom doplnili k BASICu do neobsadených pozícii v ROM Module. Tieto ovládače potom rozširovali možnosti a príkazy BASICu.
Zatiaľ neúplný popis (zoznam) ROM, ktoré sa používajú na PMD 85, je v tomto článku.
Zapojenie ROM Modulu
Základom ROM Modulu, okrem samotných pamätí ROM, je paralelný interfejsový obvod MHB 8255A. Na jeho port PA sú pripojené dátové signály pamätí (E)PROM, porty PB a PC tvoria adresové signály pamätí. Podľa typu pamätí 1 alebo 2 kB sa časť portu PC priamo podieľa na tvorbe adresy a druhá časť vstupuje do dekodéra 1 zo 16 pre výber jednotlivých obvodov (E)PROM.
Bit PC7 slúži na "zapínanie" ROM Modulu - 0=áno, 1=nie. Vo verzii s 1 kB (E)PROM bit PC7 zapína/vypína napájanie +12V pre pamäte. Vo verzii s 2 kB (E)PROM je bit PC7 buď nepoužitý, alebo zapína/vypína napájanie +5V pre pamäte. V každom prípade, pre vzájomnú kompatibilitu musí byť pri čítaní PC7=0 a po ukončení čítania sa musí nastaviť PC7=1.
Obvod MHB 8255A je vyberaný iba adresovým bitom A2, čím pokrýva pomerne veľkú časť adresného priestoru pre vstup/výstup. Používajú sa ale adresy 0F8h (port PA), 0F9h (port PB)), 0FAh (port PC)) a 0FBh (riadiaci register). Adresové bity A1 a A0 teda vyberajú jednotlivé registre obvodu 8255.
Celkové schémy všetkých typov ROM Modulov môžete nájsť na stránkach sapi.cz.
Plošný spoj ROM Modulu je uzatvorený v dvojdielnom plastovom kryte, ktorý je dizajnovo zladený s počítačom a zasúva sa v hornej časti počítača zo zadu na sytémový konektor K1.
Čítanie z ROM Modulu
Ako bolo spomenuté vyššie, pre prístup k 8255 sa používajú adresy 0F8h až 0FBh. 8255 sa inicializuje zápisom 90h na port 0FBh, kedy sa port PA nastaví na vstup a porty PB a PC na výstup. Po ukončení čítania sa pre "vypnutie" ROM Modulu na port PC obvykle zapíše hodnota 0FFh, čím sa bit PC7 nastaví na 1.
V Monitore PMD 85 je štandardná rutina TRANSFER na adrese 8C00h (0EC00h na PMD 85-3) pre presun dát z ROM Modulu do pamäte. Parametre presunu sa uvádzajú za volanie rutiny. Žiaľ, v oboch "základných" typoch Monitorov je chybne počítaná dĺžka prenášaných dát a v každom inak chybne. Na PMD 85-1 je ku prenášanej dĺžke potrebné pripočítať 255, na ostatných modeloch je potrebné dĺžku prenášaných dát uviesť zníženú o 1.
; PMD 85-1 ; ostatné call TRANSFER call TRANSFER dw rom_adr dw rom_adr dw počet+0FFh dw počet-1 dw ram_adr dw ram_adr
V Monitore PMD 85 je zároveň prikaz JOB, ktorý umožňuje načítať a hneď odštarovať kód načítaný z ROM Modulu. Syntax príkazu je nasledujúca: JOB ZZZZPPPPCCCC, kde ZZZZ je začiatočná adresa v ROM Module, PPPP je počet prenášaných bytov a CCCC je cieľová adresa v RAM. Všetky tri parametre musia byť 4 hexadecimálne číslice a pre počet prenášaných bytov platí to isté, ako pri rutine TRANSFER.
V BASICu je pre načítanie a spustenie kódu z ROM Modulu príkaz ROM x, kde x je číslo 1 kB "pozície" v ROM Module za EPROM BASICu. Hodnota x môže byť 0 až 6 pre BASIC G V1.0, V2.0 a V2.A a daný 1 kB blok sa načíta a spustí od adresy 7000h. v BASICu G V3.0 môže mať parameter x hodnotu 0 až 21 a daný 1 kB blok sa načíta a spustí od adresy 0B000h
V PMD 85-2 a neskorších je v Monitore implementovaná možnosť automatického spustenia programu v ROM Module po Resete. Toto automatické spustenie využíva napr. štandardne dodávaný BASIC G. Podmienkou je, aby prvý byte ROM Modulu bol 0CDh v prípade PMD 85-2/2A, resp. 0CCh v prípade PMD 85-3. Ak sa prejde na PMD 85-3 do režimu kompatibility s PMD 85-2 príkazom JUMP FFF0, tak sa tiež vykoná sekvencia automatického spustenia, ako pri PMD 85-2, takže je možné na PMD 85-3 používať programy v ROM Module určené pre PMD 85-2.