    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