Klávesnica
Z PMD 85 Infoserver
Obsah |
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 K0 až K11 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
- K0 až K11 => D0 až DB
- Shift + K0 až Shift + K11 => E0 až EB
- Ostatné modely
- K0 až K11 => 88 až 93
- Shift + K0 až Shift + 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ý