Magic Disk 64

home to index to text: MD8909-KURSE-BASIC_KURS_TEIL_8-1_:_VON_ADAM_UND_EVA..._(TEIL_8).txt
 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.

Valid HTML 4.0 Transitional Valid CSS!