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.