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 |