Kody klawiszy

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 12:14, 30 kwi 2010
Mono (Dyskusja | wkład)
(poprawkiony błąd w infromacji o działaniu systemowej procedury obsługi break)
← Previous diff
Wersja z dnia 12:30, 30 kwi 2010
Mono (Dyskusja | wkład)
(doprecyzowanie infromacji o statusie wciśnięcia BREAK)
Next diff →
Linia 77: Linia 77:
Układ sprzętowy rozpoznaje wciśnięcie kombinacji klawiszy SHIFT+CONTROL+A, aczkolwiek system operacyjny rezerwuje jej kod (255, $FF) dla oznaczenia w rejestrze KBCODES (764, $02FC) stanu, kiedy żaden klawisz nie został wciśnięty. W konsekwencji wciśnięcie tej kombinacji może być wykrywane jedynie bezpośrednio w rejestrze KBCODE (53769, $D209) lub przez własny handler przerwania klawiatury wektoryzowany przez VKEY (520, $0208). Praktycznie użycie tej kombinacji może służyć do "oszukania" systemu i anulowania informacji o ostatnio wciśniętej kombinacji klawiszy. Układ sprzętowy rozpoznaje wciśnięcie kombinacji klawiszy SHIFT+CONTROL+A, aczkolwiek system operacyjny rezerwuje jej kod (255, $FF) dla oznaczenia w rejestrze KBCODES (764, $02FC) stanu, kiedy żaden klawisz nie został wciśnięty. W konsekwencji wciśnięcie tej kombinacji może być wykrywane jedynie bezpośrednio w rejestrze KBCODE (53769, $D209) lub przez własny handler przerwania klawiatury wektoryzowany przez VKEY (520, $0208). Praktycznie użycie tej kombinacji może służyć do "oszukania" systemu i anulowania informacji o ostatnio wciśniętej kombinacji klawiszy.
-Wciśnięcie klawisza BREAK powoduje wygenerowanie przerwania IRQ ze skasowanym bitem B w rejestrze stanu procesora (analogiczne przerwanie generowane jest za pomocą rozkazu procesora BRK, lecz bit B jest wtedy ustawiony). Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKEY (566=$236) wpisuje wartość 0 do rejestru IRQSTATS (17=$11). Przerwanie rozkazu BRK jest wektoryzowane przez VBREAK (518=$206).+Wciśnięcie klawisza BREAK powoduje wygenerowanie przerwania IRQ ze skasowanym bitem B w rejestrze stanu procesora (analogiczne przerwanie generowane jest za pomocą rozkazu procesora BRK, lecz bit B jest wtedy ustawiony). Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKEY (566=$236) wpisuje wartość 0 do rejestru IRQSTATS (17=$11), lecz procedury obsługi SIO badają i zmieniają stan tego rejestru a informację o wciśnięciu klawisza BREAK zwracają za pomocą statusu operacji I/O. Przerwanie rozkazu BRK jest wektoryzowane przez VBREAK (518=$206).
Dodatkowa informacja o wciśnięciu bądź zwolnieniu klawisza SHIFT lub dowolnego innego klawisza (prócz BREAK, CONTROL i klawiszy konsoli) może być sprawdzana w rejestrze [[Rejestry POKEY-a#SKSTAT|SKSTAT]] (53775, $D20F). Dodatkowa informacja o wciśnięciu bądź zwolnieniu klawisza SHIFT lub dowolnego innego klawisza (prócz BREAK, CONTROL i klawiszy konsoli) może być sprawdzana w rejestrze [[Rejestry POKEY-a#SKSTAT|SKSTAT]] (53775, $D20F).

Wersja z dnia 12:30, 30 kwi 2010

"Surowe" kody klawiszy generowane przez klawiaturę. W dalszej fazie obróbki system operacyjny przetwarza większość z nich na kody ATASCII.

Kod decKod hexKlawisz
0$00L
1$01J
2$02;
3$03
4$04
5$05K
6$06+
7$07*
8$08O
9$09
10$0aP
11$0bU
12$0cRETURN
13$0dI
14$0e-
15$0f=
16$10V
17$11HELP
18$12C
19$13
20$14
21$15B
22$16X
23$17Z
24$184
25$19
26$1a3
27$1b6
28$1cESC
29$1d5
30$1e2
31$1f1
32$20,
33$21SPACE
34$22.
35$23N
36$24
37$25M
38$26/
39$27LOGO
40$28R
41$29
42$2aE
43$2bY
44$2cTAB
45$2dT
46$2eW
47$2fQ
48$309
49$31
50$320
51$337
52$34BACKSPACE
53$358
54$36<
55$37>
56$38F
57$39H
58$3aD
59$3b
60$3cCAPS
61$3dG
62$3eS
63$3fA

Wciśnięcie odpowiedniego klawisza z klawiszem SHIFT zwiększa kod o 64 ($40), a z klawiszem CONTROL o 128 ($80). Niektóre klawisze są niedostępne w kombinacji z SHIFT+CONTROL wciśniętymi równocześnie.

System operacyjny bada wciśnięcie klawisza HELP i w zależności od tego ustawia flagę HLPFLG (732, $02DC; zapisywany jest tam kod kombinacji klawisza HELP z ewentualnymi klawiszami SHIFT lub CONTROL).

Klawisze F1..F4 są dostępne w modelu 1200XL.

Układ sprzętowy rozpoznaje wciśnięcie kombinacji klawiszy SHIFT+CONTROL+A, aczkolwiek system operacyjny rezerwuje jej kod (255, $FF) dla oznaczenia w rejestrze KBCODES (764, $02FC) stanu, kiedy żaden klawisz nie został wciśnięty. W konsekwencji wciśnięcie tej kombinacji może być wykrywane jedynie bezpośrednio w rejestrze KBCODE (53769, $D209) lub przez własny handler przerwania klawiatury wektoryzowany przez VKEY (520, $0208). Praktycznie użycie tej kombinacji może służyć do "oszukania" systemu i anulowania informacji o ostatnio wciśniętej kombinacji klawiszy.

Wciśnięcie klawisza BREAK powoduje wygenerowanie przerwania IRQ ze skasowanym bitem B w rejestrze stanu procesora (analogiczne przerwanie generowane jest za pomocą rozkazu procesora BRK, lecz bit B jest wtedy ustawiony). Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKEY (566=$236) wpisuje wartość 0 do rejestru IRQSTATS (17=$11), lecz procedury obsługi SIO badają i zmieniają stan tego rejestru a informację o wciśnięciu klawisza BREAK zwracają za pomocą statusu operacji I/O. Przerwanie rozkazu BRK jest wektoryzowane przez VBREAK (518=$206).

Dodatkowa informacja o wciśnięciu bądź zwolnieniu klawisza SHIFT lub dowolnego innego klawisza (prócz BREAK, CONTROL i klawiszy konsoli) może być sprawdzana w rejestrze SKSTAT (53775, $D20F).

Pozostałe klawisze: patrz KBCODE i CONSOL.

Personal tools