A BILLENTYŰZET
----------------


BILLENTYŰZET ILLESZTŐ
---------------------

   A  billentyűzet  a számítógépben egy
négy    csatlakozó   kábelen  keresztül
dugaszolódik,     amely    hasonló    a
telefonkagyló               zsinórjához
(tulajdonképpen       szükség    esetén
helyettesíthető  is vele). A négy huzal
5  Volt  áramot,  földet,  és két jelet
(KCLK    billentyűzet  órajel  és  KDAT
billentyűzet  adatok)  biztosít. A KCLK
egyirányú   és  mindig  a  billentyűzet
hajtja    meg,    a    KDAT-ot  mind  a
billentyűzet,    mind    a   számítógép
meghajthatja.  Mindkét jelnél felfutási
ellenállások  vannak  a billentyűzetnél
(billentyűzet-processzoron       belül)
illetve a számítógépben.


Billentyűzet kommukáció:

   A  billentyűzet  8 bites adatbytokat
visz  át sorosan a főegységhez. Mielött
az  átvitel  megkezdődne,  mind a KCLK,
mind  a  KDAT  magas. A billentyűzet az
első  adat bit kirakásával kezdi meg az
átvitelt    (a  KDAT-on),  amelyet  egy
impulzus    követ   a  KCLK-n  (elöször
alacsony,  aztán magas); azután kirakja
a  második  adatot  és  elküldi  a KCLK
impulzust  folytatva  ezt addig, amig a
nyolc   adatbit  el  nincs  küldve.  Az
utolsó    KCLK  impulzus  vége  után  a
billentyűzet    KDAT-ot   újra  magasra
állítja.  Amikor a számítógép fogadta a
nyolc    bitet,   a  KDAT  vonalon  egy
legalább  75  ms-nyi alacsony impulzust
kell  küldenie, amely mint kezelési jel
szükséges    a   billentyűzet  számára.
Minden  a  kód, amelyet a számítógéphez
továbbit  a  billentyűzet egy bittel el
van  forgatva.  Az átvitt sorrend ezért
6-5-4-3-2-1-0-7.  Ennek az az oka, hogy
a  be/ki  jelzést  utoljára  vigye át a
gép,  annak érdekében, hogy a billentyű
be/ki  kód utoljára legyen átvive, ha a
billentyűzetnek        egy    elveszett
szinkront        kell    visszaállítani
(részletesen   később).  A  KDAT  vonal
aktív  alacsony,  ami azt jelenti, hogy
a  magas szint (+5V) 0-ként fordítódik,
és   az  alacsony  szintű  jel  értelme
1.  A  billentyűzet  processzor  a KDAT
vonalat  kb.  20  ms-nyi  időre állítja
be,    mielött    a  KCLK-t  alacsonyra
venné.A  KCLK  alacsony  marad  kb.  20
ms-ig  és utána újra magas lesz. Ezután
a  processzor  újra 20 ms-ig vár a KDAT
megváltoztatása    elött.    Ezért    a
bitsebesség  az átvitel alatt kb. 60 ms
bitenként       vagy    másképpen    17
kbit/másodperc.


Billentyű kódok:

   Minden    billentyűnek    van    egy
hozzárendelt    billentyű    kódja.   A
billentyű  kódok  midig 7 bit hosszúak.
A  nyolcadik  bit  egy  billentyű be/ki
jelzés;  a 0 (magas szint) azt jelenti,
hogy  a  billentyű le volt nyomva és az
1  (alacsony   szint) azt jelenti, hogy
a  billentyű nem volt lenyomva. (A CAPS
LOCK  billentyű különbözik ettöl - lásd
később).

Például:  -  a B billentyű kódja $35H =
00110101;  a byte bitjeinek elforgatása
miatt    az  átvitt  bitek  :  01101010
(billentyű   lenyomva)  -  a  billentyű
jelen  pillanatban  nincs  lenyomva,  a
billentyű-kód  még  mindig $35H, kivéve
ha  a  7. bit magasra van állítva, hogy
a  billentyű  funkciót  jelezze,  így a
billentyű-kód  végeredménye  :  $35H  =
10110101    lesz.  Elforgatás  után  az
átvitt bitsorozat : 01101011.


