Basickurs:"Von Adam und Eva..."(Teil 8) ---------------------------------------
Willkommen zum 8 . Teil unseres Basickurses. Ich werde Ihnen heute noch ein
klein Wenig über die Floppy erzählen und
die etwas kleineren Befehle und Funktionen von BASIC 2 .0 erwähnen.
Wie Sie sich vielleicht erinnern hatten
wir letzten Monat etwas über Sequenzund Programmfiles gehört. Hierbei lernten 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 welchem Grund auch immer, noch ein weiteres
Byte auslesen wollen, so werden wir ein
falsches, da nichtexistentes 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 gelesenen 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 ausgeschaltet ist. Doch gibt es da noch ein
kleines Problem. Sollte nämlich ein solcher Fehler einmal auftreten, so wird
der 64 er das momentan laufende Programm
sofort abbrechen und einen " DEVICE NOT - PRESENT"- Error auf dem Bildschirm ausgeben. 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 schneller 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 Bytes im Speicher unseres C64 verändern.
Damals hatte ich den Bereich von Speicherzelle 0 bis 1024 als wenig interessant für uns erklärt, da dort hauptsächlich Speicherzellen untergebracht sind, die für interne Arbeiten im 64 er reserviert 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 Fehlermeldungsausgabesperre jedoch wieder zurücknehmen, da ja auch noch ganz andere Fehler auftreten könnten, zum Beispiel
ein " SYNTAX ERROR" . Das Programm würde
in diesem Fall versuchen weiterzuarbeiten 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 entsprechenden 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 einnimmt, weshalb er auch eine eigene Sekundä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 veranlaß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 Diskette, 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 Leerdiskette 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 Computer verschieden, der C64 beziehungsweise die Diskettenlaufwerke desselben, benutzen ein eigenes Format, MS-DOS- Rechner, sei das ein XT oder AT benutzen
wiederum ein anderes, weshalb eine Diskette für jeden Rechnertyp eigens formatiert 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 diesen erst einmal öffnen. Zu diesem Zweck
brauchen wir natürlich erst eine Filenummer, dann die Geräteadresse ( in unserem Fall die 8- jedoch können Sie durch
die Geräteadressen von 9-11 auch andere Zusatzlaufwerke ansprechen) und
schließlich und endlich die Sekundäradresse, die für den Befehlskanal immer15 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ümmern müssen. Ich hatte ja angedeutet, daß ich dies anhand eines Format-Befehls
einmal demonstrieren wollte. Beim Formatieren ist noch zu beachten, daß wir der
Floppy einen Diskettennamen und ein
2 stelliges 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 Diskettenname an sich darf maximal 16 Zeichen 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, beziehungsweise, 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 übernehmen für eine solche Fehlbehandlung
keine Haftung und auch keine Garantie!
Wenn Sie sichergehen möchten, daß eine
Ihrer Disketten nicht durch einen zufälligen Irrtum gelöscht wird, so kleben
Sie doch einfach einen kleinen Schreibschutzstreifen auf die Schreibschutzkerbe dieser Diskette. Dann wird nämlich
bei einem vermeindlichen Format-Befehl
abgebrochen. Diese Kerbe finden Sie, wenn Sie die Diskette von vorne betrachten, an der rechten Seite, ich meine den
etwa 7-8 mm langen und 4 mm breiten viereckigen 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 64 er, 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 64 er weiterarbeiten können, ohne
uns an dem Formatiervorgang zu stören.