HEADER

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. Header (Begriffsklärung).


HEADER
Syntax: HEADER <Diskettenname> [,I<Kennung>] [,D<Laufwerk>] [<ON | ,> <Geräteadresse>]
Parameter
<Diskettenname> : Zeichenkettenausdruck
<Kennung>: 2 Zeichen
<Laufwerk> : numerischer Ausdruck mit Wert 0 oder 1
<Geräteadresse>: numerischer Ausdruck im Wertebereich von 3 bis 31 bei BASIC 3.5 und BASIC 4 bzw. von 4 bis 30 bei BASIC 7.0
Einordnung
Typ: Anweisung
Kontext: Diskettenbefehl
Aufgabe: Diskette formatieren
Abkürzung: heA
Token: $f1 (241)
Verwandte Befehle
COLLECT

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl HEADER ab Commodore BASIC 3.5 oder höher.


Der Befehl HEADER formatiert eine Diskette im angegebenen Diskettenlaufwerk. Der Datenträger ist dann leer und in einem organisatorisch "sauberen" Zustand, wobei letzteres bei einer belegten Diskette auch mittels COLLECT erreicht werden kann. Bevor jedoch der Formatiervorgang tatsächlich gestartet wird, erscheint die Sicherheitsabfrage:

ARE YOU SURE?

Formatiert wird erst, wenn der Buchstabe "Y" oder irgendeine Eingabe, die mit "Y" beginnt, z.B. "YES" erfolgt und mit RETURN  abgeschlossen wird. Bei allen anderen Angaben, bricht der Befehl kommentarlos ab. Wird dieser Befehl in BASIC-Programmen benutzt, entfällt die Sicherheitsabfrage!

Der Parameter Diskettenname kann bis zu 16 Zeichen lang und muss in Anführungszeichen "" stehen. Alternativ kann auch eine Zeichenkettenvariable in runden Klammern genutzt werden. Sollte die Zeichenkette leer sein, bricht der Befehl bei BASIC 3.5 und BASIC 4 mit der Fehlermeldung ?ILLEGAL QUANTITY ERROR und ab BASIC 7.0 mit ?MISSING FILENAME ERROR ab. Wenn der Name länger als 16 Zeichen ist, wird dies mit Fehler ?STRING TOO LONG ERROR quittiert.

Die zweistellige Diskettenkennung bzw. -identität wird über den Parameter Kennung vergeben. Fehlt die Angabe, wird nur eine Schnellformatierung vorgenommen, was voraussetzt, dass das Medium vorher bereits einmal vollständig formatiert wurde. Dabei wird nur das Verzeichnis gelöscht und die Diskettenbelegung als frei gekennzeichnet. Die Kennung der vorherigen Formatierung bleibt dabei erhalten.
Ein vorhandener Parameter bewirkt eine vollständige Formatierung (auch für bisher nicht formatierte Medien). Ist die Angabe vorhanden aber nicht 2-stellig, kommt es zur Fehlermeldung ?SYNTAX ERROR

Wurde mit dem HEADER-Befehl ein Diskettenlaufwerk angesprochen, zu dem die Geräteadresse falsch eingestellt ist oder nicht existiert, erscheint die Fehlermeldung ?DEVICE NOT PRESENT ERROR (im Direktmodus allerdings erst nach der Sicherheitsabfrage).

Zulässige Werte (stets als Ganzzahl aufgefasst) für Parameter

  • Geräteadresse (Angabe erforderlich bei BASIC 3.5 und BASIC 4, optional bei BASIC 7.0, als Gerät 8, falls nicht vorhanden) sind von 3 bis 31 bei BASIC 3.5 und BASIC 4 bzw. von 4 bis 30 bei BASIC 7.0,
  • Laufwerk sind 0 oder 1, wobei bei BASIC 3.5 und BASIC 4 (und Varianten) der Parameter zwingend vorhanden sein muss, während ab BASIC 7.0 die Angabe optional ist und falls nicht vorhanden mit 0 vorgegeben ist.

Sind die Parameter außerhalb des zulässigen Wertebereichs, erscheint die Fehlermeldung ?ILLEGAL QUANTITY ERROR, mit Ausnahme bei der Geräteadresse, wo ab BASIC 7.0 die Fehlermeldung ?ILLEGAL DEVICE NUMBER ERROR ausgegeben wird, falls der Wert nicht kleiner 0 oder größer 255 ist.