CAPS LOCK billentyű:

   Ez  a  billentyÜ  abban különbözik a
többitől,    hogy  csak  akkor  generál
billentyű  kódot,  ha  le  van  nyomva,
amikor  nincs  lenyomva, akkor sohasem.
Azonban    a    be/ki   bit-et  itt  is
használja  a rendszer. Amikor lenyomjuk
a  CAPS LOCK billentyűt, ez kapcsolja a
CAPS  LOCK led-jét, a be/ki bit 0 lesz,
amikor    a  CAPS  LOCK  kikapcsolja  a
led-et, a be/ki bit 1 lesz.


Szinkronon kívüli feltétel:

   Zaj  vagy más elektromos problémák a
billentyűzet  és  a  számítógép közötti
szinkron  elvesztéséhez vezethetnek. Ez
azt  jelenti,  hogy  a billentyűzet már
befejezi    a    kód  átvitelét,  de  a
számítógép  még  csak  valahol  középen
tart.  Ha  ez  történik, a billentyűzet
nem    fogja    megkapni    a  kezelési
impulzust    az  átvitel  végén.  Ha  a
kezelési  impulzus  nem érkezik meg 143
ms-on  belül  az  átvitel  utolsó  KCLK
jelétől    számítva,    a  billentyÜzet
feltételezi,   hogy  a  számítógép  még
mindig  vár  az  átvitel többi részére,
és  ezért  elvesztette  a  szinkront. A
billentyűzet      ezután    megpróbálja
visszaállítani  a  szinkront,  úgy hogy
ún.    "újraszinkronizálási   mód"  -ba
kerül.  Ebben  a  módban a billentyűzet
kibocsát    egy  "1"  jelet  és  vár  a
kezelési    impulzusra.  Ha  143  ms-en
belül  nem  érkezik  egy sem, akkor egy
másik  "1" -est bocsájt ki és újra vár.
A    folyamat    folytatódik    amig  a
kezelés-jel   meg  nem  érkezik.  Ha  a
szinkron  visszaállítódott,  azt  a gép
úgy  érzi,  mintha  a  billentyűzet egy
rossz  karaktert  bocsátott  volna  ki.
Ezért  van  az,  hogy a billentyű be/ki
bitet  viszi  át  a  rendszer utoljára.
Mivel  a  billentyűzet  "1"  -es  jelet
bocsát  ki a szinkron visszaállítására,
az  átvitt  karakter  billentyű ki-ként
lesz  értelmezve, ami kevésbé veszélyes
mint  egy  billentyű  leütés.  Amikor a
billentyűzet      vesztett    szinkront
érzékel,      feltételezi,    hogy    a
számítógép    nem    tudta   fogadni  a
billentyű    kódot,    amelyet  átvinni
próbált.  Mivel  a  számítógép képtelen
rá,    hogy    felfedezze   a  vesztett
szinkront,  a  billentyűzet felelőssége
lesz,    hogy    a  számítógépet  erről
értesítse.  Ezt egy "vesztett szinkron"
kód    küldésével    tudatja  a  géppel
(értéke   $F9=11111001).  Ezután  pedig
újra küldi azt a kódot, ami elromlott.

   -  Megjegyzés: A "vesztett szinkron"
kód  küldésének  egyedüli  oka,  hogy a
szoftvert  figyelmeztesse,  hogy valami
nincs  rendben.  A  "vesztett szinkron"
kód    nem    segít   a  visszaállítási
folyamatban,    mert   rossz  billentyű
kódot  egyszerűen meg lehetne ismételni
anélkül,  hogy  megmondanánk  a gépnek,
hogy az elsőben hiba volt.


Bekapcsolási sorrend:

   Két   lehetséges  módja  van  annak,
