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 |