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