Klávesnica

Z PMD 85 Infoserver

(Rozdiel medzi revíziami)
Djb (Diskusia | príspevky)
(rekat)
Rombor (Diskusia | príspevky)
(Pridané tabuľky, zmenené 'klávesa' na 'kláves')
Riadok 9: Riadok 9:
-
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áves, 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).
+
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 ==
== Zapojenie klávesnice ==
Riadok 15: Riadok 15:
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 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ávesu. 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ávesy SHIFT, čo zabraňuje náhodnému resetu počítača.
+
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.
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.
Riadok 23: Riadok 23:
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.
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ávesy, 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 vypustený.
+
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ý.
-
== Popis funkcie kláves ==
+
=== Tabuľka klávesnicovej matice ===
-
Klávesnica obsahuje tri druhy kláves:
+
{| class="wikitable centered" width="100%"
 +
|-
 +
! rowspan="2" width="100px" | Výber stĺpca<br />(OUT 0F4h)
 +
! colspan="7" align="center" | Čítanie stavu zvoleného stĺpca (IN 0F5h)
 +
|-
 +
! width="80px" | PB6
 +
! width="80px" | PB5
 +
! width="80px" | PB4
 +
! width="80px" | PB3
 +
! width="80px" | PB2
 +
! width="80px" | PB1
 +
! width="80px" | PB0
 +
|-
 +
| 0
 +
| STOP
 +
| Shift
 +
| Space
 +
| A
 +
| Q
 +
| 1
 +
| K0
 +
|-
 +
| 1
 +
| STOP
 +
| Shift
 +
| Y
 +
| S
 +
| W
 +
| 2
 +
| K1
 +
|-
 +
| 2
 +
| STOP
 +
| Shift
 +
| X
 +
| D
 +
| E
 +
| 3
 +
| K2
 +
|-
 +
| 3
 +
| STOP
 +
| Shift
 +
| C
 +
| F
 +
| R
 +
| 4
 +
| K3
 +
|-
 +
| 4
 +
| STOP
 +
| Shift
 +
| V
 +
| G
 +
| T
 +
| 5
 +
| K4
 +
|-
 +
| 5
 +
| STOP
 +
| Shift
 +
| B
 +
| H
 +
| Z
 +
| 6
 +
| K5
 +
|-
 +
| 6
 +
| STOP
 +
| Shift
 +
| N
 +
| J
 +
| U
 +
| 7
 +
| K6
 +
|-
 +
| 7
 +
| STOP
 +
| Shift
 +
| M
 +
| K
 +
| I
 +
| 8
 +
| K7
 +
|-
 +
| 8
 +
| STOP
 +
| Shift
 +
| ,
 +
| L
 +
| O
 +
| 9
 +
| K8
 +
|-
 +
| 9
 +
| STOP
 +
| Shift
 +
| .
 +
| ;
 +
| P
 +
| 0
 +
| K9
 +
|-
 +
| 10
 +
| STOP
 +
| Shift
 +
| /
 +
| :
 +
| @
 +
| _
 +
| K10
 +
|-
 +
| 11
 +
| STOP
 +
| Shift
 +
|
 +
| ]
 +
| \
 +
| }
 +
| K11
 +
|-
 +
| 12
 +
| STOP
 +
| Shift
 +
|
 +
| &#124;&lt;---
 +
| &lt;---
 +
| INS
 +
| WRK
 +
|-
 +
| 13
 +
| STOP
 +
| Shift
 +
| EOL
 +
| END
 +
| šikmá &lt;---
 +
| DEL
 +
| C-D
 +
|-
 +
| 14
 +
| STOP
 +
| Shift
 +
| EOL
 +
| ---&gt;&#124;
 +
| ---&gt;
 +
| CLR
 +
| RCL
 +
|}
 +
 
 +
=== Riadiaci port ===
 +
 
 +
{| class="wikitable" width="100%"
 +
|-
 +
| colspan="2" align="center" | 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<br />zmenou 0/1 možno generovať tón rôznej výšky<br />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]])<br />0/1 = RAM/ROM (iba PMD 85-2A a PMD 85-3)
 +
|-
 +
| PC5
 +
