]> git.sur5r.net Git - cc65/blob - libsrc/c128/write.s
improved handling of cursor display and position
[cc65] / libsrc / c128 / write.s
1 ;
2 ; Ullrich von Bassewitz, 30.05.1998
3 ;
4 ; int write (int fd, const void* buf, int count);
5 ;
6 ; THIS IS A HACK!
7 ;
8
9         .export         _write
10         .import         popax
11         .importzp       ptr1, ptr2, ptr3
12
13         .include        "../cbm/cbm.inc"
14
15 _write: jsr     popax           ; get count
16         sta     ptr2
17         stx     ptr2+1          ; save it for later
18         sta     ptr3
19         stx     ptr3+1          ; save for function result
20         jsr     popax           ; get buf
21         sta     ptr1
22         stx     ptr1+1
23         jsr     popax           ; get fd and discard it
24
25 L1:     lda     ptr2
26         ora     ptr2+1          ; count zero?
27         beq     L9
28         ldy     #0
29         lda     (ptr1),y
30         jsr     BSOUT
31         inc     ptr1
32         bne     L2
33         inc     ptr1+1
34 L2:     lda     ptr2
35         bne     L3
36         dec     ptr2
37         dec     ptr2+1
38         jmp     L1
39 L3:     dec     ptr2
40         jmp     L1
41
42 ; No error, return count
43
44 L9:     lda     ptr3
45         ldx     ptr3+1
46         rts
47