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.