Magic Disk 64

home to index to text: MD8909-KURSE-BASIC_KURS_TEIL_8-2.txt

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.

Valid HTML 4.0 Transitional Valid CSS!