]> git.sur5r.net Git - cc65/blob - libsrc/apple2/write.s
Add new maintainer
[cc65] / libsrc / apple2 / write.s
1         ;;
2         ;; Kevin Ruland
3         ;;
4         ;; int write (int fd, const void* buf, int count);
5         ;;
6         ;; for now will only write to fd = stdout
7         ;;
8
9         .export         _write
10         .import         popax, COUT
11         .importzp       ptr1, ptr2, ptr3
12
13 .proc   _write
14
15         sta     ptr2            ; Save count for later
16         stx     ptr2+1
17         sta     ptr3
18         sta     ptr3+1          ; save for result
19         jsr     popax           ; get buf
20         sta     ptr1
21         stx     ptr1+1
22         jsr     popax           ; get fd and discard
23 L1:     lda     ptr2
24         ora     ptr2+1          ; count zero?
25         beq     L9
26         ldy     #$00
27         lda     (ptr1),y
28         cmp     #$0A            ; Check for \n = Crtl-j
29         bne     rawout
30         lda     #$0D            ; Issue cr
31 rawout:
32         ora     #$80
33         jsr     COUT
34         inc     ptr1
35         bne     L2
36         inc     ptr1+1
37 L2:     lda     ptr2
38         bne     L3
39         dec     ptr2
40         dec     ptr2+1
41         jmp     L1
42 L3:     dec     ptr2
43         jmp     L1
44
45 ; No error, return count
46
47 L9:     lda     ptr3
48         ldx     ptr3+1
49         rts
50
51 .endproc
52