Találtam némi hiányosságot a technikai leírásokban
nevezetesen a B5h, B6h, B7h portok tisztességes leírása egész egyszerûen hiányzik a hivatalos dokumentumokból! Lehet, hogy volt ilyen leírás, csak még nem került elõ...
A DAVE leírás ilyenekkel intézi el a dolgot, hogy "Aktív alacsony szintû kapujel a WR0 vonalon"...
Aha, biztos úgy van... gondoltam, amikor elõször olvastam, meg még utána is sokáig
Dave bácsinak végülis igaza van, tõle valószínûleg csak annyit kértek, hogy rakjon bele az IC címdekódoló részébe külsõ I/O eszközök vezérléséhez szükséges vezérlõ jeleket is. Azt, hogy ezeket végül pontosan mire fogják felhasználni, valószínûleg nem is tudta, ezért került csak ez a szûk szavú leírás a dokumentációba.
Késõbb viszont csak egy az egyben belecsapták a DAVE leírást a Technical Information könyvbe, nem kiegészítve azt.
Egyes perifériakezelõknél szerepel a Hardver leírás, ahol ismertetik ezen portok bitjeinek jelentését, ezek az eszközök a TAPE, SERIAL/NET, PRINTER.
Viszont a KEYBOARD leírásból teljesen kimaradt! Hivatalos forrásból egyedül
ebben lehet megtalálni, hogyan lehet EP-n közvetlenül billentyûzetet és joystickot olvasni. Viszont mivel ide nem kellett, ezért a Control 1,2 portok teljes tudása ismeretlen maradt.
Kezdjük az elején: a DAVE 3 külsõ I/O eszközhöz biztosít címdekódolást, ráadásul kombinálva az írás/olvasás jelekkel, ezzel is egyszerûsítve a külsõ eszköz felépítését. A 3 I/O port a jól ismert B5h, B6h, B7h, mindegyikhez külön vezérlõ jel van írás és olvasás esetére, ezek a DAVE WR0/RD0, WR1/RD1, WR2/RD2 kimenetei, ezekre vannak rákötve a gép különbözõ ki és bemenetei (billentyûzet, magnó, nyomtató, soros port, joystick). Az RD2 nincs is használva! (Ennek esetleges kihasználásával könnyen lehetett volna egy 8 bites bemenetet építeni a gépbe. Pl egy A/D átalakító chipet rákötve a magnóbemenetre, és kiolvasva az RD2 által, már kész is lehetett volna a digitalizáló...)
B5h írása (WR0) esetén 8 bit tárolódik el az U25 jelû 74LS273 IC-vel megvalósított tárolóban. Ez a 8 bit több eszköz által kerül felhasználásra.
bit 0-3: ezzel a billentyûzet mátrix sorát lehet kiválasztani. Ezt az U26 jelû 74LS145 IC végzi, amely egy BCD dekóder, 10 engedélyezõ kimenettel. Ha ez a 4 bites érték 0h-9h között van, akkor a megfelelõ kimenet 0-ba kerül. Ah-Fh közötti értékeknél egyik kimenet se aktív.
A 10 kimenet a KB0-KB9 jelek, ezek mennek a fólia csatlakozó 10 tûs részére, valamint ezek vannak kivezetve a Control 1/2 csatlakozókra is, megosztva a Control 1 csatlakozóra a KB0-KB4, Control 2-re KB5-KB9.
Itt egyébként maradt lehetõség a fejlesztésre, ha a késõbbi Enterprise típusokban teljesen dekódolva lett volna a 4 bit, azzal komolyabb, több gombos billentyûzet lett volna kezelhetõ, maximálisan akár 16x8 azaz 128 gomb. (Ahogy PC-knél is bejött a 101 gombos billentyûzet.) Nem tudni, hogy azon a bizonyos szuper EP-n éltek-e ezzel a lehetõséggel...
A maradék 4 bit egy-egy inverteren halad keresztül, azaz minden esetben 1-es érték aktiválja az adott funkciót:
bit 4: STROBE kimenet a nyomtató portra
bit 5: magnóhang kikapcsolása
bit 6: REM1 bekapcsolása
bit 7: REM2 bekapcsolása
B5h olvasása (RD0) az U27 jelû 74LS373 IC-n keresztül beolvassa a billentyûzet mátrix kiválasztott sorát.
B6h írása (WR1) esetén 8 bit tárolódik el az U24 jelû 74LS273 IC-vel megvalósított tárolóban. Ez egy az egyben a nyomtató port 8 bites kimenete.
B6h olvasása (RD1) az U28 jelû 74LS373 IC-n keresztül történik, ennek bemenetére azonban már több helyrõl érkeznek a jelek:
bit 0-2: Control csatlakozók Keyboard J, Keyboard L, Keyboard K bemenetei. Ezzel el is érkeztünk az erõsen nem dokumentált részhez. Annyit tudtunk eddig, hogy bit 0 volt használva a külsõ joystickok beolvasásához, az ehhez tartozó Keyboard J láb volt a lábkiosztásban Közösnek (Common) nevezve, ill. használva a joystick átalakítóban. De van ott még kettõ amibõl az egyik ráadásul le is maradt
az EXOS könyvben közreadott lábkiosztásban, csak
az elsõ Application Notes-ben pótolták, ill. a kapcsolási rajzon is rajta van.
Hogyan is mûködik a joystick: "hagyományos" gépek esetén az a 4 irány+tûz az
bemenetek, a joy érintkezõi a GND-vel kötik össze ezeket, itt tehát a GND a Közösnek nevezhetõ vezeték.
EP esetén a 4 irány+tûz az 5
kimenet, ebbõl van két adag a két Control csatlakozóhoz, ezek megfelelnek a billentyûzet mátrix sor kiválasztásnál is használt KB0-KB9 jeleknek, amelyik ki van választva az 0 szintû. A Közös pedig bemenet, ha a joystick érintkezõje összeköti az éppen kiválasztott iránnyal, akkor szintén 0-ba kerül.
Viszont mindez nem csak a szokásosan használt Keyboard J bemenettel végezhetõ el, hanem az L és K bemenettel is! (Kíváncsi lennék, honnan ezek a nevek, a J lehet mint Joystick, de a többi?) Ezzel így egy Control csatlakozóban 3x5 érintkezõt lehet lekérdezni, a két csatlakozón együtt összesen 30-at! Semmi akadálya nem lett volna olyan joy átalakítót készíteni, amivel 2 vagy 3 hagyományos joystickot lehetne egy Control bemenetre kötni, azaz összesen akár 6 külsõ joy is lehetne egy EP-n! Mondjuk a Lightcycles-t átírni 6 játékosra...
Vagy lehetett volna több gombos EP joystickokat készíteni, pl autó vagy repülõgép szimulátorokhoz. Igazából nem is értem miért nem kezdték a perifériák sorát egy gyári, géphez szabott Enterprise joystickkal, több értelme lett volna, mint pl a Speakeasy-nek...
Amúgy a JOY függvény is simán kezelhetné 3,4,5,6 joyokat is, semmibõl nem állna, csak másik bitet kéne venni a B6h-ról olvasott értékben.
Vélhetõleg a külön kapható Numerikus tasztatúra használhatta ki a Control port plusz tudását. Sajnos ilyenbõl még nem került elõ egy sem
Vissza térve a B6h port olvasott bitjeihez:
bit 3: READY bemenet a nyomtató portról, 0 jelzi ha a nyomtató készen áll a kommunikációra
bit 4: Serial/Net csatlakozó Adat bemenet (DATA IN)
bit 5: Serial/Net csatlakozó Állapot bemenet (STATUS IN)
bit 6: Magnó szint bemenet
bit 7: Magnó adat bemenet
B7h írása (WR2) esetén csak 2 bit tárolódik el az U30 jelû 74LS74 IC-vel megvalósított tárolóban.
bit 0: Serial/Net csatlakozó Adat kimenet (DATA OUT)
bit 1: Serial/Net csatlakozó Állapot kimenet (STATUS OUT)
B7h olvasása (RD2) nem használt