Z80System feladott egy kis digitális fejtörőt
Olyan cartridget szeretne, amivel módosítatlan alapgéppel is tud IDE kártyát használni, úgy hogy csak IDE kártya semmi más.
Ehhez kell egy WD nélküli EXDOS meg egy IDE ROM a cartridgbe, ezzel nincs is gond. A Probléma ott van, hogy így ilyenkor az IDE ROM a rendszerszegmensben foglal memóriát, ami már korábban kiderült, hogy gondot okoz több szabálytalan programnál, ami durr-bele módon írja a rendszerszegmenst.
Könnyen lehetne 32K ROM 32K RAM cartridge-t csinálni, azonban az EXOS 2.1 hibája miatt nem működik a bővítők saját szegmenst foglalnak funkció, vagyis módosítatlan alapgéppel nem működik a dolog.
A megoldás az, amit az SD kártyás cartridgehez is javasoltam, és meg is lett valósítva. Egy szegmens (a 07h) megosztott, az eleje ROM, a másik fele RAM, így az ide kerülő bővítőnek van saját RAM-ja nem kell az EXOS-tól kérni.
Így jön létre az, hogy 56K ROM + 8K RAM konfiguráció kell, ami a gyakorlatban azt jelenti, hogy egy kétfoglalatos cartridgeben lesz egy 64K-S EPROM aminek az utolsó 8K-ja nem lesz kihasználva, és a másik foglalatban egy 8K SRAM IC.
A fejtörő ott jön, hogyan oldjuk meg a címdekódolást ehhez? Az eredeti megoldással 2x8K, 2x16K, 2x32K, 1x64K ami kihozható.
Nézzük a címdekódoláshoz használt 74ALS138 típusú IC-t:
[ Guests cannot view attachments ]
A 3 bementre (A-B-C) rákötve az A13-A15 címvezetékeket a 8 kimenet mindegyike meg fog felelni egy-egy 8K memória tartománynak. Hurrá az Y7 az pont jó is lesz a 8K SRAM-hoz, az lesz a 7-es szegmens felső fele.
Viszont az EPROM-hoz a Y0-Y6 nem jó, további áramkörök kellenének, hogy ez a hét jel egy engedélyező jellé álljon össze...
Lássunk egy másik IC-t, 74151:
[ Guests cannot view attachments ]
Ennek is van A-B-C bemenete, amire mehet az A13-A15. Van még további 8 bemenete (D0-D7), az A-B-C-n lévő érték ezek közül fog választani, ami aztán kimegy az Y kimenetre, az invertálva meg W-re.
Vagyis ha a D0-D6 1-re van állítva, a D7 pedig 0-ra, akkor a W kimeneten ott lesz a kívánt alacsonyszintű engedélyező jel az EPROM-hoz 56K címtartományban. Sőt az Y pedig pont a maradék 8K-ban alacsony, ami mehet is az SRAM-hoz.
Hurrá, készen vagyunk?! Sajnos van még egy kis bibi: mindennek akkor kell működnie amikor a cartridge aktív, azaz a CART jel 0. Ez a jel mehet is a 151-es STROBE bemenetére. Amikor aktív azaz 0, nincs is baj.
A gond akkor lesz amikor nem aktív, ilyenkor a kimenetek alaphelyzetbe állnak. Az EPROM-hoz használt W láb ilyenkor 1-be áll, azaz letiltja az EPROM-ot, nincs gond. Viszont az SRAM-hoz használt Y kimenet 0, azaz engedélyezné az SRAM-ot, amivel rövidúton adatütközés lenne a buszon, el se indulna a gép, mivel a ROM program helyett is szemetet olvasna a CPU...
Lehetne esetleg két, ellentétesen programozott 151-est használni, mindegyiknek csak a W kimenetét, egyiket az EPROM-hoz, másikat az SRAM-hoz, de én minél kevesebbet akarnék drótozni
Itt jön képbe a 8K SRAM elavult, különc tulajdonsága, ami a nagyobb IC-kről már el lett tüntetve:
[ Guests cannot view attachments ]
Két chip engedélyező bemenet (CS1,CS2) van, ráadásul a második a szokásossal ellentétben magas szintű jelre (1) aktív.
Az EPROM-mal közösen szintén a 151-es W kimenetét használva mehet a CS2-re, amikor az 0 az EPROM aktív, amikor 1, akkor az SRAM.
Jön megint a probléma, hogy mi van akkor ha a CART nem aktív, hiszen ekkor a W=1, ami engedélyezné az SRAM-ot. Itt jön felmentő seregként a CS1 bemenet, amire az eredeti CART jel köthető. Így hiába lesz hamis engedély a CS2-n, a CS1 megakadályozza az SRAM téves aktíválását.
Győzelem, az eredeti címdekóder helyére csak egyetlen másfajta IC-t bedrótozva megoldható egy kétfoglalatos cartridge átalakítása a célnak megfelelőre.