Initial Agat support
This commit is contained in:
50
libsrc/agat/write.s
Normal file
50
libsrc/agat/write.s
Normal file
@@ -0,0 +1,50 @@
|
||||
;
|
||||
; Oleg A. Odintsov, Moscow, 2024
|
||||
;
|
||||
; int __fastcall__ write (int fd, const void* buf, unsigned count);
|
||||
;
|
||||
|
||||
.export _write
|
||||
.import popax, popptr1
|
||||
.import COUT
|
||||
|
||||
.include "zeropage.inc"
|
||||
|
||||
_write:
|
||||
sta ptr2
|
||||
stx ptr2+1
|
||||
jsr popptr1
|
||||
jsr popax
|
||||
|
||||
; Check for zero count
|
||||
ora ptr2
|
||||
beq done
|
||||
|
||||
; Get char from buf
|
||||
next: ldy #$00
|
||||
lda (ptr1),y
|
||||
|
||||
; Replace '\n' with '\r'
|
||||
cmp #$0A
|
||||
bne output
|
||||
lda #$8D
|
||||
|
||||
; Set hi bit and write to device
|
||||
output:
|
||||
jsr COUT ; Preserves X and Y
|
||||
|
||||
; Increment pointer
|
||||
inc ptr1
|
||||
bne :+
|
||||
inc ptr1+1
|
||||
|
||||
; Decrement count
|
||||
: dec ptr2
|
||||
bne next
|
||||
dec ptr2+1
|
||||
bpl next
|
||||
|
||||
; Return success
|
||||
done: lda #$00
|
||||
rts
|
||||
|
||||
Reference in New Issue
Block a user