C 64
Tabellen

Die Codes des C 64

Die kompletten ASCII-, CHR$- und Bildschirmcodes und dazu noch die vollständigen Tastencodes des C 64 finden Sie in der folgenden Tabelle anwenderfreundlich, also so, daß man sie auch benutzen kann, gegenübergestellt.

Programmieren in Maschinensprache beinhaltet oft Ein- und Ausgaben, zum Beispiel für eine Benutzerführung, oder um Eingaben vom Bildschirm einzulesen. Häufig steht man vor dem Problem, daß man nur einzelne Zeichen eines Textes in einem Maschinenprogramm verändern will. In allen Fällen benötigt man dann die CHR$- oder Bildschirmcodes, von denen hier die Rede ist. Das gleiche gilt natürlich auch für die Tastatur. Das Betriebssystem stellt uns die momentan gedrückte Taste in zwei Speicherstellen zur Verfügung.

Warum verschiedene Codes?

Vergleicht man in der Tabelle 1 die Spalten, so wird man feststellen, daß es einige nicht druckende Zeichen gibt, Codes, die auf dem Bildschirm nichts schreiben. Es sind dies die ASCII- beziehungsweise die CHR$-Codes von 0 bis 31 und von 128 bis 159. Auch findet man auf dem Bildschirm Zeichen, die in der ASCII-Tabelle nicht auftauchen - die reversen Zeichen mit den Codes von 128 bis 255. Um alle druckenden ASCII-Zeichen auch auf dem Bildschirm sichtbar zu machen, und dabei keine sinnlos leeren Felder mitzuführen, mußte man die Tabelle im Computer umstellen.

Ganz anders verhält es sich mit der Tastatur. Hier sieht die Codierung zunächst sehr zufällig aus. Natürlich ist dies mit der Anordnung der Tasten und der Methode, wie das Betriebssystem die Tasten abfragt, zu erklären. Uns soll es hier genügen, zu wissen, wie man von einem (Maschinen-) Programm aus einen Tastendruck registrieren kann. Man findet die zuletzt gedrückte Taste in den Speicherstellen 197 ($C5) und 203 ($CB), die mit PEEK beziehungsweise auf der Maschinensprache-Ebene mit LDA ausgelesen werden kann.

Die nachfolgende Tabelle 1 bietet auf einen Blick alle Codes, die im C64 enthalten sind. Die Tabelle ist nach den CHR$-Zeichen sortiert, also eine aufsteigende Reihe von 0 bis 255. Um das Programmieren in Maschinensprache zu erleichtern, sind neben den dezimalen Zahlen auch die hexadezimalen Werte aufgeführt.

Die Spalten drei und vier enthalten die CHR$-Zeichen des C 64. Spalte drei zeigt dabe* die Zeichen im Groß-/Grafikmodus, Spalte vier die entsprechenden Zeichen in Klein-/Großschriftmodus.

Die Zeichen von 0 bis 31 und von 128 bis 159 sind diejenigen CHR$-Codes, deren Aufruf auf dem Bildschirm kein sichtbares Zeichen hervorbringt, so zum Beispiel das Umstellen der Cursorfarbe, oder die Codes der Funktionstasten, die man nichtschreibenkann(?CHR$(133)ergibtnicht»F1«), aberfür eine Abfrage (IF A$ = CHR$(133) THEN…) nutzen kann. Hier wird nicht zwischen den Modi unterschieden, da das Ergebnis in beiden Fällen das gleiche ist. Damit der Text in die Tabelle paßt, ließen wir ihn sogar bis in die sechste Spalte übergreifen. Über den Bildschirmcode kann man nicht über diese Funktionen verfügen!

Die Bildschirmcodes der fünften und sechsten Spalte sind die Werte, die man erhält, wenn man das CHR$-Zeichen mit PRINT ausgibt und die entsprechende Bildschirmspeicherstelle mit PEEK ausliest. Für Maschinensprache ist auch hier wieder der hexadezimale Wert angegeben. Die reversen Zeichen erhält man durch Addition von 128, in Maschinensprache durch den Befehl »ORA # $80«.

Obwohl der C64 keinen echten ASCII-Zeichensatz hat, ist dieser in Spalte sieben aufgeführt. Man benötigt den ASCII-Code vor allem für die Datenfernübertragung (DFÜ) und zur Ansteuerung von nicht MPS-kompatiblen Druckern, die nicht mit einem »intelligenten« Interface betrieben werden. Die Erklärungen der verwendeten Kurzzeichen stehen in der Tabelle 2.

In den letzten beiden Spalten sind die Tastaturcodes enthalten, wie man sie beim Auslesen der Speicherstellen 197 und 203 erhält. Bitte beachten Sie, daß der Code 63 ($3F) der RUN/STOP-Taste entspricht, also dem CHR$-Code 3. Da aber PRINT CHR$(3) ein Programm nicht anhält und sich nicht abfragen läßt, ist es in der Tabelle nicht aufgeführt.

(og)
Tabelle 1. Die Codes des C64
NUL = Null
SOH = Start of Heading
STX = Start of Text (Textbeginn)
ETX = End of Text (Textende)
EOT = End of Transmission (Übertragungsende)
ENQ = Enquiry (Testanfrage)
ACK = Acknowledge (Quittierung)
BEL = Bell (Klingelzeichen)
BS = Backspace (Zeichen zurück)
HT = Horizontal Tabulation
LF = Line Feed (Zeilenvorschub)
VT = Vertical Tabulation
FF = Form Feed (Formatanpassung)
CR = Carriage Return (Wagenrücklauf)
SO = Shift out (Shift aus)
SI = Shift in (Shift ein)
DLE = Data Link Escape (Datenverbindung abhalten)
DC = Device Control (Gerätesteuerung)
NAK = Negative Acknowledge (Gegenquittierung)
SYN = Synchronous Idle (synchronlos)
ETB = End of Transmission Block (Block Übertragungsende)
CAN = Cancel (Stornieren, zum Beispiel Puffer leeren)
EM = End of Medium (z. B. Papierende)
SUB = Substitute (Austausch)
ESC = Escape (übergehen, Druckercode)
FS = File Separator (Filetrennung)
GS = Group Separator (Trennung von Gruppen)
RS = Record Separator (Aufzeichnung trennen)
US = Unit Separator (Einheitentrenner)
SP = Space (Leerzeichen)
DEL = Delete (Löschen)
Tabelle 2. Erklärung der in Tabelle 1 abgekürzten ASCII-Zeichen
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →