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
|