Welcome, guest | Sign In | My Account | Store | Cart
# Encode string "Items on stack: " (0)
     push
0
     push
16
     
set
     push
1
     push
73
     
set
     push
2
     push
116
     
set
     push
3
     push
101
     
set
     push
4
     push
109
     
set
     push
5
     push
115
     
set
     push
6
     push
32
     
set
     push
7
     push
111
     
set
     push
8
     push
110
     
set
     push
9
     push
32
     
set
     push
10
     push
115
     
set
     push
11
     push
116
     
set
     push
12
     push
97
     
set
     push
13
     push
99
     
set
     push
14
     push
107
     
set
     push
15
     push
58
     
set
     push
16
     push
32
     
set
# Encode string '' (17)

# HEAP[17] already equals 0.

# Encode string 'Number to add to stack: ' (18)
     push
18
     push
24
     
set
     push
19
     push
78
     
set
     push
20
     push
117
     
set
     push
21
     push
109
     
set
     push
22
     push
98
     
set
     push
23
     push
101
     
set
     push
24
     push
114
     
set
     push
25
     push
32
     
set
     push
26
     push
116
     
set
     push
27
     push
111
     
set
     push
28
     push
32
     
set
     push
29
     push
97
     
set
     push
30
     push
100
     
set
     push
31
     push
100
     
set
     push
32
     push
32
     
set
     push
33
     push
116
     
set
     push
34
     push
111
     
set
     push
35
     push
32
     
set
     push
36
     push
115
     
set
     push
37
     push
116
     
set
     push
38
     push
97
     
set
     push
39
     push
99
     
set
     push
40
     push
107
     
set
     push
41
     push
58
     
set
     push
42
     push
32
     
set
# Encode string 'Do want to add a number? ' (43)
     push
43
     push
25
     
set
     push
44
     push
68
     
set
     push
45
     push
111
     
set
     push
46
     push
32
     
set
     push
47
     push
119
     
set
     push
48
     push
97
     
set
     push
49
     push
110
     
set
     push
50
     push
116
     
set
     push
51
     push
32
     
set
     push
52
     push
116
     
set
     push
53
     push
111
     
set
     push
54
     push
32
     
set
     push
55
     push
97
     
set
     push
56
     push
100
     
set
     push
57
     push
100
     
set
     push
58
     push
32
     
set
     push
59
     push
97
     
set
     push
60
     push
32
     
set
     push
61
     push
110
     
set
     push
62
     push
117
     
set
     push
63
     push
109
     
set
     push
64
     push
98
     
set
     push
65
     push
101
     
set
     push
66
     push
114
     
set
     push
67
     push
63
     
set
     push
68
     push
32
     
set
# Encode string 'yn' (69)
     push
69
     push
2
     
set
     push
70
     push
121
     
set
     push
71
     push
110
     
set
# Encode string '\b' (72)
     push
72
     push
1
     
set
     push
73
     push
8
     
set
# Encode string ' ' (74)
     push
74
     push
1
     
set
     push
75
     push
32
     
set
# Encode string 'MENU\n====\n+ = Add\n- = Sub\n* = Mul\n
# / = Div\n% = Mod\nT = Top\nD = Dump\nQ = Quit\nChoice? ' (76)
     push
76
     push
84
     
set
     push
77
     push
77
     
set
     push
78
     push
69
     
set
     push
79
     push
78
     
set
     push
80
     push
85
     
set
     push
81
     push
10
     
set
     push
82
     push
61
     
set
     push
83
     push
61
     
set
     push
84
     push
61
     
set
     push
85
     push
61
     
set
     push
86
     push
10
     
set
     push
87
     push
43
     
set
     push
88
     push
32
     
set
     push
89
     push
61
     
set
     push
90
     push
32
     
set
     push
91
     push
65
     
set
     push
92
     push
100
     
set
     push
93
     push
100
     
set
     push
94
     push
10
     
set
     push
95
     push
45
     
set
     push
96
     push
32
     
set
     push
97
     push
61
     
set
     push
98
     push
32
     
set
     push
99
     push
83
     
set
     push
100
     push
117
     
set
     push
101
     push
98
     
set
     push
102
     push
10
     
set
     push
103
     push
42
     
set
     push
104
     push
32
     
set
     push
