C64: Dateiformate/-extensionen von C64 und Emulatoren (VICE)
geschrieben von Andreas Potthoff | 20. Mai 2023
Es gibt so einige Emulatoren für Commodore Maschinen wie dem PET, VIC-20, C64, C128, C65, Plus/4 etc.
Mein Favorit ist der VICE in der letzten stabilen Version. Es gibt auch eine ältere Version speziell für Windows namens WinVice, diese ist allerdings obsolet und wird nicht mehr weiterentwickelt. Wer also einen guten und weit verbreiteten Commodore Emulator mit C64-Unterstützung verwenden will, sollte auf den aktuellen VICE nicht verzichten. Im Downloadbereich findet ihr einige Versionen von VICE.
Eine Installation wie man sie kennt ist nicht nötig, da nur einzelne Programme in Verzeichnisse aufgerufen werden. Hierzu einfach eine Verknüpfung zum jeweiligen Programm anlegen. Eine ausführliche Anleitung zur Installation und Verwendung von VICE findet ihr hier im Blog.
Wer also mit dem C64, dem PC mit dem Emulator VICE arbeitet, stößt bei der Arbeit auf folgende Dateiformate die ich hier in einer Tabelle zusammengefasst habe. Die Tabelle ist mit den Datei-Extensionen, Kategorie, Typ und einer kurzen Beschreibung versehen.
Zur Verwaltung meines riesigen Archivs verwende ich die Software C64-Archiv. LINK
Sollten Extensionen fehlen oder sich ein Fehler eingeschlichen haben, dann bitte unten in den Kommentaren posten. Danke!
Tabelle Dateiformate
Extension
Vice
C64-Archiv
Kategorie
Typ
Beschreibung
C64
+
+
Emulator
Snapshot
CRT
+
+
Cartridge
Cartridge Image
Custom ROM
D64
+
+
Disk
Disk Image
1541
D71
+
+
Disk
Disk Image
1571
D80
+
Disk
Disk Image
CBM8050
D81
+
+
Disk
Disk Image
1581
D82
+
Disk
Disk Image
CBM8250/1001
G64
+
+
Disk
Disk Image
1541 GCR-encoded
P64
+
Disk
Disk Image
Lowlevel NRZI Flux Pulse
T64
+
+
Tape
Tape Image
read-only
TAP
+
+
Tape
Tape Image
Lowlevel Raw Copy
VFL
+
+
Emulator
Snapshot
VICE
+
Emulator
Session File
Frozen Session
VSF
+
+
Emulator
Snapshot
X64
+
Disk
Disk Image
7Z
+
Archiv
Container
Compressed
64B
Emulator
PC64 Emulator
64C
Emulator
PC64 Emulator
ARC
+
Archiv
Container
Compressed
ARK
Archiv
Container
Uncompressed
AVI
+
Media
Video
BIN
Raw Binary
CAS
Tape
Tape Image
Single File
CBM
CBM DOS
Subdirectory
1581
CSM
Tape
Tape Image
Multiple Files
CVT
GEOS
Sequentielle Datei
GEOS Application / Document
D1M
Disk
Disk Image
FD2000/FD4000
D2M
Disk
Disk Image
FD2000/FD4000
D4M
Disk
Disk Image
FD4000
D67
Disk
Disk Image
CBM2040 (DOS1)
D90
Disk
Disk Image
CBMD9090/60
DEL
CBM DOS
Gelöschte Datei
Normal nicht sichtbar
DHD
Disk
Disk Image
CMD HD
DIZ
+
Media
Text
DNP
Disk
Disk Image
CMD HD Native Partition
F64
Disk
Disk Image
1541 (erw. D64 FCOPY III)
G41
Disk
Disk Image
1541
GEOS
GEOS
GIF
Media
Grafik
GZ
+
Archiv
Container
Compressed
HTML
JPG
Media
Grafik
KIM
KIM-1 Image
LHA
+
Archiv
Container
Compressed
LNX
+
Archiv
Container
Uncompressed
LZH
Archiv
Container
Compressed
MP3
+
Media
Audio
MP4
+
Media
Video
NFO
+
Media
Text
NIB
+
P00
Disk
Programmdatei
1541 Container
PDF
+
Media
Container
PNG
Media
Grafik
PRG
CBM DOS
Programmdatei
1541/1571/1581
PSID
RAR
+
Archiv
Container
Compressed
REL
CBM DOS
Relative Datei
1541/1571/1581
REU
RAM Image
ROM
SDA
+
Archiv
Container
Compressed (self extracting)
SEQ
CBM DOS
Sequentielle Datei
1541/1571/1581
SFX
+
Archiv
Container
Compressed (self extracting)
SID
Software
Musikdatei
gerippte C64-Musik-Files
SRK
Archiv
Container
TAR
Archiv
Container
Uncompressed
TCRT
TXT
Media
Text
U00
Universal Data
USR
CBM DOS
User Datei
1541/1571/1581
Z64
+
Disk
Disk Image
ZIP
Archiv
Container
Compressed
C64 BASIC V2.0: Befehle, Schlüsselwörter und Token
geschrieben von Andreas Potthoff | 20. Mai 2023
Beim Commodore 64 (auch VC-20) werden bei der internen Verarbeitung der BASIC-Befehle (Schlüsselwörter) eines BASIC-Programms für eine schnellere Verarbeitung und Speicherplatzersparnis sogenannte Token (Schlüsselzeichen) statt der Schlüsselwörter verwendet.
Die folgende Tabelle zeigt die BASIC-Schlüsselwörter, den dazugehörigen Token (dezimal / hexadezimal), die ROM-Einsprungadresse (hexadezimal), die Abkürzung und den Typ des Befehls.
Nach der Tabelle erhalten Sie weiterführende Informationen zur Tokenisation der Befehle.
Tabelle C64 Token
BASIC Schlüsselwort
Token dez
Token hex
ROM Exec dez
ROM Exec hex
Abk.
Typ
END
128
$80
43057
$A831
eN
Anweisung/Befehl
FOR
129
$81
42818
$A742
fO
Anweisung/Befehl
NEXT
130
$82
44318
$AD1E
nE
Anweisung/Befehl
DATA
131
$83
43256
$A8F8
dA
Anweisung/Befehl
INPUT#
132
$84
43941
$ABA5
iN
Anweisung/Befehl
INPUT
133
$85
43967
$ABBF
-
Anweisung/Befehl
DIM
134
$86
45185
$B081
dI
Anweisung/Befehl
READ
135
$87
44038
$AC06
rE
Anweisung/Befehl
LET
136
$88
43429
$A9A5
lE
Anweisung/Befehl
GOTO
137
$89
43168
$A8A0
gO
Anweisung/Befehl
RUN
138
$8A
43121
$A871
rU
Anweisung/Befehl
IF
139
$8B
43304
$A928
-
Anweisung/Befehl
RESTORE
140
$8C
43037
$A81D
reS
Anweisung/Befehl
GOSUB
141
$8D
43139
$A883
goS
Anweisung/Befehl
RETURN
142
$8E
43218
$A8D2
reT
Anweisung/Befehl
REM
143
$8F
43323
$A93B
-
Anweisung/Befehl
STOP
144
$90
43055
$A82F
sT
Anweisung/Befehl
ON
145
$91
43339
$A94B
-
Anweisung/Befehl
WAIT
146
$92
47149
$B82D
wA
Anweisung/Befehl
LOAD
147
$93
57704
$E168
lO
Anweisung/Befehl
SAVE
148
$94
57686
$E156
sA
Anweisung/Befehl
VERIFY
149
$95
57701
$E165
vE
Anweisung/Befehl
DEF
150
$96
46003
$B3B3
dE
Anweisung/Befehl
POKE
151
$97
47140
$B824
pO
Anweisung/Befehl
PRINT#
152
$98
43648
$AA80
pR
Anweisung/Befehl
PRINT
153
$99
43680
$AAA0
?
Anweisung/Befehl
CONT
154
$9A
43095
$A857
cO
Anweisung/Befehl
LIST
155
$9B
42652
$A69C
lI
Anweisung/Befehl
CLR
156
$9C
42590
$A65E
cL
Anweisung/Befehl
CMD
157
$9D
43654
$AA86
cM
Anweisung/Befehl
SYS
158
$9E
57642
$E12A
sY
Anweisung/Befehl
OPEN
159
$9F
57790
$E1BE
oP
Anweisung/Befehl
CLOSE
160
$A0
57799
$E1C7
clO
Anweisung/Befehl
GET
161
$A1
43899
$AB7B
gE
Anweisung/Befehl
NEW
162
$A2
42562
$A642
-
Anweisung/Befehl
TAB(
163
$A3
43752
$AAE8
tA
Anweisung/Befehl, Spezial
TO
164
$A4
42861
$A76D
-
Anweisung/Befehl, Spezial
FN
165
$A5
46068
$B3F4
-
Anweisung/Befehl, Spezial
SPC(
166
$A6
43769
$AAF9
sP
Anweisung/Befehl, Spezial
THEN
167
$A7
43314
$A932
tH
Anweisung/Befehl, Spezial
NOT
168
$A8
44756
$AED4
nO
Anweisung/Befehl, Spezial
STEP
169
$A9
42905
$A799
stE
Anweisung/Befehl, Spezial
+
170
$AA
47210
$B86A
-
Operator, numerisch/string
-
171
$AB
47187
$B853
-
Operator, numerisch
*
172
$AC
47659
$BA2B
-
Operator, numerisch
/
173
$AD
47890
$BB12
-
Operator, numerisch
^
174
$AE
49019
$BF7B
-
Operator, numerisch
AND
175
$AF
45033
$AFE9
aN
Operator, logisch
OR
176
$B0
45030
$AFE6
-
Operator, logisch
>
177
$B1
49076
$BFB4
-
Operator, logisch
=
178
$B2
44756
$AED4
-
Operator, logisch
<
179
$B3
45078
$B016
-
Operator, logisch
SGN
180
$B4
48185
$BC39
sG
Funktion, numerisch
INT
181
$B5
48332
$BCCC
-
Funktion, numerisch
ABS
182
$B6
48216
$BC58
abS
Funktion, numerisch
USR
183
$B7
784
$0310
uS
Funktion, numerisch/string
FRE
184
$B8
45949
$B37D
fR
Funktion, numerisch, Spezial
POS
185
$B9
45982
$B39E
-
Funktion, numerisch, Spezial
SQR
186
$BA
49009
$BF71
sQ
Funktion, numerisch
RND
187
$BB
57495
$E097
rN
Funktion, numerisch
LOG
188
$BC
45794
$B9EA
-
Funktion, numerisch
EXP
189
$BD
49133
$BFED
eX
Funktion, numerisch
COS
190
$BE
57956
$E264
-
Funktion, numerisch
SIN
191
$BF
57963
$E26B
sI
Funktion, numerisch
TAN
192
$C0
58036
$E2B4
-
Funktion, numerisch
ATN
193
$C1
58128
$E30E
aT
Funktion, numerisch
PEEK
194
$C2
47117
$B80E
pE
Funktion, numerisch
LEN
195
$C3
46972
$B77C
-
Funktion, numerisch
STR$
196
$C4
46181
$B465
stR
Funktion, string
VAL
197
$C5
47021
$B7AD
vA
Funktion, numerisch
ASC
198
$C6
46987
$B78B
aS
Funktion, numerisch
CHR$
199
$C7
46828
$B6EC
cH
Funktion, string
LEFT$
200
$C8
46848
$B700
leF
Funktion, string
RIGHT$
201
$C9
46892
$B72C
rI
Funktion, string
MID$
202
$CA
46903
$B737
mI
Funktion, string
GO
203
$CB
43026
$A812
-
Anweisung/Befehl, Spezial
π
255
$FF
44702
$AE9E
-
Funktion, numerisch, Konstante
ST (STATUS)
-
-
65463
$FFB7
-
Systemvariable
TI (TIME)
-
-
?
?
-
Systemvariable
TI$ (TIME$)
-
-
43488
$A9E0
-
Systemvariable
Tokenisation
Hier werden die Schlüsselwörter (Befehle) in ein Single-Byte-Wert (Token) umgewandelt, wenn sie in einem Programm gespeichert sind. Das geschieht entweder durch einen Programmstart mit RUN oder im Direktmodus (Konsole) durch das Drücken der Taste RETURN, wenn dort Kommandos eingegeben worden sind. Der BASIC-Interpreter arbeitet die Token der Reihenfolge nach ab.
De-Tokenisation
Hier werden die Token (Bytes) in lesbare BASIC-Befehle (Schlüsselwörter) umgewandelt, was eigentlich nur für das LIST-Kommando als Ausgabe und für gute menschliche Lesbarkeit zutrifft. Ansonsten wird die De-Tokenisation nicht angewandt.
Single-Byte-Token
Ein Token kann beim Commodore BASIC V2 (ab 4.0) einen Single-Byte-Wert zwischen 128-255 ($80-$FF) haben und belegt nur 1 Byte Arbeitsspeicher. Token-Codes sind immer größer oder gleich 128 ($80); d.h. das höchstwertige Bit in einem Byte, das einen Token repräsentiert, ist immer gesetzt und somit werden keine PETSCII-Zeichen (<128/<$80) als Token-Code benutzt.
Two-Bytes-Token
Ab dem Commodore BASIC 7.0 (C 128) werden wegen des umfangreichen BASIC-Befehlssatzes zwei Bytes für ein Token benötigt.
Ausführen von Token
Jedes Token hat eine sogenannte Ausführungsadresse (EXEC) im ROM, wo dann der entsprechende Code für den jeweiligen Token bzw. BASIC-Befehl ausgeführt wird.
Schlüsselwörter
BASIC V2 enthält 76 Schlüsselwörter, 8 Operatoren, 1 Konstante und 3 Systemvariablen, die in verschiedenen Gruppen gegliedert sind:
128-162 ($80-$A2): Befehle
163-169 ($A3-$A9): “Bywords“, die Teil der Syntax der vorherigen Befehle sind
170-179 ($AA-$B3): Arithmetische und logische Operatoren
180-202 ($B4-$CA): Funktionen
203 ($CB): Befehl – GO (der hier als Ausnahme hinter den Funktionen liegt)
204-254 ($CC-$FE): Ein freier Bereich für 51 zusätzliche Token, z.B. der für BASIC-Erweiterungen von Drittanbietern genutzt wird
255 ($FF): Konstante – Pi
Systemvariablen: ST (STATUS), TI (TIME), TI$ (TIME$). Im BASIC V2 ROM werden die Systemvariablen als Ausnahmen in den Routinen zur Behandlung normaler Variablen behandelt.
Abkürzungen
Die meisten BASIC-Schlüsselwörter kann man bei der Eingabe abkürzen. Abgekürzte Schlüsselwörter werden i.d.R. gebildet, indem man die ersten (manchmal bis zu drei) Zeichen eintippt und das nächste Zeichen mit SHIFT eingibt.
Auch hier gibt es wieder einige Ausnahmen. Einige Schlüsselwörter (CLOSE, GOSUB, LEFT$, RESTORE, RETURN, STEP, STR$) benötigen gekürzt 3 statt 2 Zeichen. Der BASIC-Befehl PRINT wird nur mit einem Zeichen, dem ? abgekürzt. Es gibt auch einige BASIC-Befehle (INPUT, COS, FN, TO, IF, INT, LEN, LOG, NEW, ON, OR, POS, REM, TAN) die nicht abkürzbar sind.
Speichern
Es kann schon mal vorkommen, dass eine Programmzeile 80 Zeichen überschreitet, also dafür mehr als 2 Zeilen auf dem Bildschirm angezeigt werden. Dies geschieht dadurch, dass die Ausgabe der Token beim LIST-Befehl eben ungekürzt passiert und somit Programmzeilen mit mehr als 80 Zeichen auftreten können.
Wenn sie eine solche Programmzeile ändern wollen, müssen sie die Abkürzungen erneut eingeben bevor sie das Programm speichern. Achten sie dann darauf, dass sie nicht mehr als 80 Zeichen für eine Programmzeile insgesamt verwenden. Alle zusätzlichen Zeichen danach werden nach dem Drücken von RETURN automatisch abgeschnitten. Beim Speichern eines Programms auf einen Datenträger werden die Token und nicht die Schlüsselwörter benutzt.
In diesem Video (00:31:19, engl.) erklärt Robin Harbron einige Features von CBM BASIC v2.0 die eigentlich selten benutzt werden. Robin zeigt Tipps und Beispiele zu jedem BASIC-Feature live am C-64.