     $EF90/61328:   Mark block as allocated

    Jump from $CD13, $EDE8, $EE04, $F19A, $F1F2:

    EF90: 20 F1 EF  JSR $EFF1       ; set buffer pointer

    Jump from $EE96, $EE9D:

    EF93: 20 CF EF  JSR $EFCF       ; erase bit for sector in BAM
    EF96: F0 36     BEQ $EFCE       ; already allocated, then done
    EF98: B1 6D     LDA ($6D),Y
    EF9A: 5D E9 EF  EOR $EFE9,X     ; erase bit for block
    EF9D: 91 6D     STA ($6D),Y
    EF9F: 20 88 EF  JSR $EF88       ; set flag for BAM changed
    EFA2: A4 6F     LDY $6F
    EFA4: B1 6D     LDA ($6D),Y
    EFA6: 38        SEC
    EFA7: E9 01     SBC #$01        ; decrement number of blocks per track
    EFA9: 91 6D     STA ($6D),Y
    EFAB: A5 80     LDA $80         ; track
    EFAD: CD 85 FE  CMP $FE85       ; 18?
    EFB0: F0 0B     BEQ $EFBD
    EFB2: BD FA 02  LDA $02FA,X     ; number of free blocks lo
    EFB5: D0 03     BNE $EFBA
    EFB7: DE FC 02  DEC $02FC,X     ; decrement number of free blocks

    Jump from $EFB5, $EF7D:

    EFBA: DE FA 02  DEC $02FA,X

    Jump from $EFB0:

    EFBD: BD FC 02  LDA $02FC,X     ; number of free blocks hi
    EFC0: D0 0C     BNE $EFCE       ; more than 255 blocks free?
    EFC2: BD FA 02  LDA $02FA,X     ; free blocks lo
    EFC5: C9 03     CMP #$03
    EFC7: B0 05     BCS $EFCE       ; smaller than 3?
    EFC9: A9 72     LDA #$72
    EFCB: 20 C7 E6  JSR $E6C7       ; 72, 'disk full'

    Jump from $EF96, $EFC0, $EFC7:

    EFCE: 60        RTS

        Previous Page / Next Page