105
     push
61
     
set
     push
106
     push
32
     
set
     push
107
     push
77
     
set
     push
108
     push
117
     
set
     push
109
     push
108
     
set
     push
110
     push
10
     
set
     push
111
     push
47
     
set
     push
112
     push
32
     
set
     push
113
     push
61
     
set
     push
114
     push
32
     
set
     push
115
     push
68
     
set
     push
116
     push
105
     
set
     push
117
     push
118
     
set
     push
118
     push
10
     
set
     push
119
     push
37
     
set
     push
120
     push
32
     
set
     push
121
     push
61
     
set
     push
122
     push
32
     
set
     push
123
     push
77
     
set
     push
124
     push
111
     
set
     push
125
     push
100
     
set
     push
126
     push
10
     
set
     push
127
     push
84
     
set
     push
128
     push
32
     
set
     push
129
     push
61
     
set
     push
130
     push
32
     
set
     push
131
     push
84
     
set
     push
132
     push
111
     
set
     push
133
     push
112
     
set
     push
134
     push
10
     
set
     push
135
     push
68
     
set
     push
136
     push
32
     
set
     push
137
     push
61
     
set
     push
138
     push
32
     
set
     push
139
     push
68
     
set
     push
140
     push
117
     
set
     push
141
     push
109
     
set
     push
142
     push
112
     
set
     push
143
     push
10
     
set
     push
144
     push
81
     
set
     push
145
     push
32
     
set
     push
146
     push
61
     
set
     push
147
     push
32
     
set
     push
148
     push
81
     
set
     push
149
     push
117
     
set
     push
150
     push
105
     
set
     push
151
     push
116
     
set
     push
152
     push
10
     
set
     push
153
     push
67
     
set
     push
154
     push
104
     
set
     push
155
     push
111
     
set
     push
156
     push
105
     
set
     push
157
     push
99
     
set
     push
158
     push
101
     
set
     push
159
     push
63
     
set
     push
160
     push
32
     
set
# Encode string '+-*/%tdq' (161)
     push
161
     push
8
     
set
     push
162
     push
43
     
set
     push
163
     push
45
     
set
     push
164
     push
42
     
set
     push
165
     push
47
     
set
     push
166
     push
37
     
set
     push
167
     push
116
     
set
     push
168
     push
100
     
set
     push
169
     push
113
     
set
# Encode string 'Top: ' (170)
     push
170
     push
5
     
set
     push
171
     push
84
     
set
     push
172
     push
111
     
set
     push
173
     push
112
     
set
     push
174
     push
58
     
set
     push
175
     push
32
     
set
# Encode string 'Stack[' (176)
     push
176
     push
6
     
set
     push
177
     push
83
     
set
     push
178
     push
116
     
set
     push
179
     push
97
     
set
     push
180
     push
99
     
set
     push
181
     push
107
     
set
     push
182
     push
91
     
set
# Encode string '] = ' (183)
     push
183
     push
4
     
set
     push
184
     push
93
     
set
     push
185
     push
32
     
set
     push
186
     push
61
     
set
     push
187
     push
32
     
set
# Encode string 'Error: ' (188)
     push
188
     push
7
     
set
     push
189
     push
69
     
set
     push
190
     push
114
     
set
     push
191
     push
114
     
set
     push
192
     push
111
     
set
     push
193
     push
114
     
set
     push
194
     push
58
     
set
     push
195
     push
32
     
set
# Encode string 'DIV' (196)
     push
196
     push
3
     
set
     push
197
     push
68
     
set
     push
198
     push
73
     
set
     push
199
     push
86
     
set
# Encode string ' is illegal.' (200)
     push
200
     push
12
     
set
     push
201
     push
32
     
set
     push
202
     push
105
     
set
     push
203
     push
115
     
set
     push
204
     push
32
     
set
     push
205
     push
105
     
set
     push
206
     push
108
     
set
     push
207
     push
108
     
set
     push
208
     push
101
     
set
     push
209
     push
103
     
set
     push
210
     push
97
     
set
     push
211
     push
108
     
set
     push
212
     push
46
     
set
# Encode string 'MOD' (213)
     push
213
     push
3
     
set
     push
214
     push
77
     
set
     push
215
     push
79
     
set
     push
216
     push
68
     
