    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