$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