Dateiname

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Ein Dateiname benennt die Datei auf einem Datenträger. Er dient dem Anwender zum leichteren Umgang mit dieser Datei, insbesondere bei der Nutzung von BASIC-Befehlen für den Datenträgerumgang wie LOAD, SAVE, DLOAD, DSAVE, DVERIFY usw.
Für eine durchgehende Verwendung der hinter einem Dateinamen befindlichen Daten wird statt des in diesem Fall oft umständlichen Dateinamens mit einer kompakteren logischen Dateinummer operiert, was mit Hilfe des Befehls OPEN umgesetzt werden kann.

Über den Dateinamen kann zwar erahnt werden, ob es sich um ein ausführbares Programm (PRG) oder um augenscheinliche Daten (wie SEQ, USR oder REL) für ein Programm handelt, was also grob den strukturellen Aufbau der Daten widerspiegelt, aber nicht, ob es sich um ein BASIC-Programm oder Maschinenspracheprogramm handelt. Bei kurzen Dateinamen wird oft (per Konvention) der Anfangsspeicherbereich hinter dem Dateinamen angegeben, damit der Anwender ggf. die Datei bzw. das Programm erkennen kann. Möchte man eine inhaltliche Typisierung vornehmen, ist man auf eine entsprechende Konvention angewiesen, derer es wohl viele gibt, aber keine davon kann wirklich als einheitlicher Standard angesehen werden.

Ebenfalls kann der Dateityp nur grob ein Anhaltspunkt liefern, da aufgrund beliebter Directory-Manipulationen nicht immer der angegebene Dateityp enthalten sind.

Restriktionen[Bearbeiten | Quelltext bearbeiten]

Dateinamenzeichen[Bearbeiten | Quelltext bearbeiten]

Beim C64 kann der Dateiname weitestgehend aus den PETSCII(CHR$)-Zeichen 32-122 bestehen (Leerzeichen, Sonderzeichen, Ziffern und Buchstaben sowie den mittels Taste SHIFT  über die Buchstaben-Tasten erzeugbaren Sonderzeichen bzw. Großbuchstaben, entsprechend dem gerade aktiven Zeichensatz), außer den Jokerzeichen "*" und "?", sowie den Zeichen ":", "@", ",", die eine spezielle Bedeutung beim jeweiligen Gerät (etwa als Trennzeichen für Floppy-Befehle, Laufwerksbezeichnung, usw.) haben, sowie des PETSCII-Zeichens 96. Leerzeichen ohne nachfolgende andere erlaubte Zeichen werden abgeschnitten.

Bei der Kassetten (bzw. Datasetten) verhält es sich etwas anders: Hier werden zwar nur 16 Zeichen als Lademeldung (SEARCHING) angezeigt. Der ganze Dateiname wird aber in einem Teilbereich des Kassettenpuffer (Speicherstelle 833 bis 1019) übertragen. Es können aber zwischen 0 bis 187[1] Zeichen als Dateinamen abgespeichert werden! Dies kann bei Unwissenheit als Kopierschutz genutzt werden[2], indem der Dateiname bei Programmstart entsprechend überprüft wird, da beim Laden oder Kopieren meistens nur bis zu 16 Zeichen eingegeben werden.

Durch Manipulation mit CHR$-Codes oder durch entsprechende Directory-Manipulationsprogramme können ggf. verbotene Zeichen trotzdem in Dateinamen verwendet werden oder hinter dem Dateinamen im Directory ergänzt werden. Beliebt sind z.B. die sinnvollen Ergänzungen ,8: und ,8,1:, um das Laden aus dem angezeigten Directory-Listing via Bildschirmeditor zu erleichtert.

Manipulierte Dateinamen, die Steuer- und Grafikzeichen beinhalten, können oft nicht einfach und richtig (mit den Standardbefehlen) genutzt werden oder führen zu einer nicht vollständigen Auflistung des Directorys einer Diskette. Dies dient z. B. auch als einfache und effektive Kopierschutzmaßnahme. Schon allein die Verwendung von Groß- und Kleinschreibung verwirrt manchen Benutzer.

Dateinamenlänge[Bearbeiten | Quelltext bearbeiten]

Die aktuelle Länge eines Dateinamens bei der Verwendung der BASIC-Befehle LOAD, SAVE, VERIFY und OPEN ist in der Zeropage in der Speicheradresse 183 zu finden und mittels PEEK auslesbar. Sie ist außer durch die maximale Länge einer Zeichenkette nicht beschränkt. Es hängt vom jeweiligen Gerät ab, wie viele Zeichen tatsächlich verwendet werden.
Bei diskettenorientierten Befehlen von BASIC 4.0 und den moderneren Nachfolgern BASIC 3.5 und BASIC 7 sind Dateinamenparameter vom Interpreter auf 16 Zeichen beschränkt und ergeben bei Überschreitung den Fehler ?STRING TOO LONG ERROR.

Der Dateiname sollte bei Abspeicherung auf Disketten maximal 16 Zeichen lang sein, da überlange Dateinamen stets durch das Directory automatisch auf 16 Zeichen gekürzt werden.

Beispiele[Bearbeiten | Quelltext bearbeiten]

SAVE "PRG64"+CHR$(160)+" V1.2",8

Mittels geschützten Leerzeichen CHR$(160) lassen sich Zusatzeinträge bei kurzen Programmnamen außerhalb des Dateinamens im Directory einer Diskette anzeigen. Hier bspw. die aktuelle Versionsnummer.

64 "PRG" V1.2         PRG


save "ShOOter 64",8 - Hier wird Groß- und Kleinschreibung als Dateiname verwendet.

SAVE "TEST"+CHR$(147),8 - Hierbei wird beim Erreichen des Dateinamens TEST der Bildschirm gelöscht!

SAVE "LOADER"+CHR$(0)+CHR$(0)+CHR$(0),8 - Nach der Auflisten von LOADER wird die restliche Directory-Auflistung abgebrochen, da drei 0-Bytes folgen...

LOAD "INFO.TXT",8 - Hier wird eine Textdatei geladen. Dies wurde mit Kürzel .TXT gekennzeichnet.

Quellen[Bearbeiten | Quelltext bearbeiten]

  1. Baloui, Brückmann, etc.: Das neue Commodore 64 Intern Buch", Data Becker, 418ff.
  2. Andreas Polk: "Commodore 64 - Die besten Tips & Tricks", Data Becker, 1989, S.16f.