]> git.sur5r.net Git - cc65/blob - testcode/lib/gamate/lcdtest.s
conio and most other stuff working now
[cc65] / testcode / lib / gamate / lcdtest.s
1
2         .export _main
3 .include "gamate.inc"
4
5 .zeropage
6 addr: .word 0
7 psa:    .word 0
8
9 .data
10 temp_x: .byte 0
11 temp_y: .byte   0
12 temp_a: .byte 0
13 irq_count:      .byte 0
14 nmi_count:      .byte 0
15 psx:    .byte 0
16 psy:    .byte 0
17 count: .word 0
18 counted: .word 0
19 xpos: .byte 0
20 ypos:   .byte 0
21
22 .code
23
24 chars:
25         .incbin "cga2.chr"
26
27 hex2asc:        .byte "0123456789abcdef"
28 format:         .byte "IrqNmiCountXposYpos", 0
29 xdesc:          .byte "0123456789abcdefghijklmnopqrstuv", 0
30 ydesc:          .byte "0123456789ABCDEFGHIJKLMNOPQRSTUV", 0
31
32 ;-------------------------------------------------------------------------------
33
34 .proc   nmi
35
36         inc     nmi_count
37         rts
38 .endproc
39
40         .export IRQStub
41
42 .proc   IRQStub
43
44         inc     irq_count
45         lda     count
46         sta     counted
47         lda     count+1
48         sta     counted+1
49         lda     #0
50         sta     count
51         sta     count+1
52         rts
53 .endproc
54
55 ;-------------------------------------------------------------------------------
56
57 .proc   _main
58
59         lda #0
60         sta     LCD_XPOS
61         sta LCD_YPOS
62         cli
63         lda     #LCD_MODE_INC_Y
64         sta     LCD_MODE
65
66         lda #0
67         sta LCD_X
68         lda #<xdesc
69         ldx     #>xdesc
70         ldy #0
71         jsr printstring
72
73         lda #LCD_XPOS_PLANE2
74         sta LCD_X
75         lda #<xdesc
76         ldx     #>xdesc
77         ldy #128
78         jsr printstring
79
80         lda #0
81         sta LCD_X
82         lda #<ydesc
83         ldx     #>ydesc
84         ldy #0
85         sty     LCD_Y
86         jsr printstringy
87
88 ;                       lda #$90;(LCD_XPOS_PLANE2|(128/8))
89         lda #(LCD_XPOS_PLANE2|(128/8))
90         sta LCD_X
91         lda #<ydesc
92         ldx     #>ydesc
93         ldy #0
94         sty     LCD_Y
95         jsr printstringy
96
97         lda #<format
98         ldx     #>format
99         ldy #8
100         jsr printstring
101
102         lda #0
103         sta LCD_MODE
104         lda     #24/8
105         sta LCD_X
106         lda #24
107         sta LCD_Y
108         lda #'X'
109         jsr printsign
110         lda #$80
111         sta LCD_MODE
112         lda #32/8
113         sta LCD_X
114         lda #32
115         sta LCD_Y
116         lda #'Y'
117         jsr printsign
118         lda #$c0
119         sta LCD_MODE
120         lda #40/8
121         sta LCD_X
122         lda     #40
123         sta LCD_Y
124         lda #'Z'
125         jsr printsign
126
127         lda #0
128         sta LCD_MODE
129         lda     #LCD_XPOS_PLANE2|(48/8)
130         sta LCD_X
131         lda #48
132         sta LCD_Y
133         lda #'x'
134         jsr printsign
135         lda #$80
136         sta LCD_MODE
137         lda     #(LCD_XPOS_PLANE2|(56/8))
138         sta LCD_X
139         lda #56
140         sta LCD_Y
141         lda #'y'
142         jsr printsign
143         lda #$c0
144         sta LCD_MODE
145         lda     #(LCD_XPOS_PLANE2|(64/8))
146         sta LCD_X
147         lda     #64
148         sta LCD_Y
149         lda #'z'
150         jsr printsign
151
152         lda #LCD_MODE_INC_Y|1
153         sta LCD_MODE
154         lda     #16/8
155         sta LCD_X
156         lda #72
157         sta LCD_Y
158         lda #'V'
159         jsr printsign
160         lda #LCD_MODE_INC_Y|2
161         sta LCD_MODE
162         lda     #24/8
163         sta LCD_X
164         lda #72
165         sta LCD_Y
166         lda #'V'
167         jsr printsign
168         lda #LCD_MODE_INC_Y|4
169         sta LCD_MODE
170         lda     #32/8
171         sta LCD_X
172         lda #72
173         sta LCD_Y
174         lda #'V'
175         jsr printsign
176         lda #LCD_MODE_INC_Y|8
177         sta LCD_MODE
178         lda     #40/8
179         sta LCD_X
180         lda #72
181         sta LCD_Y
182         lda #'V'
183         jsr printsign
184
185
186         lda #1
187         sta ZP_NMI_ENABLE
188
189 loop:   lda count
190         clc
191         adc     #1
192         sta count
193         lda count+1
194         adc     #1
195         sta count+1
196         lda irq_count
197         cmp irq_count
198         beq     loop
199
200         jsr inputs
201         lda     #LCD_MODE_INC_Y
202         sta     LCD_MODE
203         jsr printy
204
205
206
207         jmp loop
208 .endproc
209
210
211 ;-------------------------------------------------------------------------------
212
213 .proc printy
214         ldx     #0
215         ldy     #16
216         lda irq_count
217         jsr printhex
218
219         ldx     #3
220         ldy     #16
221         lda nmi_count
222         jsr printhex
223
224         ldx #6
225         ldy #16
226         lda counted+1
227         jsr printhex
228         ldx #8
229         ldy #16
230         lda counted
231         jsr printhex
232
233         ldx #11
234         ldy #16
235         lda xpos
236         jsr printhex
237         ldx #14
238         ldy #16
239         lda ypos
240         jsr printhex
241         rts
242 .endproc
243
244 .proc inputs
245         lda JOY_DATA
246         and #JOY_DATA_UP
247         bne notup
248         dec     ypos
249         lda ypos
250         sta LCD_YPOS
251 notup:lda JOY_DATA
252         and #JOY_DATA_DOWN
253         bne notdown
254         inc ypos
255         lda ypos
256         sta LCD_YPOS
257 notdown:lda JOY_DATA
258         and #JOY_DATA_LEFT
259         bne notleft
260         dec xpos
261         lda xpos
262         sta LCD_XPOS
263 notleft:lda JOY_DATA
264         and #JOY_DATA_RIGHT
265         bne notright
266         inc xpos
267         lda xpos
268         sta LCD_XPOS
269 notright:lda JOY_DATA
270         and #JOY_DATA_START
271         bne notstart
272 notstart:lda JOY_DATA
273         and #JOY_DATA_SELECT
274         bne notselect
275 notselect:lda JOY_DATA
276         and #JOY_DATA_FIRE_A
277         bne notbuttona
278 notbuttona:lda JOY_DATA
279         and #JOY_DATA_FIRE_B
280         bne notbuttonb
281 notbuttonb:rts
282 .endproc
283
284 ;-------------------------------------------------------------------------------
285
286 .proc printstring
287         sta     psa
288         stx psa+1
289         ldx #0
290         stx     psx
291         sty psy
292 printstring2:
293         ldy     #0
294         lda     (psa),y
295         beq printstring1
296         ldx psx
297         stx     LCD_X
298         ldy psy
299         sty     LCD_Y
300         jsr printsign
301         inc psx
302         lda psa
303         clc
304         adc     #1
305         sta psa
306         lda psa+1
307         adc     #0
308         sta psa+1
309         jmp printstring2
310 printstring1:
311         rts
312 .endproc
313
314 .proc printstringy
315         sta     psa
316         stx psa+1
317 printstring2:
318         ldy     #0
319         lda     (psa),y
320         beq printstring1
321         jsr printsign
322         lda psa
323         clc
324         adc     #1
325         sta psa
326         lda psa+1
327         adc     #0
328         sta psa+1
329         jmp printstring2
330 printstring1:
331         rts
332 .endproc
333
334
335 .proc printhex
336         pha
337         lsr
338         lsr
339         lsr
340         lsr
341         and #$0f
342         stx     temp_x
343         tax
344         lda     hex2asc,x
345         ldx     temp_x
346         stx     LCD_X
347         sty     LCD_Y
348         jsr     printsign
349         pla
350         and     #$0f
351         inx
352         stx     temp_x
353         tax
354         lda     hex2asc,x
355         ldx     temp_x
356         stx     LCD_X
357         sty     LCD_Y
358         jmp printsign
359 .endproc
360
361 .proc printsign
362         sty     temp_y
363         stx     temp_x
364         sta     temp_a
365
366         lda     temp_a
367         sta     addr
368
369         lda     #0
370         sta     addr+1
371         asl     addr
372         rol     addr+1
373         asl     addr
374         rol     addr+1
375         asl     addr
376         rol     addr+1
377
378         lda     addr
379         clc
380         adc     #<chars
381         sta     addr
382         lda     addr+1
383         adc     #>chars
384         sta     addr+1
385
386         ldx     #8
387         ldy     #0
388 printsign1:
389         lda     (addr),y
390         sta     LCD_DATA
391         iny
392         dex
393         bne     printsign1
394
395         ldx     temp_x
396         ldy     temp_y
397         rts
398 .endproc
399