]> git.sur5r.net Git - cc65/blob - libsrc/apple2/cputc.s
New code from Oliver Schmidt
[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         beq     left
35         cmp     #$0A            ; Test for \n = line feed
36         beq     newline
37         ora     #$80            ; Turn on high bit
38         cmp     #$E0            ; Test for lowercase
39         bcc     cputdirect
40         and     #$DF            ; Convert to uppercase
41
42 cputdirect:
43         jsr     putchar
44         inc     CH              ; Bump to next column
45         lda     CH
46         cmp     #40
47         bne     done
48 left:   lda     #$00            ; Goto left edge of screen
49         sta     CH
50 done:   rts
51
52 newline:
53         inc     CV
54         lda     CV
55         cmp     #24
56         bne     :+
57         lda     #$00
58         sta     CV
59 :       jsr     BASCALC
60         rts
61                 
62 putchar:        
63         and     INVFLG          ; Apply normal, inverse, flash
64         ldy     CH
65         sta     (BASL),Y
66         rts
67
68 _gotoxy:
69         sta     CV              ; Store Y
70         jsr     BASCALC
71         jsr     popa            ; Get X
72         sta     CH              ; Store X
73         rts