BACKUP
BACKUP | |
Syntax: | BACKUP D<Quelllaufwerk> TO D<Ziellaufwerk> [ON U<Geräteadresse>] |
Parameter | |
<Quelllaufwerk> : Quelllaufwerksnummer (0 oder 1) | |
<Ziellaufwerk> : Ziellaufwerksnummer (0 oder 1) | |
<Geräteadresse>: Nr. des Diskettenlaufwerks, 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: | Erstellen einer 1:1-Kopie einer Diskette auf einem Doppellaufwerk |
Abkürzung: | bA |
Token: | $f6 (246) |
Verwandte Befehle | |
COPY, HEADER |
Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl BACKUP ab Commodore BASIC 3.5 oder höher
Der Befehl BACKUP erstellt eine 1:1-Kopie (einschließlich nicht genutzter Blöcke) einer Diskette von einem Quelllaufwerk auf das jeweils andere Ziellaufwerk eines Doppeldiskettenlaufwerks mit angegebener Geräteadresse. Das Kopieren von einem Einzellaufwerk auf ein anderes ist nicht möglich.
Alle vorhandenen Daten der Diskette im Ziellaufwerk gehen verloren, da implizit die Formatierung (wie mit HEADER) im Ziellaufwerk passiert!
Zulässige Werte (stets als Ganzzahl aufgefasst) für Parameter
- Geräteadresse (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.
Zumindest ab BASIC 7.0 (aber auch bei der CBM-II-Variante von Basic 4.0) erscheint im Direktmodus vor dem eigentlichen Vorgang immer die Sicherheitsabfrage
ARE YOU SURE? |
Kopiert 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!
Wurde mit dem BACKUP-Befehl ein Diskettenlaufwerk angesprochen, zu dem die Geräteadresse falsch eingestellt ist oder nicht existiert, erscheint seit BASIC 7.0 die Fehlermeldung ?DEVICE NOT PRESENT ERROR (im Direktmodus allerdings erst nach der Sicherheitsabfrage). Bei BASIC 3.5 wird diese Fehlermeldung nur dann ausgegeben, falls unmittelbar danach der Fehlerkanal des Laufwerks abgefragt wird. Andernfalls erscheint auch keine Basic-Fehlermeldung, sondern bestenfalls im Fehlerkanal deutet eine Laufwerksfehlermeldung auf das nicht vorhandene Gerät hin (z.B. mit Fehlercode 0 oder 1 und leerem Fehlertext, wenn die Geräteadresse außerhalb von 8 bis 11 liegt, sonst aber mit "30,SYNTAX ERROR,00,00".
Sind die Parameter außerhalb des zulässigen Wertebereichs, erscheint die Fehlermeldung ?ILLEGAL QUANTITY ERROR.
Funktionsweise[Bearbeiten | Quelltext bearbeiten]
Der Anweisung sendet den DOS-Befehl Duplicate an das angegebene Laufwerk. Diese führt dann selbstständig den Backup-Vorgang aus. Ein Fehler wird mit der Meldung ?BAD DISK ERROR angezeigt. Der konkrete Grund des Scheiterns kann über die Systemvariablen DS bzw. DS$ abgefragt werden.
Geräte, die keine Doppellaufwerke sind, kennen üblicherweise den Floppy-Befehl Duplicate nicht und im Fehlerkanal wird dies mit der Meldung "31,SYNTAX ERROR,00,00" angezeigt.
BASIC 2.0 Entsprechung
Allgemeine Syntax:
BACKUP D<Quelllaufwerk> TO D<Ziellaufwerk> ON U<Gerät>
Entsprechung in BASIC V2-Syntax:
OPEN 15,<Gerät>,15,"D<Ziellaufwerk>=<Quelllaufwerk>":CLOSE 15
Siehe Kompatibilitätsbeispiel.
Besonderheiten bei Diskbefehlen[Quelltext bearbeiten]
- Bei einem Dateinamen ist optional ein führendes @ möglich (nur bei einer Dateinamenangabe von mehreren erlaubt), um eine bestehende Datei zu überschreiben (REPLACE-Funktion). Das Zeichen wirkt sich dann nicht auf das Längenlimit von 16 Zeichen aus. Intern wird damit immer der für den Save-Bug sichere Dateiname "@0:<Dateiname>" verwendet (in diesem Fall für Laufwerksnummer 0).
- 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 in memory (Start-/Endadresse)
- 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]
BACKUP D0 TO D1
kopiert alle Dateien der Diskette in Laufwerk 0 auf die Diskette in Laufwerk 1 (auf Gerät 8).
BACKUP D0 TO D1, ON U9 oder BACKUP D0 TO D1 ON U9 oder BACKUP D0 TO D1, U9 oder BACKUP ON U9, D0 TO D1 oder BACKUP U9, D0 TO D1
kopiert alle Dateien der Diskette in Laufwerk 0 auf die Diskette Laufwerk 1 mit der Geräteadresse 9.
BACKUP D(FD) TO D(TD) ON U(GA)
kopiert die vollständige Diskette von Laufwerk in Variable FD auf das Laufwerk aus Variable TD des Geräts aus Variable GA.
Kompatibilität
BACKUP D0 TO D1
oder das Gleiche mit BASIC V2:
OPEN 15,8,15,"D1=0":CLOSE 15
AUTO | BACKUP | BOX | CHAR | CIRCLE | COLLECT | COLOR | COPY | DEC | DELETE | DIRECTORY | DLOAD | DO | DRAW | DS | DS$ | DSAVE | EL | ELSE | ER | ERR$ | EXIT | GETKEY | GRAPHIC | GSHAPE | HEADER | HELP | HEX$ | INSTR | JOY | KEY | LOCATE | LOOP | MONITOR | PAINT | PRINT USING | PUDEF | RCLR | RDOT | RENAME | RENUMBER | RESUME | RGR | RLUM | SCALE | SCNCLR | SCRATCH | SOUND | SSHAPE | TRAP | TROFF | TRON | UNTIL | VOL | WHILE