Kody klawiszy
From Atariki
Wersja z dnia 14:46, 26 kwi 2010 KMK (Dyskusja | wkład) (+ kody hex) ← Previous diff |
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) 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) ustawia bit 7 w rejestrze 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). 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:14, 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 dec | Kod hex | Klawisz |
0 | $00 | L |
1 | $01 | J |
2 | $02 | ; |
3 | $03 | |
4 | $04 | |
5 | $05 | K |
6 | $06 | + |
7 | $07 | * |
8 | $08 | O |
9 | $09 | |
10 | $0a | P |
11 | $0b | U |
12 | $0c | RETURN |
13 | $0d | I |
14 | $0e | - |
15 | $0f | = |
16 | $10 | V |
17 | $11 | HELP |
18 | $12 | C |
19 | $13 | |
20 | $14 | |
21 | $15 | B |
22 | $16 | X |
23 | $17 | Z |
24 | $18 | 4 |
25 | $19 | |
26 | $1a | 3 |
27 | $1b | 6 |
28 | $1c | ESC |
29 | $1d | 5 |
30 | $1e | 2 |
31 | $1f | 1 |
32 | $20 | , |
33 | $21 | SPACE |
34 | $22 | . |
35 | $23 | N |
36 | $24 | |
37 | $25 | M |
38 | $26 | / |
39 | $27 | LOGO |
40 | $28 | R |
41 | $29 | |
42 | $2a | E |
43 | $2b | Y |
44 | $2c | TAB |
45 | $2d | T |
46 | $2e | W |
47 | $2f | Q |
48 | $30 | 9 |
49 | $31 | |
50 | $32 | 0 |
51 | $33 | 7 |
52 | $34 | BACKSPACE |
53 | $35 | 8 |
54 | $36 | < |
55 | $37 | > |
56 | $38 | F |
57 | $39 | H |
58 | $3a | D |
59 | $3b | |
60 | $3c | CAPS |
61 | $3d | G |
62 | $3e | S |
63 | $3f | A |
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). 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).