            TESTOVÁNÍ KLÁVESNICE

K testování klávesnice slouží port A a B.Přes výstupní
port A se sloupce 1-10 matice klávesnice musí nastavit
na L-úroveň.Zároveň se testuje řada 11-18 přes vstupní
port B,zda nenastane L-úroveň.Takto lze testovat místo,
kde se kříží sloupec s řadou,tj. místo kontaktu.Tento
druh čtení klávesnice se nazývá SCANNEN.Samozdřejmě
nemusí být čtena vždy celá klávesnice,ale je také možné
testovat pouze určité klávesy,a to např.v ROM-monitoru
rutinou 001EH.
Na základě krátkých programů by se měla objasnit práce
s klávesnicí.Přitom je třeba brát v ohledu,že zde na-
bízená možnost testování klávesnice může být realizována,
když je KEY TIMER řízen v paměti od E000H do E070H.

Na port A je zapsáno číslo sloupce (=8)

    LD A,F8H       3E F8
    LD (KEYPA),A   32 00 E0

Pro stabilizaci se přidává NOP.Potom se zjiští informace
přes port B řady 11-18 pro sloupec 8

    NOP            00
    LD A,(KEYPB)   3A 01 E0

Zpětné nastavení bitu carry a testování bitu 0 (=BREAK)

    OR A           B7
    RRA            1F
    JP C,?BRK2     DA 80 09

Je-li zmáčknuta klávesa SHIFT,nastaví se návěští C na 0
a dvojitou rotací vlevo se posune BREAK bit do návěští C
a nastaví BREAK

    RLA            17
    RLA            17
    JR NC,?BRK1    30 04    SHIFT&BREAK zmáčknut CY=0

Pokud není BREAK zmáčknut,je do ACC uložena hodnota pro
klávesu SHIFT (bit 6=1),je nastaveno náv.C a proveden
skok zpět

    LD A,40H       3E 40
    SCF            37
    RET            C9

Pokud je BREAK zmáčknut,je zrušeno náv.C,nastaveno náv.Z
a proveden skok zpět.
    XOR A          AF
    RET            C9

Tento program nám také oznámí výsledek testování stavem
návěští a bitů 4-6 v ACC.Přitom znamená:

a) Z=1          SHIFT a BREAK zmáčknuty
b) D6=1 & CY=1  SHIFT zmáčknut
c) D5=1 & CY=1  Control (CTRL) zmáčknut
d) D4=1 & CY=1  SHIFT a Control zmáčknuty

V předchozím úseku bylo testování zvláštních kláves,
jako např. SHIFT&BREAK provedeno se speciálními rutinami.
Výsledek testování byl ukázán přes návěští.Ve většině
případů je testována celá klávesnice a výsledek testování
je jako hodnota předložen registru.Zde používá SHARP
speciální kód přispusobený klávesnici,tzv.display.Tato
tabulka s kódy však není v OWNER`S MANUAL vytisknuta,
najdete ji ale v příloze této knihy.Vlastní testování
kláves se provádí monitorovou rutinou 0A50H.Výsledek je
k dipozici v registru BC.Registr B osahuje přitom stav
zvláštních kláves,tedy při zmáčknutí SHIFT,BREAK,CTRL,
atd..Toto odpovídá výsledku našeho posledního proramu,
takže když je Z=1,potom je zmáčknut SHIFT&BREAK atd..
Registr C obsahuje hodnotu řádku a sloupce zmáčknuté
klávesy.Obsah reg.C bude následující:

XXSSSZZZ

X  =není použito
SSS=číslo sloupce
ZZZ=číslo řady

Tento výsledek čtení zmáčknuté klávesy se zjistí např.
čtením klávesy `A`,přičemž v reg.C bude hodnota 20H,nebo
čtením klávesy `B`,přičemž v reg.C bude hodnota 21H.

Program čtení monitoru však nebere v ohledu sloupec10=F9H,
tím pádem nemohou být čteny funkční klávesy.Následující
strojový program čte funkční klávesy F1 až F5.

FTASTE : LD A,F9H
         LD (KEYPA),A
         NOP
         LD A,(KEYPB)
         CPL
         OR A
         RET Z
         EXX
         LD D,00H
         LD B,00H
FT1 :    INC B
         RLCA
         JR NC,FT1
         LD A,B
         RLCA
         LD E,A
         LD HL,FLEI-2  Na adrese FLEI je program pro
                       skok na čtení F1 až F5.Adresy
                       a data si každý může zvolit sám.
         ADD HL,DE
         LD C,(HL)
         INC HL
         LD B,(HL)
         POP AF
         PUSH BC
         EXX
         RET

Je třeba brát v ohledu,že podle tohoto programu mají
F-klávesy funkci GET.Program tedy probíhá jen jednou,
tzn.,že se nečeká na zmáčknutí klávesy.Není-li zmáčknuta
F-klávesa,vrací se program s náv.Z=0 zpět do hlavního
programu.

