write.s



;
; Ullrich von Bassewitz, 30.05.1998
;
; int write (int fd, const void* buf, int count);
;
; THIS IS A HACK!
;

	.export		_write
	.import		popax
	.importzp	ptr1, ptr2, ptr3

	.include 	"../cbm/cbm.inc"

_write:	jsr	popax 		; get count
       	sta    	ptr2
	stx	ptr2+1		; save it for later
	sta	ptr3
	stx	ptr3+1		; save for function result
	jsr	popax		; get buf
	sta	ptr1
	stx	ptr1+1
	jsr	popax		; get fd and discard it

L1:	lda	ptr2
	ora	ptr2+1		; count zero?
	beq	L9
	ldy	#0
	lda	(ptr1),y
	jsr	BSOUT
	inc	ptr1
	bne	L2
	inc	ptr1+1
L2:	lda	ptr2
	bne	L3
	dec	ptr2
	dec	ptr2+1
	jmp	L1
L3:	dec	ptr2
	jmp	L1

; No error, return count

L9:   	lda	ptr3
    	ldx	ptr3+1
    	rts



Valid HTML 4.0! write.s.html; generated on Sat Oct 13 22:41:34 2001 by ca65html
uz@cc65.org