Magic Disk 64

home to index to html: MD8909-KURSE-BASIC_KURS_TEIL_8-2.html
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.                        
Valid HTML 4.0 Transitional Valid CSS!