]> git.sur5r.net Git - cc65/blob - libsrc/pce/conio.s
35276c2396531261b8805096828774bdd1b47282
[cc65] / libsrc / pce / conio.s
1         .constructor    initconio, 24
2
3         .import         vce_init
4         .import         psg_init
5         .import         vdc_init
6         .import         colors
7         .importzp       ptr1, tmp1
8
9         .include        "pce.inc"
10         .include        "extzp.inc"
11         .macpack        longbranch
12
13         .segment        "ONCE"
14 initconio:
15         jsr     vce_init
16         jsr     psg_init
17         jsr     conio_init
18         jsr     set_palette
19
20         st0     #VDC_CR
21         st1     #<$0088
22         st2     #>$0088
23         rts
24
25 set_palette:
26         stz     VCE_ADDR_LO
27         stz     VCE_ADDR_HI
28
29         ldx     #0
30 @lp:
31         ldy     #16
32 @lp1:
33         lda     colors,x
34         sta     VCE_DATA_LO
35         lda     colors+1,x
36         sta     VCE_DATA_HI
37         dey
38         bne     @lp1
39
40         inx
41         inx
42         cpx     #16 * 2
43         jne     @lp
44
45         stz     VCE_ADDR_LO
46         stz     VCE_ADDR_HI
47         stz     VCE_DATA_LO
48         stz     VCE_DATA_HI
49
50         rts
51
52 conio_init:
53         ; Load font
54         st0     #VDC_MAWR
55         st1     #<$2000
56         st2     #>$2000
57
58         ; ptr to font data
59         lda     #<font
60         sta     ptr1
61         lda     #>font
62         sta     ptr1+1
63
64         st0     #VDC_VWR        ; VWR
65
66         lda     #0
67         sta     tmp1
68         jsr     copy
69
70         lda     #<font
71         sta     ptr1
72         lda     #>font
73         sta     ptr1+1
74
75         lda     #$FF
76         sta     tmp1
77         jsr     copy
78
79         ldx     #0
80         stx     BGCOLOR
81         inx
82         stx     CHARCOLOR
83
84         rts
85
86 copy:
87         ldy     #$80            ; 128 chars
88 charloop:
89         ldx     #$08            ; 8 bytes/char
90 lineloop:
91         lda     (ptr1)
92         eor     tmp1
93         sta     VDC_DATA_LO     ; bitplane 0
94         stz     VDC_DATA_HI     ; bitplane 1
95
96         clc                     ; increment font pointer
97         lda     ptr1
98         adc     #$01
99         sta     ptr1
100         lda     ptr1+1
101         adc     #$00
102         sta     ptr1+1
103         dex
104         bne     lineloop        ; next bitplane 0 byte
105         ldx     #$08            ; fill bitplane 2/3 with 0
106 fillloop:
107         st1     #$00
108         st2     #$00
109         dex
110         bne     fillloop        ; next byte
111         dey
112         bne     charloop        ; next character
113
114         rts
115
116 .rodata
117 font:   .include        "vga.inc"