CMD

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. Weitere Bedeutungen finden sich unter CMD (Begriffsklärung).
CMD
Syntax: CMD <logische Dateinummer>[, [<Ausdruck>] [ [ ";" ¦ "," ]<Ausdruck>...] ]
Parameter
<logische Dateinummer>: num. Ausdruck im Bereich 0 bis 255
<Ausdruck>: beliebiger num. oder String-Ausdruck
Einordnung
Typ: Anweisung
Kontext: Ein/Ausgabe
Aufgabe: Datenausgabe vom Bildschirm auf ein anderes Peripheriegerät umschalten
Abkürzung: cM
Token: $9d (157)
Verwandte Befehle
PRINT#

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl CMD unter BASIC V2 des Commodore 64.


Der BASIC-Befehl CMD (Change Main Device) dient dazu, die Datenausgabe vom Bildschirm auf ein anderes Peripheriegerät umzuschalten, z.B. auf Datasette, Modem, Drucker oder Diskettenlaufwerk. Dies funktioniert sowohl im Direktmodus als auch in BASIC-Programmen. Die logische Dateinummer, die im Zahlenbereich 1 bis 255 (sinnvoll aber nur bis 128) liegen darf, wird durch den BASIC-Befehl OPEN festgelegt. Vor der ersten Benutzung des Befehls CMD muss also der OPEN-Befehl genutzt werden, ansonsten erscheint die BASIC-Fehlermeldung ?FILE NOT OPEN ERROR. Bei der Verwendung von CMD muss die gleiche logische Dateinummer genutzt werden wie im OPEN-Befehl.

Der im Anschluss befindliche Parameterstruktur ist mit dem des PRINT#-Befehls vergleichbar. Fehlt daher eine weitere Angabe, entspricht dies einem parameterlosen PRINT, was dann zu einer Ausgabe eines separaten <RETURN>-Zeichens, entsprechend CHR$(13), führt. Wegen der Verwandtschaft zu PRINT#, kann CMD auch in gleicher Weise verwendet werden, das allerdings als Nebenwirkung zur eigentlichen Ausgabenumleitung.

Wenn der BASIC-Befehl CMD ausgeführt wurde, werden alle folgenden Ausgaben, wie von PRINT und LIST, an das angegebene Gerät (siehe BASIC-Befehl OPEN) geschickt. Mit dem Befehl PRINT#<logische Dateinummer> wird die umgeleitete Bildschirmausgabe wieder auf den Bildschirm zurückgeholt, bevor das logische File mit dem BASIC-Befehl CLOSE<logische Dateinummer> geschlossen wird.

Tritt eine BASIC-Fehlermeldung auf, erfolgt zwar die Bildschirmausgabe wieder auf dem Monitor, allerdings werden ebenfalls an das logische File des angegebenen Geräts dennoch Leerzeichen übermittelt, sodass trotzdem die oben angegebenen Befehle PRINT#1 und CLOSE 1 durchgeführt werden müssen.

Achtung: Wird ein GET-Befehl ausgeführt, sind alle bis dahin wirksamen CMD-Befehle wieder aufgehoben.

Beispiele[Bearbeiten | Quelltext bearbeiten]

Programmlisting im Direktmodus ausdrucken:

OPEN 1,4,7: CMD 1, "Drucktest Gross-/Klein Programmlisting X": PRINT: LIST 
PRINT#1: CLOSE 1

Umleitung eines BASIC-Programmlistings an den Drucker in Groß-/Kleinschrift passiert in der ersten Zeile, während die zweite Zeile die Umleitung beendet und die logische Datei schließt.

Das folgende Beispiel demonstriert, dass das Semikolon in den Zeilen 110 und 140 sehr wichtig sein kann: Es wird an beiden Stellen verhindert, dass ein zusätzlicher Zeilenvorschub (CHR$(13)) ausgegeben wird ...

100 OPEN 3,3
110 CMD 3, "TEST";
120 PRINT "TEXT"
130 PRINT "DEMO"
140 PRINT #3,;
150 CLOSE 3
160 PRINT "ENDE";

... und gibt im vorliegenden Fall Folgendes auf dem Bildschirm aus:

RUN
TESTTEXT
DEMOENDE
READY.

Man vergleiche die Ausgabe jeweils mit einer Version des Beispiels, wo das Semikolon in Zeile 110 und/oder 140 entfernt worden ist.

Mit normalem PRINT in eine Datei schreiben. Eine 50 Zeichen lange sequentiellen Datei auf Datasette erstellen:

20 OPEN 1,1,1, "TESTFILE": CMD 1,;
30 FOR X=1 TO 50: PRINT "A";: NEXT X
40 PRINT#1,;: CLOSE 1