Dies ist jedoch nur so lange der Fall,
bis wir einen weiteren Befehl an die
Floppy senden, dann wartet der 64er
nämlich intern auf ein "OK" von der
Floppy, daß diese mit dem Formatiervor-
gang fertig ist. Dann erst schickt er
den nächsten Befehl nach. Da der CLOSE-
Befehl ebenfalls die Aufmersamkeit der
Floppy beansprucht ist dies bei ihm ge-
nauso der Fall. Schließen wir also den
Befehlskanal jetzt wieder mit "CLOSE 1",
so müssen wir warten, bis das Formatie-
ren beendet ist. Im Programm ist das
eigentlich ganz brauchbar, da es sonst
vielleicht ein paar Probleme geben könn-
te mit der Koordinierung der Operationen
von Floppy und Rechner.
Ihnen ist bestimmt oben in dem PRINT#-
Befehl aufgefallen, daß ich vor den Dis-
kettennamen und der ID noch den Prefix
"N:" gesetzt hatte. Das war das Erken-
nungszeichen für die Floppy, daß es sich
bei diesem Befehl um einen Formatbefehl
handelt. Das "N" steht nämlich für
"NEW", was soviel bedeutet, wie "NEUan-
legen der Diskette". Logisch, die über-
setzung, nicht wahr? Auf diese Weise
können auch noch andere Befehlskürzel an
die Floppy gesandt werden, die dann auch
andere Aufgaben erfüllen. Jeder Befehls-
buchstabe wird grundsätzlich mit einem
Doppelpunkt (":") von den Parameteranga-
ben getrennt. Im Folgenden möchte ich
Ihnen noch die 3 wichtigsten, da für uns
als Basicprogrammierer am sinnvollsten,
Floppybefehle erklären.
Der Scratch-Befehl "S" :
------------------------
Mit dem "S"-Befehl können Sie die Floppy
dazu veranlassen ein oder mehrere Files
auf der eingelegten Diskette zu löschen.
"Scratch" heißt nämlich soviel wie
"kratzen", und somit geht es hier um das
sinnbildliche "wegkratzen" eines Files
von der Oberfläche der Diskette.
Der Scratchbefehl wird folgendermaßen
benutzt :
PRINT#1,"S:FILENAME1,FILENAME2,FILENAME3
,...,FILENAME n"
Sie können also beliebig viele Filenamen
anhängen, jeweils durch Kommata ge-
trennt, die dann gelöscht werden. Das
Ganze steht natürlich wieder in Anfüh-
rungsstrichen, da dies der PRINT#-Befehl
ja so verlangt. Möchten Sie nur EIN File
löschen so gehen Sie analog vor, lassen
Sie jedoch das Komma am Ende des Filena-
mens weg und schließen Sie den Befehl
gleich mit einem Gänsefüßchen ab.
Der Rename-Befehl "R" :
-----------------------
Mit diesem Befehl können Sie ein schon
vorhandenes File auf der Diskette mit
einem neuen Namen versehen. "Rename"
bedeutet nämlich nichts anderes als "um-
benennen".
Dies funktioniert folgendermaßen:
PRINT#1,"R:NEUER NAME=ALTER NAME"
Sie geben nach dem "R:"-Prefix also ein-
fach den Namen an, den das File von nun
an haben soll. Anschließend geben Sie
mit Hilfe eines "="-Zeichens an, daß das
File mit dem nun folgenden Namen umbe-
nannt werden soll.
Der COPY-Befehl "C" :
---------------------
Mit diesem Befehl können Sie 2 oder meh-
rere SEQuentielle Files auf der Diskette
zu EINEM File, von ebenfalls sequentiel-
ler Art, zusammenkopieren. Dies ge-
schieht so:
PRINT#1,"C:NEUER NAME=ALT1,ALT2,ALT3,...
,ALT n"
Sie geben also einfach den neuen Filena-
men an, den die zusammenkopierten Files
haben sollen und schreiben, nachdem Sie
ein "=" eingefügt haben, die Files die
zusammenkommen, durch Kommata getrennt
hintereinander auf. In dem neuen File
werden dann die alten Files in der von
Ihnen vorgegebenen Reihenfolge stehen.
Soviel zu den einzelnen Befehlen. Nun
möchte ich Ihnen noch etwas über den
Fehlerkanal erzählen. Wie ich oben schon
erwähnt hatte, kann die Statusvariable
ST ja auch den Wert 1 annehmen. Das
heißt, daß ein Fehler beim Schreiben
aufgetreten ist. Ich hatte da ja schon
angedeutet, daß man anschließend einmal
den sogenannten "Fehlerkanal" auslesen
sollte, um festzustellen, welcher Fehler
im Einzelnen aufgetreten ist. Dieser
Fehlerkanal wird ebenfalls über den Be-
fehlskanal der Floppy angesprochen. Feh-
lermeldungen sind übrigens die einzigen
Daten, die man vom Befehlskanal LESEN
kann, ansonsten wird nur dorthin GE-
SCHRIEBEN. Aus diesem Grund weiß die
Floppy direkt, daß sie, falls gelesen
wird, die aktuelle Fehlermeldung senden
soll. Diese besteht aus insgesamt 4 Tei-
len und sieht etwa folgendermaßen aus:
FNR,NAME,SPUR,SEKTOR
Die Abkürzungen bedeuten :
FNR : Dies ist die Fehlernummer. Je-
der Floppyfehler hat eine be-
stimmte Nummer, mit der man ihn
identifizieren kann. Eine Auf-
listung dieser Fehler, ihrer
Nummern und ihrer Bedeutung,
finden Sie im Anhang des
Floppyhandbuchs.
NAME : Dies ist eine kleine Kurzbe-
schreibung des Fehlers. Wenn
Sie zum Beispiel auf eine schon
randvolle Diskette (0 BLOCKS
FREE) zu schreiben versuchen,
so kommt hier die Meldung "DISK
FULL" von der Floppy.
TRACK : Die Tracknummer, auf der der
Fehler auftrat. Was ein Track
ist, paßt nicht unbedingt in
den Rahmen dieses Kurses und
soll an anderer Stelle genauer
erklärt werden.
SEKTOR : Die Sektornummer des Tracks auf
dem der Fehler auftrat. Auch
dies gehört nicht hier hinein,
weshalb wir es ebenfalls aus-
lassen werden.
Wie Sie sehen, haben wir hier drei nume-
rische Werte (FNR,TRACK,SEKTOR) und ei-
nen Stringwert (NAME). Um nun die Feh-
lermeldung auszulesen, müssen wir
zunächst wie gewohnt, den Befehlskanal
mit OPEN öffnen. Anschlißend müssen die
einzelnen Parameter mit INPUT# ganz ein-
fach ausgelesen werden, dies geschieht
denkbar einfach, nämlich mit Hilfe
dreier numerischer und einer $-variable.
INPUT#1, NR,NA$,SP,SE
Nun können wir die eben geholte Fehler-
meldung ausdrucken :
PRINT NR;NA$;SP;SE
Sollten Sie zum Beispiel versucht haben,
ein File zu laden, daß auf der Diskette
gar nicht existiert, so haben Sie nun
folgendes auf dem Bildschirm stehen:
62 FILE NOT FOUND 0 0
Wir sollten übrigens auch nicht verges-
sen, den Fehlerkanal wieder zu schlie-
ßen. Hier noch einmal das komplette Pro-
gramm, das Sie übrigens auch auf der
Rückseite dieser Ausgabe der MAGIC DISK
64 finden werden (unter dem Namen "FEH-
LERKANAL"):
10 OPEN 1,8,15
20 INPUT#1,NR,NA$,SP,SE
30 CLOSE 1
40 PRINT NR;NA$;SP;SE
Wenn übrigens gar kein Fehler vorliegt
(rote LED der Floppy blinkt NICHT) dann
werden Sie folgende Meldung erhalten:
0 OK 0 0
Als Nächstes möchte ich Ihnen noch einen
kleinen Befehl zeigen, der ebenfalls
etwas mit der Datenausgabe zu tun hat.
Er wird hauptsächlich in Zusammenhang
mit einem Drucker benutzt, kann aber
auch für andere Geräte angewandt werden.
Ich spreche von dem sogenannten CMD-
Befehl. Mit CMD können Sie alle Ausga-
ben, die sonst auf den Bildschirm ge-
macht werden, auf einen logischen File-
kanal leiten, den Sie vorher natürlich
mit OPEN geöffnet hatten.
Angenommen, Sie wollten ein Programm auf
dem Drucker ausgeben, dann müßten Sie
lediglich folgendes eingeben :
OPEN 1,4:CMD 1
LIST
Wir öffnen hier also einen Filekanal mit
der Filenummer 1 und der Geräteadresse 4
für den Drucker. Anschlißend geben wir
dem C64 bekannt, daß alle Ausgaben von
nun an auf den Kanal mit der Nummer 1
umgelenkt werden sollen. Wenn Sie nun
LIST eingeben dann erscheint Ihr Pro-
grammlisting nicht auf dem Bildschirm,
sondern es wird ohne Umwege gleich an
den Drucker geschickt. Auf diese Weise
können Sie beispielsweise in Programmen,
die irgendwelche Tabellen auf dem Bild-
schirm ausdrucken, ganz einfach diesen
Tabellendruck auch auf den Drucker um-
leiten, indem Sie nämlich VOR der Druck-
routine für den Bildschirm einen CMD-
Befehl einschieben.
Man könnte dies vielleicht sogar mit
einer IF-THEN- Abfrage lösen, wobei zu-
erst der Benutzer nach dem Ausgabegerät
gefragt wird und anschließend entschied-
en wird, ob ein CMD ausgeführt werden
soll oder nicht.