Klávesnica Maťo

Z PMD 85 Infoserver

Klávesnica Maťo


Obsah


Detail klávesnice počítača Maťo
Detail klávesnice počítača Maťo
Schéma klávesnice počítača Maťo
Schéma klávesnice počítača Maťo

Klávesnica počítača Maťo obsahuje 55 klávesov a má oproti klávesnici na PMD 85 odlišné zapojenie a teda aj iný spôsob jej testovania. Okrem znakových a číselných klávesov obsahuje klávesnica aj kláves SHF (Shift) pre zadávanie malých písmen a symbolov a kláves CNT (Control) pre vyvolanie riadiacich (editačných) funkcií. Ako osobitné funkčné klávesy sú iba 4 kurzorové šípky. Kláves EOL je zdvojený. Na klávesnici sú samozrejme aj klávesy STOP a RST. Tlačidlá klávesov sú, rovnako ako na PMD 85-2 a neskorších, na báze vodivého elastoméru (vodivej gumy).

Zapojenie klávesnice

Klávesnica je umiestnená na samostatnej doske plošného spoja a so základnou doskou sa spája pomocou 30 pinového FRB konektora. Interfejs klávesnice je tvorený obvodom MHB 8255A, ktorý je ešte na základnej doske. Na doske klávesnice sú okrem 56 klávesov (pod medzerníkom sú dve telieska) už iba akustický menič a indikačná LED zapnutia počítača.

Klávesnica je riešená ako matica spínačov 7 riadkov a 7 stĺpcov. Riadky matice sú pripojené na port PA a riadok matice je vybraný vtedy, ak sa na daný bit zapíše 0. Čítanie stavu vybraného riadku klávesnice sa robí čítaním portu PB. Ak je kláves stlačený, je príslušný bit nulový. Na poslednom bite (PB7) je mimo matice klávesnice samostatne kláves EOL, takže jeho stav je možné zistiť bez ohľadu na to, či je niektorý riadok vybraný. Klávesy SHF (PC5), CNT (PC6) a STOP (PC4) sú pripojené samostatne na port PC a aj ich stav je tak možné čítať kedykoľvek bez ohľadu na vybraný riadok klávesnice. Aktivácia klávesu RST je podmienená stlačením klávesu CNT, čo zabraňuje náhodnému resetu počítača.

Na bit PC1 je pripojený akustický menič. Pozor, je to z nie celkom jasných dôvodov na inom bite, ako na PMD 85, kde je akustický menič na bite PC2! Ďalším rozdielom oproti PMD 85 je skutočnosť, že na Maťovi nie sú pevné frekvencie 1 kHz a 4 kHz. Paradoxne, bit PC2 nie je na Maťovi vyvedený. Najpravdepodobnejšie vysvetlenie bude to, že urobili chybu pri návrhu plošného spoja a už ju nemohli, kvôli väčšiemu množstvu vyrobených kusov, opraviť. Asi preto sa v Monitore v rutine pre generovanie zvuku menia oba bity PC1 aj PC2.

Na port PC je pripojený aj interfejs magnetofónu (na obrázku nie je celkové zapojenie). Na bite PC0 je výstup na magnetofón, na bite PC7 je vstup z magnetofónu a na bite PC3 je programová voľba polarity signálu pri čítaní z magnetofónu. Avšak v Monitore nie je pre tento bit žiadna softvérová podpora a zároveň je pre jeho využitie nutná zmena prepojky pre voľbu polarity na plošnom spoji. Vzhľadom na túto "nepoužiteľnosť" pre voľbu polarity magnetofónového signálu je vhodné bit PC3 využiť pre prepínanie režimu AllRAM.

Tabuľka klávesnicovej matice

