Konference: Počítač SHARP MZ-800 a emulátory
Od: | Petr Žydek |
Datum: | 5.5.2004 06:05 |
Předmět: | Ramdisk Müller se SIMMy s max. 16MB |
Ramdisk Müller se SIMMy s max. 16MB: |
Ještě jednou odkaz se schematem:
http://www.mz-800.aktualne.cz/files/tech/rd-256kb.tif
Detailní popis Hw Müllera jsem publikoval v příspěvku
z 25.4. Úprava pro SIMMy je nakonec jednodušší,
než jsem myslel...
Pohleďme na osm pamětí 4464. Vždy dvojice dává
osm bitů dat, vstupuje do ní osm adresních vodičů
A0..A7, signály RAS\', CAS\' (ty vedou do všech čipů
zároveň), OE\' a WE\'. Představme si tedy čtyři
dvojice jako čtyři "SIMMy" (modul SIMM 256KB
zredukujeme snadno na 64KB připojením adresního
pinu A8 na úroveň LOW). Pokud je výkonný člen
na bázi PROM 74188 schopen vygenerovat příslušný
počet CAS before RAS refresh cyklů, musí
čtyři vložené moduly 256KB fungovat stejně jako
čtyři dvojice pamětí 4464. Tato hypotéza platí
i pro čtyři moduly 1MB resp. 4MB (není odzkoušeno).
Plnou kapacitu ramdisku využijeme samozřejmě jen
správným stránkováním - ovládáním I/O portu E9h.
Jak na to?
U17 74LS193 nahradíme obvodem 74LS273 (osmibitový
registr s nezávislým resetem). Jeho NEJVYŠŠÍ dva
výstupní bity (u Müllera je to naopak!) přivedeme
na vstupy dekodéru U20B 74LS139. Nižších šest bitů
přivedeme na obvod 74LS257 (jediný přibyvší), na
jeho výstupech získáme tři multiplexní adresní
vodiče A8..A10 (modulu 4MB odpovídá 22 bitů
adresy, což je 11 multiplexních vodičů A0..A10).
Tato struktura dovoluje osadit libovolný počet
SIMMů s libovolnou kapacitou modulu (256KB, 1MB,
4MB).
Stránkový "management" ramdisku 16MB:
-celkem 256 stránek po 64KB, nejvyšší dva bity
při zápisu na port E9h představují adresu
SIMM modulu:
out E9h=00h..3Fh ---> 64 stránek "nulté" patice
out E9h=40h..7Fh ---> 64 stránek "první" patice
out E9h=80h..BFh ---> 64 stránek "druhé" patice
out E9h=C0h..FFh ---> 64 stránek "třetí" patice
Při zasunutém modulu do nulté patice je zajištěna
funkčnost SRAMu - sériové paměti, rammdisku pro
Basic i systému Lamač CP/M (po resetu je stav
jako při out E9=00h).
Jinak jsou možné i krkolomnosti např.:
nultá patice ... nic
první patice ... SIMM 1MB
druhá patice ... SIMM 4MB
třetí patice ... SIMM 256KB
celková kapacita 5,25MB (blbý, co?)
Ale možné to je, obslužný program si musí
ohlídat správné hodnoty na portu E9h:
00h..3Fh ---> nemá smysl
40h..4Fh ---> 16 stránek v modulu 1MB
80h..BFh ---> 64 stránek v modulu 4MB
C0h..C3h ---> 4 stránky v modulu 256KB
Autodetekce kapacity SIMMového ramdisku v rámci
nového HDD+CF O.S. (a detekce jednotlivých modulů
a jejich pozic) by mohla probíhat takto:
out E9h=00h ... zjistit, zda je osazena nultá patice,
je-li zápis/čtení OK, out E9h=předchozí hodnota+1
(zjišťuje kapacitu SIMMu), atd.
out E9h=40h ... zjistit, zda je osazena první patice,
je-li zápis/čtení OK, out E9h=předchozí hodnota+1
(zjišťuje kapacitu SIMMu), atd.
atd., atd. (druhá, třetí patice)
Samozřejmě že refresh i I/O cyklus čtení/zápisu lze
provést i jinak (předložte návrhy, schemata), čím
méně IC, tím lépe.
Ale tu navrhovanou konvenci se správou stránek
(modulů SIMM) mi neberte ...
(Zdá se mi praktická, je na to třeba pamatovat
při výběru aktivní stránky, jinak se programová
obsluha neodlišuje od klasických ramdisků 80. let
ani od High-Capacity variant se SRAM paměťmi)
příště:
-definice portů všech zařízení na kombo kartách
-návrh mechanického a rozměrového řešení karty
Petr de Zviqov
[2004/1 (1)] [2004/2 (1)] [2004/4 (33)] [2004/5 (34)] [2004/6 (12)] [2004/7 (1)] [2004/8 (12)] [2004/9 (31)] [2004/10 (52)] [2004/11 (43)] [2004/12 (4)]