Startblock einer neuen Datei suchen ($f1a9)
Einsprung von $9BC3:
B6ED: A9 01 LDA #$01 Flag 'Bam geaendert' setzen
B6EF: 05 35 ORA $35
B6F1: 85 35 STA $35
B6F3: A5 55 LDA $55 Wert (von Side-Sektoren) merken
B6F5: 48 PHA
B6F6: A9 01 LDA #$01 Distanz zum Directory-Track = 1
B6F8: 85 55 STA $55
Tracks < Directory-Track untersuchen
Einsprung von $B730:
B6FA: AD 2B 02 LDA $022B Directory-Track
B6FD: 38 SEC
B6FE: E5 55 SBC $55 - Distanz
B700: 85 4D STA $4D = zu testende Spur
B702: 08 PHP
B703: C5 90 CMP $90 >= Starttrack der Partition ?
B705: B0 04 BCS $B70B ja, ==>
B707: 28 PLP
B708: 4C 17 B7 JMP $B717 Tracks > Directory-Track ueberpruefen ==>
Einsprung von $B705:
B70B: 28 PLP
B70C: 90 09 BCC $B717 Tracknummer <= 0 ? ja, ==>
B70E: F0 07 BEQ $B717 ja, ==>
B710: 20 B4 B5 JSR $B5B4 BAM-Zeiger auf aktuellen Track setzen
B713: B1 31 LDA ($31),Y Anzahl freier Blocks holen
B715: D0 1B BNE $B732 >0, (Starttrack gefunden) ==>
Tracks > Directory-Track untersuchen
Einsprung von $B708, $B70C, $B70E:
B717: AD 2B 02 LDA $022B Directory-Track
B71A: 18 CLC
B71B: 65 55 ADC $55 + Distanz
B71D: 85 4D STA $4D = zu testende Spur
B71F: E6 55 INC $55 Distanz erhoehen
B721: CD 2C 02 CMP $022C Spur >= 'Letzter Track der Partition + 1' ?
B724: 90 05 BCC $B72B nein, ==>
B726: A9 67 LDA #$67 ja: 67, Illegal Track or Sector
B728: 20 3F FF JSR $FF3F
Einsprung von $B724:
B72B: 20 B4 B5 JSR $B5B4 BAM-Zeiger auf aktuellen Track setzen
B72E: B1 31 LDA ($31),Y Anzahl freier Blocks holen
B730: F0 C8 BEQ $B6FA =0, (weitersuchen) ==>
freien Block im Track suchen
Einsprung von $B715:
B732: 68 PLA
B733: 85 55 STA $55 geretteten Wert zurueckholen
B735: A9 00 LDA #$00 mit 1. Sektor der Spur anfangen
B737: 85 4E STA $4E
B739: 20 46 B7 JSR $B746 freien Block im Track suchen
B73C: F0 03 BEQ $B741 keinen gefunden, ==>
B73E: 4C 72 B5 JMP $B572 Block in BAM belegen
Einsprung von $B73C, $B6EA:
B741: A9 71 LDA #$71 71, Dir Error
B743: 20 3F FF JSR $FF3F
Previous Page / Next Page