Steuertaste
Als Steuertasten werden CTRL , SHIFT und C= bezeichnet. Sie besitzen keinen Tastencode und keinen PETSCII-Code.
Flag für Steuertasten[Bearbeiten | Quelltext bearbeiten]
Die Adresse $028D (dezimal 653) ist das Flag für die SHIFT , C= und CTRL . Der Wert in diesem Flag bestimmt, ob eine oder mehrere der Steuertasten gedrückt werden:
- Bit 0 ist für SHIFT zuständig (linke oder rechte SHIFT-Taste)
- Bit 1 für C=
- Bit 2 für CTRL
Beispiele:
Wert | gedrückte Taste |
0 | keine |
1 | SHIFT |
2 | C= |
3 | SHIFT und C= |
4 | CTRL |
5 | SHIFT und CTRL |
6 | C= und CTRL |
7 | SHIFT , C= und CTRL |
Gesetzt wird das Flag vom Betriebssystem in der IRQ-Routine bei der Tastaturabfrage. Die Werte (1, 2 oder 4 für SHIFT, C= oder CTRL) werden der Tastencodetabelle entnommen und - falls kleiner als 5 - in das Flag $028D geschrieben.
In einem Programm kann durch Auswertung des Steuertasten-Flags $028D und des Tastencode in $CB (dezimal 203) die gesamte Tastatur abgefragt werden.
Tastencodetabellen[Bearbeiten | Quelltext bearbeiten]
Eine Steuertaste verändert den Zeiger $F5/$F6 (245/246), der in der IRQ-Routine auf eine entsprechende 65 Byte lange Tastencodetabelle gesetzt wird:
Steuertaste | Decodiertabelle |
keine | $EB81 |
SHIFT | $EBC2 |
C= | $EC03 |
CTRL | $EC78 |
Aus der jeweiligen Tastencodetabelle wird der PETSCII-Code der - gegebenenfalls mit der Steuertaste gemeinsam gedrückten - Taste ermittelt.
Hexdump der Decodiertabelle bei $EB81:
:EB81 14 0D 1D 88 85 86 87 11 :EB89 33 57 41 34 5A 53 45 01 :EB91 35 52 44 36 43 46 54 58 :EB99 37 59 47 38 42 48 55 56 :EBA1 39 49 4A 30 4D 4B 4F 4E :EBA9 2B 50 4C 2D 2E 3A 40 2C :EBB1 5C 2A 3B 13 01 3D 5E 2F :EBB9 31 5F 04 32 20 02 51 03 :EBC1 FF