aboutsummaryrefslogtreecommitdiff
path: root/samples/move.orgaasm
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