set
# This is the main program loop.
# Stack starts at HEAP[217]
part
"MAIN"
     push
217
     call
"STACK_SIZE"
     push
217
     call
"GET_INPUT"
     
goto "MAIN"
# def get_number(stack):
#     print('Number to add to stack: ')
#     number = int(input())
#     append(stack, number)
part
"GET_NUMBER"
     push
18
     call
"PRINT"
     push
-1
     copy
     iint
     
get
     call
"APPEND"
     back
# def append(stack, number):
#     ptr = arg[0]
#     val = get(ptr)
#     val += 1
#     set(prt, val)
#     #
#     a = stack
#     b = stack
#     b = get(stack)
#     ptr = a + b
#     set(ptr, number)
#     del stack_ptr
part
"APPEND"
# Increase stack size by one
     copy
1
     
get
     push
1
     add
     copy
2
     swap
     
set
# Store number in the open spot.
     copy
1
     copy
2
     
get
     add
     swap
     
set
     away
     back
# def in_array(array, key):
#     if len(array) <= 0:
#         return 0
#     offset = 1
#     while offset - len(array) >= 0:
#          ptr = array.ptr + offset
#          if array[ptr] == key:
#              return 1
#          offset += 1
#     return 0
part
"IN_ARRAY"
# Line 1-2
     copy
1
     
get
     less
"__IA_RET_1"
     copy
1
     
get
     zero
"__IA_RET_1"
# Line 3
     push
1
# Line 4
part
"__IA_LOOP"
     copy
     copy
3
     
get
     swap
     
sub
     less
"__IA_RET_2"
# Line 5
     copy
2
     copy
1
     add
# Line 6
     
get
     copy
2
     
sub
     zero
"__IA_RET_3"
# Line 8
     push
1
     add
     
goto "__IA_LOOP"
# Line 9
part
"__IA_RET_3"
     away
     push
1
     away
2
     back
part
"__IA_RET_2"
     away
part
"__IA_RET_1"
     push
0
     away
2
     back
# def get_key_press(array):
#     while True:
#         key = getch()
#         found = in_array(array, key)
#         if found:
#             return key
#         if key == '\b':
#             putch(' ')
#         else:
#             putch('\b')
#             putch(' ')
#             putch('\b')
part
"GET_KEY_PRESS"
# Line 2
     push
-1
     copy
     ichr
     
get
# Line 3
     copy
1
     copy
1
     call
"IN_ARRAY"
# Line 4
     zero
"__GKP_FIX"
# Line 5
     away
1
     back
part
"__GKP_FIX"
# Line 6
     push
8
     
sub
     zero
"__GKP_PRINT_SPACE"
# Line 8-11
     push
72
     call
"PRINT"
     push
74
     call
"PRINT"
     push
72
     call
"PRINT"
     
goto "GET_KEY_PRESS"
part
"__GKP_PRINT_SPACE"
# Line 7
     push
74
     call
"PRINT"
     
goto "GET_KEY_PRESS"
# def get_mode():
#     print('Do want to add a number? ')
#     key = get_key_press('yn')
#     print()
#     if key == 'y':
#         return 1
#     return 0
part
"GET_MODE"
     push
43
     call
"PRINT"
     push
69
     call
"GET_KEY_PRESS"
     push
17
     call
"PRINT_LINE"
     push
121
     
sub
     zero
"__GM_RETURN"
     push
0
     back
part
"__GM_RETURN"
     push
1
     back
# def add_array(array):
#     array.len -= 1
#     end_ptr = array.ptr + array.len
#     last1 = array[end_ptr + 1]
#     last2 = array[end_ptr]
#     end, array = last1 + last2, array
#     array[array.ptr + array.len] = end
part
"ADD_ARRAY"
# Line 1
     copy
     copy
     
get
     push
1
     
sub
     
set
# Line 2
     copy
     copy
     
get
     add
# Line 3
     copy
     push
1
     add
     
get
# Line 4
     swap
     
get
# Line 5
     add
     swap
# Line 6
     copy
     
get
     add
     swap
     
set
     back
# def sub_array(array):
#     array.len -= 1
#     end_ptr = array.ptr + array.len
#     last1 = array[end_ptr + 1]
#     last2 = array[end_ptr]
#     end, array = last2 - last1, array
#     array[array.ptr + array.len] = end
part
"SUB_ARRAY"
# Line 1
     copy
     copy
     
