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 |