blob: c73e0e7cdebb258c79ba41cd78ca03f3f7b0215e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
@main
SLP
/input/update
/player/erase
/player/update
/player/draw
JMP ,main
@input.kleft 0000
@input.kright 0000
@input.kup 0000
@input.kdown 0000
@input/update ( -- )
-Input LDA
DUP #0010 AND #0000 NEQ -input.kup STA
DUP #0020 AND #0000 NEQ -input.kdown STA
DUP #0040 AND #0000 NEQ -input.kleft STA
#0080 AND #0000 NEQ -input.kright STA
RET
@player.x 0040
@player.y 0040
@player/update ( -- )
@player/update/movex
#0004 #007b
-player.x LDA
-input.kleft LDA SUB
-input.kright LDA ADD
/clamp -player.x STA
@player/update/movey
#0004 #007b
-player.y LDA
-input.kup LDA SUB
-input.kdown LDA ADD
/clamp -player.y STA
RET
@player/erase ( -- )
-player.x LDA
-player.y LDA
#0000 /draw/pixel
RET
@player/draw ( -- )
-player.x LDA
-player.y LDA
#ffff /draw/pixel
RET
@draw/pixel ( x y col -- )
ROT #007f AND
ROT #007f AND
#0007 LSF ADD -Screen ADD
STA
RET
@clamp ( min max a -- b )
/min /max RET
@min ( a b -- a < b ? a : b )
OVR OVR LTH
JNZ ,min/morethan
SWP
@min/morethan
POP
RET
@max ( a b -- a > b ? a : b )
OVR OVR GTH
JNZ ,max/lessthan
SWP
@max/lessthan
POP
RET
|