C64: Dateiformate/-extensionen von C64 und Emulatoren (VICE)

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


ExtensionViceC64-ArchivKategorieTypBeschreibung
C64++EmulatorSnapshot
CRT++CartridgeCartridge ImageCustom ROM
D64++DiskDisk Image1541
D71++DiskDisk Image1571
D80+DiskDisk ImageCBM8050
D81++DiskDisk Image1581
D82+DiskDisk ImageCBM8250/1001
G64++DiskDisk Image1541 GCR-encoded
P64+DiskDisk Image Lowlevel NRZI Flux Pulse
T64++TapeTape Imageread-only
TAP++TapeTape ImageLowlevel Raw Copy
VFL++EmulatorSnapshot
VICE+EmulatorSession FileFrozen Session
VSF++EmulatorSnapshot
X64+DiskDisk Image
7Z+ArchivContainerCompressed
64BEmulatorPC64 Emulator
64CEmulatorPC64 Emulator
ARC+ArchivContainerCompressed
ARKArchivContainerUncompressed
AVI+MediaVideo
BINRaw Binary
CASTapeTape ImageSingle File
CBMCBM DOSSubdirectory1581
CSMTapeTape ImageMultiple Files
CVTGEOSSequentielle DateiGEOS Application / Document
D1MDiskDisk ImageFD2000/FD4000
D2MDiskDisk ImageFD2000/FD4000
D4MDiskDisk ImageFD4000
D67DiskDisk ImageCBM2040 (DOS1)
D90DiskDisk ImageCBMD9090/60
DELCBM DOSGelöschte DateiNormal nicht sichtbar
DHDDiskDisk ImageCMD HD
DIZ+MediaText
DNPDiskDisk ImageCMD HD Native Partition
F64DiskDisk Image1541 (erw. D64 FCOPY III)
G41DiskDisk Image1541
GEOSGEOS
GIFMediaGrafik
GZ+ArchivContainerCompressed
HTML
JPGMediaGrafik
KIMKIM-1 Image
LHA+ArchivContainerCompressed
LNX+ArchivContainerUncompressed
LZHArchivContainerCompressed
MP3+MediaAudio
MP4+MediaVideo
NFO+MediaText
NIB+
P00DiskProgrammdatei1541 Container
PDF+MediaContainer
PNGMediaGrafik
PRGCBM DOSProgrammdatei1541/1571/1581
PSID
RAR+ArchivContainerCompressed
RELCBM DOSRelative Datei1541/1571/1581
REURAM Image
ROM
SDA+ArchivContainerCompressed (self extracting)
SEQCBM DOSSequentielle Datei1541/1571/1581
SFX+ArchivContainerCompressed (self extracting)
SIDSoftwareMusikdateigerippte C64-Musik-Files
SRKArchivContainer
TARArchivContainerUncompressed
TCRT
TXTMediaText
U00Universal Data
USRCBM DOSUser Datei1541/1571/1581
Z64+DiskDisk Image
ZIPArchivContainerCompressed