hogy      a    billentyűzetet    normál
körülmények  között áram alá helyezzük;
a        számítógépet       bedugaszolt
billentyűzettel  együtt  kapcsoljuk be,
vagy    pedig    a    már    bekapcsolt
számítógépbe        dugjuk    bele    a
billentyűzetet.    A  billentyűzetet  a
számítógépnek    mindkét  esetben  hiba
nélkül  kell  tudni  kezelnie.  Az első
dolog,  amit a billentyűzet bekapcsolás
esetén    tesz,    hogy  végrahajt  egy
ön-tesztet.  Ez  magában foglal egy ROM
ellenörző-osszeg  tesytet, egy egyszerű
RAM    tesztet    és   egy  valódiságot
ellenőrző  időzítő  tesztet.  Amikor  a
billentyűzet  áram alá kerül (vagy újra
inditás  esetén  -  lásd  később),  nem
szabad  semmit  sem  átvinnie,  amig  a
számítógéppel    el    nem    érte    a
szinkronizálódást.  Ezt úgy teszi, hogy
lassan  kibocsátja  a  biteket, ahogyan
fent  le  van írva, egészen addig, amíg
a        kezelési     jel    meg    nem
érkezik.    Ha    a   billentyűzet  már
bekapcsolás  előtt  be  van dugaszolva,
akkor  a  billentyűzetnek ez a folyamat
néhány  másodpercig is eltarthat mert a
számítógép  ugyanis  az önindítással és
futás      kezeléssel    bajlódik.    A
billentyűzetnek  addig  kell  az 1-esek
kibocsátását  folytatni, míg el nem éri
a  kezelési  jelet. Ha a billentyűzetet
bekapcsolás  után  dugaszoljuk  be, nem
több  mint  nyolc  1-esre  van szükség,
hogy  a  szinkront  elérjük.  Ebben  az
esetben  azonban a számítógép bArmilyen
elképzelhető  állapotban  lehet,  de az
biztos,    hogy    a    fogadott  rossz
karaktereknek  nem  szabad befolyásolni
a  gépet.  Azért,  mert  nem  lenyomott
billentyű  jelet  fogad, az ejtett hiba
elhanyagolható.             És        a
billentyűzet-meghajtónak      számítani
kell  erre  az  eshetőségre  és  tudnia
kell  ezt  kezelni  is, amint bármilyen
egyébb    alkalmazást  is  kell  tudnia
kezelni,   amig  csak  billentyűkódokat
használ.  Miután  a  billentyűzet  és a
számítógép    szinkronban    vannak,  a
billentyűzetnek  tájékoztatnia  kell  a
gépet  az  önteszt  eredményéről. Ha az
önteszt  bármilyen  okból nem sikerült,
akkor  "önteszt  hiba"  kódot  visz  át
(értéke  $FC=11111100) ( a billentyűzet
nem  vár  kezelési  jelre  miután ezt a
kódot  elküldte). Ezután a billentyűzet
processzor  egy hurokba kerül, amelyben
villogtatja  a  CAPS  LOCK led-et, hogy
tájékoztassa  a felhasználót a hibáról.
A    villanások   egymagukban,  kettes,
hármas     vagy    négyes    csoportban
fordulhatnak        elő       és    kb.
másodpercenként egyszer villog a led.


Egy     villanás = ROM  ellenőrzőösszeg
                   hiba

Két     villanás = RAM    teszt    hiba

Három   villanás = valódiság  ellenőrző
                   időzítő  teszt  hiba

Négy    villanás = egyfajta     kijárás
                   két   sor    vonalai
                   között    vagy   két
                   speciális  billentyű
                   között  (még   nincs
                   beépítve.)

   Ha    az  önteszt  sikerrel  jár,  a
billentyűzet     átviszi    azokat    a
billentyűket,        amelyeket    éppen
lenyomtunk.  Elöször  elküld egy "kezdő
billentyű"  kódot  (érték $FD=11111101)
amelyet  a  lenyomott billentyűk kódjai
követnek   (a    billentyű  kikapcsolva
minden    esetben).    Miután    minden
billentyűt   elküldött  (általában  nem
lesz  egy sem), a "záró  billentyű" kód
jelenik    meg  (értéke  $FE=11111110).
Legvégül    pedig  a  CAPS  LOCK  ledje
kikapcsolódik.  Ez  mutatja  a  kezdési
műveletek  végét,  amely  után a normál
működés következik.

   -    Megjegyzés:  ezek  a  speciális
