PETSCII

Aus C64-Wiki
Zur Navigation springenZur Suche springen

PETSCII steht für "PET Standard Code of Information Interchange" und wird manchmal auch als CBM-ASCII bezeichnet. PETSCII basiert zu einem Teil auf dem ASCII-Standard, enthält aber zusätzliche Zeichen, z.B. Grafikzeichen zum Erstellen von Blockgrafik oder weitere Steuerzeichen. Jedes PETSCII-Byte (0-255) kodiert entweder ein Steuerzeichen (0-31 und 128-159) oder ein darstellbares Zeichen.

PETSCII ist zu unterscheiden vom Bildschirmcode; letzterer kodiert alle darstellbaren Zeichen ohne Steuerzeichen, aber inklusive der inversen Zeichen.

ASCII (englische Abkürzung für American Standard Code for Information Interchange) ist die Bezeichnung, die im Commodore 64 Bedienerhandbuch für den hier beschriebenen Code benutzt wird. Der Begriff PETSCII kommt dort nicht vor. Deshalb kann dieser Artikel auch unter "ASCII" aufgerufen werden. Der Commodore ASCII-Code beruht auf der 1963er-Version von ASCII, nicht auf der von fast allen anderen ASCII-Computern verwendeten 1967er-Version. Dies äußert sich u. a. in den Zeichen „Pfeil nach Oben“ (↑) und „Pfeil nach Links“ (←) sowie in dem Nur-Großbuchstaben-Modus, die in ASCII 1967 nicht mehr vorgesehen waren.

Von BASIC aus können Zeichen anhand ihres PETSCII-Codes per CHR$-Befehl ausgegeben werden. PRINT CHR$(65) gibt z.B. ein A aus.

Neben der Nutzung in BASIC-Zeichenketten wird PETSCII auch für den Tastaturpuffer und in der internen Darstellung von BASIC-Programmen benutzt, dazu siehe Artikel Speicherbelegung (BASIC).

Die PETSCII-Code-Tabelle des C64[Bearbeiten | Quelltext bearbeiten]

Die Tabelle wird in 6 Spalten angezeigt. Links steht in jeder Spalte der PETSCII-Code, dahinter das zugehörige Zeichen des Groß-/Grafik-Modus bzw. bei Steuerzeichen die Bedeutung. Rechts daneben folgt das entsprechende Zeichen des Groß-/Klein-Modus, falls es sich von dem ersten Zeichen unterscheidet.

Aufgeführt sind hier nur die Codes bis 191, denn ab Code 192 wiederholen sich die Zeichen:

Codes 192-223 wie Codes  96-127
Codes 224-254 wie Codes 160-190
Code  255     wie Code  126

Eine vollständige Tabelle mit allen PETSCII-Codes, korrespondierenden ASCII- und Bildschirmcodes sowie Beschreibungen findet man unter PETSCII-Tabelle.

ASCII-Codes des C64


Umwandlungsroutinen[Bearbeiten | Quelltext bearbeiten]

In 6502-Assembler[1]:

CMP #$FF
BEQ .pi
PHA
LSR
LSR
LSR
LSR
LSR
TAX
PLA
EOR tab,X
RTS
.pi:
LDA #$5E
RTS
tab:
.byte $80,$00,$40,$20,$40,$c0,$80,$80

In Python[2]:

sc = ([0x80, 0x20, 0x00, 0x40, 0xC0, 0x60, 0x40, 0x60][c >> 5] + (c & 0x1f)) if c != 255 else 94

In Java[3]:

int sc = c!=255?(new int[]{0x80, 0x20, 0x00, 0x40, 0xC0, 0x60, 0x40, 0x60}[c >> 5] + (c & 0x1f)):94;

Verwandte Themen[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: CBM-ASCII
WP-W11.png Wikipedia: ASCII
WP-W11.png Wikipedia: PETSCII Sprache:english

Quellen[Bearbeiten | Quelltext bearbeiten]