Magic Disk 64

home to index to html: MD8909-KURSE-BASIC_KURS_TEIL_8-1_:_VON_ADAM_UND_EVA..._(TEIL_8).html
 Basickurs:"Von Adam und Eva..."(Teil 8)
 ---------------------------------------
Willkommen zum 8.  Teil  unseres  Basic-
kurses. Ich werde Ihnen heute  noch  ein
klein Wenig über die Floppy erzählen und
die etwas kleineren  Befehle  und  Funk-
tionen von BASIC 2.0 erwähnen.          
Wie  Sie sich vielleicht erinnern hatten
wir letzten Monat  etwas  über  Sequenz-
und  Programmfiles gehört. Hierbei lern-
ten wir die Befehle OPEN, CLOSE, PRINT#,
INPUT#  und  GET#  kennen.  Zum   Schluß
erklärte  ich  Ihnen  noch die Bedeutung
der Statusvariablen ST.                 
Es gibt jetzt noch ein paar  Dinge  über
ST  zu sagen, die ich Ihnen letzte Woche
verschwiegen hatte. Wie  ich  ja  damals
schon  erwähnte, kann man durch den Wert
64 in ST feststellen, daß  man  am  Ende
eines  Files  angelangt ist, doch ST ist
noch für 3 weitere Zwecke zu gebrauchen.
Hier eine kleine Übersicht:             
Wert Bedeutung                          
--------------                          
 64  Fileende erreicht                  
 66  Über das Fileende herausgelesen    
  1  Fehler beim Schreiben              
