Dies ist jedoch nur so lange der Fall, bis wir einen weiteren Befehl an die
Floppy senden, dann wartet der 64 er
nämlich intern auf ein " OK" von der
Floppy, daß diese mit dem Formatiervorgang 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 genauso der Fall. Schließen wir also den
Befehlskanal jetzt wieder mit " CLOSE 1", so müssen wir warten, bis das Formatieren beendet ist. Im Programm ist das
eigentlich ganz brauchbar, da es sonst
vielleicht ein paar Probleme geben könnte mit der Koordinierung der Operationen
von Floppy und Rechner.
Ihnen ist bestimmt oben in dem PRINT#- Befehl aufgefallen, daß ich vor den Diskettennamen und der ID noch den Prefix
" N:" gesetzt hatte. Das war das Erkennungszeichen 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 " NEUanlegen der Diskette" . Logisch, die übersetzung, 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 Befehlsbuchstabe wird grundsätzlich mit einem
Doppelpunkt (" :") von den Parameterangaben 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 getrennt, die dann gelöscht werden. Das
Ganze steht natürlich wieder in Anführungsstrichen, 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 Filenamens 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 " umbenennen" .
Dies funktioniert folgendermaßen:
PRINT#1,"R:NEUER NAME=ALTER NAME"
Sie geben nach dem " R:"- Prefix also einfach 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 umbenannt werden soll.
Der COPY-Befehl "C" :
Mit diesem Befehl können Sie 2 oder mehrere SEQuentielle Files auf der Diskette
zu EINEM File, von ebenfalls sequentieller Art, zusammenkopieren. Dies geschieht so:
PRINT#1,"C:NEUER NAME=ALT1,ALT2,ALT3,... ,ALT n"
Sie geben also einfach den neuen Filenamen 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 Befehlskanal der Floppy angesprochen. Fehlermeldungen 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 Teilen 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 numerische Werte ( FNR, TRACK, SEKTOR) und einen Stringwert ( NAME) . Um nun die Fehlermeldung auszulesen, müssen wir
zunächst wie gewohnt, den Befehlskanal
mit OPEN öffnen. Anschlißend müssen die
einzelnen Parameter mit INPUT# ganz einfach 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 Fehlermeldung 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 vergessen, den Fehlerkanal wieder zu schließen. Hier noch einmal das komplette Programm, 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 00
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 Ausgaben, die sonst auf den Bildschirm gemacht werden, auf einen logischen Filekanal 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 Programmlisting 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 Bildschirm ausdrucken, ganz einfach diesen
Tabellendruck auch auf den Drucker umleiten, indem Sie nämlich VOR der Druckroutine für den Bildschirm einen CMD-Befehl einschieben.
Man könnte dies vielleicht sogar mit
einer IF-THEN- Abfrage lösen, wobei zuerst der Benutzer nach dem Ausgabegerät
gefragt wird und anschließend entschieden wird, ob ein CMD ausgeführt werden
soll oder nicht.