C64 BASIC V2.0: Befehle, Schlüsselwörter und Token

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üsselwortToken dezToken hexROM Exec dezROM Exec hexAbk.Typ
END128$8043057$A831eNAnweisung/Befehl
FOR129$8142818$A742fOAnweisung/Befehl
NEXT130$8244318$AD1EnEAnweisung/Befehl
DATA131$8343256$A8F8dAAnweisung/Befehl
INPUT#132$8443941$ABA5iNAnweisung/Befehl
INPUT133$8543967$ABBF-Anweisung/Befehl
DIM134$8645185$B081dIAnweisung/Befehl
READ135$8744038$AC06rEAnweisung/Befehl
LET136$8843429$A9A5lEAnweisung/Befehl
GOTO137$8943168$A8A0gOAnweisung/Befehl
RUN138$8A43121$A871rUAnweisung/Befehl
IF139$8B43304$A928-Anweisung/Befehl
RESTORE140$8C43037$A81DreSAnweisung/Befehl
GOSUB141$8D43139$A883goSAnweisung/Befehl
RETURN142$8E43218$A8D2reTAnweisung/Befehl
REM143$8F43323$A93B-Anweisung/Befehl
STOP144$9043055$A82FsTAnweisung/Befehl
ON145$9143339$A94B-Anweisung/Befehl
WAIT146$9247149$B82DwAAnweisung/Befehl
LOAD147$9357704$E168lOAnweisung/Befehl
SAVE148$9457686$E156sAAnweisung/Befehl
VERIFY149$9557701$E165vEAnweisung/Befehl
DEF150$9646003$B3B3dEAnweisung/Befehl
POKE151$9747140$B824pOAnweisung/Befehl
PRINT#152$9843648$AA80pRAnweisung/Befehl
PRINT153$9943680$AAA0?Anweisung/Befehl
CONT154$9A43095$A857cOAnweisung/Befehl
LIST155$9B42652$A69ClIAnweisung/Befehl
CLR156$9C42590$A65EcLAnweisung/Befehl
CMD157$9D43654$AA86cMAnweisung/Befehl
SYS158$9E57642$E12AsYAnweisung/Befehl
OPEN159$9F57790$E1BEoPAnweisung/Befehl
CLOSE160$A057799$E1C7clOAnweisung/Befehl
GET161$A143899$AB7BgEAnweisung/Befehl
NEW162$A242562$A642-Anweisung/Befehl
TAB(163$A343752$AAE8tAAnweisung/Befehl, Spezial
TO164$A442861$A76D-Anweisung/Befehl, Spezial
FN165$A546068$B3F4-Anweisung/Befehl, Spezial
SPC(166$A643769$AAF9sPAnweisung/Befehl, Spezial
THEN167$A743314$A932tHAnweisung/Befehl, Spezial
NOT168$A844756$AED4nOAnweisung/Befehl, Spezial
STEP169$A942905$A799stEAnweisung/Befehl, Spezial
+170$AA47210$B86A-Operator, numerisch/string
-171$AB47187$B853-Operator, numerisch
*172$AC47659$BA2B-Operator, numerisch
/173$AD47890$BB12-Operator, numerisch
^174$AE49019$BF7B-Operator, numerisch
AND175$AF45033$AFE9aNOperator, logisch
OR176$B045030$AFE6-Operator, logisch
>177$B149076$BFB4-Operator, logisch
=178$B244756$AED4-Operator, logisch
<179$B345078$B016-Operator, logisch
SGN180$B448185$BC39sGFunktion, numerisch
INT181$B548332$BCCC-Funktion, numerisch
ABS182$B648216$BC58abSFunktion, numerisch
USR183$B7784$0310uSFunktion, numerisch/string
FRE184$B845949$B37DfRFunktion, numerisch, Spezial
POS185$B945982$B39E-Funktion, numerisch, Spezial
SQR186$BA49009$BF71sQFunktion, numerisch
RND187$BB57495$E097rNFunktion, numerisch
LOG188$BC45794$B9EA-Funktion, numerisch
EXP189$BD49133$BFEDeXFunktion, numerisch
COS190$BE57956$E264-Funktion, numerisch
SIN191$BF57963$E26BsIFunktion, numerisch
TAN192$C058036$E2B4-Funktion, numerisch
ATN193$C158128$E30EaTFunktion, numerisch
PEEK194$C247117$B80EpEFunktion, numerisch
LEN195$C346972$B77C-Funktion, numerisch
STR$196$C446181$B465stRFunktion, string
VAL197$C547021$B7ADvAFunktion, numerisch
ASC198$C646987$B78BaSFunktion, numerisch
CHR$199$C746828$B6ECcHFunktion, string
LEFT$200$C846848$B700leFFunktion, string
RIGHT$201$C946892$B72CrIFunktion, string
MID$202$CA46903$B737mIFunktion, string
GO203$CB43026$A812-Anweisung/Befehl, Spezial
π255$FF44702$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.


Befehle CLOSE, CLR, CMD, CONT, DATA, DEF, DIM, END, FOR, GET, GET#, GOSUB, GOTO, IF, INPUT, INPUT#, LET, LIST, LOAD, NEW, NEXT, ON, OPEN, POKE, PRINT, PRINT#, READ, REM, RESTORE, RETURN, RUN, SAVE, STOP, SYS, VERIFY, WAIT
Befehle Spezial (Bywords) FN, GO, NOT, SPC(, TAB(, THEN, TO, STEP
Arithmetische und logische Operatoren +, , *, /, ^, >, =, <, AND, OR
Funktionen ABS, ASC, ATN, CHR$, COS, EXP, FRE, INT, LEFT$, LEN, LOG, MID$, PEEK, POS, RIGHT$, RND, SGN, SIN, SQR, STR$, TAN, USR, VAL
Konstanten und Systemvariablen Pi, ST, TI, TI$



C64 BASIC V2: Video: 10 selten benutzte BASIC-Features

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.

Folgende Themen werden dabei angesprochen:

  1. DEF und FN
  2. ON GOSUB / ON GOTO
  3. Wissenschaftliche Notation
  4. INPUT Möglichkeiten
  5. LIST Parameter
  6. STOP und END
  7. CONT
  8. RND()
  9. USR()
  10. WAIT