    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