C 64
Tips & Tricks

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:

  1. ist es, wie bereits erwähnt, um ein Vielfaches schneller und
  2. 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-1Track und Sektor vom ersten Directory-Block (meistens 18/1).
Byte 2Hier 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)
Bild 1. Zwei Beispiele von »View BAM«
0 data85,49,58,50,32,48,32,49,56,32,48,13,162,1,32,201,255,162,0,189,0
1 data192,32,210,255,232,224,12,208,245,96,66,45,80,58,50,32,48,13,32,204
2 data255,162,1,32,201,255,162,0,189,31,192,32,210,255,232,224,8,208,245
3 data96,169,1,162,8,160,15,32,186,255,169,0,32,189,255,32,192,255,169
4 data2,162,8,160,2,32,186,255,169,35,133,251,162,251,160,0,169,1,32,189
5 data255,32,192,255,32,12,192,32,39,192,32,204,255,162,2,32,198,255,162
6 data0,32,207,255,157,0,142,232,208,247,32,204,255,169,1,32,195,255,162
7 data0,189,194,193,32,210,255,232,224,58,208,245,162,144,189,0,142,32
8 data210,255,232,224,162,208,245,169,13,32,210,255,162,0,189,252,193,32
9 data210,255,232,224,12,208,245,173,162,142,32,210,255,173,163,142,32
10 data210,255,169,13,32,210,255,32,210,255,169,5,32,210,255,160,20,152
11 data72,170,201,10,176,5,169,32,32,210,255,169,0,32,205,189,169,45,32
12 data210,255,104,72,240,5,169,13,32,210,255,104,168,136,16,220,162,2,160
13 data3,32,10,229,160,4,169,48,162,9,208,10,192,1,240,4,162,10,208,2,162
14 data6,32,210,255,202,208,250,24,105,1,136,208,234,162,3,160,3,32,10,229
15 data160,35,169,49,32,210,255,24,105,1,201,58,144,2,169,48,136,208,241
16 data169,1,133,2,162,4,165,2,105,2,168,32,10,229,162,20,134,139,169,142
17 data133,141,169,1,166,2,105,4,202,208,251,133,140,165,139,166,2,224,18
18 data144,32,224,25,144,20,224,31,144,8,201,17,144,20,162,8,208,42,201
19 data18,144,12,162,8,208,34,201,19,144,4,162,8,208,26,165,139,74,74,74
20 data168,177,140,168,165,139,41,7,170,152,61,8,194,208,4,162,0,240,2,162
21 data4,160,4,189,16,194,32,210,255,232,136,208,246,165,139,240,5,169,17
22 data32,210,255,198,139,16,165,230,2,165,2,201,36,208,128,32,231,255,169
23 data0,133,198,165,198,240,252,96,147,5,18,32,146,61,66,69,76,69,71,84
24 data44,46,61,70,82,69,73,44,78,61,48,32,18,40,67,41,49,57,56,52,32,66
25 data89,32,74,46,32,83,67,72,73,69,66,146,158,68,73,83,75,78,65,77,69
26 data32,58,32,157,157,157,157,157,157,157,73,68,32,58,32,1,2,4,8,16,32
27 data64,128,18,32,146,157,158,46,5,157,156,78,5,157,169,2
1000 rem **************************
1010 rem * viewbam fuer den vc64  *
1020 rem * (c) 1984 by j. schieb  *
1030 rem * richard-wagner-str.58  *
1040 rem * 4050 moenchengladbach1 *
1050 rem *                        *
1060 rem * starten mit sys 49213  *
1070 rem **************************
1080 rem
1090 rem laderoutine :
1100 for x=49152 to 49693
1110 :  read y
1120 :  poke x,y
1130 :  s=s+y
1140 next
1150 if s<>63349 then print"** fehler in datas !! **":end
1160 rem new
Der Basic-Lader von »Vier BAM«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →