BLOAD

Aus C64-Wiki
Zur Navigation springenZur Suche springen
BLOAD
Syntax: BLOAD <Dateiname> [,D<Laufwerk>] [,U<Geräteadresse>] [,B<Bank>] [,P<Startadresse>]
Parameter
<Dateiname> : Zeichenkettenausdruck
<Laufwerk> : numerischer Ausdruck mit Wert 0 oder 1
<Geräteadresse>: numerischer Ausdruck im Wertebereich von 4 bis 30
<Bank>: numerischer Ausdruck im Wertebereich von 0 bis 15
<Startadresse>: numerischer Ausdruck im Wertebereich von 0 bis 65535
Einordnung
Typ: Anweisung
Kontext: Diskettenbefehl
Aufgabe: Datei von Diskette an eine bestimmte Speicheradresse laden
Abkürzung: bL
Token: $fe $11 (254 17)
Verwandte Befehle
BOOT, BSAVE, DLOAD, LOAD, RUN

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl BLOAD ab Commodore BASIC V7.0 oder höher.


Die Anweisung BLOAD (Binary LOAD) lädt eine Datei an eine bestimmte Adresse im Speicher. Die Datei wird dabei ähnlich wie eine Programmdatei behandelt, d.h. die ersten beiden Bytes werden als ursprüngliche Ladeadresse interpretiert und nicht in den Speicher geschrieben. Der Verhalten mit den entsprechenden Ausgaben ist ähnlich wie beim LOAD-Befehl. Die BASIC-Fehlermeldung ?FILE NOT FOUND ERROR wird ausgegeben, wenn der Dateiname des Programms nicht existiert oder es keine Programmdatei ist. Ein Fehler beim Laden der Datei führt zu einem Abbruch mit der Meldung ?LOAD ERROR. Nach der Ausführung sind DS$ und DS entsprechend dem Status des Fehlerkanals gesetzt.

Die Parameter haben folgende Bedeutung:

  • <Dateiname>: Ein Zeichenkettenausdruck mit dem Dateinamen, der auch Jokerzeichen enthalten darf, bei dem der erste passende Name im Inhaltsverzeichnis verwendet wird. Handelt es sich nicht um eine Zeichenkettenkonstante, sondern um einen Ausdruck (z.B. eine Variable), so muss dieser in Klammern gestellt werden, sonst wird ein ?SYNTAX ERROR ausgegeben. Ist der Ausdruck länger als 16 Zeichen wird ein ?STRING TO LONG ERROR ausgegeben, eine leere Zeichenkette führt dagegen zu einem ?MISSING FILENAME ERROR.
  • <Laufwerk>: Laufwerksnummer, wird bei einem Doppellaufwerk benötigt und kann die Werte 0 oder 1 annehmen, ansonsten wird ein ?ILLEGAL QUANTITY ERROR ausgegeben. Standardwert ist 0.
  • <Geräteadresse>: Gerätenummer des Diskettenlaufwerks, standardmäßig 8. Sie darf im Wertebereich von 4 bis 30 liegen, Werte von 0 bis 3 und von 31 bis 255 führen zu einem ?ILLEGAL DEVICE NUMBER ERROR, außer bei Werten kleiner 0 oder größer 255, die ein ?ILLEGAL QUANTITY ERROR auslösen. Ist das Gerät mit der angegebenen Nummer nicht verfügbar, wird ?DEVICE NOT PRESENT ERROR ausgegeben.
  • <Bank>: Nummer jener Speicherbank, in die die Daten geladen werden. Wird der Parameter nicht angegeben, wird die zuletzt durch den Befehl BANK bestimmte Konfiguration verwendet. Der Parameter darf im Wertebereich von 0 bis 15 liegen, ansonsten wird ?ILLEGAL QUANTITY ERROR ausgegeben. Für weitere Details siehe Befehl BANK.
  • <Startadresse>: Adresse bezogen auf die gewählte oder aktive Speicherbank, an die die Datei geladen wird. Wird sie nicht angegeben, werden die ersten beiden Bytes der Datei verwendet (ähnlich wie bei der Anweisung LOAD "DATEINAME",8,1). Der Parameter muss im Wertebereich von 0 bis 65535 liegen, sonst wird ein ?ILLEGAL QUANTITY ERROR ausgegeben.

Wird beim Laden der Datei die Adresse 61439 (hex. $EFFF) überschritten, kommt es zur Fehlermeldung ?OUT OF MEMORY ERROR, allerdings nur wenn die Startadresse ebenfalls nicht größer als 61439 ist.

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]

BLOAD "SPRITES", B0, P3584

Lädt eine Datei namens "SPRITES" in den für Sprites reservierten RAM-Bereich ab Adresse 3584 in Bank 0.

BLOAD "FARBRAM", B15, P55296, U9

Lädt eine Datei namens "FARBRAM" vom Laufwerk 9 in das Farb-RAM des VIC im I/O-Bereich.