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