BASIC 2.0 Entsprechung

Allgemeine Syntax:

HEADER "NAME",D<Laufwerk>,I<ID> ON U<Gerät>

Entsprechung in BASIC V2-Syntax:

OPEN 15,<Gerät>,15,"N<Laufwerk>:<NAME>,<ID>":CLOSE 15

Besonderheiten bei Diskbefehlen[Quelltext bearbeiten]

  • Die Parameter mit einem führenden Buchstaben, die logische Dateinummer beginnend mit # und Dateinamensangaben sind positionsunabhängige Parameter und dürfen beliebig gereiht sein. Abweichend davon sind jene Befehle, die einen Quell- und Zielteil aufweisen, wie etwa COPY, wo dies nur für den jeweiligen Bereich vor bzw. nach dem trennenden TO gilt.
  • Der Buchstabe eines positionsunabhängigen Parameters steht für:
    • B: bank (Banknummer)
    • D: drive (Laufwerksnummer)
    • I: identification (ID-Kennung eines Mediums)
    • L: record length
    • P: position (Position bzw. Adresse)
    • R: read (lesende Operation)
    • W: write (schreibende Operation)
    • U: unit (Gerätenummer)
  • Variablen oder allgemeine Ausdrücke bei positionsunabhängigen Parametern sind möglich, müssen aber in Klammern gesetzt werden (außer bei "I<Id>", wo immer nur eine 2-Zeichen-Konstante erwartet wird).
  • Die Angabe der Geräteadresse oder Bank (bei BASIC 7.0) kann entweder mit "," oder mit "ON" oder kombiniert mit ",ON" eingeleitet werden, wobei im Falle eines Kommas bereits ein anderer Parameter voran gegangen sein muss.
  • Der optionale Parameter "I<Kennung>" für die Angabe der Identifikation wird immer akzeptiert. Dem "I" müssen 2 Zeichen folgen, wobei beliebige Leerzeichen dazwischen vorkommen dürfen. Der Wert kann nicht durch einen geklammerten Ausdruck ersetzt werden. Gewisse Werte, die BASIC-Befehle wie IF, ON, FN, TO oder BASIC-Abkürzungen wie jO, hE enthalten, werden fälschlicherweise als das entsprechende Schlüsselwort und nicht als der beabsichtigte Text interpretiert. Alle nichtkonformen Fälle führen dann zur Fehlermeldung ?SYNTAX ERROR.
  • Ein Parameter "R" (ohne weitere Wertangabe, bei DOPEN zur expliziten Angabe des vorgegebenen Read-only-Modus gedacht) wird bei allen Diskbefehlen immer akzeptiert, hat aber keinerlei zusätzliche Bedeutung. Im Falle von BASIC 3.5 wird hingegen ?SYNTAX ERROR gemeldet.


Beispiele[Bearbeiten | Quelltext bearbeiten]

HEADER "DEMODISK 2008"

Schnellformatierung der Diskette, die sich im Laufwerk 0 mit der Geräteadresse 8, mit dem Diskettenname "DEMODISK 2008" befindet.

HEADER "ALTESPIELE",I9F,D1,U11

Formatiert die Diskette, die sich im Laufwerk 1 (eines Doppellaufwerks) mit der Geräteadresse 11 befindet, mit dem Diskettennamen "ALTESPIELE" und der Disketten-ID "9F".

10 PRINT CHR$(147)"WILLKOMMEN BEIM DISKETTENFORMATIEREN"
20 INPUT "BITTE DISKETTENNAME EINGEBEN";NAME$
30 GA = 0 : INPUT "BITTE LAUFWERKSADRESSE ANGEBEN (4 BIS 30)"; GA
40 IF GA = 0 THEN GA = 8
50 LW = 0 : HEADER(NAME$),IXX,D(LW),U(GA)

Formatiert die Diskette innerhalb eines BASIC-Programms, wobei die Parameterübergabe mit Hilfe von Variablen passiert, mit Ausnahme bei Parameter I, wo dies nicht möglich ist (hier wird eine ID von "XX" festgelegt).