$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