Klávesnica C2717

Z PMD 85 Infoserver

Klávesnica Consul 2717


Obsah


Detail klávesnice počítača Consul 2717
Detail klávesnice počítača Consul 2717
Schéma klávesnice počítača Consul 2717 (zdroj: sapi.cz)
Schéma klávesnice počítača Consul 2717 (zdroj: sapi.cz)
Schéma klávesnicového interfejsu počítača Consul 2717 (zdroj: sapi.cz)
Schéma klávesnicového interfejsu počítača Consul 2717 (zdroj: sapi.cz)

Počítač Consul 2717 je celý umiestnený "v monitore", ale klávesnica je samostatná a pripája sa k počítaču mnohožilovým káblom s 26 pinovým priamym konektorom 604403. Klávesnica obsahuje 80 klávesov a má oproti klávesnici na PMD 85 odlišné zapojenie kvôli použitiu halových spínačov MH3SS2, ale spôsob jej testovania je zhodný. Na rozdiel od klávesnice na PMD 85 sú klávesy softvérových kľúčov umiestnené samostatne vpravo a majú označenie F0F11. Klávesnica má naviac 4 neoznačené klávesy, ktoré budú spomenuté neskôr.

Zapojenie klávesnice

Ako bolo napísané v úvode, klávesnica je samostatná a na doske plošného spoja je okrem súčiastok a halových spínačov aj elektroakustický menič. Interfejs klávesnice je tvorený obvodom MHB 8255 a je ešte v počítači na hlavnej doske. Z neho sú potom do klávesnice vyvedené signály portov PA a PB.

Systémový obvod PIO 8255 je vyberaný iba adresným bitom A3 v L, ale vyžaduje sa aj A7=H a A2=H. Adresné bity A1 a A0 vyberajú príslušný register (port) 8255. Používajú sa adresy 0F4h až 0F7h. Niektoré programy v BASICu používajú adresu 86h pre zápis na port C pri generovaní tónov a podobne.

Klávesnica je riešená ako matica spínačov s organizáciou 16 stĺpcov a 5 riadkov. Stĺpce sú dekódované obvodom MH 74150, ktorý má vstupy pripojené na prvé výstupy skupiny halových spínačov. Výstup MH 74150 tak indikuje či bol v adresovanom stĺpci matice stlačený nejaký kláves zo skupiny. Druhé výstupy halových spínačov zase tvoria skupiny, ktoré určujú riadok matice stlačeného klávesu. Výstup MH 74150 a riadkové signály spojené cez NAND hradlá aktivujú príslušný výstup B0 až B4. Čítanie stavu klávesnice sa vykonáva výberom stĺpca (port PA) a následne čítaním stavu riadkov (port PB). Z toho je potom možné dekódovať práve stlačený kláves. Klávesy SHIFT a STOP sú vyvedené samostatne (výstupy B5 a B6) a ich stav je možné čítať kedykoľvek bez ohľadu na vybratý stĺpec klávesnice. Kláves RESET je tiež vyvedený samostatne a na hlavnej doske je jeho aktivácia podmienená stlačením klávesu SHIFT, čo zabraňuje náhodnému resetu počítača.

Dolná polovica portu PC obvodu 8255 je využitá pre riadenie akustického meniča. Zmenou stavu bitu PC2 je teda možné generovať tóny rôznych frekvencií. Bity PC0 a PC1 sú tiež spriahnuté s akustickým meničom a cez dve hradlá privádzajú na výstup dve frekvencie z rozkladu obrazu - 1kHz a 4kHz.

Horná polovica portu PC obvodu 8255 sa používa pre riadenie režimu zobrazenia a stránkovania pamäte.

Tabuľka klávesnicovej matice