128  Floppy nicht angschlossen          
Die 64 kennen wir  ja.  Sobald  wir  das
letzte  Byte gelesen hatten, stand diese
Zahl in ST. Sollten wir jetzt, aus  wel-
chem Grund auch immer, noch ein weiteres
Byte  auslesen wollen, so werden wir ein
falsches, da nicht-existentes  Datenbyte
zurückerhalten.  Nach diesem Lesevorgang
meldet ST den Wert 66,  was  heißt,  das
wir  versucht  haben, ein Byte aus einem
mittlerweile schon bis zum Ende  gelese-
nen File auszulesen. Sollte also  einmal
ein solcher Fehler auftreten,  so werden
Sie wissen, woran es liegt.             
Als  nächstes  gibt es da noch die 1 als
Wert für ST.  Sollten  Sie  diesen  Wert
einmal  zurückbekommen, so bedeutet das,
daß beim Schreiben in  eine  Write-Datei
ein  Fehler  aufgetreten  ist.          
Zum Beispiel,wenn die Diskette voll ist.
Das wäre dann ein "DISK FULL"-Error.  In
In diesem Fall ist es dann sinnvoll, den
Fehlerkanal der Floppy  abzufragen,  was
ich Ihnen gleich noch erklären werde.   
Zunächst noch zu dem 4. Fall für ST, der
Wert  128.  Er  gibt an, daß die Floppy,
die angesprochen  werden  sollte,  nicht
angeschlossen   beziehungsweise   ausge-
schaltet ist. Doch gibt es da  noch  ein
kleines Problem. Sollte nämlich ein sol-
cher Fehler einmal  auftreten,  so  wird
der  64er das momentan laufende Programm
sofort abbrechen und einen "DEVICE NOT -
PRESENT"-Error auf dem Bildschirm ausge-
ben. Das ist ja nicht unbedingt im Sinne
eines komfortablen  Programms,  außerdem
erhalten wir somit noch nicht einmal die
Gelegenheit,  uns  einmal den Inhalt von
ST anzuschauen, da der C64 hier  schnel-
ler  reagiert  und VOR einer eventuellen
Abfrage abbricht. Doch es gibt eine  Mö-
glichkeit, diesen  kleinen  Nachteil  zu
umgehen. Wie wir ja im 5.  Teil  gelernt
haben,  kann man mit dem POKE-Befehl By-
tes im Speicher unseres C64 verändern.  
Damals  hatte  ich den Bereich von Spei-
cherzelle 0 bis 1024 als wenig  interes-
sant für uns erklärt, da dort hauptsäch-
lich Speicherzellen untergebracht  sind,
die  für interne Arbeiten im 64er reser-
viert sind. Doch hier und da bieten sich
in diesem Speicherbereich schon noch ein
paar sinnvolle Anwendungen.  In  unserem
Beispiel  wäre da die Speicherzelle 768.
Ändert man  nämlich  den  Inhalt  dieser
Speicherzelle in den Wert 61 um, so wird
jegliche   Ausgabe  von  Fehlermeldungen
ganz einfach unterdrückt.  Dies  ist  in
unserem Fall ganz interessant, zumal wir
die  Meldung von "DEVICE NOT PRESENT" ja
gar nicht gebrauchen können.            
Wir können diese Abfrage ja auch selbst 
über ST vornehmen. Nachdem wir dies dann
jedoch taten, sollten wir unsere Fehler-
meldungsausgabesperre jedoch wieder  zu-
rücknehmen, da ja auch noch ganz  andere
Fehler auftreten könnten,  zum  Beispiel
ein "SYNTAX ERROR". Das  Programm  würde
in diesem Fall versuchen  weiterzuarbei-
ten und das  könnte  verheerende  Folgen
haben.  Rückgängig  machen  wir   unsere
Sperre  mit  dem  Befehl  "POKE768,139".
Jetzt ist wieder alles  beim  Alten  und
Fehler brechen das Programm  wieder  wie
gewohnt ab und  drucken  ihren  entspre-
chenden Text dann auch  aus.  Hier  noch
ein kleines Beispiel zur Abfrage, ob die
Floppy angeschlossen ist:               
10 POKE 768,61 :REM FEHLER SPERREN      
20 OPEN 1,8,15 :REM FLOPPY ANSPRECHEN   
30 CLOSE 1     :REM KANAL WIEDER ZU     
40 POKE 768,139:REM FEHLER ZULASSEN     
50 IF ST=128 THEN PRINT "FLOPPY IST NICH
T ANGESCHLOSSEN !"                      
Nun  möchte ich Ihnen noch ein wenig den
Sinn und die Bedeutung des Befehlskanals
der Floppy näherbringen.  Letzten  Monat
hatte  ich  Ihnen  ja schon erzählt, daß
dieser Kanal  eine  Sonderstellung  ein-
nimmt,  weshalb  er auch eine eigene Se-
kundäradresse, nämlich die  15,  besitzt
(siehe auch Tabelle von letztem Monat). 
Über  jenen  Befehlskanal  kann  man nun
kleine Befehle an die Floppy senden, die
diese zu bestimmten  Operationen  veran-
laßt, wie zum Beispiel das Löschen eines
Files, oder  das Formatieren einer Disk.
Letzteres  möchte ich hier einmal anhand
eines Beispiels erläutern.  Wie  Sie  ja
vielleicht  wissen, muß man eine Disket-
te, bevor man sie mit Daten  beschreiben
kann, "formatieren", das heißt, man gibt
der Floppy den Befehl die Diskette quasi
zu "ordnen", da  sich  die  Magnetspuren
auf  ihr, wenn sie ganz frisch als Leer-
diskette aus der Fabrik kommt,  noch  in
einem undefinierten Zustand befinden.   
Man muß sie durch das "Formatieren" also
in einen definierten Zustand bringen, so
daß  Daten  auf  sie  geschrieben werden
können. Dies ist von Computer zu  Compu-
ter verschieden, der C64  beziehungswei-
se   die  Diskettenlaufwerke  desselben,
benutzen  ein  eigenes  Format,  MS-DOS-
Rechner, sei das ein XT oder AT benutzen
wiederum ein anderes, weshalb eine  Dis-
kette für jeden Rechnertyp eigens forma-
tiert werden muß.                       
Bei der  C64-Floppy  (normalerweise  die
1541,  es  gibt jedoch auch noch andere,
zum Beispiel die 1571, die auch für  den
C128 benutzbar ist) geschieht dies durch
den Befehlskanal. Hierzu müssen wir die-
sen erst einmal öffnen. Zu diesem  Zweck
brauchen  wir  natürlich erst eine File-
nummer, dann die Geräteadresse (in unse-
rem Fall die 8 - jedoch können Sie durch
die Geräteadressen von 9 - 11 auch ande-
re   Zusatzlaufwerke   ansprechen)   und
schließlich  und  endlich die  Sekundär-
adresse, die für den Befehlskanal  immer
15 ist. Filenamen oder ähnlichs brauchen
wir  zunächst  einmal nicht, also öffnen
wir den Kanal mit:                      
OPEN 1,8,15                             
Nun, da er geöffnet ist, können wir über
diesen Kanal eine Vielzahl von Befehlen,
mit  Hilfe  von  PRINT#,  an  die Floppy
schicken, die diese dann ausführen wird,
wobei wir uns dann nicht mehr darum küm-
mern  müssen.  Ich  hatte ja angedeutet,
daß ich dies anhand eines Format-Befehls
einmal demonstrieren wollte. Beim Forma-
tieren ist noch zu beachten, daß wir der
Floppy   einen  Diskettennamen  und  ein
2stelliges Identifikationskürzel mit auf
den Weg geben. Diese sogenannte "ID" ist
quasi  ein  Erkennungszeichen  für   die
Floppy, damit sie verschiedene Disketten
voneinander unterscheiden kann. Der Dis-
kettenname an sich darf maximal 16  Zei-
chen  lang sein, beide Parameter werden,
ähnlich wie bei  OPEN  durch  ein  Komma
getrennt,  an die Floppy übergeben. Hier
also einmal ein PRINT#-Befehl,  der  die
Floppy  eine  Diskette formatieren läßt,
mit dem Namen "NEUE  DISKETTE"  und  der
ID-Kennung "MD" :                       
PRINT#1,"N:NEUE DISKETTE,MD"            
Unter  der  Vorraussetzung,  daß wir den
Befehlskanal vorher mit der Filenummer 1
geöffnet hatten und daß  Sie  auch  eine
Diskette  eingelegt  hatten, beginnt nun
die Floppy, die Diskette zu formatieren.
Doch  VORSICHT,  vergewissern  Sie sich,
daß Sie auf  jeden  Fall  eine  Diskette
eingelegt  haben, die KEINE, beziehungs-
weise,  für   Sie   UNBRAUCHBARE   Daten
enthält !!!  Jegliche  Art von Daten auf
dieser Diskette  wird  nämlich  mit  dem
Format-Befehl UNWIDERRUFLICH gelöscht!  
Nicht also, daß Sie  sich  versehentlich
diese  Ausgabe der MD löschen, wir über-
nehmen für  eine  solche  Fehlbehandlung
keine Haftung und auch keine Garantie!  
Wenn  Sie  sichergehen möchten, daß eine
Ihrer Disketten nicht durch einen zufäl-
ligen  Irrtum  gelöscht  wird, so kleben
Sie doch einfach einen kleinen  Schreib-
schutzstreifen auf die Schreibschutzker-
be dieser Diskette.  Dann  wird  nämlich
bei  einem  vermeindlichen Format-Befehl
abgebrochen.  Diese  Kerbe  finden  Sie,
wenn Sie die Diskette von vorne betrach-
ten, an der rechten Seite, ich meine den
etwa 7-8mm langen und 4mm  breiten vier-
eckigen Einschnitt.                     
Sollte  nun mit der eingelegten Diskette
alles in Ordnung  und der  Schreibschutz
an  ihr  auch  nicht  vorhanden sein, so
werden Sie feststellen, daß  die  Floppy
nun  läuft  und  munter  diese  Diskette
formatiert.  Gleichzeitig  blinkt   auch
noch  der  Cursor bei unserem 64er, wenn
Sie obigen PRINT#-Befehl im  Direktmodus
eingaben.  Für  uns  heißt  das, daß die
Floppy nun eigenständig arbeitet und wir
mit dem 64er weiterarbeiten können, ohne
uns an dem Formatiervorgang  zu  stören.
Valid HTML 4.0 Transitional Valid CSS!