Steuertaste

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Als Steuertasten werden CTRL , SHIFT  und C=  bezeichnet. Sie besitzen keinen Tastencode und keinen PETSCII-Code.

Flag für Steuertasten[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]

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

Verwandte Themen[Bearbeiten]