http://www.tienza.es/crux/src/www.jwz.org/xscreensaver/xscreensaver-5.05.tar.gz
[xscreensaver] / hacks / images / m6502 / random-walk.asm
1  ;; Jeremy English Dec 11 2007
2  ;; Random walk
3    lda #16
4    sta $0         ; The current x pos
5    sta $1         ; The current y pos
6    lda $fe         ; Get random color
7    sta $5         ; Store the color
8    lda $fe         ; Amount of time to use this color
9    sta $6
10
11 loop:
12    ldx $0
13    ldy $1
14    lda $5
15    jsr paint
16    jsr walk
17    dec $6
18    bne loop
19    ;; get a new color
20    lda $fe
21    sta $5
22    ;; get a new duration
23    lda $fe
24    sta $6
25    jmp loop
26
27 walk:
28    lda $fe
29    and #3
30    cmp #0
31    beq right
32    cmp #1
33    beq left
34    cmp #2
35    beq up
36    jmp down
37
38 right:
39    inc $0
40    jmp done
41 left:
42    dec $0
43    jmp done
44 up:
45    dec $1
46    jmp done
47 down:
48    inc $1
49    jmp done
50 done:
51    lda $0
52    and #31
53    sta $0
54    lda $1
55    and #31
56    sta $1
57    rts
58
59 paint:
60    pha
61    lda yl,y
62    sta $2
63    lda yh,y
64    sta $3
65    txa
66    tay
67    pla
68    sta ($2),y
69    rts
70
71    ;; Y cord MSB
72 yh:
73        dcb $02, $02, $02, $02, $02, $02, $02, $02
74        dcb $03, $03, $03, $03, $03, $03, $03, $03
75        dcb $04, $04, $04, $04, $04, $04, $04, $04
76        dcb $05, $05, $05, $05, $05, $05, $05, $05
77        ;; Y cord LSB
78 yl:
79        dcb $00, $20, $40, $60, $80, $a0, $c0, $e0
80        dcb $00, $20, $40, $60, $80, $a0, $c0, $e0
81        dcb $00, $20, $40, $60, $80, $a0, $c0, $e0
82        dcb $00, $20, $40, $60, $80, $a0, $c0, $e0