Výber stĺpca
(OUT 0F4h)
Čítanie stavu zvoleného stĺpca (IN 0F5h)
PB6 PB5 PB4 PB3 PB2 PB1 PB0
0 STOP Shift Space A a Q q 1 ! F0
1 STOP Shift Y y S s W w 2 " F1
2 STOP Shift X x D d E e 3 # F2
3 STOP Shift C c F f R r 4 $ F3
4 STOP Shift V v G g T t 5 % F4
5 STOP Shift B b H h Z z 6 & F5
6 STOP Shift N n J j U u 7 ' F6
7 STOP Shift M m K k I i 8 ( F7
8 STOP Shift , < L l O o 9 ) F8
9 STOP Shift . >  ; + P p 0 - F9
10 STOP Shift / ?  : * @ ` _ = F10
11 STOP Shift ***1 } ] \ ^ { [ F11
12 STOP Shift ***2 |<--- <--- INS PRINT WRK
13 STOP Shift EOL END šikmá <--- DEL C-D
14 STOP Shift EOL --->| ---> CLR RCL
15 STOP Shift ***3 ***4

Kláves EOL je tvorený dvoma halovými spínačmi, ktoré sú pripojené, rovnako ako na PMD 85, na dvojicu stĺpcov 13 a 14, ale sú pod jedným hmatníkom.

4 neoznačené klávesy majú nasledujúci význam:

  • ***1 - znak ~, resp. so Shiftom |
  • ***2 - Caps Lock (iba v CP/M)
  • ***3 - diakritické znamienka mäkčeň, krúžok, vokáň alebo so Shiftom dĺžeň (iba v CP/M)
  • ***4 - diakritické znamienko dvojbodka (prehláska) alebo so Shiftom opäť mäkčeň, krúžok, vokáň (iba v CP/M)

Riadiaci port C

Riadiaci port (OUT 0F6h)
Bit Význam
PC0 1 = stály tón ~1kHz
PC1 1 = stály tón ~4kHz
PC2 akustický menič
zmenou 0/1 možno generovať tón rôznej výšky
trvalá 1 = vypnutá akustická signalizácia (na bitoch PC0 a PC1 nezáleží)
PC3 nepoužité
PC4 nepoužité
PC5 režim zobrazenia
0/1 = 48/64 znakov na riadok
PC6 stránkovanie pamäte 8000h až 0BFFFh
0/1 = ROM/RAM
PC7 preadresovanie pamäte 0C000h až 0CFFFh
0/1 = vypnuté/zapnuté

Ak sú aktívne oba bity PC0 a PC1, tak je výsledný tón kombináciou týchto dvoch tónov.

Bity PC5, PC6 a PC7 využíva CP/M a ich detailnejší popis je na stránke popisu AllRAM.

Popis funkcie klávesov

Klávesnica obsahuje tri druhy klávesov:

  • znakové klávesy
  • riadiace klávesy
  • programové kľúče

Ak budú v nasledujúcom spomínané kódy klávesov, tieto zodpovedajú kódom, ktoré vracia štandardná klávesnicová rutina na adrese 84A1h.

Znakové klávesy

Táto časť klávesnice umožňuje zadávať znaky, ktoré sú priamo zobraziteľné. Jedná sa o písmená, číslice a rôzne symboly.

Písmenové klávesy stlačené samostatne vracajú kódy veľkých písmen. Stlačené s klávesom Shift vracajú kódy malých písmen. So súčasným stlačením klávesu STOP vkladať znaky s diakritikou v kódovaní KOI-8-čs. Je to dané tým, že pri stlačenom klávese STOP sa ku základnému kódu pripočíta 128, čo dáva zodpovedajúce kódy znakov s diakritikou. Consul 2717 ale štandardne nemá znakovú sadu so znakmi s diakritikou.

Čí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 Shift. Podobne ako pri znakových klávesoch, sa so súčasným stlačením klávesu STOP vracajú kódy zvýšené o 128.

Riadiace klávesy

Riadiace klávesy slúžia pre editáciu textu v dialógovom riadku (DR) a vyvolanie rôznych systémových činností.

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
šikmá <--- Posun kurzora na začiatok DR. 0C
END Posun kurzora za posledný nemedzerový znak v DR. 03
--->| Posun viditeľnej časti DR doprava. 19
|<--- Posun viditeľnej časti DR doľava. 1A
INS Vloženie medzery na pozícii kurzora v DR. 1C
DEL Vymazanie znaku na pozícii kurzora DR. Zvyšok DR vpravo od kurzora sa posunie o jednu pozíciu doľava. 1D
CLR vymazanie celého obsahu DR. 1B
Shift + CLR Vymazanie obsahu DR od pozície kurzora do konca. 01
EOL Ukončenie vkladania znakov do DR a odoslanie riadku na spracovanie. 0D
RCL Do DR sa od pozície kurzora vloží obsah naposledy odoslaného riadku. 17
C-D Do DR sa zobrazí posledné systémové hlásenie. 1E
Shift + WRK Zobrazenie znakov, ktoré sa vyskytujú v kódovej tabuľke za znakom, ktorý je práve na pozícii kurzora. Ak stojí kurzor napr. na znaku medzera, tak po opakovanom stláčaní tejto klávesy sa budú postupne zobrazovať znaky !"#$ atď. v poradí, ktoré je dané ich kódom. 07
Shift + C-D Prihlásenie do siete. 06
Shift + DEL Štart programu umiestneného na adrese 0000h. Je ekvivalentný príkazu JUMP 0000. 12
Shift + šikmá <--- Zmazanie obrazovky okrem DR 1F
Shift + |<--- Zmena podkladu podľa farby DR a súčasné vymazanie obrazovky okrem DR. Pri prvom stlačení je podklad farebný a zobrazované znaky inverzné, pri druhom stlačení naopak. 0A
Shift + END Zapnutie alebo vypnutie akustickej signalizácie stlačenia klávesu. 10
Shift + RCL Prechod do Monitora. 0E
Shift + --->| Prepínač farby písma v DR. 09
Shift + INS PRINT - prepínač kopírovania obsahu DR na obrazovku. 0F
WRK Vkladanie textu do programových kľúčov. 0B
Shift + <--- Bez funkcie. 13
Shift + ---> Bez funkcie. 11
***2 Bez funkcie. 15
Shift + ***2 Bez funkcie. 05
***3 Bez funkcie. 14
Shift + ***4 Bez funkcie. 02
***4 Bez funkcie. 16
Shift + ***4 Bez funkcie. 04
Shift Preraďovač, preradenie činnosti, napr. horné znaky klávesnice. Tiež pozastavenie výpisu alebo programu. -
STOP Prerušenie výpisu alebo vykonávania programu. -
Shift + RESET RESET - inicializácia systému. -

Programové kľúče

Programové kľúče, resp. programové klávesy F0F11 sú určené pre rýchle a pohodlné písanie textov (reťazcov znakov), ktoré sa často opakujú. Vloženie reťazca znakov do programového kľúča sa vykoná pomocou nasledujúcich krokov:

  • príprava textu v DR
  • stlačenie klávesu WRK
  • stlačenie programového klávesu samostatne alebo s klávesom Shift

Ukladá sa text od začiatku DR až po kurzor, čo umožňuje vkladať aj texty ukončené ľubovoľným počtom medzier. Vymazanie obsahu programového kľúča sa prevedie rovnako ako vloženie textu s tým, že DR je pred stlačením klávesu WRK prázdny.

Výpis obsahu programového kľúča sa prevedie samotným stlačením programového klávesu. Celkom je teda možné si "odpamätať" 24 rôznych reťazcov znakov.

Kódy programových klávesov sú nasledujúce:

  • F0F11 => 88 až 93
  • Shift + F0Shift + F11 => 94 až 9F

Rutiny pre test klávesnice

V ROM Consul 2717 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 Shift 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.

V ROM je naviac rutina pre test klávesnice bez čakania. Táto rutina je na adrese 89C0h a mení všetky registre. 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 40h 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   0F5h                ; prečítaj stav klávesnice
       ANI  40h                 ; odmaskuj bit PB6, 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 SHIFT
       IN   0F5h                ; prečítaj stav klávesnice
       ANI  20h                 ; odmaskuj bit PB5, kde je kláves SHIFT
       JZ   IS_KBD_SHIFT        ; keď je v nule, kláves SHIFT je stlačený
       ...                      ; kláves SHIFT nie je stlačený
 
 
       ; test klávesu R
       MVI  A,3                 ; kláves R je v 3. stĺpci
       OUT  0F4h                ; zapíš číslo stĺpca
       IN   0F5h                ; prečítaj stav klávesnice
       ANI  04h                 ; odmaskuj bit PB2, 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ý
 
 
       ; ak je nutné nezmeniť hornú povicu portu A, je potrebné prečítať
       ; pôvodnú hodnotu portu a pridať požadovaný stĺpec
       ; test klávesu INS
       IN   0F4h                ; prečítaj stav portu A
       ANI  0F0h                ; ponechaj horné bity
       ORI  12                  ; kláves INS je v 12. stĺpci
       OUT  0F4h                ; zapíš nové číslo stĺpca
       IN   0F5h                ; prečítaj stav klávesnice
       ANI  02h                 ; odmaskuj bit PB1, kde je kláves INS
       JZ   IS_KBD_INS          ; keď je v nule, kláves INS je stlačený
       ...                      ; kláves INS nie je stlačený