Klávesnica C2717
Z PMD 85 Infoserver
Obsah |
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 F0 až F11. 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 F0 až F11 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:
- F0 až F11 => 88 až 93
- Shift + F0 až Shift + 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ý