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