]> git.sur5r.net Git - cc65/blob - libsrc/c64/soft80_conio.s
some more rework, second attempt on fixing the color issues. added ifdefs to disable...
[cc65] / libsrc / c64 / soft80_conio.s
1 ;
2 ; Low level stuff for screen output/console input
3 ;
4
5         .constructor    soft80_init, 24
6         .destructor     soft80_shutdown
7
8         .import         soft80_kclrscr
9         .import         __textcolor, __bgcolor
10
11         .importzp       ptr1, ptr2, ptr3
12
13         .include        "c64.inc"
14         .include        "soft80.inc"
15
16 soft80_init:
17         lda     #$3b
18         sta     VIC_CTRL1
19         lda     #$00
20         sta     CIA2_PRA
21         lda     #$68
22         sta     VIC_VIDEO_ADR
23         lda     #$c8
24         sta     VIC_CTRL2
25
26 ; copy charset to RAM under I/O -> FIXME: generate at runtime
27         sei
28         lda     $01
29         pha
30         lda     #$34
31         sta     $01
32
33         lda     #>soft80_charset
34         sta     ptr1+1
35         lda     #<soft80_charset
36         sta     ptr1
37         lda     #>soft80_lo_charset
38         sta     ptr2+1
39         lda     #<soft80_lo_charset
40         sta     ptr2
41         lda     #>soft80_hi_charset
42         sta     ptr3+1
43         lda     #<soft80_hi_charset
44         sta     ptr3
45
46         ldx     #4
47 @l2:
48         ldy     #0
49 @l1:
50         lda     (ptr1),y
51         sta     (ptr2),y
52         asl     a
53         asl     a
54         asl     a
55         asl     a
56         sta     (ptr3),y
57         iny
58         bne     @l1
59         inc     ptr1+1
60         inc     ptr2+1
61         inc     ptr3+1
62         dex
63         bne     @l2
64
65         pla
66         sta     $01
67         cli
68
69         lda     646                     ; use current textcolor
70         and     #$0f
71         sta     __textcolor
72
73         lda     VIC_BG_COLOR0           ; use current bgcolor
74         and     #$0f
75         sta     __bgcolor
76         asl     a
77         asl     a
78         asl     a
79         asl     a
80         ora     __textcolor
81         sta     CHARCOLOR
82
83         jmp     soft80_kclrscr
84
85 soft80_shutdown:
86         lda     #$1b
87         sta     VIC_CTRL1
88         lda     #$03
89         sta     CIA2_PRA
90         lda     #$15
91         sta     VIC_VIDEO_ADR
92         rts
93
94         .rodata
95 soft80_charset:
96         .byte $0f,$03,$0f,$00,$0f,$07,$05,$0e
97         .byte $0f,$05,$0e,$0b,$0f,$0b,$0f,$0f
98         .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$00
99         .byte $00,$0f,$0e,$0f,$0c,$0b,$03,$03
100         .byte $0f,$0b,$05,$05,$0b,$05,$0b,$0b
101         .byte $0d,$07,$0f,$0f,$0f,$0f,$0f,$0d
102         .byte $0b,$0b,$0b,$0b,$05,$01,$0b,$01
103         .byte $0b,$0b,$0f,$0f,$0d,$0f,$07,$0b
104         .byte $0b,$0f,$0f,$0f,$0f,$0f,$0f,$0f
105         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f
106         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f
107         .byte $0f,$0f,$0f,$09,$07,$03,$0b,$0f
108         .byte $0f,$0b,$03,$0b,$03,$01,$01,$0b
109         .byte $05,$01,$09,$05,$07,$05,$05,$0b
110         .byte $03,$0b,$03,$0b,$01,$05,$05,$05
111         .byte $05,$05,$01,$0b,$07,$0b,$0f,$0a
112
113         .byte $0f,$03,$0f,$0f,$0f,$07,$05,$0e
114         .byte $0f,$0a,$0e,$0b,$0f,$0b,$0f,$0f
115         .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$00
116         .byte $00,$0f,$0e,$0f,$0c,$0b,$03,$03
117         .byte $0f,$0b,$05,$05,$09,$05,$05,$0b
118         .byte $0b,$0b,$05,$0b,$0f,$0f,$0f,$0d
119         .byte $05,$0b,$05,$05,$05,$07,$05,$05
120         .byte $05,$05,$0f,$0f,$0b,$0f,$0b,$05
121         .byte $05,$0f,$07,$0f,$0d,$0f,$09,$0f
122         .byte $07,$0b,$0d,$07,$03,$0f,$0f,$0f
123         .byte $0f,$0f,$0f,$0f,$0b,$0f,$0f,$0f
124         .byte $0f,$0f,$0f,$0b,$07,$0b,$0b,$0b
125         .byte $0f,$0b,$05,$05,$05,$07,$07,$05
126         .byte $05,$0b,$0d,$05,$07,$01,$01,$05
127         .byte $05,$05,$05,$05,$0b,$05,$05,$05
128         .byte $05,$05,$0d,$0b,$07,$0b,$0f,$0a
129
130         .byte $0f,$03,$0f,$0f,$0f,$07,$0a,$0e
131         .byte $0f,$05,$0e,$0b,$0f,$0b,$0f,$0f
132         .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$0f
133         .byte $00,$0f,$0d,$0f,$0c,$0b,$03,$03
134         .byte $0f,$0b,$05,$00,$07,$0d,$0b,$07
135         .byte $0b,$0b,$0b,$0b,$0f,$0f,$0f,$0b
136         .byte $01,$03,$0d,$0d,$05,$03,$07,$0d
137         .byte $05,$05,$0b,$0b,$0b,$08,$0b,$0d
138         .byte $01,$0b,$07,$09,$0d,$0b,$0b,$09
139         .byte $07,$0f,$0f,$07,$0b,$05,$03,$0b
140         .byte $03,$09,$03,$09,$01,$05,$05,$05
141         .byte $05,$05,$01,$0b,$0b,$0b,$05,$0b
142         .byte $0f,$05,$05,$07,$05,$07,$07,$07
143         .byte $05,$0b,$0d,$03,$07,$01,$01,$05
144         .byte $05,$05,$05,$07,$0b,$05,$05,$05
145         .byte $0b,$05,$0b,$0b,$0b,$0b,$0a,$05
146
147         .byte $09,$03,$0f,$0f,$0f,$07,$0a,$0e
148         .byte $0f,$0a,$0e,$08,$0f,$08,$03,$0f
149         .byte $08,$00,$00,$03,$07,$07,$0e,$0f
150         .byte $0f,$0f,$05,$0f,$0c,$03,$03,$03
151         .byte $0f,$0b,$0f,$05,$0b,$0b,$0b,$0f
152         .byte $0b,$0b,$01,$01,$0f,$01,$0f,$0b
153         .byte $05,$0b,$0b,$0b,$01,$0d,$03,$0b
154         .byte $0b,$09,$0f,$0f,$07,$0f,$0d,$0b
155         .byte $01,$0d,$03,$07,$09,$05,$01,$05
156         .byte $03,$03,$0d,$05,$0b,$01,$05,$05
157         .byte $05,$05,$05,$07,$0b,$05,$05,$05
158         .byte $05,$05,$0d,$0b,$0b,$0b,$05,$00
159         .byte $00,$01,$03,$07,$05,$03,$03,$01
160         .byte $01,$0b,$0d,$03,$07,$05,$01,$05
161         .byte $03,$05,$03,$0b,$0b,$05,$05,$01
162         .byte $0b,$0b,$0b,$00,$0b,$0b,$05,$05
163
164         .byte $09,$03,$00,$0f,$0f,$07,$05,$0e
165         .byte $05,$05,$0e,$08,$0c,$08,$03,$0f
166         .byte $08,$00,$00,$03,$07,$07,$0e,$0f
167         .byte $0f,$0f,$03,$03,$0f,$03,$0f,$0c
168         .byte $0f,$0f,$0f,$00,$0d,$07,$04,$0f
169         .byte $0b,$0b,$0b,$0b,$0f,$0f,$0f,$0b
170         .byte $05,$0b,$07,$0d,$0d,$0d,$05,$0b
171         .byte $05,$0d,$0f,$0f,$0b,$08,$0b,$0b
172         .byte $07,$09,$05,$07,$05,$01,$0b,$05
173         .byte $05,$0b,$0d,$03,$0b,$01,$05,$05
174         .byte $05,$05,$07,$0b,$0b,$05,$05,$01
175         .byte $0b,$05,$0b,$0b,$0b,$0b,$0f,$00
176         .byte $00,$05,$05,$07,$05,$07,$07,$05
177         .byte $05,$0b,$0d,$03,$07,$05,$01,$05
178         .byte $07,$05,$03,$0d,$0b,$05,$05,$01
179         .byte $0b,$0b,$0b,$00,$07,$0b,$05,$0a
180
181         .byte $0f,$03,$00,$0f,$0f,$07,$05,$0e
182         .byte $05,$0a,$0e,$0b,$0c,$0f,$0b,$0f
183         .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f
184         .byte $0f,$00,$03,$03,$0f,$0f,$0f,$0c
185         .byte $0f,$0f,$0f,$05,$03,$05,$05,$0f
186         .byte $0b,$0b,$05,$0b,$0b,$0f,$0b,$07
187         .byte $05,$0b,$07,$05,$0d,$05,$05,$0b
188         .byte $05,$05,$0b,$0b,$0b,$0f,$0b,$0f
189         .byte $05,$05,$05,$07,$05,$07,$0b,$09
190         .byte $05,$0b,$0d,$05,$0b,$05,$05,$05
191         .byte $03,$09,$07,$0d,$0b,$05,$0b,$01
192         .byte $05,$09,$07,$0b,$0d,$0b,$0f,$0b
193         .byte $0f,$05,$05,$05,$05,$07,$07,$05
194         .byte $05,$0b,$05,$05,$07,$05,$05,$05
195         .byte $07,$0b,$05,$05,$0b,$05,$0b,$05
196         .byte $05,$0b,$07,$0b,$07,$0b,$05,$0a
197
198         .byte $0f,$03,$00,$0f,$0f,$07,$0a,$0e
199         .byte $0a,$05,$0e,$0b,$0c,$0f,$0b,$00
200         .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f
201         .byte $0f,$00,$07,$03,$0f,$0f,$0f,$0c
202         .byte $0f,$0b,$0f,$05,$0b,$05,$08,$0f
203         .byte $0d,$07,$0f,$0f,$0b,$0f,$0b,$07
204         .byte $0b,$01,$01,$0b,$0d,$0b,$0b,$0b
205         .byte $0b,$0b,$0f,$0b,$0d,$0f,$07,$0b
206         .byte $0b,$09,$03,$09,$09,$09,$0b,$0d
207         .byte $05,$01,$0d,$05,$01,$05,$05,$0b
208         .byte $07,$0d,$07,$03,$0d,$09,$0b,$05
209         .byte $05,$0d,$01,$09,$0d,$03,$0f,$0b
210         .byte $0f,$05,$03,$0b,$03,$01,$07,$0b
211         .byte $05,$01,$0b,$05,$01,$05,$05,$0b
212         .byte $07,$0d,$05,$0b,$0b,$0b,$0b,$05
213         .byte $05,$0b,$01,$0b,$0b,$0b,$05,$05
214
215         .byte $0f,$03,$00,$0f,$00,$07,$0a,$0e
216         .byte $0a,$0a,$0e,$0b,$0c,$0f,$0b,$00
217         .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f
218         .byte $0f,$00,$0f,$03,$0f,$0f,$0f,$0c
219         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f
220         .byte $0f,$0f,$0f,$0f,$07,$0f,$0f,$0f
221         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f
222         .byte $0f,$0f,$0f,$07,$0f,$0f,$0f,$0f
223         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$03
224         .byte $0f,$0f,$03,$0f,$0f,$0f,$0f,$0f
225         .byte $07,$0d,$0f,$0f,$0f,$0f,$0f,$0f
226         .byte $0f,$03,$0f,$0f,$0f,$0f,$0f,$0f
227         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f
228         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f
229         .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f
230         .byte $0f,$0f,$0f,$0b,$0b,$0b,$0f,$05