AllRAM

Z PMD 85 Infoserver

AllRAM mód (stránkovanie)


Obsah

AllRAM mód (odpojenie ROM) je možné zapnúť pri modeloch PMD 85-2A a PMD 85-3, tie majú 64 kB RAM.

V oboch prípadoch sa stránkovanie robí 4. bitom portu PC systémového 8255. Ak je na PC4 úroveň H, číta sa z ROM, ak je na PC4 úroveň L, číta sa z RAM. Zápis je stále do RAM, aj keď je nastránkovaná ROM (teda RAM nie je "úplne odpojená"), čo osobne považujeme za veľmi užitočnú vlastnosť, ktorú programy pekne využívajú. Dôležitou vecou je, že na PC4 je pull-up odpor, ktorý udržiava úroveň H na PC4, ak je horná polovica portu PC naprogramovaná ako vstup. To vlastne udržiava pripojenú ROM, ak sa stránkovanie nepoužíva.

Takže:

1 MVI A,8AH  ; SK A: MOD 0, PA-OUT, PCH-INP, SK B: MOD 0, PB-INP, PCL-OUT
OUT 0F7H
nastaví PCH na vstup a tým je stránkovanie "vypnuté" (ale do RAM sa dá samozrejme stále zapisovať)
2 MVI A,82H  ; SK A: MOD 0, PA-OUT, PCH-OUT, SK B: MOD 0, PB-INP, PCL-OUT
OUT 0F7H
nastaví PCH na výstup (stránkovanie je zapnuté) a keďže pri inicializácii 8255 sa nulujú aj výstupné latche, tak je hneď odpojená ROM
3 MVI A,09H
OUT 0F7H
nastaví PC4 na úroveň H - pripojená je ROM
4 MVI A,08H
OUT 0F7H
nastaví PC4 na úroveň L - ROM je odpojená

PMD 85-2A

Programy pre PMD 85-2A, ktoré chcú využívať rozšírenú pamäť a potrebujú aj ROM, tak to robia napríklad aj tak, že je nastavený režim (1), prekopírujú Monitor (8000H8FFFH) z ROM do RAM (na to isté miesto) a nastavia režim (2).

Tým je už ROM odpojená, Monitor je v RAM od 8000H a RAM od 9000H0BFFFH je celá prístupná.

Nasledujúci program prekopíruje Monitor do RAM a prepne sa do AllRAM:

        LXI  H,8FFFh         ; adresa konca Monitora PMD 85-2A
MCOPY   MOV  A,M             ; vezmi byte z ROM
        MOV  M,A             ; zapíš do RAM
        DCX  H               ; zníž adresu
        MOV  A,H             ; je prekopírovaný celý Monitor ?
        ANA  A
        JM   MCOPY           ; nie, pokračuj
        MVI  A,3Ah           ; oprava chyby v ROM, ktorá spôsobuje poškodenie
        STA  8832h           ; znaku A v znakovom FONTe pri použití kľúčových kláves Kx
        MVI  A,82h           ; zapnutie stránkovania a odpojenie ROM
        OUT  0F7h
        RET

PMD 85-3

Keďže PMD 85-3 má Monitor od adresy 0E000H, teda sa prekrýva s VideoRAM, tak k prepínaniu do AllRAM módu (odpájaniu ROM) dochádza vždy pri práci s VideoRAM. Na to Monitor používa príklady (3) a (4).

PMD 85-3 používa aj PC5 ako riadiaci bit. Ak je na PC5 úroveň H, tak sa ROM zrkadlí v celom pamäťovom priestore od 0000H, 2000H, ... až po 0E000H. Tam sa využíva práve skutočnosť, že po resete sú všetky porty 8255 vstupné, takže na PC5 je pull-up úroveň H a to "nastránkuje" ROM od adresy 0000H, kde CPU po resete začína. Potom sa po vykonaní (2) nastaví PC4 a PC5 do L a ROM sa odpojí, to už je ale v RAM na adrese 0E0B3H pripravené (3), čo pristránkuje späť ROM (viď. kód na adrese 0E0A3H v Monitore PMD 85-3).

režim kompatibility

