Rev 4919 | Rev 4943 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4919 | Rev 4939 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | VERSION equ "0.3Ĺ" |
1 | VERSION equ "0.4Å" |
- | 2 | ||
2 | use32 |
3 | use32 |
3 | org 0 |
4 | org 0 |
4 | db 'MENUET01' |
5 | db 'MENUET01' |
5 | dd 1, main, dataend, memory, stacktop, 0, 0 |
6 | dd 1, main, dataend, memory, stacktop, 0, 0 |
Line 11... | Line 12... | ||
11 | ; include "../../debug.inc" |
12 | ; include "../../debug.inc" |
12 | include "parser.inc" |
13 | include "parser.inc" |
Line 13... | Line 14... | ||
13 | 14 | ||
Line -... | Line 15... | ||
- | 15 | ;=============================== |
|
14 | ;=============================== |
16 | |
15 | 17 | sz_cont db "?#" |
|
16 | sz_head db "Calc+ [v", VERSION, "]", 0 |
18 | sz_head db "Calc+ [v", VERSION, "]", 0 |
17 | buttons db "789456123()%^-+/*0" |
19 | ; buttons db "789456123()%^-+/*0" |
Line 18... | Line 20... | ||
18 | edb1 edit_box 184, 8, 12, 0, 0, 0, 0, 0, 500, \ |
20 | edb1 edit_box 184, 8, 12, 0, 0, 0, 0, 0, 500, \ |
19 | exp, group, ed_always_focus + ed_focus, 0, 0 |
21 | exp, group, ed_always_focus + ed_focus, 0, 0 |
Line 25... | Line 27... | ||
25 | editbox.mouse, "edit_box_mouse" |
27 | editbox.mouse, "edit_box_mouse" |
Line 26... | Line 28... | ||
26 | 28 | ||
Line 27... | Line 29... | ||
27 | ;=============================== |
29 | ;=============================== |
28 | 30 | ||
29 | main: |
31 | main: |
Line 30... | Line 32... | ||
30 | mov [ans.buffer], word "0" |
32 | mov [ans.buffer], dword "= 0" |
31 | mov [ans.size], 15 |
33 | mov [ans.size], 3 * 6 + 9 |
Line -... | Line 34... | ||
- | 34 | ||
32 | 35 | mcall 40, 100111b |
|
33 | mcall 40, 100111b |
36 | mcall 48, 3, scn, 192 |
34 | mcall 48, 3, scn, 192 |
37 | |
35 | 38 | ||
Line 36... | Line 39... | ||
36 | m2m [edb1.color], [scn.gui_face] |
39 | m2m [edb1.color], [scn.gui_face] |
37 | m2m [edb1.shift_color], [scn.gui_select] |
40 | m2m [edb1.shift_color], [scn.gui_select] |
Line 38... | Line 41... | ||
38 | m2m [edb1.focus_border_color], [scn.gui_face] |
41 | m2m [edb1.focus_border_color], [scn.gui_face] |
Line 64... | Line 67... | ||
64 | ;---------------------- |
67 | ;---------------------- |
Line 65... | Line 68... | ||
65 | 68 | ||
66 | ev_redraw: |
69 | ev_redraw: |
67 | mov edx, [scn.win_body] |
70 | mov edx, [scn.win_body] |
68 | or edx, 0x34 shl 24 |
71 | or edx, 0x34 shl 24 |
- | 72 | mcall 0, <100, 236 + 100>, <100, 164 - 102>, , , sz_head |
|
- | 73 | ||
- | 74 | mcall 8, <275, 12>, <-17, 12>, 2 + 1 shl 30 |
|
- | 75 | sub ebx, 12 shl 16 |
|
- | 76 | inc edx |
|
- | 77 | mcall |
|
- | 78 | ||
- | 79 | mcall 4, <279, -14>, [scn.win_title], sz_cont, 1 |
|
- | 80 | add ebx, 1 shl 16 |
|
- | 81 | mcall |
|
- | 82 | ||
- | 83 | sub ebx, 13 shl 16 |
|
- | 84 | inc edx |
|
Line 69... | Line 85... | ||
69 | mcall 0, <100, 236>, <100, 164>, , , sz_head |
85 | mcall |
Line 70... | Line 86... | ||
70 | 86 | ||
71 | call draw_textbox |
87 | call draw_textbox |
72 | 88 | ||
73 | mov [but_id], 0x4000000A |
89 | ; mov [but_id], 0x0000000A |
74 | mov [txt_id], buttons |
90 | ; mov [txt_id], buttons |
75 | mov [txt_x], 16 |
91 | ; mov [txt_x], 16 |
76 | mov [but_w], 38 |
92 | ; mov [but_w], 38 |
77 | stdcall draw_button, 4, 42 |
93 | ; stdcall draw_button, 4, 42 |
78 | stdcall draw_button, 46, 42 |
94 | ; stdcall draw_button, 46, 42 |
79 | stdcall draw_button, 88, 42 |
95 | ; stdcall draw_button, 88, 42 |
80 | stdcall draw_button, 4, 66 |
96 | ; stdcall draw_button, 4, 66 |
81 | stdcall draw_button, 46, 66 |
97 | ; stdcall draw_button, 46, 66 |
82 | stdcall draw_button, 88, 66 |
98 | ; stdcall draw_button, 88, 66 |
83 | stdcall draw_button, 4, 90 |
99 | ; stdcall draw_button, 4, 90 |
84 | stdcall draw_button, 46, 90 |
100 | ; stdcall draw_button, 46, 90 |
85 | stdcall draw_button, 88, 90 |
101 | ; stdcall draw_button, 88, 90 |
86 | stdcall draw_button, 88, 114 |
102 | ; stdcall draw_button, 88, 114 |
87 | 103 | ; |
|
88 | stdcall draw_button, 144, 42 |
104 | ; stdcall draw_button, 144, 42 |
89 | stdcall draw_button, 186, 42 |
105 | ; stdcall draw_button, 186, 42 |
90 | stdcall draw_button, 144, 66 |
106 | ; stdcall draw_button, 144, 66 |
91 | stdcall draw_button, 186, 66 |
107 | ; stdcall draw_button, 186, 66 |
92 | stdcall draw_button, 144, 90 |
108 | ; stdcall draw_button, 144, 90 |
93 | stdcall draw_button, 186, 90 |
109 | ; stdcall draw_button, 186, 90 |
94 | stdcall draw_button, 144, 114 |
110 | ; stdcall draw_button, 144, 114 |
95 | stdcall draw_button, 186, 114 |
111 | ; stdcall draw_button, 186, 114 |
96 | 112 | ||
Line 97... | Line 113... | ||
97 | mov [txt_x], 37 |
113 | ; mov [txt_x], 37 |
Line 98... | Line 114... | ||
98 | mov [but_w], 80 |
114 | ; mov [but_w], 80 |
Line 106... | Line 122... | ||
106 | mov [timer], 10 |
122 | mov [timer], 10 |
Line 107... | Line 123... | ||
107 | 123 | ||
108 | mcall 2 |
124 | mcall 2 |
109 | cmp ah, 27 |
125 | cmp ah, 27 |
- | 126 | je exit |
|
- | 127 | cmp ah, 13 |
|
110 | je exit |
128 | je calc |
111 | invoke editbox.key, edb1 |
129 | invoke editbox.key, edb1 |
Line 112... | Line 130... | ||
112 | jmp update |
130 | jmp update |
Line 119... | Line 137... | ||
119 | mcall 17 |
137 | mcall 17 |
Line 120... | Line 138... | ||
120 | 138 | ||
121 | cmp ah, 1 |
139 | cmp ah, 1 |
Line 122... | Line -... | ||
122 | je exit |
- | |
123 | - | ||
124 | cmp ah, 2 |
- | |
125 | jne .not_copy |
- | |
126 | - | ||
127 | .copy: |
- | |
128 | - | ||
129 | mov eax, exp |
- | |
130 | mov ebx, ans.buffer |
- | |
131 | mov ecx, 0 |
- | |
132 | @@: |
- | |
133 | mov dl, [ebx] |
- | |
134 | mov [eax], dl |
- | |
135 | inc eax |
- | |
136 | inc ebx |
- | |
137 | inc ecx |
- | |
138 | cmp [eax - 1], byte 0 |
- | |
139 | jne @b |
- | |
140 | - | ||
141 | dec ecx |
- | |
142 | mov [edb1.size], ecx |
- | |
143 | m2m [edb1.pos], [edb1.size] |
- | |
144 | - | ||
145 | jmp .redraw |
- | |
146 | - | ||
147 | .not_copy: |
140 | je exit |
148 | 141 | ||
149 | cmp ah, 19 |
- | |
150 | jne .not_del |
142 | cmp ah, 19 |
151 | - | ||
152 | .del: |
143 | jne .not_del |
153 | 144 | .del: |
|
154 | cmp [edb1.pos], 0 |
145 | cmp [edb1.pos], 0 |
155 | je update |
146 | je update |
156 | mov eax, exp |
147 | mov eax, exp |
Line 169... | Line 160... | ||
169 | @@: |
160 | @@: |
170 | dec [edb1.pos] |
161 | dec [edb1.pos] |
171 | dec [edb1.size] |
162 | dec [edb1.size] |
172 | m2m [edb1.shift], [edb1.pos] |
163 | m2m [edb1.shift], [edb1.pos] |
173 | jmp .redraw |
164 | jmp .redraw |
174 | - | ||
175 | .not_del: |
165 | .not_del: |
Line 176... | Line 166... | ||
176 | 166 | ||
177 | cmp ah, 10 |
167 | ; cmp ah, 10 |
178 | jl update |
168 | ; jl update |
179 | cmp ah, 50 |
169 | ; cmp ah, 50 |
180 | jg update |
170 | ; jg update |
181 | 171 | ; |
|
182 | movzx eax, ah |
172 | ; movzx eax, ah |
183 | add eax, buttons |
173 | ; add eax, buttons |
184 | sub eax, 10 |
174 | ; sub eax, 10 |
185 | mov al, [eax] |
175 | ; mov al, [eax] |
186 | 176 | ; |
|
187 | mov ebx, exp |
177 | ; mov ebx, exp |
188 | add ebx, [edb1.size] |
178 | ; add ebx, [edb1.size] |
189 | mov ecx, exp |
179 | ; mov ecx, exp |
190 | add ecx, [edb1.pos] |
180 | ; add ecx, [edb1.pos] |
191 | @@: |
181 | ; @@: |
192 | cmp ebx, ecx |
182 | ; cmp ebx, ecx |
193 | je @f |
183 | ; je @f |
194 | mov dl, [ebx - 1] |
184 | ; mov dl, [ebx - 1] |
195 | mov [ebx], dl |
185 | ; mov [ebx], dl |
196 | dec ebx |
186 | ; dec ebx |
197 | jmp @b |
187 | ; jmp @b |
198 | @@: |
188 | ; @@: |
199 | 189 | ; |
|
200 | mov [ebx], al |
190 | ; mov [ebx], al |
201 | inc [edb1.size] |
191 | ; inc [edb1.size] |
Line 202... | Line 192... | ||
202 | inc [edb1.pos] |
192 | ; inc [edb1.pos] |
203 | 193 | ||
204 | .redraw: |
194 | .redraw: |
Line 223... | Line 213... | ||
223 | calc: |
213 | calc: |
224 | stdcall parse |
214 | stdcall parse |
225 | cmp [error_n], 0 |
215 | cmp [error_n], 0 |
226 | jne .error |
216 | jne .error |
Line -... | Line 217... | ||
- | 217 | ||
- | 218 | mov [ans.buffer], word "= " |
|
227 | 219 | ||
- | 220 | stdcall convert_to_str, eax, ans.buffer + 2 |
|
228 | stdcall convert_to_str, eax, ans.buffer |
221 | add eax, 2 |
229 | imul eax, 6 |
222 | imul eax, 6 |
230 | add eax, 9 |
223 | add eax, 9 |
231 | mov [ans.size], eax |
224 | mov [ans.size], eax |
Line 269... | Line 262... | ||
269 | call draw_textbox |
262 | call draw_textbox |
270 | jmp update |
263 | jmp update |
Line 271... | Line 264... | ||
271 | 264 | ||
Line 272... | Line 265... | ||
272 | ;---------------------- |
265 | ;---------------------- |
273 | 266 | ||
274 | proc draw_button, x, y |
- | |
275 | mcall 13, <[x], [but_w]>, <[y], 20>, [scn.gui_frame] |
- | |
276 | - | ||
277 | add ebx, 1 shl 16 |
- | |
278 | add ecx, 1 shl 16 |
- | |
279 | sub ebx, 2 |
- | |
280 | sub ecx, 2 |
- | |
281 | mcall , , , [scn.3d_light] |
- | |
282 | - | ||
283 | add ebx, 1 shl 16 |
- | |
284 | add ecx, 1 shl 16 |
- | |
285 | dec ebx |
- | |
286 | dec ecx |
- | |
287 | mcall , , , [scn.3d_dark] |
- | |
288 | - | ||
289 | dec ebx |
- | |
290 | dec ecx |
267 | ; proc draw_button, x, y |
291 | mcall , , , [scn.win_face] |
268 | ; mcall 8, <[x], [but_w]>, <[y], 20>, [but_id], [scn.btn_face] |
292 | - | ||
293 | mcall 1, [x], [y], [scn.win_body] |
269 | ; |
294 | - | ||
295 | add ebx, [but_w] |
270 | ; mcall 1, [x], [y], [scn.win_face] |
296 | dec ebx |
- | |
297 | mcall |
271 | ; add ebx, [but_w] |
298 | - | ||
299 | add ecx, 20 |
272 | ; mcall |
300 | dec ecx |
- | |
301 | mcall |
273 | ; add ecx, 20 |
302 | - | ||
303 | sub ebx, [but_w] |
274 | ; mcall |
304 | inc ebx |
- | |
305 | mcall |
- | |
306 | - | ||
307 | mov ebx, [x] |
- | |
308 | inc ebx |
- | |
309 | shl ebx, 16 |
- | |
310 | add ebx, [but_w] |
- | |
311 | sub ebx, 3 |
- | |
312 | mov ecx, [y] |
- | |
313 | inc ecx |
- | |
314 | shl ecx, 16 |
- | |
315 | add ecx, 20 |
- | |
316 | sub ecx, 3 |
- | |
317 | mov edx, [but_id] |
275 | ; sub ebx, [but_w] |
318 | mcall 8 |
276 | ; mcall |
319 | 277 | ; |
|
320 | mov ebx, [x] |
278 | ; mov ebx, [x] |
321 | add ebx, [txt_x] |
279 | ; add ebx, [txt_x] |
322 | shl ebx, 16 |
280 | ; shl ebx, 16 |
323 | add ebx, [y] |
281 | ; add ebx, [y] |
324 | add ebx, 7 |
282 | ; add ebx, 7 |
325 | mcall 4, , [scn.win_text], [txt_id], 1 |
283 | ; mcall 4, , [scn.win_text], [txt_id], 1 |
326 | 284 | ; |
|
327 | inc dword [txt_id] |
285 | ; inc dword [txt_id] |
328 | inc dword [but_id] |
286 | ; inc dword [but_id] |
329 | 287 | ; |
|
Line 330... | Line 288... | ||
330 | ret |
288 | ; ret |
Line 331... | Line 289... | ||
331 | endp |
289 | ; endp |
332 | 290 | ||
333 | ;---------------------- |
291 | ;---------------------- |
334 | 292 | ||
335 | proc draw_textbox |
293 | proc draw_textbox |
336 | mcall 13, < 4, 220>, < 8, 23>, [scn.gui_frame] |
294 | mcall 13, <4, 320>, < 8, 23>, [scn.gui_frame] |
337 | mov edx, [scn.gui_face] |
295 | mov edx, [scn.gui_face] |
338 | cmp [error_n], 0 |
296 | cmp [error_n], 0 |
339 | je @f |
297 | je @f |
340 | mov edx, 0xFFAAAA |
298 | mov edx, 0xFFAAAA |
341 | @@: |
299 | @@: |
Line 342... | Line 300... | ||
342 | mcall 13, < 5, 218>, < 9, 21> |
300 | mcall 13, < 5, 318>, < 9, 21> |
343 | mcall , < 5, 218>, < 9, 1>, [scn.3d_face] |
301 | mcall , < 5, 318>, < 9, 1>, [scn.3d_face] |
344 | mcall , < 5, 1>, < 10, 20> |
302 | mcall , < 5, 1>, < 10, 20> |
345 | mcall , < 5, 218>, < 31, 1>, [scn.3d_light] |
- | |
346 | - | ||
347 | mov ebx, 224 |
- | |
348 | sub ebx, [ans.size] |
- | |
349 | shl ebx, 16 |
- | |
350 | inc ebx |
- | |
351 | mcall , , < 9, 21>, [scn.gui_frame] |
- | |
352 | add ebx, [ans.size] |
- | |
353 | add ebx, 1 shl 16 |
- | |
354 | sub ebx, 3 |
- | |
355 | mcall , , , [scn.3d_light] |
- | |
356 | cmp [error_n], 0 |
- | |
357 | jne .btn_not |
- | |
358 | mcall 8, , , 0x40000002 |
- | |
359 | .btn_not: |
- | |
360 | add ebx, 1 shl 16 |
303 | mcall , < 5, 318>, < 31, 1>, [scn.3d_light] |
361 | add ecx, 1 shl 16 |
- | |
362 | dec ebx |
- | |
363 | dec ecx |
304 | |
364 | mcall 13, , , [scn.win_face] |
305 | mov ebx, 328 |
365 | shr ecx, 16 |
306 | sub ebx, [ans.size] |
Line 366... | Line 307... | ||
366 | mov bx, cx |
307 | shl ebx, 16 |
367 | add ebx, 3 shl 16 + 6 |
308 | add ebx, 16 |
368 | mov ecx, [scn.win_text] |
309 | mov ecx, [scn.gui_intext] |
369 | or ecx, 1b shl 31 |
310 | or ecx, 1 shl 31 |
Line 370... | Line 311... | ||
370 | mcall 4, , , ans.buffer |
311 | mcall 4, , , ans.buffer |
371 | 312 | ||
372 | mcall 1, 4, 8, [scn.win_body] |
313 | mcall 1, 4, 8, [scn.win_body] |
373 | mcall , 223 |
314 | mcall , 323 |
374 | mcall , , 30, [scn.3d_light] |
315 | mcall , , 30, [scn.3d_light] |
375 | mcall , 4 |
316 | mcall , 4 |