★ APPLICATIONS ★ DISQUE ★ Schreibschutz abgefragt ★ |
RSX Disc-Schreibschutz abgefragt (Computer Schau) | Applications Disque |
Bei den Schneider-Computern mit 3-Zoll-Floppies lassen sich Disketten — wie bei vielen anderen Computern — durch Umlegen eines kleinen Hebels an der Diskette mit einem Schreibschutz versehen. Diesen Schreibschutz kann man mit dem folgenden kurzen Maschinenprogramm auch von Basic aus ab-fragen. Bei der Programmeingabe müssen Sie sich entscheiden, ob Sie den Quellcode des Maschinenprogramms oder das Basic-Ladeprogramm mit den DATA-Zeilen abtippen wollen, Der Basic-Loader gibt zusätzlich einige Bedienungshinweise und erzeugt frei verschiebbaren Maschinencode und legt ihn immer genau unter HIMEM ab. Auf diese Weise kann das „Speicherplatzopfer“ auf 80 Bytes beschränkt werden. Nach der Initialisierung der RSX-Erweiterung steht Ihnen ein neuer RSX-Befehl zur Verfügung: |DISC.WP„WP“ steht für „Write-protected“, also schreibgeschützt. Nach der Eingabe dieses RSX-Befehls können Sie die Speicherstelle 356 abfragen, die normaierweise vom Computer nicht benutzt wird und damit für unsere Zwecke zur Verfügung steht:A=PEEK(356)Wenn A=0, dann ist der Schreibschutz auf der Diskette nicht eingerastet; ein Wert von 255 sagt hingegen aus, daß der Schreibschutz gesetzt ist.Dieses Programm läßt sich z. B. gewinnbringend in Programmen ein-setzen, die die Diskettenlaufwerke benutzen. Es ist nämlich zumindest beim CPC-464 nicht möglich, Fehlermeldungen der Floppy in Basic abzufangen! Probieren Sie doch einmal ON ERROR GOTO: dieser Befehl ist bei Diskettenfehlern wirkungslos! Mit DISC.WP können Sie wenigstens diese - besonders ärgerliche - Fehlerquelle ausschließen. Besonders für fortgeschrittene Maschinenprogrammierer dürfte die Funktionsweise des Programms interessant sein: Wie fast alle Peripheriegeräte, die an Z80-Computer angeschlossen sind, werden auch die Floppies über die Z80-Ports verwaltet. Dies sind Ein- und Ausgabekanäle zur Kommunikation der CPU mit anderen ICs und Geräten. Genau auf diese Weise wird auch der FDC (Floppy-Disc-Controller) 765 angesteuert: Die Portadresse &FB7E verwaltet das Hauptstatus-Register des Controllers, die Adresse &FB7F das Datenregister. Werden über den Datenport die Befehlsbytes &04 und &00 ausgegeben, so liest der FDC sein Statusregister 3 aus, in dessen Bit 6 das WP-Flag steht. Der Inhalt des Registers wird auf den Datenport geschickt und kann dort mit einem IN-Befehl gelesen werden. Ganz so einfach ist die Sache aber doch nicht: Der Floppy-Controller ist für Maschinenprogramme zu langsam! So muß zuerst festgestellt werden, ob der FDC ein „Request for Master“ schickt, eine Art Bestätigung der Empfangsbereitschaft. Außerdem muß man nach jedem Byte, das auf den Datenport gegeben wird, dem Floppy-Controller Zeit geben, die benötigten Informationen zu liefern. Am einfachsten ist es, sich in einem ROM-Listing des Floppy-Betriebssystems ab der Adresse &C95C die Hilfsroutine anzuschauen und im eigenen Programm zu verwenden!
|