get
     push
1
     
sub
     
set
# Line 2
     copy
     copy
     
get
     add
# Line 3
     copy
     push
1
     add
     
get
# Line 4
     swap
     
get
# Line 5
     swap
     
sub
     swap
# Line 6
     copy
     
get
     add
     swap
     
set
     back
# def mul_array(array):
#     array.len -= 1
#     end_ptr = array.ptr + array.len
#     last1 = array[end_ptr + 1]
#     last2 = array[end_ptr]
#     end, array = last1 * last2, array
#     array[array.ptr + array.len] = end
part
"MUL_ARRAY"
# Line 1
     copy
     copy
     
get
     push
1
     
sub
     
set
# Line 2
     copy
     copy
     
get
     add
# Line 3
     copy
     push
1
     add
     
get
# Line 4
     swap
     
get
# Line 5
     mul
     swap
# Line 6
     copy
     
get
     add
     swap
     
set
     back
# def show_last(array):
#     print('Top: ')
#     ptr = len(array) + array.ptr
#     print(*ptr)
#     print()
part
"SHOW_LAST"
# Line 1
     push
170
     call
"PRINT"
# Line 2
     copy
     
get
     add
# Line 3
     
get
     oint
# Line 4
     push
17
     call
"PRINT_LINE"
     back
# def dump_array(array):
#     if len(array) <= 0:
#         return
#     offset = 1
#     while len(array) - offset >= 0:
#          ptr = array.ptr + offset
#          sys.stdout.write('Stack[')
#          sys.stdout.write(str(offset))
#          sys.stdout.write('] = ')
#          sys.stdout.write(array[ptr])
#          print()
#          offset += 1
part
"DUMP_ARRAY"
# Line 1-2
     copy
     
get
     less
"__DA_RET_1"
     copy
     
get
     zero
"__DA_RET_1"
# Line 3
     push
1
# Line 4
part
"__DA_LOOP"
     copy
     copy
2
     
get
     swap
     
sub
     less
"__DA_RET_2"
# Line 5
     copy
1
     copy
1
     add
# Line 6
     push
176
     call
"PRINT"
# Line 7
     copy
1
     oint
# Line 8
     push
183
     call
"PRINT"
# Line 9
     
get
     oint
# Line 10
     push
17
     call
"PRINT_LINE"
# Line 11
     push
1
     add
     
goto "__DA_LOOP"
part
"__DA_RET_2"
     away
part
"__DA_RET_1"
     away
     back
# def div_array(array):
#     last = array[-1]
#     if last == 0:
#         sys.stdout.write('Error: ')
#         sys.stdout.write('DIV')
#         sys.stdout.write_line(' is illegal.')
#         return
#     array.len -= 1
#     end_ptr = array.ptr + array.len
#     last1 = array[end_ptr + 1]
#     last2 = array[end_ptr]
#     end, array = last2 / last1, array
#     array[array.ptr + array.len] = end
part
"DIV_ARRAY"
# Line 1
     copy
     copy
     
get
     add
     
get
# Line 2
     zero
"__DA_ZERO"
     
goto "__DA_OKAY"
part
"__DA_ZERO"
# Line 3-5
     push
188
     call
"PRINT"
     push
196
     call
"PRINT"
     push
200
     call
"PRINT_LINE"
# Line 6
     away
     back
part
"__DA_OKAY"
# Line 7
     copy
     copy
     
get
     push
1
     
sub
     
set
# Line 8
     copy
     copy
     
get
     add
# Line 9
     copy
     push
1
     add
     
get
# Line 10
     swap
     
get
# Line 11
     swap
     div
     swap
# Line 12
     copy
     
get
     add
     swap
     
set
     back
# def mod_array(array):
#     last = array[-1]
#     if last == 0:
#         sys.stdout.write('Error: ')
#         sys.stdout.write('MOD')
#         sys.stdout.write_line(' is illegal.')
#         return
#     array.len -= 1
#     end_ptr = array.ptr + array.len
#     last1 = array[end_ptr + 1]
#     last2 = array[end_ptr]
#     end, array = last2 % last1, array
#     array[array.ptr + array.len] = end
part
"MOD_ARRAY"
# Line 1
     copy
     copy
     