K trvalému prepnutiu do AllRAM módu v PMD 85-3 dôjde pri prechode do režimu kompatibility s PMD 85-2 príkazom JUMP FFF0. Vtedy sa premodifikujú a relokujú prvé 4kB Monitora PMD 85-3 tak, aby zodpovedal Monitoru PMD 85-2 a prekopíruje sa do RAM od adresy 8000H.

Consul 2717

Consul 2717 (Zbrojováček) má tiež 64 kB RAM a možnosť prepnutia do AllRAM módu. Avšak, spôsob prepínania nie je (zrejme zámerne) kompatibilný s tým na PMD 85. Stránkovanie sa robí 6. bitom portu PC systémového 8255. Ak je na PC6 úroveň L, je pripojená ROM, ak je na PC6 úroveň H, je pripojená RAM. Naviac, ak je pripojená ROM, zápis do RAM nie je, na rozdiel od PMD 85, možný.

Zbrojováček inicializuje systémový 8255 spôsobom (2), takže je celý port PC výstupný, zároveň vynulovaný a pripojená je preto ROM. Prepínanie ROM/RAM sa teda robí nasledovne:

5 MVI A,0CH
OUT 0F7H
nastaví PC6 na úroveň L - pripojená je ROM
6 MVI A,0DH
OUT 0F7H
nastaví PC6 na úroveň H - pripojená je RAM - AllRAM mód


Aj keď to priamo nesúvisí s AllRAM režimom, je treba doplniť, že Consul 2717 má na porte PC využité ešte aj bity PC5 a PC7.

režim zobrazovania

Bit PC5 riadi režim zobrazovania. Ak je PC5 na úrovni L, je VideoRAM organizovaná rovnako ako na PMD 85, teda 288 x 256 bodov s atribútmi v najvyšších dvoch bitoch Video bytu. Ak je PC5 v úrovni H, tak je VideoRAM organizovaná tak, že sa rozlíšenie zmení na 384 x 256 bodov monochromaticky, čo znamená, že sa z Video bytu využíva všetkých 8 bitov a teda chýbajú atribúty.

7 MVI A,0AH
OUT 0F7H
nastaví PC5 na úroveň L - normálny režim zobrazovania 288 x 256 bodov.
8 MVI A,0BH
OUT 0F7H
nastaví PC5 na úroveň H - režim zobrazovania 384 x 256 bodov monochromaticky

preadresovanie pamäte

Bit PC7 riadi tzv. preadresovanie pamäte 0C000h až 0CFFFh. "Vedľa VideoRAM" je nesúvislá oblasť celkovo o veľkosti 4 kB, ktorá sa bežne využíva pre systémové premenné. Túto nesúvislú oblasť možno bitom PC7 preadresovať tak, že sa vytvorí súvislá oblasť od 0C000h až 0CFFFh. Využíva to napr. CP/M, ktoré má tak k dispozícii 52 kB súvislej pamäte (12 kB je stále VideoRAM).

9 MVI A,0EH
OUT 0F7H
nastaví PC7 na úroveň L - preadresovanie je vypnuté
10 MVI A,0FH
OUT 0F7H
nastaví PC7 na úroveň H - preadresovanie je zapnuté

Maťo

Maťo má síce osadených 64 kB RAM, ale 16 kB "pod" ROM nie je prístupných. Po malej úprave je však možné sprístupniť aj túto časť RAM a teda samotný AllRAM mód. Vzhľadom na to, že je systémový 8255 zapojený inak, je aj zapínanie a vypínanie AllRAM opäť odlišné od PMD 85. Stránkovanie sa robí 3. bitom portu PC systémového 8255. Ak je na PC3 úroveň L, je pripojená ROM, ak je na PC3 úroveň H, je pripojená RAM. Naviac, ak je pripojená ROM, zápis do RAM nie je, na rozdiel od PMD 85, možný.

Maťo inicializuje systémový 8255 spôsobom (1), takže PCL je nastavený na výstup a PCH je nastavený na vstup, zároveň je PCL vynulovaný a pripojená je preto ROM. Prepínanie ROM/RAM sa teda robí nasledovne:

11 MVI A,06H
OUT 0F7H
nastaví PC3 na úroveň L - pripojená je ROM
12 MVI A,07H
OUT 0F7H
nastaví PC3 na úroveň H - pripojená je RAM - AllRAM mód

Emulácia

V emulátore sa AllRAM mód plne emuluje a aktivovaný AllRAM mód indikuje modrá LED na informačnom panely.