-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstack.inc
104 lines (80 loc) · 895 Bytes
/
stack.inc
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
.scope stack
.ifp02
.macro phx
txa
pha
.endmacro
.macro plx
pla
tax
.endmacro
.macro phy
tya
pha
.endmacro
.macro ply
pla
tay
.endmacro
.endif
.macro pusha
.ifpsc02
sta (stack::stackp)
dec stack::stackp
.endif
.ifp02
stx stack::savex
ldx stack::stackp
sta 0,x
dex
stx stack::stackp
ldx stack::savex
.endif
.endmacro
.macro popa
.ifpsc02
inc stack::stackp
lda (stack::stackp)
.endif
.ifp02
stx stack::savex
ldx stack::stackp
inx
stx stack::stackp
lda 0,x
pha
ldx stack::savex
pla
.endif
.endmacro
.macro pushx
txa
pusha
.endmacro
.macro popx
popa
tax
.endmacro
.macro pushy
tya
pusha
.endmacro
.macro popy
popa
tay
.endmacro
; Finish of the handy macros!
control := $10
stackp := control
.ifp02
savex := stackp + 1
.endif
; Initialise the stack to an empty state
.proc init
pha
lda #$ff
sta stackp
pla
rts
.endproc
.endscope ; stack