Klávesnica

Z PMD 85 Infoserver

Klávesnica PMD 85


Obsah


Detail klávesnice PMD 85-1
Detail klávesnice PMD 85-1
Detail klávesnice PMD 85-2, -2A a -3
Detail klávesnice PMD 85-2, -2A a -3
Schéma interfejsu klávesnice PMD 85
Schéma interfejsu klávesnice PMD 85
Schéma klávesnice PMD 85
Schéma klávesnice PMD 85


Klávesnica je zvyčajne základným vstupným zariadením mikropočítačov. Na PMD 85 sa klávesnica skladá zo 77 klávesov, ktoré sa delia do troch skupín - znakové, riadiace a programové klávesy. Prototypové PMD 85 a PMD 85-1 má klávesnicu vyskladanú z telefónnych tlačidiel, PMD 85-2, -2A a -3 majú tlačidlá na báze vodivého elastoméru (vodivej gumy).

Zapojenie klávesnice

Klávesnica je umiestnená na samostatnej doske plošného spoja a s centrálnou jednotkou počítača je spojená 20 pinovým FRB konektorom. Interfejs klávesnice je tvorený obvodom MHB 8255A, ktorý je umiestnený ešte na základnej doske. Na doske klávesnice sú umiestnené aj indikačné LED a elektroakustický menič.

Klávesnica je riešená ako matica spínačov s organizáciou 15 stĺpcov a 5 riadkov. Stĺpce sú dekódované obvodom MH 74154, ktorý má výstupy ošetrené diódami. Čí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 (bity PB5 a PB6) a ich stav je možné čítať kedykoľvek bez ohľadu na vybratý stĺpec klávesnice. Aktivácia klávesy RST je 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 a rozsvecovanie LED. Červená LED je samostatne na bite PC3. Žltá LED je na bite PC2, je však spriahnutá s výstupom na akustický menič. Zmenou stavu bitu PC2 je teda možné, okrem rozsvecovania žltej LED, 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.

Časť hornej polovice portu PC je využívaná na PMD 85-2A a PMD 85-3 pre stránkovanie pamäte. Bit PC4 odpája ROM a teda zapína AllRAM režim. Na PMD 85-3 bit PC5 zapína AllROM - 8 kB ROM sa zrkadlí v celom adresnom priestore. To sa využíva po resete, kedy sú všetky porty 8255 inicializované ako vstupné a pull-up odpor na PC5 zabezpečí nastránkovanie ROM od adresy 0 a tým štart Monitora.

Systémový obvod 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. Programy v BASICu používajú adresu 86h pre zápis na port C pri generovaní tónov a podobne.

