Kanal zum Lesen suchen
1.Block und ggf. 1.Side-Sektor lesen ($dc46)
E:   $52      : benutzte Sekundaeradresse
     $4d-  $4e: 1. Datenblock
   $0270-$0271: 1. (Super-)Side-Sektor

Einsprung von $93D8, $96A3, $96C7, $987D:

9B0D: A9 01     LDA #$01         Lese-Kanal oeffnen
9B0F: 20 5A 91  JSR $915A        und einen Puffer belegen
9B12: 20 9B 9B  JSR $9B9B        Pufferzeiger initialisieren
9B15: AD 2D 02  LDA $022D        Filetyp merken
9B18: 48        PHA
9B19: 0A        ASL              b0=0: Drivenummer; b1-3: Filetyp
9B1A: 95 F9     STA $F9,X        in Kanaltabelle eintragen
9B1C: 20 D6 8F  JSR $8FD6        1. Block lesen
9B1F: A6 50     LDX $50
9B21: A5 4D     LDA $4D          existiert ein Folgeblock ?
9B23: D0 05     BNE $9B2A        ja, ==>
9B25: A5 4E     LDA $4E          Blocklaenge merken
9B27: 9D 42 02  STA $0242,X

Einsprung von $9B23:

9B2A: 68        PLA              Filetyp holen
9B2B: C9 04     CMP #$04         Rel-Datei ?
9B2D: D0 5E     BNE $9B8D        nein, ==>
9B2F: A4 52     LDY $52
9B31: B9 A8 00  LDA $00A8,Y      b6=1: Flag fuer Lesen/Schreiben setzen
9B34: 09 40     ORA #$40
9B36: 99 A8 00  STA $00A8,Y
9B39: AD 6F 02  LDA $026F
9B3C: 9D 5E 02  STA $025E,X      Recordlaenge merken
9B3F: 20 04 92  JSR $9204        Puffer suchen
9B42: 10 03     BPL $9B47        gefunden, ==>
9B44: 4C 86 91  JMP $9186        70, No Channel

Einsprung von $9B42:

9B47: A6 50     LDX $50          Puffer fuer Side-Sektoren merken
9B49: 9D 65 02  STA $0265,X
9B4C: 48        PHA
9B4D: 20 6E A5  JSR $A56E        Super-Side-Sektor Modus gewaehlt ?
9B50: F0 17     BEQ $9B69        ja, ==>
9B52: 68        PLA
9B53: AC 70 02  LDY $0270        T&S des Side-Sektors setzen
9B56: 84 4D     STY $4D
9B58: AC 71 02  LDY $0271
9B5B: 84 4E     STY $4E
9B5D: 20 88 95  JSR $9588        T&S an DC uebergeben
9B60: 20 AC 9D  JSR $9DAC        Side-Sektor lesen
9B63: 20 ED 94  JSR $94ED        Jobausfuehrung ueberpruefen
9B66: 4C 7B 9B  JMP $9B7B

Einsprung von $9B50:

9B69: 68        PLA
9B6A: AD 70 02  LDA $0270        T&S des Super-Side-Sektors merken
9B6D: 9D 10 01  STA $0110,X
9B70: AD 71 02  LDA $0271
9B73: 9D 09 01  STA $0109,X
9B76: A9 FF     LDA #$FF         'keine Side-Sektor-Gruppe aktiv'-Flag
9B78: 9D 02 01  STA $0102,X      setzen

Einsprung von $9B66, $9C7F:

9B7B: A6 50     LDX $50
9B7D: A9 02     LDA #$02         'Zeiger auf naechsten Record'
9B7F: 9D 57 02  STA $0257,X      auf 1. Record setzen
9B82: A9 00     LDA #$00
9B84: 20 22 94  JSR $9422        Pufferzeiger auf 0 setzen
9B87: 20 E1 A0  JSR $A0E1        1. Record lesen
9B8A: 4C 7C 9D  JMP $9D7C        T&S des aktiven Kanals holen

1. Byte aus der Datei fuer Ausgabe bereitstellen

Einsprung von $9B2D:

9B8D: 20 9B 90  JSR $909B        Byte aus aktueller Datei holen
9B90: A6 50     LDX $50
9B92: 9D 3B 02  STA $023B,X      und in Ausgabepuffer schreiben
9B95: A9 88     LDA #$88         b3=1: EOI loeschen und
9B97: 9D 34 02  STA $0234,X      b7=1: Datei auf Lesen festlegen
9B9A: 60        RTS

    Previous Page / Next Page