$CD03/52483:   B-A block allocate

CD03: 20 F5 CD  JSR $CDF5       ; get track, sector and drive number
CD06: A5 81     LDA $81         ; sector
CD08: 48        PHA             ; save
CD09: 20 FA F1  JSR $F1FA       ; find block in BAM
CD0C: F0 0B     BEQ $CD19       ; block allocated?
CD0E: 68        PLA             ; desired sector
CD0F: C5 81     CMP $81         ; = next free sector?
CD11: D0 19     BNE $CD2C       ; no
CD13: 20 90 EF  JSR $EF90       ; allocate block in BAM
CD16: 4C 94 C1  JMP $C194       ; done

Jump from $CD0C:

CD19: 68        PLA

Jump from $CD2A:

CD1A: A9 00     LDA #$00
CD1C: 85 81     STA $81         ; sector 0
CD1E: E6 80     INC $80         ; next track
CD20: A5 80     LDA $80         ; track number
CD22: CD D7 FE  CMP $FED7       ; 36, last track number + 1
CD25: B0 0A     BCS $CD31       ; >=, then 'no block'
CD27: 20 FA F1  JSR $F1FA       ; find free block in next track
CD2A: F0 EE     BEQ $CD1A       ; not found, check next track

Jump from $CD11:

CD2C: A9 65     LDA #$65
CD2E: 20 45 E6  JSR $E645       ; 65, 'no block' next free block

Jump from $CD25:

CD31: A9 65     LDA #$65
CD33: 20 C8 C1  JSR $C1C8       ; 65, 'no block' no more free blocks

    Previous Page / Next Page