DS

Aus C64-Wiki
Zur Navigation springenZur Suche springen
DS
Syntax: DS
Parameter
Einordnung
Typ: numerische Systemvariable
Kontext: Diskettenbefehl
Aufgabe: Ermittlung des Disk-Statuscodes aus dem Fehlerkanal des zuletzt verwendeten Diskettenlaufwerks
Abkürzung: -
Token: keins
Verwandte Befehle
DS$

Anmerkung: Dieser Artikel beschreibt die Systemvariable DS ab Commodore BASIC V3.5 oder höher.


Die Systemvariable DS (engl. Disk Status) liefert den Disk-Statuscode zur Meldung aus dem Fehlerkanal jenes Diskettenlaufwerks, das zuletzt angesprochen wurde. Der Wert entspricht der ersten Komponente der im Fehlerkanal durch Beistriche getrennten Informationen Disk-Statuscode, Meldungstext, Track und Sektor (vergl. DS$).

Eine Wertzuweisung an DS ist nicht erlaubt und erzeugt einen ?SYNTAX ERROR. Ist das aktuelle Geräte nicht vorhanden, folgt auf den Zugriff der Variable ein ?DEVICE NOT PRESENT ERROR.
Ein Ausschreiben von DS beispielsweise als DSTATUS ist für einen sprechenden Programmierstil möglich.

Detailbeschreibung[Bearbeiten | Quelltext bearbeiten]

Nach einem RUN, CLR oder Systemneustart wird ein erstmaliges Auslesen des Fehlerkanals erzwungen, wobei standardmäßig Gerätenummer 8 verwendet wird oder jene, auf die sich dar letzte Disk-Befehl bezog. Aus dieser, in Systemvariable DS$ abgelegten Meldung wird der Disk-Statuscode als nummerischer Wert für DS abgeleitet.

Diese Systemvariable zeigt immer nur den Disk-Statuscode des letzten Standes der Fehlerkanalmeldung und erneute Zugriffe auf diese Variable liefern lediglich den damals gelesenen Status ohne den Fehlerkanal tatsächlich erneut abzufragen, außer wenn DS$ neu ermittelt wird. Siehe dazu Auswirkung von Ein-/Ausgabe-Befehlen auf DS.

Beispiele[Bearbeiten | Quelltext bearbeiten]

BASIC V2 Äquivalent[Bearbeiten | Quelltext bearbeiten]

100 OPEN 1,8,15
110 INPUT#1,DS
120 CLOSE 1

Floppy-Befehl[Bearbeiten | Quelltext bearbeiten]

100 COPY "F" TO "F-KOPIE"
110 IF DS THEN PRINT "DISK-FEHLER AUFGETRETEN:": PRINT DS$

Das COPY-Kommando läuft im Grunde parallel zum Programm, d.h. das BASIC-Programm wartet nicht auf die Beendigung des Floppy-Befehls. Erst mit der expliziten Abfrage auf DS, wird das Programm gezwungen, die Beendigung des COPY-Befehls abzuwarten.