Kody klawiszy

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 07:30, 3 maj 2024
Mono (Dyskusja | wkład)
(help w atari 400)
← Previous diff
Wersja z dnia 11:00, 4 maj 2024
Mono (Dyskusja | wkład)
(ani w atari 800)
Next diff →
Linia 34: Linia 34:
<tr><td>29</td><td>$1d</td><td>5</td><td>%</td><td></td><td></td></tr> <tr><td>29</td><td>$1d</td><td>5</td><td>%</td><td></td><td></td></tr>
<tr><td>30</td><td>$1e</td><td>2</td><td>"</td><td>BELL</td><td></td></tr> <tr><td>30</td><td>$1e</td><td>2</td><td>"</td><td>BELL</td><td></td></tr>
-<tr><td>31</td><td>$1f</td><td>1</td><td>!</td><td>przełączanie blokady E:</td><td></td></tr>+<tr><td>31</td><td>$1f</td><td>1</td><td>!</td><td>przełączanie blokady przewijania ekranu</td><td></td></tr>
<tr><td>32</td><td>$20</td><td>,</td><td>[</td><td></td><td></td></tr> <tr><td>32</td><td>$20</td><td>,</td><td>[</td><td></td><td></td></tr>
<tr><td>33</td><td>$21</td><td>SPACE</td><td></td><td></td><td></td></tr> <tr><td>33</td><td>$21</td><td>SPACE</td><td></td><td></td><td></td></tr>
Linia 71: Linia 71:
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. 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). Klawisz ten, ani związany z nim rejestr, nie występuje w modelu [[400|Atari 400]].+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). Klawisz ten, i związany z nim rejestr, nie występuje ani w modelu [[400|Atari 400]], ani w [[800|Atari 800]].
-Analogicznie rzecz ma się z detekcją kombinacji CONTROL+1 zatrzymującej lub wznawiającej przewijanie zawartości edytora - w przypadku wciśnięcia tej kombinacji zmieniana jest zawartość rejestru SSFLAG (767, $02FF) z $00 na $FF i na odwrót. +Podobnie rzecz ma się z detekcją kombinacji CONTROL+1 zatrzymującej lub wznawiającej przewijanie zawartości edytora - w przypadku wciśnięcia tej kombinacji zmieniana jest zawartość rejestru SSFLAG (767, $02FF) z $00 na $FF i na odwrót.
Klawisze F1..F4 są dostępne w modelu [[1200XL]]. 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.+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 VKEYBD (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 innego przerwania IRQ, niż pozostałe klawisze. Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKEY (566, $236) wpisuje wartość 0 do rejestru IRQSTAT (17, $11) zwanego również BRKKEY, procedury obsługi SIO oraz edytora ekranowego badają i modyfikują stan tego rejestru (SIO ustala $FF, zaś edytor $80), a informację o wciśnięciu klawisza BREAK zwracają za pomocą statusu operacji I/O. Wciśnięcie klawisza BREAK powoduje wygenerowanie innego przerwania IRQ, niż pozostałe klawisze. Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKEY (566, $236) wpisuje wartość 0 do rejestru IRQSTAT (17, $11) zwanego również BRKKEY, procedury obsługi SIO oraz edytora ekranowego badają i modyfikują stan tego rejestru (SIO ustala $FF, zaś edytor $80), a informację o wciśnięciu klawisza BREAK zwracają za pomocą statusu operacji I/O.
Linia 103: Linia 103:
</table> </table>
-W modelu [[XEGS]] można odłączyć klawiaturę, a informację o tym uzyskać w rejestrze [[Rejestry GTIA#TRIG2|TRIG2]] (53266, $D012). Wszystkie klawisze obsługiwane przez POKEY (łącznie z HELP-em) są wtedy niedostępne. Dostępne są jedynie te na panelu konsoli - START, SELECT, OPTION i RESET.+W modelu [[XEGS]] można odłączyć klawiaturę, a informację o tym uzyskać w rejestrze [[Rejestry GTIA#TRIG2|TRIG2]] (53266, $D012). Wszystkie klawisze obsługiwane przez POKEY (łącznie z HELP-em i BREAK) są wtedy niedostępne. Dostępne są jedynie te występujące na panelu konsoli, a obsługiwane przez GTIA - START, SELECT, OPTION i RESET.
= Linki = = Linki =

Wersja z dnia 11:00, 4 maj 2024

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

Kod decKod hexKlawiszKlawisz
z SHIFT
Klawisz
z CONTROL
Klawisz
z SHIFT+CONTROL
0$00lLniedostępne
1$01jJniedostępne
2$02;:niedostępne
3$03F1 - kursor w górękursor do górnego marginesuprzełączanie blokady klawiaturyniedostępne
4$04F2 - kursor w dółkursor do dolnego marginesuprzełączanie wyświetlania obrazuniedostępne
5$05kKniedostępne
6$06+\strzałka w lewoniedostępne
7$07*^strzałka w prawoniedostępne
8$08oO
9$09
10$0apP
11$0buU
12$0cRETURN
13$0diI
14$0e-_strzałka w górę
15$0f=|strzałka w dół
16$10vVniedostępne
17$11HELPniedostępne
18$12cCniedostępne
19$13F3 - kursor w lewokursor do lewego marginesuprzełączanie kliku klawiaturyniedostępne
20$14F4 - kursor w prawokursor do prawego marginesuprzełączanie zestawów znakówniedostępne
21$15bBniedostępne
22$16xXniedostępne
23$17zZniedostępne
24$184$
25$19
26$1a3#EOF
27$1b6&
28$1cESC
29$1d5%
30$1e2"BELL
31$1f1!przełączanie blokady przewijania ekranu
32$20,[
33$21SPACE
34$22.]
35$23nN
36$24
37$25mM
38$26/?
39$27LOGO
40$28rR
41$29
42$2aeE
43$2byY
44$2cTABSet - ustawienie pozycji tabulacjiClr - skasowanie pozycji tabulacji
45$2dtT
46$2ewW
47$2fqQ
48$309(
49$31
50$320)
51$337'
52$34BACKSPACEDelete
53$358@
54$36<Clear
55$37>Insert
56$38fF
57$39hH
58$3adD
59$3b
60$3cCAPSprzełączenie uppercaseustawienie znaków kontrolnych
61$3dgG
62$3esS
63$3faA

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). Klawisz ten, i związany z nim rejestr, nie występuje ani w modelu Atari 400, ani w Atari 800.

Podobnie rzecz ma się z detekcją kombinacji CONTROL+1 zatrzymującej lub wznawiającej przewijanie zawartości edytora - w przypadku wciśnięcia tej kombinacji zmieniana jest zawartość rejestru SSFLAG (767, $02FF) z $00 na $FF i na odwrót.

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 VKEYBD (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 innego przerwania IRQ, niż pozostałe klawisze. Systemowa procedura obsługi przerwania klawisza BREAK wektoryzowana przez VBRKKEY (566, $236) wpisuje wartość 0 do rejestru IRQSTAT (17, $11) zwanego również BRKKEY, procedury obsługi SIO oraz edytora ekranowego badają i modyfikują stan tego rejestru (SIO ustala $FF, zaś edytor $80), a informację o wciśnięciu klawisza BREAK zwracają za pomocą statusu operacji I/O.

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.

0123456789ABCDEF
0LJ;F1F2K+*O PURETI-=
1VHELPCF3F4BXZ436ESC521
2,SPC.NM/INVREYTABTWQ
3907BKSP8<>FHDCAPSGSA

W modelu XEGS można odłączyć klawiaturę, a informację o tym uzyskać w rejestrze TRIG2 (53266, $D012). Wszystkie klawisze obsługiwane przez POKEY (łącznie z HELP-em i BREAK) są wtedy niedostępne. Dostępne są jedynie te występujące na panelu konsoli, a obsługiwane przez GTIA - START, SELECT, OPTION i RESET.

Linki

Personal tools