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