$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