get
     add
     
get
# Line 2
     zero
"__MA_ZERO"
     
goto "__MA_OKAY"
part
"__MA_ZERO"
# Line 3-5
     push
188
     call
"PRINT"
     push
213
     call
"PRINT"
     push
200
     call
"PRINT_LINE"
# Line 6
     away
     back
part
"__MA_OKAY"
# Line 7
     copy
     copy
     
get
     push
1
     
sub
     
set
# Line 8
     copy
     copy
     
get
     add
# Line 9
     copy
     push
1
     add
     
get
# Line 10
     swap
     
get
# Line 11
     swap
     mod
     swap
# Line 12
     copy
     
get
     add
     swap
     
set
     back
# def do_action(stack):
#     print(MENU)
#     key = get_key_press('+-*/%tdq')
#     print()
#     if key == '+':
#         add_array(array)
#     elif key == '-':
#         sub_array(array)
#     elif key == '*':
#         mul_array(array)
#     elif key == '/':
#         div_array(array)
#     elif key == '%':
#         mod_array(array)
#     elif key == 't':
#         show_last(array)
#     elif key == 'd':
#         dump_array(array)
#     else:
#         sys.exit()
part
"DO_ACTION"
     push
76
     call
"PRINT"
     push
161
     call
"GET_KEY_PRESS"
     push
17
     call
"PRINT_LINE"
     copy
     push
43
     
sub
     zero
"__DA_ADD"
     copy
     push
45
     
sub
     zero
"__DA_SUB"
     copy
     push
42
     
sub
     zero
"__DA_MUL"
     copy
     push
47
     
sub
     zero
"__DA_DIV"
     copy
     push
37
     
sub
     zero
"__DA_MOD"
     copy
     push
116
     
sub
     zero
"__DA_TOP"
     push
100
     
sub
     zero
"__DA_DUMP"
# Here are several function calls.
     
exit
part
"__DA_DUMP"
     call
"DUMP_ARRAY"
     back
part
"__DA_TOP"
     away
     call
"SHOW_LAST"
     back
part
"__DA_MOD"
     away
     call
"MOD_ARRAY"
     back
part
"__DA_DIV"
     away
     call
"DIV_ARRAY"
     back
part
"__DA_MUL"
     away
     call
"MUL_ARRAY"
     back
part
"__DA_SUB"
     away
     call
"SUB_ARRAY"
     back
part
"__DA_ADD"
     away
     call
"ADD_ARRAY"
     back
# def get_input(stack):
#     if len(stack) < 2:
#         get_number(stack)
#     else:
#         if get_mode() == 0:
#             do_action(stack)
#         else:
#             get_number(stack)
part
"GET_INPUT"
     copy
     
get
     push
2
     
sub
     less
"__GI_IF_1"
     call
"GET_MODE"
     zero
"__GI_IF_2"
part
"__GI_IF_1"
     call
"GET_NUMBER"
     back
part
"__GI_IF_2"
     call
"DO_ACTION"
     back
# Prints out size of a stack.
# push addr
# call "STACK_SIZE"
part
"STACK_SIZE"
     push
0
     call
"PRINT"
     
get
     oint
     push
17
     call
"PRINT_LINE"
     back
# Prints a string with newline.
# push addr
# call "PRINT_LINE"
part
"PRINT_LINE"
     call
"PRINT"
     push
10
     ochr
     back
# def print(array):
#     if len(array) <= 0:
#         return
#     offset = 1
#     while len(array) - offset >= 0:
#          ptr = array.ptr + offset
#          putch(array[ptr])
#          offset += 1
part
"PRINT"
# Line 1-2
     copy
     
get
     less
"__PRINT_RET_1"
     copy
     
get
     zero
"__PRINT_RET_1"
# Line 3
     push
1
# Line 4
part
"__PRINT_LOOP"
     copy
     copy
2
     
get
     swap
     
sub
     less
"__PRINT_RET_2"
# Line 5
     copy
1
     copy
1
     add
# Line 6
     
get
     ochr
# Line 7
     push
1
     add
     
goto "__PRINT_LOOP"
part
"__PRINT_RET_2"
     away
part
"__PRINT_RET_1"
     away
     back

History