Ein Byte in Record-Puffer schreiben ($e07c)

Byte in Puffer schreiben

Einsprung von $A03C, $A086:

9FFC: 20 8D A0  JSR $A08D        Flags 'Puffer / REL-Datei geaendert' setzen
9FFF: 20 11 9F  JSR $9F11        Nummer des aktiven Puffers holen
A002: 0A        ASL              (2-Byte Tabelle)
A003: AA        TAX
A004: A5 54     LDA $54          Datenbyte holen
A006: 81 BB     STA ($BB,X)      und in den Puffer schreiben

auf Recordende testen

A008: B4 BB     LDY $BB,X        Pufferzeiger (Lo) holen
A00A: C8        INY              Pufferende erreicht ?
A00B: D0 09     BNE $A016        nein, ==>
A00D: A4 50     LDY $50          Ist der 'Zeiger auf naechsten Record' = 0
A00F: B9 57 02  LDA $0257,Y      [Dies ist genau dann der Fall, wenn der
                                 aktuelle Record genau bis zum Blockende
                                 geht und er ausserdem der letzte Record
                                 der Datei ist.]
A012: F0 0A     BEQ $A01E        ja, dieser letzte Record ist voll, ==>
A014: A0 02     LDY #$02         Ist das Recordende genau am Pufferende ?

Einsprung von $A00B:

A016: 98        TYA
A017: A4 50     LDY $50          aktuellen Pufferzeiger mit
A019: D9 57 02  CMP $0257,Y      'Zeiger auf naechsten Record' vergleichen
A01C: D0 05     BNE $A023        ungleich, (Record noch nicht voll) ==>

Einsprung von $A012:

A01E: A9 20     LDA #$20         Flag 'Record voll' setzen
A020: 4C D5 9C  JMP $9CD5
Zeiger auf naechstes Byte setzen

Einsprung von $A01C:

A023: F6 BB     INC $BB,X        Pufferzeiger erhoehen; Pufferende erreicht ?
A025: D0 0B     BNE $A032        nein, ==>
A027: AD 01 01  LDA $0101        Flag '2.Teil des Records geladen' setzen
A02A: 09 10     ORA #$10
A02C: 8D 01 01  STA $0101
A02F: 4C BF 9F  JMP $9FBF        Folgeblock einlesen

Einsprung von $A025:

A032: 60        RTS

    Previous Page / Next Page