-
Notifications
You must be signed in to change notification settings - Fork 2
/
STMACH.8
89 lines (78 loc) · 1.95 KB
/
STMACH.8
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
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ banked ³
;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
;³ ³
;³ copyright (C) 2017 jeff panici ³
;³ https://nybbles.io ³
;³ ³
;³ ³
;³ ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ structures and macros ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
st_action struc [bp]
st_code db ?
st_pad1 db ?
st_enter_cb dw ?
st_callback dw ?
st_leave_cb dw ?
ends
st_def macro
db #1, 0
dw #2, #3, #4
#em
st_push macro
cs cmp st_stack_ptr, st_stack_bot
jz >m2
st_top
st_leave
m2: push bx
cs sub st_stack_ptr, 2
cs mov bx, st_stack_ptr
cs mov w[bx], #1
cs mov bp, #1
pop bx
st_enter
#em
st_enter macro
cs cmp st_enter_cb, 0
jz >m0
cs call [st_enter_cb]
m0:
#em
st_leave macro
cs cmp st_leave_cb, 0
jz >m1
cs call [st_leave_cb]
m1:
#em
st_pop macro
st_top
st_leave
cs add st_stack_ptr, 2
st_top
st_enter
#em
st_top macro
push bx
cs mov bx, st_stack_ptr
cs mov bp, w[bx]
pop bx
#em
st_chk macro
push bp
st_top
mov al, 0
cs cmp st_code, #1
jne >m0
mov al, 1
m0: pop bp
#em
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ variables ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
st_stack_top:
dw 16 dup(?)
st_stack_bot:
st_stack_ptr dw offset st_stack_bot