Kody klawiszy
From Atariki
Wersja z dnia 07:30, 3 maj 2024 Mono (Dyskusja | wkład) (help w atari 400) ← Previous diff |
Aktualna wersja Mono (Dyskusja | wkład) (inverse / atari logo) |
||
Linia 6: | Linia 6: | ||
<tr><td>1</td><td>$01</td><td>j</td><td>J</td><td></td><td>niedostępne</td></tr> | <tr><td>1</td><td>$01</td><td>j</td><td>J</td><td></td><td>niedostępne</td></tr> | ||
<tr><td>2</td><td>$02</td><td>;</td><td>:</td><td></td><td>niedostępne</td></tr> | <tr><td>2</td><td>$02</td><td>;</td><td>:</td><td></td><td>niedostępne</td></tr> | ||
- | <tr><td>3</td><td>$03</td><td>F1 - kursor w górę</td><td>kursor do górnego marginesu</td><td>przełączanie blokady klawiatury</td><td>niedostępne</td></tr> | + | <tr><td>3</td><td>$03</td><td>F1 - kursor w górę (w 1200XL)</td><td>kursor do górnego marginesu (w 1200XL)</td><td>przełączanie blokady klawiatury (w 1200XL)</td><td>niedostępne</td></tr> |
- | <tr><td>4</td><td>$04</td><td>F2 - kursor w dół</td><td>kursor do dolnego marginesu</td><td>przełączanie wyświetlania obrazu</td><td>niedostępne</td></tr> | + | <tr><td>4</td><td>$04</td><td>F2 - kursor w dół (w 1200XL)</td><td>kursor do dolnego marginesu (w 1200XL)</td><td>przełączanie wyświetlania obrazu (w 1200XL)</td><td>niedostępne</td></tr> |
<tr><td>5</td><td>$05</td><td>k</td><td>K</td><td></td><td>niedostępne</td></tr> | <tr><td>5</td><td>$05</td><td>k</td><td>K</td><td></td><td>niedostępne</td></tr> | ||
<tr><td>6</td><td>$06</td><td>+</td><td>\</td><td>strzałka w lewo</td><td>niedostępne</td></tr> | <tr><td>6</td><td>$06</td><td>+</td><td>\</td><td>strzałka w lewo</td><td>niedostępne</td></tr> | ||
Linia 20: | Linia 20: | ||
<tr><td>15</td><td>$0f</td><td>=</td><td>|</td><td>strzałka w dół</td><td></td></tr> | <tr><td>15</td><td>$0f</td><td>=</td><td>|</td><td>strzałka w dół</td><td></td></tr> | ||
<tr><td>16</td><td>$10</td><td>v</td><td>V</td><td></td><td>niedostępne</td></tr> | <tr><td>16</td><td>$10</td><td>v</td><td>V</td><td></td><td>niedostępne</td></tr> | ||
- | <tr><td>17</td><td>$11</td><td>HELP</td><td></td><td></td><td>niedostępne</td></tr> | + | <tr><td>17</td><td>$11</td><td>HELP (brak w 400/800)</td><td>przełączanie zestawów znaków (w arabskim 65XE, brak w 400/800)</td><td>(brak w 400/800)</td><td>niedostępne</td></tr> |
<tr><td>18</td><td>$12</td><td>c</td><td>C</td><td></td><td>niedostępne</td></tr> | <tr><td>18</td><td>$12</td><td>c</td><td>C</td><td></td><td>niedostępne</td></tr> | ||
- | <tr><td>19</td><td>$13</td><td>F3 - kursor w lewo</td><td>kursor do lewego marginesu</td><td>przełączanie kliku klawiatury</td><td>niedostępne</td></tr> | + | <tr><td>19</td><td>$13</td><td>F3 - kursor w lewo (w 1200XL)</td><td>kursor do lewego marginesu (w 1200XL)</td><td>przełączanie kliku klawiatury (w 1200XL)</td><td>niedostępne</td></tr> |
- | <tr><td>20</td><td>$14</td><td>F4 - kursor w prawo</td><td>kursor do prawego marginesu</td><td>przełączanie zestawów znaków</td><td>niedostępne</td></tr> | + | <tr><td>20</td><td>$14</td><td>F4 - kursor w prawo (w 1200XL)</td><td>kursor do prawego marginesu (w 1200XL)</td><td>przełączanie zestawów znaków (w 1200XL)</td><td>niedostępne</td></tr> |
<tr><td>21</td><td>$15</td><td>b</td><td>B</td><td></td><td>niedostępne</td></tr> | <tr><td>21</td><td>$15</td><td>b</td><td>B</td><td></td><td>niedostępne</td></tr> | ||
<tr><td>22</td><td>$16</td><td>x</td><td>X</td><td></td><td>niedostępne</td></tr> | <tr><td>22</td><td>$16</td><td>x</td><td>X</td><td></td><td>niedostępne</td></tr> | ||
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 42: | Linia 42: | ||
<tr><td>37</td><td>$25</td><td>m</td><td>M</td><td></td><td></td></tr> | <tr><td>37</td><td>$25</td><td>m</td><td>M</td><td></td><td></td></tr> | ||
<tr><td>38</td><td>$26</td><td>/</td><td>?</td><td></td><td></td></tr> | <tr><td>38</td><td>$26</td><td>/</td><td>?</td><td></td><td></td></tr> | ||
- | <tr><td>39</td><td>$27</td><td>LOGO</td><td></td><td></td><td></td></tr> | + | <tr><td>39</td><td>$27</td><td>INVERSE (ATARI LOGO w 400/800)</td><td></td><td></td><td></td></tr> |
<tr><td>40</td><td>$28</td><td>r</td><td>R</td><td></td><td></td></tr> | <tr><td>40</td><td>$28</td><td>r</td><td>R</td><td></td><td></td></tr> | ||
<tr><td>41</td><td>$29</td><td></td><td></td><td></td><td></td></tr> | <tr><td>41</td><td>$29</td><td></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]]. |
+ | W [[Arabski 65XE|arabskim 65XE]] HLPFLG ustawiany jest wyłącznie po wciśnięciu samego klawisza HELP. Kombinacja SHIFT+HELP przełącza zestawy znaków, a CONTROL+HELP nie jest wykorzystana. Informacja o wciśnięciu jakiejkolwiek kombinacji klawisza HELP nigdy nie pojawia się w CH (764, $02FC). | ||
- | 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 CH 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 VBRKKY (566, $236) wpisuje wartość 0 do rejestru BRKKEY (17, $11), procedury obsługi SIO oraz edytora ekranowego badają i modyfikują stan tego rejestru (SIO ustala $FF, zaś edytor $80 po wciśnięciu BREAK, a $88 po wciśnięciu CONTROL+3), 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 [[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). | ||
Linia 90: | Linia 91: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
- | <th>0</th><td style="background:#f0f0f0">L</td><td style="background:#f0f0f0">J</td><td style="background:#f0f0f0">;</td><td style="background:#f0f0f0">F1</td><td style="background:#f0f0f0">F2</td><td style="background:#f0f0f0">K</td><td style="background:#f0f0f0">+</td><td style="background:#f0f0f0">*</td><td>O</td><td> </td><td>P</td><td>U</td><td>RET</td><td>I</td><td>-</td><td>=</td> | + | <th>0</th><td style="background:#f0f0f0">L</td><td style="background:#f0f0f0">J</td><td style="background:#f0f0f0">;</td><td style="background:#f0f0f0"><b>F1</b></td><td style="background:#f0f0f0"><b>F2</b></td><td style="background:#f0f0f0">K</td><td style="background:#f0f0f0">+</td><td style="background:#f0f0f0">*</td><td>O</td><td> </td><td>P</td><td>U</td><td>RET</td><td>I</td><td>-</td><td>=</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
- | <th>1</th><td style="background:#f0f0f0">V</td><td style="background:#f0f0f0">HELP</td><td style="background:#f0f0f0">C</td><td style="background:#f0f0f0">F3</td><td style="background:#f0f0f0">F4</td><td style="background:#f0f0f0">B</td><td style="background:#f0f0f0">X</td><td style="background:#f0f0f0">Z</td><td>4</td><td></td><td>3</td><td>6</td><td>ESC</td><td>5</td><td>2</td><td>1</td> | + | <th>1</th><td style="background:#f0f0f0">V</td><td style="background:#f0f0f0"><b>HELP</b></td><td style="background:#f0f0f0">C</td><td style="background:#f0f0f0"><b>F3</b></td><td style="background:#f0f0f0"><b>F4</b></td><td style="background:#f0f0f0">B</td><td style="background:#f0f0f0">X</td><td style="background:#f0f0f0">Z</td><td>4</td><td></td><td>3</td><td>6</td><td>ESC</td><td>5</td><td>2</td><td>1</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Linia 103: | Linia 104: | ||
</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 = |
Aktualna wersja
"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 | Klawisz z SHIFT | Klawisz z CONTROL | Klawisz z SHIFT+CONTROL |
0 | $00 | l | L | niedostępne | |
1 | $01 | j | J | niedostępne | |
2 | $02 | ; | : | niedostępne | |
3 | $03 | F1 - kursor w górę (w 1200XL) | kursor do górnego marginesu (w 1200XL) | przełączanie blokady klawiatury (w 1200XL) | niedostępne |
4 | $04 | F2 - kursor w dół (w 1200XL) | kursor do dolnego marginesu (w 1200XL) | przełączanie wyświetlania obrazu (w 1200XL) | niedostępne |
5 | $05 | k | K | niedostępne | |
6 | $06 | + | \ | strzałka w lewo | niedostępne |
7 | $07 | * | ^ | strzałka w prawo | niedostępne |
8 | $08 | o | O | ||
9 | $09 | ||||
10 | $0a | p | P | ||
11 | $0b | u | U | ||
12 | $0c | RETURN | |||
13 | $0d | i | I | ||
14 | $0e | - | _ | strzałka w górę | |
15 | $0f | = | | | strzałka w dół | |
16 | $10 | v | V | niedostępne | |
17 | $11 | HELP (brak w 400/800) | przełączanie zestawów znaków (w arabskim 65XE, brak w 400/800) | (brak w 400/800) | niedostępne |
18 | $12 | c | C | niedostępne | |
19 | $13 | F3 - kursor w lewo (w 1200XL) | kursor do lewego marginesu (w 1200XL) | przełączanie kliku klawiatury (w 1200XL) | niedostępne |
20 | $14 | F4 - kursor w prawo (w 1200XL) | kursor do prawego marginesu (w 1200XL) | przełączanie zestawów znaków (w 1200XL) | niedostępne |
21 | $15 | b | B | niedostępne | |
22 | $16 | x | X | niedostępne | |
23 | $17 | z | Z | niedostępne | |
24 | $18 | 4 | $ | ||
25 | $19 | ||||
26 | $1a | 3 | # | EOF | |
27 | $1b | 6 | & | ||
28 | $1c | ESC | |||
29 | $1d | 5 | % | ||
30 | $1e | 2 | " | BELL | |
31 | $1f | 1 | ! | przełączanie blokady przewijania ekranu | |
32 | $20 | , | [ | ||
33 | $21 | SPACE | |||
34 | $22 | . | ] | ||
35 | $23 | n | N | ||
36 | $24 | ||||
37 | $25 | m | M | ||
38 | $26 | / | ? | ||
39 | $27 | INVERSE (ATARI LOGO w 400/800) | |||
40 | $28 | r | R | ||
41 | $29 | ||||
42 | $2a | e | E | ||
43 | $2b | y | Y | ||
44 | $2c | TAB | Set - ustawienie pozycji tabulacji | Clr - skasowanie pozycji tabulacji | |
45 | $2d | t | T | ||
46 | $2e | w | W | ||
47 | $2f | q | Q | ||
48 | $30 | 9 | ( | ||
49 | $31 | ||||
50 | $32 | 0 | ) | ||
51 | $33 | 7 | ' | ||
52 | $34 | BACKSPACE | Delete | ||
53 | $35 | 8 | @ | ||
54 | $36 | < | Clear | ||
55 | $37 | > | Insert | ||
56 | $38 | f | F | ||
57 | $39 | h | H | ||
58 | $3a | d | D | ||
59 | $3b | ||||
60 | $3c | CAPS | przełączenie uppercase | ustawienie znaków kontrolnych | |
61 | $3d | g | G | ||
62 | $3e | s | S | ||
63 | $3f | a | 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). Klawisz ten, i związany z nim rejestr, nie występuje ani w modelu Atari 400, ani w Atari 800. W arabskim 65XE HLPFLG ustawiany jest wyłącznie po wciśnięciu samego klawisza HELP. Kombinacja SHIFT+HELP przełącza zestawy znaków, a CONTROL+HELP nie jest wykorzystana. Informacja o wciśnięciu jakiejkolwiek kombinacji klawisza HELP nigdy nie pojawia się w CH (764, $02FC).
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 CH 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 VBRKKY (566, $236) wpisuje wartość 0 do rejestru BRKKEY (17, $11), procedury obsługi SIO oraz edytora ekranowego badają i modyfikują stan tego rejestru (SIO ustala $FF, zaś edytor $80 po wciśnięciu BREAK, a $88 po wciśnięciu CONTROL+3), 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.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | L | J | ; | F1 | F2 | K | + | * | O | P | U | RET | I | - | = | |
1 | V | HELP | C | F3 | F4 | B | X | Z | 4 | 3 | 6 | ESC | 5 | 2 | 1 | |
2 | , | SPC | . | N | M | / | INV | R | E | Y | TAB | T | W | Q | ||
3 | 9 | 0 | 7 | BKSP | 8 | < | > | F | H | D | CAPS | G | S | A |
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.