]> git.sur5r.net Git - cc65/blob - libsrc/apple2/cputc.s
Add new maintainer
[cc65] / libsrc / apple2 / cputc.s
1 ;
2 ; Ullrich von Bassewitz, 06.08.1998
3 ;
4 ; void cputcxy (unsigned char x, unsigned char y, char c);
5 ; void cputc (char c);
6 ;
7
8         .constructor    initconio
9         .export         _cputcxy, _cputc
10         .export         _gotoxy, cputdirect
11         .export         newline, putchar
12
13         .import         popa, SETWND, BASCALC
14
15         .include        "apple2.inc"
16
17 initconio:
18         lda     #$FF            ; Normal character display mode
19         sta     INVFLG
20         lda     #$00
21         jsr     SETWND          ; Reset text window to full screen
22         rts
23
24 ; Plot a character - also used as internal function
25
26 _cputcxy:
27         pha                     ; Save C
28         jsr     popa            ; Get Y
29         jsr     _gotoxy
30         pla                     ; Restore C
31
32 _cputc:
33         cmp     #$0D            ; Test for \r = carrage return
34         bne     L1
35         lda     #$00            ; Goto left edge of screen
36         sta     CH
37         rts                     ; That's all we do
38 L1:
39         cmp     #$0A            ; Test for \n = line feed
40         beq     newline
41         ora     #$80            ; Turn on high bit
42         cmp     #$E0            ; Test for lowercase
43         bmi     cputdirect
44         and     #$DF            ; Convert to uppercase
45
46 cputdirect:
47         jsr     putchar
48         inc     CH              ; Bump to next column
49         lda     CH
50         cmp     #40
51         bne     return
52         lda     #$00
53         sta     CH
54 return: 
55         rts
56
57 putchar:        
58         and     INVFLG          ; Apply normal, inverse, flash
59         ldy     CH
60         sta     (BASL),Y
61         rts
62
63 newline:
64         lda     CH
65         pha
66         inc     CV
67         lda     CV
68         cmp     #24
69         bne     L2
70         lda     #$00
71         sta     CV
72 L2:
73         jsr     BASCALC
74         pla
75         sta     CH
76         rts
77                 
78 _gotoxy:
79         sta     CV              ; Store Y
80         jsr     BASCALC
81         jsr     popa            ; Get X
82         sta     CH              ; Store X
83         rts