Výber riadku
(OUT 0F4h)
Čítanie stavu zvoleného riadku (IN 0F5h)
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
0BFh | 10111111b EOL  : * @ ` Space
0DFh | 11011111b EOL O o L l . > 9 )  ; + / ? P p
0EFh | 11101111b EOL I i K k , < 8 ( \ ^ 0 _ - =
0F7h | 11110111b EOL M m N n B b V v C c X x Y y
0FBh | 11111011b EOL J j H h G g F f D d S s A a
0FDh | 11111101b EOL U u Z z T t R r E e W w Q q
0FEh | 11111110b EOL 7 ' 6 & 5 % 4 $ 3 # 2 " 1 !

Port PC

Port PC
Bit IN 0F6h OUT 0F6h
PC7 čítanie z magnetofónu -
PC6 kláves CNT - 1/0 = ne/stlačený -
PC5 kláves SHF - 1/0 = ne/stlačený -
PC4 kláves STOP - 1/0 = ne/stlačený -
PC3 naposledy zapísaná hodnota voľba polarity magnetofónového signálu (nevyužiteľné)
možno využiť pre režim AllRAM
PC2 naposledy zapísaná hodnota (nepoužité)
PC1 naposledy zapísaná hodnota akustický menič; zmenou 0/1 možno generovať tón rôznej výšky
PC0 naposledy zapísaná hodnota zápis na magnetofón

Popis funkcie klávesov

Klávesnica obsahuje 55 rôznych klávesov (EOL je zdvojený), z ktorých okrem červených majú všetky tri rôzne funkcie podľa toho, či sú stlačené samostatne alebo s preraďovačom SHF či CNT. Samostatné stlačenie písmenového klávesu vracia kód veľkého písmena, stlačenie s klávesom SHF vracia kód malého písmena. Číselné klávesy a symboly vracajú štandardné kódy podľa ASCII tabuľky, tiež v závislosti, či bol alebo nebol súčasne stlačený kláves SHF. Kláves EOL má vždy iba jednu funkciu, bez ohľadu na stlačený preraďovač. Reset počítača sa prevedie súčasným stlačením klávesov CNT a RST.

Klávesy stlačené s klávesom CNT majú tieto funkcie:

  • horný rad klávesov: programové kľúče K0K11 (kódy 0D0h až 0DAh)
  • dva rady klávesov v strede: semigrafické symboly (kódy 80h až 95h)
  • dolný rad klávesov: riadiace klávesy

Modré klávesy so šípkami vracajú 3 rôzne kódy podľa toho, či sú stlačené samostatne, s klávesom SHF alebo s klávesom CNT.

Riadiace klávesy, ich význam a kódy
Kláves Význam Kód klávesu (HEX)
Posun kurzora v DR o jeden znak vľavo. 08
Posun kurzora v DR o jeden znak vpravo. 18
BGNL (CNT + ↑) Posun kurzora na začiatok DR. 0C
ENDL (CNT + →) Posun kurzora za posledný nemedzerový znak v DR. 03
SHF + → Posun viditeľnej časti DR doprava. 19
SHF + ← Posun viditeľnej časti DR doľava. 1A
INST (CNT + M) Vloženie medzery na pozícii kurzora v DR. 1C
DELT (CNT + N) Vymazanie znaku na pozícii kurzora DR. Zvyšok DR vpravo od kurzora sa posunie o jednu pozíciu doľava. 1D
CLL (CNT + B) Vymazanie celého obsahu DR. 1B
DELL (CNT + .) Vymazanie obsahu DR od pozície kurzora do konca. 01
EOL Ukončenie vkladania znakov do DR a odoslanie riadku na spracovanie. 0D
RCL (CNT + X) Do DR sa od pozície kurzora vloží obsah naposledy odoslaného riadku. 17
C-D (CNT + C) Do DR sa zobrazí posledné systémové hlásenie. 1E
CLS (CNT + V) Zmazanie obrazovky okrem DR 1F
BEEP (CNT + ←) Zapnutie alebo vypnutie akustickej signalizácie stlačenia klávesu. 10
MON (CNT + ,) Prechod do Monitora 12
PTL (CNT + /) Prepínač kopírovania obsahu DR na obrazovku. 0F
WRK (CNT + Y) Vkladanie textu do programových kľúčov. 0B
INVR (CNT + ↓) Inverzia podkladu podľa farby DR a súčasné vymazanie obrazovky okrem DR. 0A
Bez funkcie. 11
SHF + ↑ Bez funkcie. 09
Bez funkcie. 13
SHF + ↓ Bez funkcie. 14
SHF Preraďovač pre písmená a symboly. Pozastavenie výpisu alebo programu. -
CNT Preraďovač pre riadiace klávesy a semigrafické symboly. -
STOP Prerušenie výpisu alebo vykonávania programu. -
CNT + RST RESET - inicializácia systému. -

Rutiny pre test klávesnice

V Monitore Maťa je štandardná rutina pre test klávesnice na adrese 84A1h. Táto rutina čaká na stlačenie ktoréhokoľvek klávesu (okrem samostatných SHF, CNT a STOP) a vráti jeho kód v registri A. Kód klávesu je zároveň uložený do systémovej premennej na adrese 0C134h. Zachováva hodnoty registrov BC, DE a HL.

Ďalej je v Monitore rutina pre test klávesnice bez čakania. Táto rutina je na adrese 8C03h a opäť zachováva hodnoty registrov BC, DE a HL. Pokiaľ bol počas testu stlačený nejaký kláves, jeho kód je, rovnako ako v predošlom prípade, v registri A a v systémovej premennej na adrese 0C134h. Ak nebol stlačený žiadny kláves, vrátená je hodnota 0.

Na adrese 8C74h je rutina pre test klávesu STOP. Pokiaľ bol v okamihu volania kláves STOP stlačený, v registri A sa vráti hodnota 03h a je nastavený príznak Z. V opačnom prípade sa v registri A vráti hodnota 10h a príznak Z nie je nastavený.

Testovanie klávesov v strojovom kóde ukazujú nasledujúce jednoduché príklady:

       ; test klávesu STOP
       in   0F6h                ; prečítaj stav klávesnice
       ani  10h                 ; odmaskuj bit PC4, kde je kláves STOP
       jz   IS_KBD_STOP         ; keď je v nule, kláves STOP je stlačený
       ...                      ; kláves STOP nie je stlačený
 
 
       ; test klávesu SHF
       in   0F6h                ; prečítaj stav klávesnice
       ani  20h                 ; odmaskuj bit PC5, kde je kláves SHF
       jz   IS_KBD_SHF          ; keď je v nule, kláves SHF je stlačený
       ...                      ; kláves SHF nie je stlačený
 
 
       ; test klávesu CNT
       in   0F6h                ; prečítaj stav klávesnice
       ani  40h                 ; odmaskuj bit PC6, kde je kláves CNT
       jz   IS_KBD_CNT          ; keď je v nule, kláves CNT je stlačený
       ...                      ; kláves CNT nie je stlačený
 
 
       ; test klávesu EOL
       in   0F5h                ; prečítaj stav klávesnice
       ani  80h                 ; odmaskuj bit PB7, kde je kláves EOL
       jz   IS_KBD_EOL          ; keď je v nule, kláves EOL je stlačený
       ...                      ; kláves EOL nie je stlačený
 
 
       ; test klávesu R
       mvi  a,0FDh              ; kláves R je v 5. riadku matice
       out  0F4h                ; zapíš na port masku riadku
       in   0F5h                ; prečítaj stav klávesnice
       ani  08h                 ; odmaskuj bit PB3, kde je kláves R
       jz   IS_KBD_R            ; keď je v nule, kláves R je stlačený
       ...                      ; kláves R nie je stlačený
 
 
       ; čakanie na stačenie akéhokoľvek klávesu
WAITK: xra  a                   ; všetky riadky
       out  0F4h                ; zapíš na port masku pre všetky riadky matice
       in   0F5h                ; prečítaj stav klávesnice
       inr  a                   ; +1 - ak nebolo nič stlačené, vráti sa 0FFh
       rnz                      ; návrat, ak bolo niečo stlačené
       in   0F6h                ; prečítaj ešte stav SHF/CNT/STOP
       cma                      ; invertuj prečítanú hodnotu
       ani  70h                 ; odmaskuj bity klávesov
       jz   WAITK               ; čakaj ďalej, ak nie je žiadny stlačený
       ret                      ; návrat