Ha minden fólia szakad...

 

 

... arra az esetre jól jön egy professzionális billentyűzet, pl. az IBM XT-é. A kérdés csupán az: hogyan illesszük kedvenc ENTERPRISE-unkhoz?

Két megközelítési mód létezik. Az egyik szerint az XT-billentyűzet elektronikáját elfelejtjük, csak a gombokat használjuk fel. Rettentő munkával az ENTERPRISE fóliájának megfelelően összekötve azokat, egy nyolc- és egy tízerű vezetékkel a fólia helyére csatlakoztatva az eredetinek teljesen megfelelő, "csak" nagyságrendekkel jobb tasztatúrát kaphatunk. Ennek hátránya, hogy bele kell nyúlnunk a gép belsejébe, miáltal a garancia érvényét veszti (bár az ENTERPRISE-kereskedelem helyzetét elnézve, ez ma már alig fenyeget valakit), valamint nem használhatjuk ki az XT billentyűzetének néhány kellemes lehetőségét, például a számmezőt.

A másik megközelítési mód szerint az XT-billentyűzetet egységes egészként kezeljük, és némi hardverrel egybekötött szoftverrel oldjuk meg az ENTERPRISE-hoz való illesztést. Rögtön az elején meg kell azonban vallanom szinte már kegyetlen őszinteséggel, hogy ezt a megoldást nem akceptálja a játékprogramok azon része, amelyek a billentyűzetet közvetlenül, I/O-címeken keresztül kérdezik le. Sajnos ezek teszik ki a több, mint kétharmados többséget, az EXOS billentyűzet-csatornáját használó játékok csupán törpe minoritást képeznek. Viszont azok a géptársak - és nagy örömömre jelentős számban találhatók ilyenek - akik elsősorban nem játéknak, hanem "komolyan" használják a gépet, remek hasznát vehetik egy "igazi" XT-billentyűzetnek.

Lássuk mindenekelőtt, hogy is működik a szóbanforgó tasztatúra! 83 (az amerikain), vagy 84 (az európaiakon) gomb található rajta, amelyeket egy célmikroprocesszor kérdez le (ti. az a mikroprocesszor célja, hogy lekérdezze a gombokat). Ha egy gombot lenyomunk, a processzor a hozzá tartozó kódot (pl. az ESC-re 5Ah-t, az "A"-ra a 1Fh-t, a legmagasabb bit mindig 0) küldi el a központi számítógépnek. Ha a gombot nyomva tartjuk, a kód bizonyos időközzel újra és újra továbbítódik (ismétlés). A központi gép onnan tudja, hogy elengedték végre a gombot, hogy a billentyűzet ennek megfelelő kódot generál: ez ugyanaz, mint a lenyomáskori kód, de a legmagasabb bit 1-ben van (azaz ESC-nél DAh, "A"-nál 9Fh).

Fizikailag az adatátvitel másfélirányú soros vonalon történik. A fönti kijelentést úgy kell érteni, hogy a billentyűzet adatokat küld a számítógépnek (ez eddig egy irány), a számítógép pedig "üzenni" tud a billentyűzetnek, hogy foglalt, illetve a billentyűzetet inicializálni akarja (ez a fél irány). A kapcsolat általában 4 szál dróton keresztül valósul meg. Elvileg a billentyűzetnek van egy ötödik - RESET - bemenete, ezt azonban többnyire hanyagolják. Egy drót a föld, egy meg a +5 volt, ami szinte nélkülözhetetlen. A maradék kettőből az egyiken az adatok, a másikon az órajel áramlik az alábbi módon:

A billentyűzet először is megvizsgálja, hogy az adatvonalat a számítógép nem húzta-e le (ez a foglaltság jelzése). Ha nem, és volt lenyomott, vagy elengedett billentyű, a megfelelő nyolcbites kódot, előtte egy START bittel, szépen sorban elküldi, miközben ennek megfelelően 9 órajelet generál. Az adatbitek az órajel alacsony állapotában érvényesek. Ha a számítógép az óravonalat húzza le legalább 40 ms időre, a billentyűzet önteszt végrehajtása után alapállapotba kerül, az önteszt eredményét (55h, ha minden rendben, FCh, ha valami gond van) pedig elküldi a számítógépnek.

Most, hogy már mindent tudunk az elméletről, rátérhetünk a konkrét illesztőkártya tanulmányozására. A billentyűzet a JP1 ötpólusú tuchel-aljzatra csatlakozik. Soros adatait az U7 léptetőregiszter fogadja, ide érkezik az órajel is, amelynek felfutó élére tárolódik, és lép eggyel tovább a bejövő adat. Legelöl jön a START bit, amely a kilencedik ütemre U7-ből az U8A D-tárolóba kerül (ekkorra U7-ben a nyolcbites kód található). Ennek hatására U8A kimenetei állapotot váltanak, letiltják az esetleges további órajeleket, hogy a beérkezett kód ne íródhasson felül, U5B-n keresztül lehúzzák az adatvonalat, ezzel jelezve a foglaltságot a billentyűzetnek, és végül, de elsősorban átírják a kódot U7-ből az U6 regiszterbe, valamint U5A segítségévet jelzik a számítógépnek a 61h I/O cím 7. bitjén, hogy billentyűkód érkezett. Maga a kód U6-ból a 60h címen olvasható ki.

A 62h cím olvasásával billegtethető az U8B D-tároló: így lehet a billentyűzetet az órajel-vonal U5C-n keresztüli lehúzásával programozottan alapállapotba állítani. A fent említett címek dekódolását az U2, U3B, U4 áramkörök végzik, U1 pedig a stabilizált tápfeszültséget állítja elő a kártya és a billentyűzet számára.

... Miután a billentyűzet-illesztő hardver oldalát sikerült ismertetni (eléggé kimerítően), rátérhetünk a dolog lelkének tárgyalására, a vezérlőprogramra.

A program két fő részbál áll: egy alacsonyszintű (a hardvert közvetlenül kezelő, ha valaki nem erre gondolt volna) és egy magasszintű (az EXOS felé kapcsolatot tartó) modult foglal magába. Ezek a listában is elkülönülnek egymástól. Tehát, ha valaki saját EXOS eszközt kíván definiálni, a kezelő rutinokat külön is felhasználhatja (vagy írhat helyette jobbat).

A forrás a HISOFT GEN ASSEMBLER szintaktikájának felel meg, de kis módosítással az ASMON (SIMON, turbó ASMON etc.) is le tudja fordítani. Az eltéréseket a kellő helyen megemlítem. A sor elején található szavak címkék, ezek elé nem szabad szóközt tenni. A szimbólumok után nem tettem ki a kettőspontot, mivel a GEN ezt nem szereti, az ASMON-nak meg mindegy. A megjegyzések (pontosvessző után) csak a megértést hivatottak segíteni, tehát elhagyhatók. Terjedelmi gondok miatt a teljes lista helyett csak a fontosabb részleteket választottam ki. Ha valakiben maradt még vállalkozó kedv mindezek után, akkor vágjunk bele!

 

Gyányi Sándor & Mészáros Gyula

 

Enterpress III. évfolyam 3. szám május-június,

III. évfolyam 5-6. szám 1992 szeptember-december