kódok    nyolc    bites  számok,  nincs
billentyű    be-ki  hozzájuk  rendelve.
Mindazon  által  az átviteli bitsorrend
megegyezik  a  fejezet elején leírttal.
Az  események  általános  menete ezért:
áram  be, szinkronizálás, $FD átvitele,
$FE átvitele.


Hidegindítás:

   A  billentyűzetnek a feladata az is,
hogy    a    számítógépet  resetelje  a
felhasználó  parancsára.  A felhasználó
a  hideg indítást a CTRL és a két AMIGA
lenyomásával      kezdeményezheti.    A
billentyűzet  erre úgy válaszol, hogy a
KCLK    vonalat   alacsonyra  teszi  és
elindít  egy 500 ms-os időzítőt. Az 500
ms   végén  a  processzor  ellenőrzi  a
három  billentyűt,  hogy  még mindig le
vannak-e  nyomva,  és ha így van, akkor
újraindítja  az  500 ms-os időzítőt. Ez
egészen  addig folytatódik amíg a három
billentyű  közül egyet el nem engedünk.
Amikor   egy  vagy  több  billentyűt  a
három  közül  elengedtünk, a processzor
az  500  ms  végéig vár. Ezután a kezdő
címre  ugrik,  amely elengedi a KCLK-ot
és újra indítja a billentyűzetet.


Speciális kódok:

KÓD          Jelentés
---   --------------------------------
F9    Az utolsó billentyűkód rossz,
      a következő kód ugyanaz
      megismételve (akkor használatos,
      amikor a gép és a billentyűzet
      elveszti a szinkront).
FA    Billentyűzet kiviteli puffer
      túlcsordulás
FB    Használaton kívül
FC    Billentyűzet önteszt hibás
FD    Kezdő billentyű
FE    Záró billentyű
FF    Használaton kívül



BILLENTYŰZET HARDVER
--------------------

   Ez  az  AMIGA  billentyűzeten belüli
hardver     leírása.    Ez    csak    a
billentyűzet  második változatára igaz,
arra,  amely  a  hitelesítő  időzítővel
rendelkezik.


Processzor:

   Típusa              Rockwell/NCR/MOS
Technologies  6500/1.  2  Kbyte  ROM-ot
tartalmaz,  64  byte  RAM-ot  és 4 db 8
bites  I/O portot. Ezenkívül van egy 16
bites  számlálója  és  (az  A  port 0,1
bitjén)  két  I/O  vonalain élfelismerő
képességgel  rendelkezik.  Van  még egy
beépített  kristály-oszcillátora  amely
3.00      MHz-en    működik,    amelyet
kettéosztva   kapjuk  meg  az  1.5  MHz
belső órajelet.


Reset áramkör:

   Van  egy  áramkör  ami a bekapcsolás
esetén  reseteli a processzort. A reset
impulzus  kb.  1  s-ig  tart, miután az
áramot    bekapcsolta.    Az    áramkör
valódiság    ellenőrzést    is   végez:
mihelyt  a processzor elkezdi átfutni a
billentyűzetmátrixot    ,a    valódiság
ellenőrző  időzítő  is működésbe lép és
reseteli    a    processzort,    ha  az
átvizsgálás  több  mint  50  ms-ig  áll
valahol.  A 15-ös oszlop vonala indítja
a valódiság ellenőrző időzítőt.


Billentyűzet mátrix:

   A  billentyűzet 91 gombot tartalmaz.
Közülük  84  egy  6  soros  15 oszlopos
mátrixba  van rendezve (hat lyukat hagy
a  mátrixban). Mindegyik sor bemenet és
rendelkezik        egy        felfutási
ellenállással,  amelyen a tápfeszültség
esik  (R=3.3  K-tól 11 K-ig). Mindegyik
oszlop    egy-egy    nyilt  csatlakozó,
amelyen    nincs   felfutó  ellenállás;
például  meg  tud  hajtani egy oszlopot
alacsonyan    de    magasan    nem.   A
redszerprogram  egy  oszlopot  hajt meg
egyszerre        és        olvassa    a
sorokat.    A    hét   másik  billentyű
különleges  shift  billentyű: CTRL, bal
SHIFT,  jobb  SHIFT, bal ALT, jobb ALT,
bal     AMIGA    jobb    AMIGA.    Ezek
mindegyikének  van egy külön bemenete a
processzoron.  A portok és a billentyűk
bitszámai   az  alább  leírtak  alapján
alakulnak.


