2 ; Oliver Schmidt, 12.01.2005
4 ; int __fastcall__ write (int fd, const void* buf, unsigned count);
8 .import rwprolog, rwcommon, rwepilog
9 .import errnoexit, oserrexit
12 .include "zeropage.inc"
16 .include "filedes.inc"
24 ; Check for write access
25 lda fdtab + FD::FLAGS,y
33 ; Check for append flag
34 lda fdtab + FD::FLAGS,y
39 stx mliparam + MLI::EOF::REF_NUM
49 .assert MLI::MARK::REF_NUM = MLI::EOF::REF_NUM, error
52 ; POSITION already set
53 .assert MLI::MARK::POSITION = MLI::EOF::EOF, error
62 write: lda fdtab + FD::REF_NUM,y
66 ; Save count for epilog
69 stx mliparam + MLI::RW::TRANS_COUNT
70 sta mliparam + MLI::RW::TRANS_COUNT+1
72 ; Check for zero count
80 ; Replace '\n' with '\r'
85 ; Set hi bit and write to device
88 cmp #$E0 ; Test for lowercase
90 and #$DF ; Convert to uppercase
92 output: jsr COUT ; Preserves X and Y