August 1995

Meinungen, Programme und Hardware

Programmprojekte

Autor: Sven Friedrichs



Problematisches Mehrfachschreiben beim Burst-Write-Befehl

Mit den Burstroutinen der 1571 kann man laut Handbuch zum einen Daten vom Computer in den floppyinternen Buffer übertragen als auch Daten aus dem floppyinternen Buffer auf Diskette schreiben. Gewöhnlich sind beide Datenübertragungen nur zusammen anzutreffen, so daß eine Übertragungskette entsteht: Computer -> Floppybuffer -> Diskette.

Wer sich nun aber intensiv mit der Burstmodeprogrammierung befaßt, wird manchmal nur die Übertragung vom Floppybuffer zur Diskette benötigen. Über die Steuerung der Burstbefehle funktioniert das auch einwandfrei, es sei denn, man setzt das fünfte Burst-Write-Byte höher als Eins. Dieses Byte ist dafür zuständig, den Mehrfachschreibmodus zu aktivieren. Möchte man beispielsweise alle Sektoren einer Spur mit ein und den selben Daten füllen, so setzt man dieses Byte auf maximale Sektoranzahl. Dabei würde pro Schreibvorgang die Übertragung von Computer zum Floppybuffer gespart.

Also könnte man ja eigentlich die zu schreibenden Daten einmal vom Computer in den Floppybuffer übertragen und an-schließend die Übertragung vom Computer zum Floppybuffer über Setzen von Bit 7 des dritten Burst-Write-Bytes deaktivieren.

Der erste Sektor wird auch einwandfrei geschrieben, jedoch taucht beim zweiten bereits das Problem auf. Eine kleine Nach-lässigkeit im Betriebssystem der Floppy führt dazu, daß das oben gesetzt Bit gar nicht mehr abgefragt wird und dann doch wieder Daten vom Computer erwartet werden. Da dies jedoch vom Programmierer nicht vorhersehbar war, stürzt der Computer gewöhnlicherweise ab.

Dieser Fehler taucht nur beim Burst-Write-Befehl auf, nicht jedoch beim Burst-Read-Befehl. Abhilfe würde eine Änderung im Betriebssystem der Floppy schaffen. Das ist jedoch nicht unbedingt erforderlich, wenn man den Fehler kennt und ihn zu umgehen weiß, indem das Byte für Mehrfachschreiben einfach nicht benutzt und stattdessen der Befehl für jeden Sektor einzeln gesandt wird. Besondere Zeitersparnisse hätte man ohnehin nicht erlangt.

Zu ändernde Kernalroutinen wären:

alt: $8481 JMP $8412 ; nächsten Sektor auf Diskette schreiben
ohne Abfrage für Nur-Lesen-Aus-Buffer
neu: $8481 JMP $840e ; nächsten Sektor auf Diskette schreiben
mit Abfrage für Nur-Lesen-Aus-Buffer!

Weiterführende Artikel zum Burst-Mode:

64'er 5/95: 1571 goes PC (S. 16 ff)
128'er Sonderheft 89: Floppy auf Trab gebracht (S. 40 ff)




Inhalt

   
Zurueck