; jede jede@oric.org 2017-01-22
.export _write
- .import popax
+ .import popax, popptr1
.importzp ptr1, ptr2, ptr3, tmp1
.include "telestrat.inc"
eor #$FF
sta ptr2+1 ; remember -count-1
- jsr popax ; get buf
- sta ptr1
- stx ptr1+1
+ jsr popptr1 ; get buf
jsr popax ; get fd and discard
; if fd=0001 then it stdout
- cpx #0
- beq next
- jmp L1
-next:
- cmp #1
- beq L1
-
+ cpx #0
+ beq next
+ jmp L1
+next:
+ cmp #1
+ beq L1
+
; here it's a file opened
- lda ptr1
- sta PTR_READ_DEST
- lda ptr1+1
- sta PTR_READ_DEST+1
- lda ptr3
- ldy ptr3+1
+ lda ptr1
+ sta PTR_READ_DEST
+ lda ptr1+1
+ sta PTR_READ_DEST+1
+ lda ptr3
+ ldy ptr3+1
BRK_TELEMON XFWRITE
; compute nb of bytes written
-
+
lda PTR_READ_DEST+1
sec
sbc ptr1+1
- tax
+ tax
lda PTR_READ_DEST
sec
sbc ptr1
rts
-
-
+
+
L1: inc ptr2
bne L2
inc ptr2+1
BRK_TELEMON XWR0 ; macro send char to screen (channel 0 in telemon terms)
lda #$0D ; return to the beggining of the line
BRK_TELEMON XWR0 ; macro
-
+
ldx #$0D
-L3:
+L3:
BRK_TELEMON XWR0 ; macro
inc ptr1
rts
.endproc
-
-