     $EEB7/61111:   Create BAM

    Jump from $ED8F, $EE56:

    EEB7: 20 D1 F0  JSR $F0D1
    EEBA: A0 00     LDY #$00
    EEBC: A9 12     LDA #$12        ; 18
    EEBE: 91 6D     STA ($6D),Y     ; pointer to directory track
    EEC0: C8        INY
    EEC1: 98        TYA             ; 1
    EEC2: 91 6D     STA ($6D),Y     ; pointer to directory sector
    EEC4: C8        INY
    EEC5: C8        INY
    EEC6: C8        INY

    Jump from $EEEF:

    EEC7: A9 00     LDA #$00
    EEC9: 85 6F     STA $6F
    EECB: 85 70     STA $70         ; 3 bytes = 24 bits for sectors
    EECD: 85 71     STA $71
    EECF: 98        TYA             ; byte position
    EED0: 4A        LSR
    EED1: 4A        LSR             ; divided by 4 = track number
    EED2: 20 4B F2  JSR $F24B       ; get number of sectors
    EED5: 91 6D     STA ($6D),Y     ; and in BAM
    EED7: C8        INY
    EED8: AA        TAX

    Jump from $EEE1:

    EED9: 38        SEC
    EEDA: 26 6F     ROL $6F
    EEDC: 26 70     ROL $70         ; create bit model
    EEDE: 26 71     ROL $71
    EEE0: CA        DEX
    EEE1: D0 F6     BNE $EED9

    Jump from $EEEB:

    EEE3: B5 6F     LDA $6F,X       ; 3 bytes
    EEE5: 91 6D     STA ($6D),Y     ; the BAM in buffer
    EEE7: C8        INY
    EEE8: E8        INX
    EEE9: E0 03     CPX #$03
    EEEB: 90 F6     BCC $EEE3
    EEED: C0 90     CPY #$90        ; position 144?
    EEEF: 90 D6     BCC $EEC7       ; no, next track
    EEF1: 4C 75 D0  JMP $D075       ; calculate number of free blocks

        Previous Page / Next Page