http://www.tienza.es/crux/src/www.jwz.org/xscreensaver/xscreensaver-5.05.tar.gz
[xscreensaver] / hacks / images / m6502 / demoscene.asm
1
2 start:
3   ldx #0
4 c:lda bottombar,x
5   cmp #$ff
6   beq init
7   sta $4e0,x
8   sta $5e0,x
9   inx
10   jmp c
11 init:
12   jsr initDraw
13   lda #0
14   sta $10 ; scrptr
15   sta $11 ; txtptr
16 loop:
17   jsr drawMain
18   jsr putfont
19   jsr scrollarea
20   jmp loop
21
22 scrollarea:
23   ldx #0
24 g:lda $521,x
25   sta $520,x
26   lda $541,x
27   sta $540,x
28   lda $561,x
29   sta $560,x
30   lda $581,x
31   sta $580,x
32   lda $5a1,x
33   sta $5a0,x
34   inx
35   cpx #31
36   bne g
37   rts
38
39 putfont:
40   lda $10 ; scrptr
41   cmp #0
42   bne noNext
43   inc $11
44   ldx $11
45   lda scrolltext,x
46   tax
47   lda fontSize,x
48   sta $10
49 noNext:
50   dec $10
51   ldx $11
52   lda scrolltext,x
53   cmp #$ff
54   bne notResetText
55   lda #0
56   sta $10
57   sta $11
58   rts
59
60 notResetText:
61   asl
62   tax
63   lda fontlookup,x
64   sta $2
65   inx
66   lda fontlookup,x
67   sta $3
68   lda #<fonts
69   clc
70   adc $2
71   sta $0
72   lda #>fonts
73   adc $3
74   sta $1
75   ldy $10
76   lda ($00),y
77   sta $53f
78   tya
79   clc
80   adc #6
81   tay
82   lda ($00),y
83   sta $55f
84   tya
85   clc
86   adc #6
87   tay
88   lda ($00),y
89   sta $57f
90   tya
91   clc
92   adc #6
93   tay
94   lda ($00),y
95   sta $59f
96   tya
97   clc
98   adc #6
99   tay
100   lda ($00),y
101   sta $5bf
102   rts
103
104 initDraw:
105   lda #<picture
106   sta $20
107   lda #>picture
108   sta $21
109   lda #$00
110   sta $22
111   lda #$02
112   sta $23
113   ldx #$0
114   rts
115 drawMain:
116   ldx #0
117   lda ($20,x)
118   cmp #$ff
119   beq done
120   sta ($22,x)
121   inc $20
122   lda $20
123   cmp #$00
124   bne n1
125   inc $21
126 n1:
127   inc $22
128   lda $22 
129   cmp #$00
130   bne done
131   lda $23
132   cmp #$05
133   beq done
134   inc $23
135 done:
136   rts
137
138 picture:
139   dcb 0,0,0,0,0,0,0,0,0,$b,$b,$c,$f,$f,$f,$f
140   dcb $f,$b,0,0,0,$b,$b,$c,$c,$f,$f,$b,0,0,0,0
141   dcb 0,0,0,0,0,0,0,0,0,$b,$c,$c,$f,$c,$f,$f
142   dcb $b,$b,$b,$b,$b,0,$b,$b,$c,$f,$f,$c,0,0,0,0
143   dcb 0,0,0,0,0,0,0,$b,0,$c,$b,$f,$c,$f,$f,$c
144   dcb $c,$b,0,$b,$c,$c,$c,$f,$f,1,$f,$c,$b,0,0,0
145   dcb 0,0,0,0,0,0,0,0,$b,$b,$c,$c,$c,$f,$f,$f
146   dcb $c,$c,$c,$c,$c,$c,$f,$c,$f,$f,$f,$f,$b,0,0,0
147   dcb 0,0,0,0,0,0,0,$b,0,0,$b,$c,$c,$f,$f,$f
148   dcb $f,$c,$f,$f,$f,$f,$f,$f,$f,1,$f,$f,$c,0,0,0
149   dcb 0,0,0,0,0,0,0,0,0,$b,$b,$b,$c,$f,$f,1
150   dcb $f,$f,$c,$f,$f,$f,1,$f,$f,$f,$f,$f,$f,0,0,0
151   dcb 0,0,0,0,0,0,0,0,0,$b,$b,$b,$b,$c,$f,1
152   dcb $f,$f,$f,$f,$f,$f,$f,$f,1,$f,$f,$f,$f,$b,0,0
153   dcb 0,0,0,0,0,0,0,0,$b,0,$b,$c,$b,$c,$c,1
154   dcb 1,$f,1,$f,1,$f,1,$f,$f,1,$f,$f,1,$b,0,0
155   dcb 0,0,0,0,0,0,0,$b,$b,$b,$c,$c,$b,$c,$f,1
156   dcb 1,1,$f,$f,1,$f,$f,1,$f,$f,$f,$f,1,$c,0,0
157   dcb 0,0,0,0,0,0,0,$b,$b,$c,$c,$c,$b,$c,$c,$f
158   dcb 1,1,1,$f,$f,1,$f,1,$f,1,$f,$f,1,$c,0,0
159   dcb 0,0,0,0,0,$b,$b,$b,$c,$c,$c,$f,$c,$c,$f,$f
160   dcb 1,1,1,1,$f,$f,$f,1,$f,1,$f,$f,$f,$f,0,0
161   dcb 0,0,0,0,0,0,$b,$c,$c,$c,$f,$c,$f,$c,$f,$f
162   dcb 1,1,1,1,1,$f,$f,1,$f,$f,$f,$f,1,$f,$b,0
163   dcb 0,0,0,0,$b,$b,$b,$c,$c,$f,$c,$f,$f,$c,$f,$f
164   dcb 1,1,1,1,1,$f,$f,$f,1,$f,$f,$f,1,$c,$b,$b
165   dcb 0,0,0,0,$b,$b,$c,$f,$c,$f,$f,$f,$f,$f,$c,$f
166   dcb 1,1,1,1,1,$f,$f,$f,1,$f,$f,$f,$f,$f,$b,$b
167   dcb 0,0,0,0,$b,$c,$c,$c,$f,$f,$f,$f,$f,$f,$f,$f
168   dcb $f,1,1,1,$f,$b,$f,$f,$f,1,$f,$f,$f,$f,$b,$b
169   dcb 0,0,0,0,$b,$c,$c,$f,$c,$f,$f,$f,$f,$f,$f,$f
170   dcb $f,$f,$f,$c,$b,$f,$f,1,$f,$f,$f,$f,$f,$f,$c,$b
171   dcb 0,0,0,0,$b,$b,$c,$c,$f,$c,$f,$f,$f,$f,$f,$f
172   dcb $c,$c,$b,$c,$c,$f,$f,1,$c,$c,$f,$f,$f,$f,$c,$b
173   dcb 0,0,0,0,$b,$b,$c,$c,$c,$f,$f,$f,$f,$f,$f,$f
174   dcb $f,$f,$f,$f,$f,1,$f,$c,$b,$f,$c,$f,$c,$f,$c,$b
175   dcb 0,0,0,0,0,$b,$c,$c,$c,$c,$f,$f,$f,$f,$f,$f
176   dcb $f,$f,$f,$f,$f,$c,$b,$c,$c,$c,$f,$f,$c,$f,$c,$c
177   dcb 0,0,0,0,0,$b,$b,$c,$c,$c,$c,$c,$f,$f,$f,$f
178   dcb $f,$f,$f,$c,$b,$b,$c,$c,$c,$f,$c,$f,$f,$f,$c,$b
179   dcb 0,0,0,0,0,$b,$b,$b,$b,$c,$c,$f,$c,$f,$f,$f
180   dcb $c,$c,$b,$b,$b,$c,$b,$b,$c,$c,$f,$c,$c,$f,$c,$c
181   dcb 0,0,0,0,0,0,$b,$b,$c,$b,$c,$c,$c,$c,$c,$c
182   dcb $b,$b,$b,$b,$c,$b,$b,$c,$c,$f,$f,$f,$c,$c,$c,$b
183   dcb 0,0,0,0,0,0,0,0,$b,$b,$b,$c,$c,$c,$c,$c
184   dcb $c,$c,$b,$b,$b,$b,$c,$c,$f,$f,$f,$c,$c,$c,$c,$c
185   dcb $ff
186
187
188 fontSize:
189   dcb 5,5,5,5,5,5,5,5 ;abcdefgh
190   dcb 2,5,5,5,6,6,5,5 ;ijklmnop
191   dcb 6,5,5,4,5,6,6,6 ;qrstuvwx
192   dcb 6,5,2,3         ;yz.[SPACE]
193
194 ;
195 ; a=0, b=1, c=2, d=3....
196 ;
197
198 scrolltext:
199   dcb 0
200
201   dcb 14,13,11,24,27           ; "only "
202   dcb 03,04,15,19,07,27        ; "depth "
203   dcb 12,0,10,4,18,27          ; "makes "
204   dcb 8,19,27                  ; "it "
205   dcb 15,14,18,18,8,1,11,4     ; "possible"
206   dcb 26,26,26                 ; "..."
207   dcb 19,7,8,18,27             ; "this "
208   dcb 8,18,27                  ; "is "
209   dcb 19,7,4,27                ; "the "
210   dcb 5,8,17,18,19,27          ; "first "
211   dcb 3,4,12,14,27             ; "demo "
212   dcb 12,0,3,4,27              ; "made "
213   dcb 8,13,27                  ; "in "
214   dcb 19,7,8,18,27             ; "this "
215   dcb 4,13,21,26,26,26,26,27   ; "env.... "
216   dcb 7,14,15,4,27             ; "hope "
217   dcb 24,14,20,27              ; "you "
218   dcb 11,8,10,4,27             ; "like "
219   dcb 8,19,26,26,26,27,27      ; "it...  "
220   dcb 22,22,22,26              ; "www."
221   dcb 3,4,15,19,7,26           ; "depth."
222   dcb 14,17,6,27,27,27,27,27   ; "org     "
223
224   dcb $ff                      ; end of text
225
226 fontlookup:
227   dcb $00,$00 ;a
228   dcb $20,$00 ;b
229   dcb $40,$00 ;c
230   dcb $60,$00 ;d
231   dcb $80,$00 ;e
232   dcb $a0,$00 ;f
233   dcb $c0,$00 ;g
234   dcb $e0,$00 ;h
235   dcb $00,$01 ;i
236   dcb $20,$01 ;j
237   dcb $40,$01 ;k
238   dcb $60,$01 ;l
239   dcb $80,$01 ;m
240   dcb $a0,$01 ;n
241   dcb $c0,$01 ;o
242   dcb $e0,$01 ;p
243   dcb $00,$02 ;q
244   dcb $20,$02 ;r
245   dcb $40,$02 ;s
246   dcb $60,$02 ;t
247   dcb $80,$02 ;u
248   dcb $a0,$02 ;v
249   dcb $c0,$02 ;w
250   dcb $e0,$02 ;x
251   dcb $00,$03 ;y
252   dcb $20,$03 ;z
253   dcb $40,$03 ;.
254   dcb $60,$03 ;" "
255
256 fonts:
257   dcb 0,1,1,0,0,0
258   dcb 1,0,0,1,0,0
259   dcb 1,1,1,1,0,0
260   dcb 1,0,0,1,0,0
261   dcb 1,0,0,1,0,0
262   dcb 0,0
263
264   dcb 0,1,1,1,0,0
265   dcb 1,0,0,1,0,0
266   dcb 0,1,1,1,0,0
267   dcb 1,0,0,1,0,0
268   dcb 0,1,1,1,0,0
269   dcb 0,0
270
271   dcb 0,1,1,0,0,0
272   dcb 1,0,0,1,0,0
273   dcb 0,0,0,1,0,0
274   dcb 1,0,0,1,0,0
275   dcb 0,1,1,0,0,0
276   dcb 0,0
277
278   dcb 0,1,1,1,0,0
279   dcb 1,0,0,1,0,0
280   dcb 1,0,0,1,0,0
281   dcb 1,0,0,1,0,0
282   dcb 0,1,1,1,0,0
283   dcb 0,0
284
285   dcb 1,1,1,1,0,0
286   dcb 0,0,0,1,0,0
287   dcb 0,1,1,1,0,0
288   dcb 0,0,0,1,0,0
289   dcb 1,1,1,1,0,0
290   dcb 0,0
291
292   dcb 1,1,1,1,0,0
293   dcb 0,0,0,1,0,0
294   dcb 0,1,1,1,0,0
295   dcb 0,0,0,1,0,0
296   dcb 0,0,0,1,0,0
297   dcb 0,0
298
299   dcb 1,1,1,0,0,0
300   dcb 0,0,0,1,0,0
301   dcb 1,1,0,1,0,0
302   dcb 1,0,0,1,0,0
303   dcb 1,1,1,0,0,0
304   dcb 0,0
305
306   dcb 1,0,0,1,0,0
307   dcb 1,0,0,1,0,0
308   dcb 1,1,1,1,0,0
309   dcb 1,0,0,1,0,0
310   dcb 1,0,0,1,0,0
311   dcb 0,0
312
313   dcb 1,0,0,0,0,0
314   dcb 1,0,0,0,0,0
315   dcb 1,0,0,0,0,0
316   dcb 1,0,0,0,0,0
317   dcb 1,0,0,0,0,0
318   dcb 0,0
319
320   dcb 1,0,0,0,0,0
321   dcb 1,0,0,0,0,0
322   dcb 1,0,0,0,0,0
323   dcb 1,0,0,1,0,0
324   dcb 0,1,1,0,0,0
325   dcb 0,0
326
327   dcb 1,0,0,1,0,0
328   dcb 0,1,0,1,0,0
329   dcb 0,0,1,1,0,0
330   dcb 0,1,0,1,0,0
331   dcb 1,0,0,1,0,0
332   dcb 0,0
333
334   dcb 0,0,0,1,0,0
335   dcb 0,0,0,1,0,0
336   dcb 0,0,0,1,0,0
337   dcb 0,0,0,1,0,0
338   dcb 1,1,1,1,0,0
339   dcb 0,0
340
341   dcb 1,0,0,0,1,0
342   dcb 1,1,0,1,1,0
343   dcb 1,0,1,0,1,0
344   dcb 1,0,0,0,1,0
345   dcb 1,0,0,0,1,0
346   dcb 0,0
347
348   dcb 1,0,0,0,1,0
349   dcb 1,0,0,1,1,0
350   dcb 1,0,1,0,1,0
351   dcb 1,1,0,0,1,0
352   dcb 1,0,0,0,1,0
353   dcb 0,0
354
355   dcb 0,1,1,0,0,0
356   dcb 1,0,0,1,0,0
357   dcb 1,0,0,1,0,0
358   dcb 1,0,0,1,0,0
359   dcb 0,1,1,0,0,0
360   dcb 0,0
361
362   dcb 0,1,1,1,0,0
363   dcb 1,0,0,1,0,0
364   dcb 0,1,1,1,0,0
365   dcb 0,0,0,1,0,0
366   dcb 0,0,0,1,0,0
367   dcb 0,0
368
369   dcb 0,1,1,0,0,0
370   dcb 1,0,0,1,0,0
371   dcb 1,0,0,1,0,0
372   dcb 0,1,0,1,0,0
373   dcb 1,0,1,0,0,0
374   dcb 0,0
375
376   dcb 0,1,1,1,0,0
377   dcb 1,0,0,1,0,0
378   dcb 0,1,1,1,0,0
379   dcb 0,1,0,1,0,0
380   dcb 1,0,0,1,0,0
381   dcb 0,0
382
383   dcb 1,1,1,0,0,0
384   dcb 0,0,0,1,0,0
385   dcb 0,1,1,0,0,0
386   dcb 1,0,0,0,0,0
387   dcb 0,1,1,1,0,0
388   dcb 0,0
389
390   dcb 1,1,1,0,0,0
391   dcb 0,1,0,0,0,0
392   dcb 0,1,0,0,0,0
393   dcb 0,1,0,0,0,0
394   dcb 0,1,0,0,0,0
395   dcb 0,0
396
397   dcb 1,0,0,1,0,0
398   dcb 1,0,0,1,0,0
399   dcb 1,0,0,1,0,0
400   dcb 1,0,0,1,0,0
401   dcb 1,1,1,0,0,0
402   dcb 0,0
403
404   dcb 1,0,0,0,1,0
405   dcb 1,0,0,0,1,0
406   dcb 1,0,0,0,1,0
407   dcb 0,1,0,1,0,0
408   dcb 0,0,1,0,0,0
409   dcb 0,0
410
411   dcb 1,0,0,0,1,0
412   dcb 1,0,0,0,1,0
413   dcb 1,0,1,0,1,0
414   dcb 1,1,0,1,1,0
415   dcb 1,0,0,0,1,0
416   dcb 0,0
417
418   dcb 1,0,0,0,1,0
419   dcb 0,1,0,1,0,0
420   dcb 0,0,1,0,0,0
421   dcb 0,1,0,1,0,0
422   dcb 1,0,0,0,1,0
423   dcb 0,0
424
425   dcb 1,0,0,0,1,0
426   dcb 0,1,0,1,0,0
427   dcb 0,0,1,0,0,0
428   dcb 0,0,1,0,0,0
429   dcb 0,0,1,0,0,0
430   dcb 0,0
431
432   dcb 1,1,1,1,0,0 ; z
433   dcb 1,0,0,0,0,0
434   dcb 0,1,1,0,0,0
435   dcb 0,0,0,1,0,0
436   dcb 1,1,1,1,0,0
437   dcb 0,0
438
439   dcb 0,0,0,0,0,0 ; .
440   dcb 0,0,0,0,0,0
441   dcb 0,0,0,0,0,0
442   dcb 0,0,0,0,0,0
443   dcb 1,0,0,0,0,0
444   dcb 0,0
445
446   dcb 0,0,0,0,0,0 ; " "
447   dcb 0,0,0,0,0,0
448   dcb 0,0,0,0,0,0
449   dcb 0,0,0,0,0,0
450   dcb 0,0,0,0,0,0
451   dcb 0,0
452
453 bottombar:
454   dcb $b,$9,$b,9,8,9,8,$a,8,$a,7,$a,7,1,7,1,1
455   dcb 7,1,7,$a,7,$a,8,$a,8,9,8,9,$b,9,$b
456   dcb $ff
457