Portok:

   Mint  már  említettük négy egyenként
8    bites  I/O  port  van.  Az  alábbi
táblázat  leírja  a portokat és bitjeik
jelentését:


" A " port - 6500/1 cim $080
-----------------------------

PA.0    be/ki    KDAT kimenet/pozitív
                 élfelismerő bemenet
PA.1     ki      KLCK kimenet *
PA.2     be      bemenet 0. sor
              (alacsony=kapcsoló zárva)
PA.3     be      bemenet 1. sor
PA.4     be      bemenet 2. sor
PA.5     be      bemenet 3. sor
PA.6     be      bemenet 4. sor
PA.7     be      bemenet 5. sor

(* Az  előző  kódrol  vannak kicserélve
ezek   a  bitek,  hogy  kihasználják  a
pozitív  él  érzékenységét a PA0 lábnak
így  könnyebb  felismerni  a  kezelést)


" B " port - 6500/1 cím $081
-----------------------------

PB.0     be      jobb SHIFT bill.
     bemenet (alacsony=kapcsoló zárva)
PB.1     be      jobb ALT billentyű
                 bemenet
PB.2     be      jobb AMIGA billentyű
                 bemenet
PB.3     be      CTRL billentyű bemenet
PB.4     be      bal SHIFT billentyű
                 bemenet
PB.5     be      bal ALT billentyű
                 bemenet
PB.6     be      bal AMIGA billentyű
                 bemenet
PB.7     be      CAPS LOCK led vezérlő
               (magas=led bekapcsolva)


" C " port - 6500/1 cím $082
-----------------------------

PC.0     ki      0. oszlop kimenet
            (aktív alacsony szint)
PC.1     ki      1. oszlop kimenet
PC.2     ki      2. oszlop kimenet
PC.3     ki      3. oszlop kimenet
PC.4     ki      4. oszlop kimenet
PC.5     ki      5. oszlop kimenet
PC.6     ki      6. oszlop kimenet
PC.7     ki      7. oszlop kimenet


" D " port - 6500/1 cím $083
-----------------------------

PD.0     ki      8. oszlop kimenet
PD.1     ki      9. oszlop kimenet
PD.2     ki     10. oszlop kimenet
PD.3     ki     11. oszlop kimenet
PD.4     ki     12. oszlop kimenet
PD.5     ki     13. oszlop kimenet
PD.6     ki     14. oszlop kimenet
PD.7     ki     15. oszlop kimenet *

(* A  billentyűzetnek  csak  15 oszlopa
van,  0-14-ig  számozva,  így azonban a
processzor 16 oszlopot  tud  támogatni,
így a jövőben ezt még kihasználhatjuk.)


SZÁMLÁLÓ LÁB  (bemenet vagy kimenet)

   A    valódiság   ellenőrző  lapon  a
számláló  láb  a  15. oszlop kimenetére
van  kötve.  A régebbi, valódiságot nem
ellenőrző  változatban  a  számláló láb
nincs    bekötve.    Ez   biztosítja  a
billentyűzet    processzor   számára  a
képességet,  hogy  meghatározza  melyik
fajta  lapba  van  beépítve,  így az új
processzor    a  régi  lapokon  is  tud
működni    (a    lapon  végzett  kisebb
változtatásokkal).


NMI BEMENET

   Ez  a  VCC-re  van  kötve  és  ezért
sohasem kapcsolódik be.


MÁTRIX TÁBLÁZAT

   A    következő    táblázat  mutatja,
melyik    billentyűk  olvashatók  az  A
portban  mindegyik meghajtott oszlopra.
A  billentyűk  kódja is megtalálható az
ábrán (zárójelben, hexadecimálisan).


Készítette : FRICFORCE from FI-RE CREW
