    naechsten Eintrag im Directory suchen : ($c5ac)
    E: $73 = 0 oder
       $73 <>1 und $72<>0 : belegten Eintrag suchen
                            (bei der ersten Suche muss $73=0 gesetzt werden
                             um den Rest muss man sich nicht kuemmern)
       $73 = 1 und $72=0  : freien Eintrag suchen
                            (findet immer nur den ersten Eintrag)

    A: $72: Sektor, in dem der 1. freie Eintrag gefunden wurde
       $73: Position des freien Eintrages im Dir-Block
       $71  : Sektor des naechsten belegten Eintrages
       $0232: Position des Eintrages im Dir-Block
       z: 1: (BEQ) keinen Eintrag gefunden; 0: Suche erfolgreich

    Suche vorbereiten (1. Eintrag suchen)

    Einsprung von $82C0, $82F1, $95D0, $B26F:

    8424: A0 00     LDY #$00         Zeiger auf den 1. Block, in dem sich ein
    8426: 84 72     STY $72          freier Eintrag befindet, loeschen
    8428: 88        DEY
    8429: 8C 6D 02  STY $026D        $ff: noch keinen Eintrag gefunden
    842C: AD 2B 02  LDA $022B        Directory Track merken
    842F: 85 4D     STA $4D          als aktuelle Tracknummer und
    8431: AD E5 01  LDA $01E5        1. Direktory-Sektor merken als
    8434: 85 4E     STA $4E          aktuelle Sektornummer und als
    8436: 8D A6 02  STA $02A6        naechster Verzeichnissektor
    8439: 20 CF 93  JSR $93CF        fuer SA 17 Lesekanal suchen, 1. Block lesen

    Eintrag suchen

    Einsprung von $849E:

    843C: AD A6 02  LDA $02A6        Ist noch ein Verzeichnisblock vorhanden
    843F: D0 01     BNE $8442        ja, ==>
    8441: 60        RTS              nein, z=1, Ende ==>

    Einsprung von $843F:

    8442: A9 07     LDA #$07         8 Direktory-Eintraege (0-7)
    8444: 8D 31 02  STA $0231
    8447: A9 00     LDA #$00         1. Byte aus Dir-Puffer holen
    8449: 20 50 94  JSR $9450        (>0: Es folgt noch ein Block)
    844C: 8D A6 02  STA $02A6        und merken

    Einsprung von $8498:

    844F: 20 42 94  JSR $9442        Pufferzeiger holen
    8452: CE 31 02  DEC $0231        Anzahl der uebrigen Eintraege -1
    8455: A0 00     LDY #$00
    8457: B1 64     LDA ($64),Y      Filetyp <> 0 (nicht geloescht)
    8459: D0 14     BNE $846F        ja, ==>

    845B: A5 72     LDA $72          muss noch ein freier Eintrag gesucht werden?
    845D: D0 2A     BNE $8489        nein, (schon gefunden) ==>
    845F: 20 79 9D  JSR $9D79        T&S der aktuellen Datei holen
    8462: A5 4E     LDA $4E          Sektornummer des Dir-Blocks merken
    8464: 85 72     STA $72          (loescht gleichzeitig das Such-Flag)
    8466: A5 64     LDA $64          Position des freien Eintrages merken
    8468: A6 73     LDX $73          (z-Flag setzen, wenn ein belegter Eintrag
    846A: 85 73     STA $73          gesucht wird)
    846C: F0 1B     BEQ $8489        ($73<>0): war freier Eintrag gesucht ?
    846E: 60        RTS              ja, z=0, Ende ==>

    belegten Eintrag gefunden

    Einsprung von $8459:

    846F: A2 01     LDX #$01         $73=0: war ein belegter Eintrag gesucht ?
    8471: E4 73     CPX $73
    8473: D0 2C     BNE $84A1        ja, ==>
    8475: F0 12     BEQ $8489        nein, weitersuchen ==>

    Suche bei der letzten gefundenen Datei fortsetzen

    Einsprung von $82E6, $B2A7:

    8477: AD 2B 02  LDA $022B        <--  (Dir-Block neu lesen)
    847A: 85 4D     STA $4D          Direktory-Track setzen
    847C: A5 71     LDA $71          Block holen, in dem letzter Eintrag
    847E: 85 4E     STA $4E          Eintrag gefunden wurde
    8480: 20 CF 93  JSR $93CF        fuer SA 17 Lesekanal suchen und Block lesen
    8483: AD 32 02  LDA $0232        Zeiger auf letzten Dir-Eintrag holen
    8486: 20 22 94  JSR $9422        Pufferzeiger setzen

    Einsprung von $845D, $846C, $8475, $82CB, $8304, $95F0:

    8489: A9 FF     LDA #$FF         <--  (Dir ist noch im Puffer)
    848B: 8D 6D 02  STA $026D        $ff: noch keinen Eintrag gefunden
    848E: AD 31 02  LDA $0231        Ist noch ein Eintrag im aktuellen Block ?
    8491: 30 08     BMI $849B        nein, ==>
    8493: A9 20     LDA #$20         $20: Laenge eines Dir-Eintrages
    8495: 20 38 91  JSR $9138        Pufferzeiger auf naechsten Eintrag setzen
    8498: 4C 4F 84  JMP $844F        und pruefen

    Einsprung von $8491:

    849B: 20 AA 93  JSR $93AA        naechsten Block lesen
    849E: 4C 3C 84  JMP $843C        Eintrag suchen

    Position der gefundenen Datei merken

    Einsprung von $8473:

    84A1: A5 64     LDA $64          Zeiger auf den Eintrag merken
    84A3: 8D 32 02  STA $0232
    84A6: 20 79 9D  JSR $9D79        T&S der aktuellen Datei holen
    84A9: A5 4E     LDA $4E          Dir-Block merken, in dem der Eintrag
    84AB: 85 71     STA $71          gefunden wurde
    84AD: 60        RTS              z=0, Ende ==>

        Previous Page / Next Page