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