ROM Modul

Z PMD 85 Infoserver

ROM Modul

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

Bloková schéma 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 0F8h0FBh. 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.