]> git.sur5r.net Git - cc65/blob - libsrc/telestrat/write.s
remove TABs
[cc65] / libsrc / telestrat / write.s
1 ;
2 ; jede jede@oric.org 2017-01-22
3
4         .export         _write
5         .import         popax, popptr1
6         .importzp       ptr1, ptr2, ptr3, tmp1
7
8         .include        "telestrat.inc"
9
10 ; int write (int fd, const void* buf, int count);
11 .proc   _write
12
13         sta     ptr3
14         stx     ptr3+1          ; save count as result
15
16         eor     #$FF
17         sta     ptr2
18         txa
19         eor     #$FF
20         sta     ptr2+1          ; remember -count-1
21
22         jsr     popptr1         ; get buf
23         jsr     popax           ; get fd and discard
24
25         ; if fd=0001 then it stdout
26         cpx     #0
27         beq     next
28         jmp     L1
29 next:
30         cmp     #1
31         beq     L1
32
33         ; here it's a file opened
34         lda     ptr1
35         sta     PTR_READ_DEST
36         lda     ptr1+1
37         sta     PTR_READ_DEST+1
38         lda     ptr3
39         ldy     ptr3+1
40         BRK_TELEMON  XFWRITE
41         ;  compute nb of bytes written
42
43
44         lda     PTR_READ_DEST+1
45         sec
46         sbc     ptr1+1
47         tax
48         lda     PTR_READ_DEST
49         sec
50         sbc     ptr1
51         rts
52
53
54 L1:     inc     ptr2
55         bne     L2
56         inc     ptr2+1
57         beq     L9
58 L2:     ldy     #0
59         lda     (ptr1),y
60         tax
61         cpx     #$0A            ; check for \n
62         bne     L3
63         BRK_TELEMON  XWR0       ; macro send char to screen (channel 0 in telemon terms)
64         lda     #$0D            ; return to the beggining of the line
65         BRK_TELEMON  XWR0       ; macro
66
67
68         ldx     #$0D
69 L3:
70         BRK_TELEMON  XWR0       ; macro
71
72         inc     ptr1
73         bne     L1
74         inc     ptr1+1
75         jmp     L1
76
77         ; No error, return count
78
79 L9:     lda     ptr3
80         ldx     ptr3+1
81         rts
82
83 .endproc