letzten Dateiblock abspeichern ($db62)
Einsprung von $99BC:
9A2A: A6 50 LDX $50 Kanalnummer holen
9A2C: BD 49 02 LDA $0249,X aktuelle Programmlaenge > 0 ?
9A2F: 1D 50 02 ORA $0250,X
9A32: D0 0C BNE $9A40 ja, ==>
9A34: 20 42 94 JSR $9442 aktuellen Pufferzeiger holen
9A37: C9 02 CMP #$02 = Beginn des Datenbereichs (Block leer) ?
9A39: D0 05 BNE $9A40 nein, ==>
[Die Datei ist absolut leer !!! Da die Mindest-Dateilaenge aber 1 Byte ist,
wird die Datei um ein CR 'erweitert'.]
9A3B: A9 0D LDA #$0D ja: CR in Puffer schreiben
9A3D: 20 B1 8E JSR $8EB1 [Pufferzeiger = $03 !]
Einsprung von $9A32, $9A39:
9A40: 20 42 94 JSR $9442 Pufferzeiger holen
9A43: C9 02 CMP #$02 Ist der Puffer noch leer ?
9A45: D0 12 BNE $9A59 nein, ==>
[Der letzte Block wurde genau gefuellt. Deshalb muss der aktuelle Block
wieder von der Datei 'abgezogen' werden.]
9A47: 20 7D 8D JSR $8D7D Puffer wechseln
9A4A: A6 50 LDX $50
9A4C: BD 49 02 LDA $0249,X Dateilaenge -1
9A4F: D0 03 BNE $9A54 [Eigentlich, so meint man, muesste der Block
9A51: DE 50 02 DEC $0250,X in der BAM auch freigegeben werden !?]
Einsprung von $9A4F:
9A54: DE 49 02 DEC $0249,X
9A57: A9 00 LDA #$00 Pufferzeiger auf 256 setzen
Einsprung von $9A45:
9A59: 38 SEC Pufferzeiger -1 (zeigt nun auf das letzte
9A5A: E9 01 SBC #$01 Datenbyte)
9A5C: 48 PHA merken
9A5D: A9 00 LDA #$00 Pufferzeiger auf die Blockverkettung setzen
9A5F: 20 22 94 JSR $9422
9A62: 20 B1 8E JSR $8EB1 $00: letzter Dateiblock in Puffer schreiben
9A65: 68 PLA Blocklaenge
9A66: 20 B1 8E JSR $8EB1 in Puffer schreiben
9A69: 20 02 90 JSR $9002 Block auf Diskette schreiben
9A6C: 20 ED 94 JSR $94ED Jobausfuehrung ueberwachen
9A6F: 4C 7D 8D JMP $8D7D Puffer wechseln
Previous Page / Next Page