| stránkovanie pamäte (AllROM)<br />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'''
* '''znakové klávesy'''
* '''riadiace klávesy'''
* '''riadiace klávesy'''
* '''programové kľúče'''
* '''programové kľúče'''
-
Ak budú v nasledujúcom spomínané kódy kláves, tieto zodpovedajú kódom, ktoré vracia štandardná klávesnicová rutina na adrese 84A1h, resp. 0E4A1h na PMD 85-3.
+
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 ===
=== Znakové klávesy ===
Riadok 38: Riadok 219:
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.
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ávesou {{Kbd|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ávesy {{Kbd|Stop}} vkladať znaky s diakritikou v kódovaní '''KOI-8-čs'''. Je to dané tým, že pri stlačenej klávese {{Kbd|Stop}} sa ku základnému kódu klávesy pripočíta 128, čo dáva zodpovedajúce kódy znakov s diakritikou.
+
Písmenové klávesy stlačené samostatne vracajú kódy veľkých písmen. Stlačené s klávesom {{Kbd|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 {{Kbd|Stop}} vkladať znaky s diakritikou v kódovaní '''KOI-8-čs'''. Je to dané tým, že pri stlačenom klávese {{Kbd|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 bola alebo nebola súčasne stlačená klávesa {{Kbd|Shift}}. Na PMD 85-2, -2A a -3 sa, podobne ako pri znakových klávesách, so súčasným stlačením klávesy {{Kbd|Stop}} vracajú kódy zvýšené o 128.
+
Čí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 {{Kbd|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 {{Kbd|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ávesa (vedľa klávesy INS) bez aj so Shiftom vracia kód 0FFh. Klávesa Shift+'@' vracia kód 0Dh.
+
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.
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.
Riadok 48: Riadok 229:
=== Riadiace klávesy ===
=== 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áves na PMD 85-1 sa líšia od kódov na ostatných modeloch.
+
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.
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
Riadok 54: Riadok 235:
| colspan="4" align="center" | ''Riadiace klávesy, ich význam a kódy''
| colspan="4" align="center" | ''Riadiace klávesy, ich význam a kódy''
|-
|-
-
! rowspan="2" | Klávesa
+
! rowspan="2" | Kláves
! rowspan="2" | Význam
! rowspan="2" | Význam
-
! colspan="2" | Kód klávesy (HEX)
+
! colspan="2" | Kód klávesu (HEX)
|-
|-
! nowrap="nowrap" | PMD 85-1
! nowrap="nowrap" | PMD 85-1
Riadok 147: Riadok 328:
|-
|-
| {{Kbd|Shift + &#124;&lt;---}}
| {{Kbd|Shift + &#124;&lt;---}}
-
| Zmena podkladu podľa farby DR a súčasné vymazanie obrazovky okrem DR. Pri prvom stlačení je podklad farebý a zobrazované znaky inverzné, pri druhom stlačení naopak (bez funkcie na PMD 85-1).
+
| 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
| 90
| 0A
| 0A
|-
|-
| {{Kbd|Shift + END}}
| {{Kbd|Shift + END}}
-
| Zapnutie alebo vypnutie akustickej signalizácie stlačenia klávesy. Ak je signalizácia vypnutá, svieti žltá LED dióda na klávesnici (bez funkcie na PMD 85-1).
+
| 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
| 91
| 10
| 10
Riadok 202: Riadok 383:
|-
|-
| {{Kbd|STOP + &#123;}}
| {{Kbd|STOP + &#123;}}
-
| 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ísmenovej klávesy samostatne vloží malé písmeno a s klávesou {{Kbd|Shift}} vloží veľké písmeno. Zapnutie tejto funkcie je indikované červenou LED diódou na klávesnici.
+
| 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 {{Kbd|Shift}} vloží veľké písmeno. Zapnutie tejto funkcie je indikované červenou LED diódou na klávesnici.
| -
| -
| -
| -
Riadok 211: Riadok 392:
Programové kľúče, resp. programové klávesy {{Kbd|K0}} až {{Kbd|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:
Programové kľúče, resp. programové klávesy {{Kbd|K0}} až {{Kbd|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
* príprava textu v DR
-
* stlačenie klávesy {{Kbd|WRK}}
+
* stlačenie klávesu {{Kbd|WRK}}
-
* stlačenie programovej klávesy samostatne alebo s klávesou {{Kbd|Shift}}
+
* stlačenie programového klávesu samostatne alebo s klávesom {{Kbd|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ávesy {{Kbd|WRK}} prázdny.
+
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 {{Kbd|WRK}} prázdny.
-
Výpis obsahu programového kľúča sa prevedie samotným stlačením programovej klávesy. Celkom je teda možné si "odpamätať" 24 rôznych reťazcov znakov.
+
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áves sa na PMD 85-1 opäť líšia od ostaných modelov:
+
Kódy klávesov sa na PMD 85-1 opäť líšia od ostaných modelov:
* '''PMD 85-1'''
* '''PMD 85-1'''
** {{Kbd|K0}} až {{Kbd|K11}} =&gt; D0 až DB
** {{Kbd|K0}} až {{Kbd|K11}} =&gt; D0 až DB
Riadok 227: Riadok 408:
== Rutiny pre test klávesnice ==
== 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 ktorejkoľvek klávesy (okrem samostatných {{Kbd|Shift}} a {{Kbd|STOP}}) a vráti jej kód v registri ''A''. Kód klávesy je zároveň uložený do systémovej premennej na adrese '''0C134h'''. Zachováva hodnoty registrov ''BC'', ''DE'' a ''HL''.
+
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 {{Kbd|Shift}} a {{Kbd|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ľ bola počas testu stlačená nejaká klávesa, jej kód je, rovnako ako v predošlom prípade, v registri ''A'' a v systémovej premennej na adrese '''0C134h'''. Ak nebola stlačená žiadna klávesa, vrátená je hodnota 0.
+
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ávesy {{Kbd|STOP}}. Pokiaľ bola v okamihu volania klávesa {{Kbd|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ý.
+
Na adrese '''8C74h''', resp. '''0EC74h''' je rutina pre test klávesu {{Kbd|STOP}}. Pokiaľ bol v okamihu volania kláves {{Kbd|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áves v stojovom kóde ukazujú nasledujúce jednoduché príklady:
+
Testovanie klávesov v strojovom kóde ukazujú nasledujúce jednoduché príklady:
-
; test klávesy STOP
+
; test klávesu STOP
IN 0F5h ; prečítaj stav klávesnice
IN 0F5h ; prečítaj stav klávesnice
-
ANI 40h ; odmaskuj bit PB6, kde je klávesa STOP
+
ANI 40h ; odmaskuj bit PB6, kde je kláves STOP
-
JZ IS_KBD_STOP ; keď je v nule, klávesa STOP je stlačená
+
JZ IS_KBD_STOP ; keď je v nule, kláves STOP je stlačený
-
... ; klávesa STOP nie je stlačená
+
... ; kláves STOP nie je stlačený
&nbsp;
&nbsp;
&nbsp;
&nbsp;
-
; test klávesy SHIFT
+
; test klávesu SHIFT
IN 0F5h ; prečítaj stav klávesnice
IN 0F5h ; prečítaj stav klávesnice
-
ANI 20h ; odmaskuj bit PB5, kde je klávesa SHIFT
+
ANI 20h ; odmaskuj bit PB5, kde je kláves SHIFT
-
JZ IS_KBD_SHIFT ; keď je v nule, klávesa SHIFT je stlačená
+
JZ IS_KBD_SHIFT ; keď je v nule, kláves SHIFT je stlačený
-
... ; klávesa SHIFT nie je stlačená
+
... ; kláves SHIFT nie je stlačený
&nbsp;
&nbsp;
&nbsp;
&nbsp;
-
; test klávesy R
+
; test klávesu R
-
MVI A,3 ; klávesa R je v 3. stĺpci
+
MVI A,3 ; kláves R je v 3. stĺpci
OUT 0F4h ; zapíš číslo stĺpca
OUT 0F4h ; zapíš číslo stĺpca
IN 0F5h ; prečítaj stav klávesnice
IN 0F5h ; prečítaj stav klávesnice
-
ANI 04h ; odmaskuj bit PB2, kde je klávesa R
+
ANI 04h ; odmaskuj bit PB2, kde je kláves R
-
JZ IS_KBD_R ; keď je v nule, klávesa R je stlačená
+
JZ IS_KBD_R ; keď je v nule, kláves R je stlačený
-
... ; klávesa R nie je stlačená
+
... ; kláves R nie je stlačený
&nbsp;
&nbsp;
&nbsp;
&nbsp;
; ak je nutné nezmeniť hornú povicu portu A, je potrebné prečítať
; ak je nutné nezmeniť hornú povicu portu A, je potrebné prečítať
; pôvodnú hodnotu portu a pridať požadovaný stĺpec
; pôvodnú hodnotu portu a pridať požadovaný stĺpec
-
; test klávesy INS
+
; test klávesu INS
IN 0F4h ; prečítaj stav portu A
IN 0F4h ; prečítaj stav portu A
ANI 0F0h ; ponechaj horné bity
ANI 0F0h ; ponechaj horné bity
-
ORI 12 ; klávesa INS je v 12. stĺpci
+
ORI 12 ; kláves INS je v 12. stĺpci
OUT 0F4h ; zapíš nové číslo stĺpca
OUT 0F4h ; zapíš nové číslo stĺpca
IN 0F5h ; prečítaj stav klávesnice
IN 0F5h ; prečítaj stav klávesnice
-
ANI 02h ; odmaskuj bit PB1, kde je klávesa INS
+
ANI 02h ; odmaskuj bit PB1, kde je kláves INS
-
JZ IS_KBD_INS ; keď je v nule, klávesa INS je stlačená
+
JZ IS_KBD_INS ; keď je v nule, kláves INS je stlačený
-
... ; klávesa INS nie je stlačená
+
... ; kláves INS nie je stlačený
&nbsp;
&nbsp;
[[Category:Hardvér]]
[[Category:Hardvér]]
[[Category:Detaily o PMD 85 a kompatibilných]]
[[Category:Detaily o PMD 85 a kompatibilných]]

Verzia zo dňa a času 19:31, 21. jún 2013

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 Q 1 K0
1 STOP Shift Y S W 2 K1
2 STOP Shift X D E 3 K2
3 STOP Shift C F R 4 K3
4 STOP Shift V G T 5 K4
5 STOP Shift B H Z 6 K5
6 STOP Shift N J U 7 K6
7 STOP Shift M K I 8 K7
8 STOP Shift , L O 9 K8
9 STOP Shift .  ; P 0 K9
10 STOP Shift /  : @ _ K10
11 STOP Shift ] \ } K11
12 STOP Shift |<--- <--- INS WRK
13 STOP Shift EOL END šikmá <--- DEL C-D
14 STOP Shift EOL --->| ---> CLR RCL

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ý