]> git.sur5r.net Git - cc65/blob - libsrc/pce/conio.s
Fixed and improved some pce comments.
[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             ; size of a pallette
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 ; Set background to black.
46
47         stz     VCE_ADDR_LO
48         stz     VCE_ADDR_HI
49         stz     VCE_DATA_LO
50         stz     VCE_DATA_HI
51
52         rts
53
54 ;----------------------------------------------------------------------------
55 ; The character tiles use only two colors from each pallette.  Color zero
56 ; comes from pallette zero; color one is different in each pallette.  The
57 ; color of a character is set by choosing one of the 16 pallettes.
58
59 conio_init:
60         ; Load font
61         st0     #VDC_MAWR
62         st1     #<$2000
63         st2     #>$2000
64
65         ; pointer to font data
66         lda     #<font
67         sta     ptr1
68         lda     #>font
69         sta     ptr1+1
70
71         st0     #VDC_VWR        ; VWR
72
73         lda     #0
74         sta     tmp1
75         jsr     copy
76
77         lda     #<font
78         sta     ptr1
79         lda     #>font
80         sta     ptr1+1
81
82         lda     #$FF
83         sta     tmp1
84         jsr     copy
85
86         ldx     #0              ; white on black
87         stx     BGCOLOR
88         inx
89         stx     CHARCOLOR
90
91         rts
92
93 copy:
94         ldy     #$80            ; 128 chars
95 charloop:
96         ldx     #$08            ; 8 bytes/char
97 lineloop:
98         lda     (ptr1)
99         eor     tmp1
100         sta     VDC_DATA_LO     ; bitplane 0
101         stz     VDC_DATA_HI     ; bitplane 1
102
103         clc                     ; increment font pointer
104         lda     ptr1
105         adc     #$01
106         sta     ptr1
107         lda     ptr1+1
108         adc     #$00
109         sta     ptr1+1
110         dex
111         bne     lineloop        ; next bitplane-0 byte
112         ldx     #$08            ; fill bitplanes 2 and 3 with 0
113 fillloop:
114         st1     #<$0000
115         st2     #>$0000
116         dex
117         bne     fillloop        ; next byte
118         dey
119         bne     charloop        ; next character
120
121         rts
122
123 .rodata
124 font:   .include        "vga.inc"