]> git.sur5r.net Git - cc65/blob - libsrc/apple2/write.s
Reworked version by Oliver Schmidt
[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
11         .import         popax
12
13         .importzp       ptr1, ptr2, ptr3
14
15         .include        "apple2.inc"
16
17 .proc   _write
18
19         sta     ptr2            ; Save count for later
20         stx     ptr2+1
21         sta     ptr3
22         sta     ptr3+1          ; save for result
23         jsr     popax           ; get buf
24         sta     ptr1
25         stx     ptr1+1
26         jsr     popax           ; get fd and discard
27 L1:     lda     ptr2
28         ora     ptr2+1          ; count zero?
29         beq     L9
30         ldy     #$00
31         lda     (ptr1),y
32         cmp     #$0A            ; Check for \n = Crtl-j
33         bne     rawout
34         lda     #$0D            ; Issue cr
35 rawout:
36         ora     #$80
37         jsr     COUT
38         inc     ptr1
39         bne     L2
40         inc     ptr1+1
41 L2:     lda     ptr2
42         bne     L3
43         dec     ptr2
44         dec     ptr2+1
45         jmp     L1
46 L3:     dec     ptr2
47         jmp     L1
48
49 ; No error, return count
50
51 L9:     lda     ptr3
52         ldx     ptr3+1
53         rts
54
55 .endproc
56