AllRAM
Z PMD 85 Infoserver
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 (8000H až 8FFFH) 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 9000H až 0BFFFH 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.