Prueft, ob im aktuellen Track die Anzahl freier Blocks stimmt. ($f220)
[Der Wert, der die Anzahl der freien Blocks angibt, wird mit der Anzahl der
Bits, die einen freien Block kennzeichnen, verglichen. Bei Abweichungen
voneinander wird 'DIR Error' ausgegeben.]
Einsprung von $B525, $B749:
B75E: A9 00 LDA #$00
B760: 85 2F STA $2F Anzahl freier Blocks loeschen
B762: AC 76 DB LDY $DB76 Anzahl der BAM-Bytes pro Spur
B765: 88 DEY -1 (Index beginnt bei 0)
Einsprung von $B773:
B766: A2 08 LDX #$08 8 Bits pro Byte
B768: B1 31 LDA ($31),Y Byte mit Bitmuster holen
Einsprung von $B770:
B76A: 0A ASL Alle Bits nacheinander ins Carry schieben
B76B: 90 02 BCC $B76F gesetzte Bits zaehlen; nicht gesetzt, ==>
B76D: E6 2F INC $2F (gesetztes Bit heisst: Block frei)
Einsprung von $B76B:
B76F: CA DEX
B770: D0 F8 BNE $B76A naechstes Bit, ==>
B772: 88 DEY [Die BAM-Bytes 1-5 zusammen muessen
B773: D0 F1 BNE $B766 genausoviele 1-Bits haben
B775: B1 31 LDA ($31),Y wie im Byte 0 angegeben ist]
B777: C5 2F CMP $2F
B779: D0 01 BNE $B77C wenn nicht, ==>
B77B: 60 RTS
Einsprung von $B779:
B77C: A9 71 LDA #$71 71, DIR ERROR
B77E: 20 3F FF JSR $FF3F
Previous Page / Next Page