Na doske klávesnice PMD 85-2 a nasledujúcich je neosadená časť a vždy som premýšľal, čo tam pôvodne malo byť. Mnohokrát som plošný spoj skúmal a rôzne kombinoval integrované obvody a ďalšie súčiastky, až som na to (snáď) prišiel. I keď ešte čosi zostalo nezodpovedané... Plošný spoj klávesnice PMD 85-1 túto časť nemá a tak moja úvaha vychádzala aj z toho, prečo na novej verzii klávesnice toto pridali, ale nakoniec neosadili. PMD 85-1 nemá akustickú signalizáciu pri stlačení klávesy, keďže telefónne tlačidlá je pri stlačení dostatočne dobre počuť. Tlačidlá na novej klávesnici majú tichý chod a tak sa zrejme uvažovalo o akustickej signalizácii. Neosadený obvod mal teda vygenerovať krátke pípnutie po stlačení klávesu, nie je mi však jasné, čo malo vytvoriť aktivačný impulz. Keďže sa nakoniec akustický signál robí softvérovo, tento obvod bol zo schémy zrejme vypustený.

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 ! K0
1 STOP Shift Y y S s W w 2 " K1
2 STOP Shift X x D d E e 3 # K2
3 STOP Shift C c F f R r 4 $ K3
4 STOP Shift V v G g T t 5 % K4
5 STOP Shift B b H h Z z 6 & K5
6 STOP Shift N n J j U u 7 ' K6
7 STOP Shift M m K k I i 8 ( K7
8 STOP Shift , < L l O o 9 ) K8
9 STOP Shift . >  ; + P p 0 - K9
10 STOP Shift / ?  : * @ ` _ = K10
11 STOP Shift ***1 \ ^ ***2 K11
12 STOP Shift |<--- <--- INS PTL WRK
13 STOP Shift EOL END šikmá <--- DEL C-D
14 STOP Shift EOL --->| ---> CLR RCL

Klávesy pre hranaté a zložené zátvorky sa na jednotlivých modeloch PMD 85 líšia.

***1 ***2
PMD 85-1 [ ]
PMD 85-2(A) ] [ } {
PMD 85-3 [ ] { }

Riadiaci port

Riadiaci port (OUT 0F6h)
Bit Význam
PC0 1 = stály tón ~1kHz
PC1 1 = stály tón ~4kHz
PC2 akustický menič a žltá LED
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ží) a žltá LED svieti
PC3 1 = červená LED svieti
PC4 stránkovanie pamäte 8000h až 0BFFFh (viď. AllRAM)
0/1 = RAM/ROM (iba PMD 85-2A a PMD 85-3)
PC5 stránkovanie pamäte (AllROM)
1 = zrkadlená ROM v celom adresnom priestore (iba PMD 85-3)

Ak sú aktívne oba bity PC0 a PC1, tak je výsledný tón kombináciou týchto dvoch tónov. Funkcia bitu PC5 má vyššiu prioritu ako PC4.

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, resp. 0E4A1h na PMD 85-3.

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. Na PMD 85-2, -2A a -3 možno 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.

Čí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. Na PMD 85-2, -2A a -3 sa, podobne ako pri znakových klávesoch, so súčasným stlačením klávesu Stop vracajú kódy zvýšené o 128.

Na klávesnici PMD 85-1 nie sú zložené zátvorky a opačný apostrof. Neoznačený kláves (vedľa klávesu INS) bez aj so Shiftom vracia kód 0FFh. Kláves Shift+'@' vracia kód 0Dh.

Hranaté a zložené zátvorky sú na PMD 85-2 a -2A opačne na rozdiel od PMD 85-1 a PMD 85-3.

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í. Kódy klávesov na PMD 85-1 sa líšia od kódov na ostatných modeloch.

Riadiace klávesy, ich význam a kódy
Kláves Význam Kód klávesu (HEX)
PMD 85-1 PMD 85-2, -2A, -3
<--- Posun kurzora v DR o jeden znak vľavo. 83 08
---> Posun kurzora v DR o jeden znak vpravo. 85 18
šikmá <--- Posun kurzora na začiatok DR. 84 0C
END Posun kurzora za posledný nemedzerový znak v DR. 87 03
--->| Posun viditeľnej časti DR doprava. 88 19
|<--- Posun viditeľnej časti DR doľava. 86 1A
INS Vloženie medzery na pozícii kurzora v DR. 80 1C
DEL Vymazanie znaku na pozícii kurzora DR. Zvyšok DR vpravo od kurzora sa posunie o jednu pozíciu doľava. 81 1D
CLR vymazanie celého obsahu DR. 8D 1B
Shift + CLR Vymazanie obsahu DR od pozície kurzora do konca. 82 01
EOL Ukončenie vkladania znakov do DR a odoslanie riadku na spracovanie. 89 0D
RCL Do DR sa od pozície kurzora vloží obsah naposledy odoslaného riadku. A2 17
C-D Do DR sa zobrazí posledné systémové hlásenie. 8A 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. Týmto spôsobom je možné zadať znaky, ktoré sa nevyskytujú na klávesnici PMD 85 (bez funkcie na PMD 85-1). A3 07
Shift + C-D Prechod do režimu TERMINÁL (bez funkcie na PMD 85-1). 93 06
Shift + DEL Štart programu umiestneného na adrese 0000h. Je ekvivalentný príkazu JUMP 0000. 8C 12
Shift + šikmá <--- Zmazanie obrazovky okrem DR (bez funkcie na PMD 85-1). 8F 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 (bez funkcie na PMD 85-1). 90 0A
Shift + END Zapnutie alebo vypnutie akustickej signalizácie stlačenia klávesu. Ak je signalizácia vypnutá, svieti žltá LED dióda na klávesnici (bez funkcie na PMD 85-1). 91 10
Shift + RCL Prechod do Monitora (bez funkcie na PMD 85-1). A5 0E
Shift + --->| Prepínač farby písma v DR (bez funkcie na PMD 85-1). 92 09
Shift + INS PTL - prepínač kopírovania obsahu DR na obrazovku. 8B 0F
WRK Vkladanie textu do programových kľúčov. A0 0B
Shift + <--- Bez funkcie. 8E 13
Shift + ---> Bez funkcie. 94 11
Shift Preraďovač, preradenie činnosti, napr. horné znaky klávesnice. Na PMD 85-2, -2A a -3 pozastavenie výpisu alebo programu. - -
STOP Prerušenie výpisu alebo vykonávania programu. - -
Shift + RST RESET - inicializácia systému. - -
STOP + { Na PMD 85-3 zapnutie alebo vypnutie zmeny spôsobu zadávania malých a veľkých písmen (Caps-Lock). Po zapnutí tejto funkcie, stlačenie písmenového klávesu samostatne vloží malé písmeno a s klávesom Shift vloží veľké písmeno. Zapnutie tejto funkcie je indikované červenou LED diódou na klávesnici. - -

Programové kľúče

Programové kľúče, resp. programové klávesy K0K11 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

Na PMD 85-1 sa ukladá celý obsah DR až po posledný nemedzerový znak. Na ostatných modeloch sa ukladá 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 klávesov sa na PMD 85-1 opäť líšia od ostaných modelov:

  • PMD 85-1
    • K0K11 => D0 až DB
    • Shift + K0Shift + K11 => E0 až EB
  • Ostatné modely
    • K0K11 => 88 až 93
    • Shift + K0Shift + K11 => 94 až 9F

Rutiny pre test klávesnice

V Monitore PMD 85 je štandardná rutina pre test klávesnice na adrese 84A1h, resp. 0E4A1h na PMD 85-3. 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 Monitore PMD 85-2, -2A a -3 je naviac rutina pre test klávesnice bez čakania. Táto rutina je na adrese 89C0h, resp. 0E9C0h 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, resp. 0EC74h 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ý