Rev 4943 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4943 | eAndrew | 1 | VERSION equ "0.5" |
4939 | eAndrew | 2 | |
4865 | eAndrew | 3 | use32 |
4 | org 0 |
||
5 | db 'MENUET01' |
||
6 | dd 1, main, dataend, memory, stacktop, 0, 0 |
||
7 | |||
8 | include "../../proc32.inc" |
||
9 | include "../../macros.inc" |
||
10 | include "../../dll.inc" |
||
11 | include "../../develop/libraries/box_lib/trunk/box_lib.mac" |
||
4943 | eAndrew | 12 | ; include "../../debug.inc" |
4865 | eAndrew | 13 | include "parser.inc" |
14 | |||
15 | ;=============================== |
||
16 | |||
4943 | eAndrew | 17 | LIST_ITEM_SIZE equ 16 |
18 | LIST_ITEM_COUNT equ 6 |
||
19 | LIST_SIZE equ LIST_ITEM_SIZE * LIST_ITEM_COUNT |
||
20 | LIST_ITEM_COLOR1 equ dword [scn.btn_face] |
||
21 | LIST_ITEM_COLOR2 equ dword [scn.win_face] |
||
22 | LIST_ITEM_TEXT1 equ dword [scn.btn_text] |
||
23 | LIST_ITEM_TEXT2 equ dword [scn.win_text] |
||
24 | LIST_ITEM_Y equ LIST_ITEM_SIZE / 2 - 3 |
||
25 | |||
26 | KEYB_SIZE equ 140 |
||
27 | |||
28 | sz_cont db "Keyboard ", 0x10 |
||
6163 | leency | 29 | sz_head db "Calc+ v", VERSION, 0 |
4943 | eAndrew | 30 | btn_clr db "" |
31 | buttons db "|%^*/-+)(=7894561230" |
||
32 | edb1 edit_box 0, 8, 12, 0, 0, 0, 0, 0, 480, \ |
||
4865 | eAndrew | 33 | exp, group, ed_always_focus + ed_focus, 0, 0 |
34 | |||
35 | imports: |
||
36 | library gui, "box_lib.obj" |
||
37 | import gui, editbox.draw, "edit_box", \ |
||
38 | editbox.key, "edit_box_key", \ |
||
39 | editbox.mouse, "edit_box_mouse" |
||
40 | |||
41 | ;=============================== |
||
42 | |||
43 | main: |
||
4939 | eAndrew | 44 | mov [ans.buffer], dword "= 0" |
45 | mov [ans.size], 3 * 6 + 9 |
||
4865 | eAndrew | 46 | |
47 | mcall 40, 100111b |
||
6163 | leency | 48 | ; mcall 48, 3, scn, 192 |
4865 | eAndrew | 49 | |
4939 | eAndrew | 50 | |
4865 | eAndrew | 51 | m2m [edb1.color], [scn.gui_face] |
52 | m2m [edb1.shift_color], [scn.gui_select] |
||
53 | m2m [edb1.focus_border_color], [scn.gui_face] |
||
4939 | eAndrew | 54 | m2m [edb1.text_color], [scn.gui_text] |
4865 | eAndrew | 55 | |
56 | mcall 68, 11 |
||
57 | stdcall dll.Load, imports |
||
58 | |||
59 | ;---------------------- |
||
60 | |||
61 | update: |
||
4875 | eAndrew | 62 | mcall 23, 5 |
4865 | eAndrew | 63 | |
64 | cmp eax, EV_REDRAW |
||
65 | je ev_redraw |
||
66 | cmp eax, EV_KEY |
||
67 | je ev_key |
||
68 | cmp eax, EV_BUTTON |
||
69 | je ev_button |
||
70 | cmp eax, EV_MOUSE |
||
71 | je ev_mouse |
||
72 | |||
73 | jmp update |
||
74 | |||
75 | ;---------------------- |
||
76 | |||
77 | ev_redraw: |
||
4943 | eAndrew | 78 | mcall 12, 1 |
79 | |||
80 | ; WINDOW |
||
81 | mov edx, [scn.win_face] |
||
4865 | eAndrew | 82 | or edx, 0x34 shl 24 |
4943 | eAndrew | 83 | mcall 0, <100, 236 + 100 - 50 - 25>, <100, 66 + LIST_SIZE>, , , sz_head |
4865 | eAndrew | 84 | |
4943 | eAndrew | 85 | ; TOOLBAR |
6163 | leency | 86 | mov ebx, 120 shl 16 + 64 |
4943 | eAndrew | 87 | mcall 8, , <-17, 12>, 2 + 1 shl 30 |
88 | add ebx, 4 shl 16 - (64 + 14) |
||
89 | mcall 4, , [scn.win_title], sz_cont, 10 |
||
4939 | eAndrew | 90 | |
4943 | eAndrew | 91 | ; CONTENT |
4875 | eAndrew | 92 | call draw_textbox |
4943 | eAndrew | 93 | call draw_keyb |
94 | call draw_list |
||
4865 | eAndrew | 95 | |
4943 | eAndrew | 96 | mcall 12, 2 |
4865 | eAndrew | 97 | |
98 | jmp update |
||
99 | |||
100 | ;---------------------- |
||
101 | |||
102 | ev_key: |
||
103 | mcall 2 |
||
104 | cmp ah, 27 |
||
105 | je exit |
||
4939 | eAndrew | 106 | cmp ah, 13 |
107 | je calc |
||
4865 | eAndrew | 108 | invoke editbox.key, edb1 |
109 | jmp update |
||
110 | |||
111 | ;---------------------- |
||
112 | |||
113 | ev_button: |
||
114 | mcall 17 |
||
115 | |||
4943 | eAndrew | 116 | ; EXIT |
4865 | eAndrew | 117 | cmp ah, 1 |
118 | je exit |
||
119 | |||
4943 | eAndrew | 120 | ; DELETE |
121 | cmp ah, 4 |
||
4865 | eAndrew | 122 | jne .not_del |
123 | cmp [edb1.pos], 0 |
||
124 | je update |
||
125 | mov eax, exp |
||
126 | add eax, [edb1.pos] |
||
127 | dec eax |
||
128 | mov ebx, exp |
||
129 | add ebx, [edb1.size] |
||
130 | inc ebx |
||
131 | @@: |
||
132 | cmp eax, ebx |
||
133 | je @f |
||
134 | mov cl, [eax + 1] |
||
135 | mov [eax], cl |
||
136 | inc eax |
||
137 | jmp @b |
||
138 | @@: |
||
139 | dec [edb1.pos] |
||
140 | dec [edb1.size] |
||
141 | m2m [edb1.shift], [edb1.pos] |
||
4875 | eAndrew | 142 | jmp .redraw |
4865 | eAndrew | 143 | .not_del: |
144 | |||
4943 | eAndrew | 145 | ; SHOW/HIDE KEYBOARD |
146 | cmp ah, 2 |
||
147 | jne .not_keyb |
||
4865 | eAndrew | 148 | |
4943 | eAndrew | 149 | cmp [keyb], byte 0 |
150 | je .open |
||
151 | |||
152 | mov [keyb], 0 |
||
153 | mov [sz_cont + 9], byte 0x10 |
||
6163 | leency | 154 | mcall 67, -1, -1, 286 - 25, -1 |
155 | jmp update |
||
4943 | eAndrew | 156 | |
157 | .open: |
||
158 | mov [keyb], 1 |
||
159 | mov [sz_cont + 9], byte 0x11 |
||
6163 | leency | 160 | mcall 67, -1, -1, 286 - 25 + KEYB_SIZE, -1 |
4943 | eAndrew | 161 | jmp update |
162 | .not_keyb: |
||
163 | |||
164 | ; CALCULATE |
||
165 | cmp ah, 19 |
||
166 | je calc |
||
167 | |||
168 | ; LIST |
||
169 | cmp ah, 0x60 |
||
170 | jl .not_list |
||
171 | |||
172 | sub ah, 0x60 |
||
173 | movzx ebx, ah |
||
174 | imul ebx, 512 |
||
175 | add ebx, history |
||
176 | add ebx, 482 |
||
177 | stdcall str_len, ebx |
||
178 | |||
179 | mov edx, exp |
||
180 | add edx, [edb1.size] |
||
181 | add edx, eax |
||
182 | mov edi, exp |
||
183 | add edi, [edb1.pos] |
||
184 | @@: |
||
185 | cmp edx, edi |
||
186 | je @f |
||
187 | mov esi, edx |
||
188 | sub esi, eax |
||
189 | push eax |
||
190 | mov al, [esi] |
||
191 | mov [edx], al |
||
192 | pop eax |
||
193 | dec edx |
||
194 | jmp @b |
||
195 | @@: |
||
196 | add [edb1.size], eax |
||
197 | |||
198 | @@: |
||
199 | cmp eax, 0 |
||
200 | je @f |
||
201 | mov cl, [ebx] |
||
202 | mov [edi], cl |
||
203 | inc edi |
||
204 | inc ebx |
||
205 | dec eax |
||
206 | inc [edb1.pos] |
||
207 | jmp @b |
||
208 | @@: |
||
209 | |||
210 | jmp .redraw |
||
211 | .not_list: |
||
212 | |||
213 | ; KEYBOARD |
||
214 | cmp ah, 10 |
||
215 | jl update |
||
216 | cmp ah, 50 |
||
217 | jg update |
||
218 | mov dh, ah |
||
219 | |||
220 | mov ebx, exp |
||
221 | add ebx, [edb1.size] |
||
222 | mov ecx, exp |
||
223 | add ecx, [edb1.pos] |
||
224 | cmp dh, 30 |
||
225 | jl @f |
||
226 | add ebx, 2 |
||
227 | @@: |
||
228 | cmp ebx, ecx |
||
229 | je @f |
||
230 | mov dl, [ebx - 1] |
||
231 | mov [ebx], dl |
||
232 | dec ebx |
||
233 | jmp @b |
||
234 | @@: |
||
235 | |||
236 | movzx eax, dh |
||
237 | add eax, buttons |
||
238 | sub eax, 10 |
||
239 | mov al, [eax] |
||
240 | |||
241 | mov [ebx], al |
||
242 | inc [edb1.size] |
||
243 | inc [edb1.pos] |
||
244 | cmp dh, 30 |
||
245 | jl @f |
||
246 | add [edb1.size], 2 |
||
247 | add [edb1.pos], 2 |
||
248 | @@: |
||
4875 | eAndrew | 249 | .redraw: |
250 | call draw_textbox |
||
251 | jmp update |
||
4865 | eAndrew | 252 | |
253 | ;---------------------- |
||
254 | |||
255 | ev_mouse: |
||
256 | mcall 2 |
||
257 | |||
258 | invoke editbox.mouse, edb1 |
||
259 | jmp update |
||
260 | |||
261 | ;---------------------- |
||
262 | |||
263 | exit: |
||
264 | mcall -1 |
||
265 | |||
266 | ;---------------------- |
||
267 | |||
268 | calc: |
||
269 | stdcall parse |
||
270 | cmp [error_n], 0 |
||
271 | jne .error |
||
272 | |||
4939 | eAndrew | 273 | mov [ans.buffer], word "= " |
274 | |||
275 | stdcall convert_to_str, eax, ans.buffer + 2 |
||
276 | add eax, 2 |
||
4943 | eAndrew | 277 | mov edi, eax |
4865 | eAndrew | 278 | imul eax, 6 |
279 | add eax, 9 |
||
280 | mov [ans.size], eax |
||
4943 | eAndrew | 281 | |
282 | ; HISTORY |
||
283 | mov ecx, LIST_ITEM_COUNT - 1 |
||
284 | mov eax, history |
||
285 | add eax, (LIST_ITEM_COUNT - 1) * 512 |
||
286 | @@: |
||
287 | mov ebx, eax |
||
288 | sub ebx, 512 |
||
289 | stdcall str_cpy, ebx, eax |
||
290 | add ebx, 480 |
||
291 | add eax, 480 |
||
292 | stdcall str_cpy, ebx, eax |
||
293 | sub ebx, 480 |
||
294 | sub eax, 480 |
||
295 | mov esi, [ebx + 508] |
||
296 | mov [eax + 508], esi |
||
297 | sub eax, 512 |
||
298 | loop @b |
||
299 | |||
300 | stdcall str_cpy, exp, history |
||
301 | stdcall str_cpy, ans.buffer, history + 480 |
||
302 | mov esi, [ans.size] |
||
303 | mov dword[history + 508], esi |
||
304 | not [his_even] |
||
305 | |||
306 | ; Check length |
||
307 | mov esi, 37 |
||
308 | sub esi, edi |
||
309 | stdcall str_len, exp |
||
310 | sub esi, eax |
||
311 | cmp esi, 0 |
||
312 | jg .redraw |
||
313 | |||
314 | mov ebx, history |
||
315 | add ebx, eax |
||
316 | add ebx, esi |
||
317 | mov [ebx], dword ".." |
||
318 | |||
4875 | eAndrew | 319 | jmp .redraw |
4865 | eAndrew | 320 | |
4943 | eAndrew | 321 | ; ERRORS |
322 | |||
4865 | eAndrew | 323 | .error: |
324 | cmp [error_n], 1 |
||
325 | je .err_1 |
||
4875 | eAndrew | 326 | cmp [error_n], 4 |
327 | je .err_4 |
||
328 | |||
329 | mov [ans.buffer + 0], dword "Expe" |
||
330 | mov [ans.buffer + 4], dword "cted" |
||
331 | mov [ans.buffer + 8], dword " ')'" |
||
332 | mov [ans.buffer + 12], byte 0 |
||
333 | mov [ans.size], 81 |
||
334 | |||
335 | cmp [error_n], 2 |
||
336 | je .redraw |
||
337 | cmp [error_n], 3 |
||
338 | je .err_3 |
||
4943 | eAndrew | 339 | cmp [error_n], 5 |
340 | je .err_5 |
||
4865 | eAndrew | 341 | .err_1: |
342 | mov [ans.buffer + 0], dword "Div." |
||
343 | mov [ans.buffer + 4], dword " by " |
||
4875 | eAndrew | 344 | mov [ans.buffer + 8], byte "0" |
345 | mov [ans.buffer + 9], byte 0 |
||
346 | mov [ans.size], 63 |
||
347 | jmp .redraw |
||
348 | .err_4: |
||
349 | mov [ans.buffer + 0], dword "Inpu" |
||
350 | mov [ans.buffer + 4], dword "t er" |
||
351 | mov [ans.buffer + 8], dword "rror" |
||
4865 | eAndrew | 352 | mov [ans.buffer + 12], byte 0 |
353 | mov [ans.size], 81 |
||
4875 | eAndrew | 354 | jmp .redraw |
355 | .err_3: |
||
356 | mov [ans.buffer + 10], byte "(" |
||
357 | jmp .redraw |
||
4943 | eAndrew | 358 | .err_5: |
359 | mov [ans.buffer + 10], byte "|" |
||
360 | jmp .redraw |
||
4865 | eAndrew | 361 | |
4875 | eAndrew | 362 | .redraw: |
363 | call draw_textbox |
||
4943 | eAndrew | 364 | call draw_list |
4875 | eAndrew | 365 | jmp update |
366 | |||
4865 | eAndrew | 367 | ;---------------------- |
368 | |||
4943 | eAndrew | 369 | proc draw_button, x, y |
370 | mcall 8, <[x], 30>, <[y], 21>, [but_id], [but_c] |
||
4865 | eAndrew | 371 | |
4943 | eAndrew | 372 | mov ebx, [x] |
373 | mov esi, [txt_size] |
||
374 | imul esi, 3 |
||
375 | mov edi, 16 |
||
376 | sub edi, esi |
||
377 | add ebx, edi |
||
378 | shl ebx, 16 |
||
379 | add ebx, [y] |
||
380 | add ebx, 7 |
||
381 | mcall 4, , [but_tc], [txt_id], [txt_size] |
||
382 | |||
383 | mov eax, [txt_size] |
||
384 | add [txt_id], eax |
||
385 | inc dword [but_id] |
||
386 | |||
387 | ret |
||
388 | endp |
||
389 | |||
4865 | eAndrew | 390 | ;---------------------- |
391 | |||
4875 | eAndrew | 392 | proc draw_textbox |
4943 | eAndrew | 393 | mcall 13, <4, 320 - 50 - 25>, < 8, 23>, [scn.gui_frame] |
4875 | eAndrew | 394 | mov edx, [scn.gui_face] |
395 | cmp [error_n], 0 |
||
396 | je @f |
||
397 | mov edx, 0xFFAAAA |
||
398 | @@: |
||
4943 | eAndrew | 399 | mcall 13, < 5, 318 - 50 - 25>, < 9, 21> |
400 | mcall , < 5, 318 - 50 - 25>, < 9, 1>, [scn.3d_face] |
||
4875 | eAndrew | 401 | mcall , < 5, 1>, < 10, 20> |
4943 | eAndrew | 402 | mcall , < 5, 318 - 50 - 25>, < 31, 1>, [scn.3d_light] |
4875 | eAndrew | 403 | |
4943 | eAndrew | 404 | mov ebx, 328 - 16 - 50 - 25 |
4939 | eAndrew | 405 | sub ebx, [ans.size] |
406 | shl ebx, 16 |
||
407 | add ebx, 16 |
||
408 | mov ecx, [scn.gui_intext] |
||
409 | or ecx, 1 shl 31 |
||
410 | mcall 4, , , ans.buffer |
||
4875 | eAndrew | 411 | |
4943 | eAndrew | 412 | mov ecx, [scn.gui_text] |
413 | mcall , <310 - 50 - 25, 16>, , btn_clr, 1 |
||
414 | add ebx, 1 shl 16 |
||
415 | mcall |
||
416 | |||
417 | mcall 8, <305 - 50 - 25, 17>, <9, 20>, 0x40000004 |
||
418 | |||
4875 | eAndrew | 419 | mcall 1, 4, 8, [scn.win_body] |
4943 | eAndrew | 420 | mcall , 323 - 50 - 25 |
4875 | eAndrew | 421 | mcall , , 30, [scn.3d_light] |
422 | mcall , 4 |
||
423 | |||
4943 | eAndrew | 424 | mov ebx, 318 - 16 - 50 - 25 |
4875 | eAndrew | 425 | sub ebx, [ans.size] |
426 | cmp ebx, 24 |
||
427 | jg @f |
||
428 | mov ebx, 24 |
||
429 | @@: |
||
430 | mov [edb1.width], ebx |
||
431 | m2m [edb1.color], [scn.gui_face] |
||
432 | m2m [edb1.focus_border_color], [scn.gui_face] |
||
433 | cmp [error_n], 0 |
||
434 | je @f |
||
435 | mov [edb1.color], 0xFFAAAA |
||
436 | mov [edb1.focus_border_color], 0xFFAAAA |
||
437 | @@: |
||
438 | invoke editbox.draw, edb1 |
||
439 | |||
440 | ret |
||
441 | endp |
||
442 | |||
443 | ;---------------------- |
||
444 | |||
4943 | eAndrew | 445 | proc draw_keyb |
446 | cmp [keyb], byte 0 |
||
447 | je @f |
||
448 | |||
449 | mov [txt_size], 1 |
||
450 | mov [but_id], 0x0000000A |
||
451 | mov [txt_id], buttons |
||
452 | |||
453 | mov eax, [scn.win_face] |
||
454 | mov [but_c], eax |
||
455 | mov eax, [scn.win_text] |
||
456 | mov [but_tc], eax |
||
457 | stdcall draw_button, 4 + 278 - 25, 42 - 25 - 8 |
||
458 | stdcall draw_button, 37 + 278 - 25, 42 - 25 - 8 |
||
459 | stdcall draw_button, 70 + 278 - 25, 42 - 25 - 8 |
||
460 | stdcall draw_button, 103 + 278 - 25, 42 - 25 - 8 |
||
461 | stdcall draw_button, 103 + 278 - 25, 66 - 25 - 8 |
||
462 | stdcall draw_button, 103 + 278 - 25, 90 - 25 - 8 |
||
463 | stdcall draw_button, 103 + 278 - 25, 114 - 25 - 8 |
||
464 | stdcall draw_button, 70 + 278 - 25, 139 - 25 - 8 |
||
465 | stdcall draw_button, 37 + 278 - 25, 139 - 25 - 8 |
||
466 | |||
467 | mov eax, [scn.btn_inface] |
||
468 | mov [but_c], eax |
||
469 | mov eax, [scn.btn_intext] |
||
470 | mov [but_tc], eax |
||
471 | stdcall draw_button, 103 + 278 - 25, 139 - 25 - 8 |
||
472 | |||
473 | mov eax, [scn.btn_face] |
||
474 | mov [but_c], eax |
||
475 | mov eax, [scn.btn_text] |
||
476 | mov [but_tc], eax |
||
477 | stdcall draw_button, 4 + 278 - 25, 66 - 25 - 8 |
||
478 | stdcall draw_button, 37 + 278 - 25, 66 - 25 - 8 |
||
479 | stdcall draw_button, 70 + 278 - 25, 66 - 25 - 8 |
||
480 | stdcall draw_button, 4 + 278 - 25, 90 - 25 - 8 |
||
481 | stdcall draw_button, 37 + 278 - 25, 90 - 25 - 8 |
||
482 | stdcall draw_button, 70 + 278 - 25, 90 - 25 - 8 |
||
483 | stdcall draw_button, 4 + 278 - 25, 114 - 25 - 8 |
||
484 | stdcall draw_button, 37 + 278 - 25, 114 - 25 - 8 |
||
485 | stdcall draw_button, 70 + 278 - 25, 114 - 25 - 8 |
||
486 | stdcall draw_button, 4 + 278 - 25, 139 - 25 - 8 |
||
487 | |||
488 | @@: |
||
489 | ret |
||
490 | endp |
||
491 | |||
492 | ;---------------------- |
||
493 | |||
494 | proc draw_list |
||
495 | ; BACKGROUND |
||
496 | mov edi, LIST_ITEM_COUNT |
||
497 | mov eax, 13 |
||
498 | mov ebx, 4 shl 16 + 320 - 50 - 25 |
||
499 | mov ecx, 37 shl 16 + LIST_ITEM_SIZE |
||
500 | mov edx, LIST_ITEM_COLOR1 |
||
501 | cmp [his_even], byte 0 |
||
502 | je @f |
||
503 | mov edx, LIST_ITEM_COLOR2 |
||
504 | @@: |
||
505 | mcall |
||
506 | add ecx, LIST_ITEM_SIZE shl 16 |
||
507 | cmp edx, LIST_ITEM_COLOR1 |
||
508 | je .set_color_to_2 |
||
509 | mov edx, LIST_ITEM_COLOR1 |
||
510 | jmp .next |
||
511 | .set_color_to_2: |
||
512 | mov edx, LIST_ITEM_COLOR2 |
||
513 | .next: |
||
514 | dec edi |
||
515 | cmp edi, 0 |
||
516 | jne @b |
||
517 | |||
518 | ; BUTTONS |
||
519 | mov edi, LIST_ITEM_COUNT |
||
520 | mov eax, 8 |
||
521 | mov ebx, 4 shl 16 + 320 - 50 - 25 |
||
522 | mov ecx, 37 shl 16 + LIST_ITEM_SIZE |
||
523 | mov edx, 0x40000060 |
||
524 | @@: |
||
525 | mcall |
||
526 | add ecx, LIST_ITEM_SIZE shl 16 |
||
527 | inc edx |
||
528 | dec edi |
||
529 | cmp edi, 0 |
||
530 | jne @b |
||
531 | |||
532 | ; TEXT |
||
533 | mov edi, LIST_ITEM_COUNT |
||
534 | mov eax, 4 |
||
535 | mov ebx, 8 shl 16 + 37 + LIST_ITEM_Y |
||
536 | mov ecx, LIST_ITEM_TEXT1 |
||
537 | cmp [his_even], byte 0 |
||
538 | je @f |
||
539 | mov ecx, LIST_ITEM_TEXT2 |
||
540 | @@: |
||
541 | or ecx, 1 shl 31 |
||
542 | mov edx, history |
||
543 | @@: |
||
544 | mcall |
||
545 | |||
546 | push ebx |
||
547 | add ebx, (320 - 50 - 25) shl 16 |
||
548 | mov esi, [edx + 508] |
||
549 | shl esi, 16 |
||
550 | sub ebx, esi |
||
551 | add edx, 480 |
||
552 | mcall |
||
553 | pop ebx |
||
554 | |||
555 | add edx, 32 |
||
556 | add ebx, LIST_ITEM_SIZE |
||
557 | |||
558 | and ecx, 0xFFFFFF |
||
559 | cmp ecx, LIST_ITEM_TEXT2 |
||
560 | je .set_color_to_2_txt |
||
561 | mov ecx, LIST_ITEM_TEXT2 |
||
562 | jmp .next_txt |
||
563 | .set_color_to_2_txt: |
||
564 | mov ecx, LIST_ITEM_TEXT1 |
||
565 | .next_txt: |
||
566 | or ecx, 1 shl 31 |
||
567 | |||
568 | dec edi |
||
569 | cmp edi, 0 |
||
570 | jne @b |
||
571 | |||
572 | ret |
||
573 | endp |
||
574 | |||
575 | ;---------------------- |
||
576 | |||
577 | proc str_len uses ebx, str |
||
578 | xor eax, eax |
||
579 | mov ebx, [str] |
||
580 | @@: |
||
581 | cmp [ebx], byte 0 |
||
582 | je @f |
||
583 | inc eax |
||
584 | inc ebx |
||
585 | jmp @b |
||
586 | @@: |
||
587 | |||
588 | ret |
||
589 | endp |
||
590 | |||
591 | ;---------------------- |
||
592 | |||
593 | proc str_cpy uses eax ebx ecx, from, to |
||
594 | mov eax, [from] |
||
595 | mov ebx, [to] |
||
596 | @@: |
||
597 | cmp [eax], byte 0 |
||
598 | je @f |
||
599 | mov cl, [eax] |
||
600 | mov [ebx], cl |
||
601 | inc eax |
||
602 | inc ebx |
||
603 | jmp @b |
||
604 | @@: |
||
605 | mov [ebx], byte 0 |
||
606 | ret |
||
607 | endp |
||
608 | |||
609 | ;---------------------- |
||
610 | |||
4865 | eAndrew | 611 | dataend: |
612 | |||
613 | ;=============================== |
||
614 | |||
615 | rb 2048 |
||
616 | stacktop: |
||
617 | |||
4943 | eAndrew | 618 | exp rb 480 |
4865 | eAndrew | 619 | exp_pos rd 1 |
620 | exp_lvl rd 1 |
||
4943 | eAndrew | 621 | abs_lvl rd 1 |
4865 | eAndrew | 622 | group rd 1 |
623 | |||
4943 | eAndrew | 624 | ans.buffer:rb 480 |
4865 | eAndrew | 625 | ans.size rd 1 |
626 | error_n rd 1 |
||
627 | |||
628 | timer rd 1 |
||
629 | but_id rd 1 |
||
4943 | eAndrew | 630 | but_c rd 1 |
631 | but_tc rd 1 |
||
4875 | eAndrew | 632 | txt_id rd 1 |
4943 | eAndrew | 633 | txt_size rd 1 |
634 | keyb rb 1 |
||
4865 | eAndrew | 635 | |
4943 | eAndrew | 636 | his_even rb 1 |
637 | history rb 512 * LIST_ITEM_COUNT |
||
638 | rb 512 |
||
6163 | leency | 639 | |
640 | struc system_colors_internal { |
||
641 | .3d_face dd 0xCED0D0 |
||
642 | .3d_dark dd 0xD7D7D7 |
||
643 | .3d_light dd 0xFEFEFE |
||
644 | .win_title dd 0x2F2F2F |
||
645 | .win_body dd 0xE4DFE1 |
||
646 | .btn_face dd 0xEFEBEF |
||
647 | .btn_text dd 0x373C42 |
||
648 | .win_text dd 0x000000 |
||
649 | .panel_frame dd 0x94AECE |
||
650 | .win_face dd 0xE1E1E1 |
||
651 | .win_inface dd 0xE1E1E1 |
||
652 | .win_frame dd 0x204962 |
||
653 | .btn_inface dd 0xEFEBEF |
||
654 | .btn_intext dd 0xD0D9E8 |
||
655 | .btn_fctext dd 0x2D3135 |
||
656 | .gui_shadow dd 0xFFFFFF |
||
657 | .gui_face dd 0xFAF8FA |
||
658 | .gui_inface dd 0xF6F3F6 |
||
659 | .gui_fcface dd 0xFAF8FA |
||
660 | .gui_frame dd 0x7698C0 |
||
661 | .gui_text dd 0x373C42 |
||
662 | .gui_intext dd 0x5F5F5F |
||
663 | .gui_select dd 0xC7C9C9 |
||
664 | } |
||
4943 | eAndrew | 665 | |
6163 | leency | 666 | scn system_colors_internal |
667 | |||
4939 | eAndrew | 668 | memory:9,>305>310>>>>>>>>>>4,>[y],>[x],>-17,>100,>100,> |