Letztes benutzte Zeichen im Record suchen ($e16e)

Einsprung von $9FBC:

A0FD: A6 50     LDX $50
A0FF: BD 57 02  LDA $0257,X      Zeiger auf naechsten Record holen
A102: 85 56     STA $56
A104: C6 56     DEC $56          -1 (letztes Zeichen im Record)
A106: C9 02     CMP #$02         Ist letztes Zeichen im alten Datenblock ?
A108: D0 04     BNE $A10E        nein, ==>
A10A: A9 FF     LDA #$FF         Zeiger auf letztes Zeichen im Datenblock
A10C: 85 56     STA $56          setzen

Einsprung von $A108:

A10E: BD 5E 02  LDA $025E,X      Recordlaenge merken (Dies ist der Bereich,
A111: 85 57     STA $57          in dem das Zeichen liegen muss)
A113: 20 42 94  JSR $9442        Pufferzeiger des aktiven Puffers holen
A116: A6 50     LDX $50          Ist Pufferzeiger hinter dem Record-Ende ?
A118: C5 56     CMP $56
A11A: 90 19     BCC $A135        nein, ==>
A11C: F0 17     BEQ $A135        nein, ==>
A11E: 20 7D 8D  JSR $8D7D        ja, Puffer wechseln (Record hoert im anderen
                                Puffer auf)
A121: 20 43 A1  JSR $A143        Recordende suchen
A124: 90 08     BCC $A12E        nicht gefunden, ==>
A126: A6 50     LDX $50          Record geht ueber die Blockgrenze hinaus
A128: 9D 42 02  STA $0242,X      Recordende merken
A12B: 4C 7D 8D  JMP $8D7D        Puffer wechseln (1. Teil des Records) ==>

Einsprung von $A124:

A12E: 20 7D 8D  JSR $8D7D        Puffer wechseln (1. Teil des Records)
A131: A9 FF     LDA #$FF         Zeiger auf Pufferende setzen
A133: 85 56     STA $56

Einsprung von $A11A, $A11C:

A135: 20 43 A1  JSR $A143        weitersuchen
A138: B0 03     BCS $A13D        gefunden, ==>
                                [Record ist komplett leer; deshalb wird der
A13A: 20 42 94  JSR $9442         Pufferzeiger des aktiven Puffers
                                 als Recordende genommen (provoziert EOI).]

Einsprung von $A138:

A13D: A6 50     LDX $50
A13F: 9D 42 02  STA $0242,X      Zeiger auf Recordende merken
A142: 60        RTS

Recordende im aktiven Puffer suchen
A: c: 1: a: Zeiger auf Record-Ende; 0: Recordende nicht gefunden

Einsprung von $A121, $A135:

A143: 20 69 9D  JSR $9D69        Zeiger auf Anfang des aktiven Puffers
A146: A4 56     LDY $56          setzen

Einsprung von $A153:

A148: B1 64     LDA ($64),Y      Datenbyte aus Record holen
A14A: D0 0D     BNE $A159        <> 0, dann Ende gefunden ==>
A14C: 88        DEY
A14D: C0 02     CPY #$02         Datenbereichs-Anfang erreicht ?
A14F: 90 04     BCC $A155        ja, ==>
A151: C6 57     DEC $57          Recordlaenge -1
A153: D0 F3     BNE $A148        ==>

Einsprung von $A14F:

A155: C6 57     DEC $57          Recordlaenge -1
A157: 18        CLC              c=0: Anfang noch nicht gefunden
A158: 60        RTS

Einsprung von $A14A:

A159: 98        TYA              Zeiger auf Recordende nach a
A15A: 38        SEC              c=1 Anfang gefunden
A15B: 60        RTS
    Previous Page / Next Page