View BAM
Dieses Programm zeigt Ihnen sekundenschnell, wie und wo die Floppy Dateien und Programme abspeichert, welche Blöcke noch frei sind und welche nicht.
Das hier vorgestellte Programm stellt die sogenannte BAM der Disketten grafisch auf dem Bildschirm des C 64 dar. Das gesamte Programm ist in Maschinensprache geschrieben und daher sehr schnell. Es ist dem Viewbam-Programm, das von Commodore auf der Testdiskette mitgeliefert wird, in zweierlei Hinsicht überlegen:
- ist es, wie bereits erwähnt, um ein Vielfaches schneller und
- stellt es übersichtlich die gesamte Diskettenbelegung dar, wobei freie, belegte und nicht belegbare Blöcke gut zu erkennen sind.
Eine Hardcopy läßt sich auch leicht anfertigen (siehe Bild 1).
Das Programm braucht inklusive Ladezeit des Blockes 18/0, auf dem die BAM gespeichert ist, unter drei Sekunden zur Ausführung. (Im Vergleich zum Viewbam von Commodore, das 73 Sekunden benötigt.)
Es ist interessant zu sehen, wie das DOS Files abspeichert, welche Blöcke noch frei sind und welche nicht. Ich wurde durch die geringe Geschwindigkeit und die fehlende Möglichkeit des Viewbam von Commodore, alle Blöcke auf einmal zu betrachten, zu diesem Programm animiert.
Die Routine läuft auf dem C 64 von Commodore mit dem Floppy-Laufwerk VC 1541. Die Routine steht im geschützten Speicherbereich $C000-$C21C, dezimal 49152 bis 49693. Man kann sie auch in einem Basicprogramm aufrufen.
Mit diesem Programm wird in grafischer Darstellung ersichtlich, wieviele von den 664 Blöcken besetzt beziehungsweise frei sind.
Nach mühevoller Eingabe der Data-Zeilen und des Ladeprogramms sollte man dieses erst einmal auf Diskette sichern.
Eine Prüfsumme wird berechnet; dadurch vermeidet man eventuelle Eingabefehler.
Zuerst wird die BAM, die sogenannte »Block Availiability Map«, von der Floppy in den Speicher des Computers geladen. Die BAM ist im Block 18/0, das heißt Track 18, Sektor 0, auf jeder Diskette gespeichert.
Die BAM umfaßt 256 Bytes, die im einzelnen folgende Bedeutung haben:
Bytes 0-1 | Track und Sektor vom ersten Directory-Block (meistens 18/1). |
Byte 2 | Hier steht ein »A« (ASCII-Code 65) für das 4040 Format |
Byte 3 | nicht belegt |
Bytes 4-143 | Hier stehen die für dieses Programm wichtigen Informationen |
Bytes 144-161 | Diskettenname, aufgefüllt mit geshifteten Leerzeichen |
Bytes 162-163 | Disk ID |
Byte 164 | Geshiftetes Leerzeichen |
Bytes 165-166 | »2A«-ASCII Repräsentation für die DOS-Version |
Bytes 166-167 | Geshiftete Leerzeichen |
Bytes 168-255 | Nullen, unbenutzt |
Es existieren 35 Tracks, für jeden Track wurden in dem für uns wichtigen Bereich von Byte 4 bis Byte 143 vier Bytes reserviert. Die Tracks sind auch noch in Sektoren unterteilt, maximal 21 und mindestens 17, dies ist durch die Formel 2*Pi*Radius begründet, das heißt, daß bei kleinerem Radius nach innen weniger Raum zur Verfügung steht.
Das erste Byte eines jeden Viererblocks gibt die Anzahl der noch freien Blöcke in diesem Track an.
Die nächsten drei Bytes beinhalten die Informationen, welche Sektoren in dem Track belegt sind, und welche nicht.
Jedes Byte besteht aus 8 Bit und kann somit über 8 Sektoren Auskunft geben. Ein gesetztes Bit (1) bedeutet: freier, verfügbarer Block, ein nicht gesetztes Bit (0) bedeutet das Gegenteil, dieser Block (Track/Sektor) ist belegt.
Aus diesen Informationen kann man dann ein überschaubares Bild schaffen.
(Jörg Schieb/gk)