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 |