$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