Rev 9570 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
51 | mikedld | 1 | ;******************************** |
2 | ;* * |
||
3 | ;* DESKTOP ICON MANAGER * |
||
4 | ;* * |
||
5 | ;* Compile with flat assembler * |
||
6 | ;* * |
||
7 | ;******************************** |
||
2697 | mario79 | 8 | ; version: 3.11 |
9 | ; last update: 28/05/2012 |
||
10 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
11 | ; changes: Fixed crash when trying to select some of the icons. |
||
12 | ; (bug 000013) |
||
13 | ;--------------------------------------------------------------------- |
||
2548 | mario79 | 14 | ; version: 3.10 |
15 | ; last update: 03/04/2012 |
||
16 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
17 | ; changes: Drawing selection rectangle. |
||
18 | ; Using new kernel function: 15.9 |
||
19 | ;--------------------------------------------------------------------- |
||
2542 | mario79 | 20 | ; version: 3.01 |
21 | ; last update: 02/04/2012 |
||
22 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
23 | ; changes: Fix for previous revision - not drawed icons after |
||
24 | ; startup in certain cases. |
||
25 | ;--------------------------------------------------------------------- |
||
2538 | mario79 | 26 | ; version: 3.00 |
27 | ; last update: 02/04/2012 |
||
28 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
2548 | mario79 | 29 | ; changes: Program use only 2 threads: draw and mouse |
30 | ; Using new kernel functions: 25, 34, 15.8, 4 (redirect). |
||
31 | ; Using PNG icons with transparent. |
||
2538 | mario79 | 32 | ;--------------------------------------------------------------------- |
2476 | mario79 | 33 | ; version: 2.11 |
34 | ; last update: 19/03/2012 |
||
35 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
36 | ; changes: The program uses only 140 Kb memory is now. |
||
37 | ; Some speedup. |
||
2475 | mario79 | 38 | ;--------------------------------------------------------------------- |
39 | ; version: 2.1 |
||
40 | ; last update: 17/03/2012 |
||
41 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
42 | ; changes: Global optimization! The program uses |
||
43 | ; only 161 KB of memory instead of 603 kb is now. |
||
44 | ;--------------------------------------------------------------------- |
||
45 | ; version: 2.02 |
||
46 | ; last update: 15/03/2012 |
||
47 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
48 | ; changes: some optimisations and code refactoring |
||
49 | ;--------------------------------------------------------------------- |
||
50 | ; version: 2.01 |
||
51 | ; last update: 27/09/2011 |
||
52 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
53 | ; changes: deactivate the window after click |
||
54 | ; (working to kernel r.2244 and above) |
||
55 | ;--------------------------------------------------------------------- |
||
56 | ; Many fix's and changes created by: |
||
57 | ; Halyavin, Diamond, Heavyiron, |
||
58 | ; SPraid, Dunkaist |
||
59 | ;--------------------------------------------------------------------- |
||
60 | ; version: 2.00 |
||
2538 | mario79 | 61 | ; last update: 22/02/2005 |
2475 | mario79 | 62 | ; changed by: Willow and Mario79 |
63 | ; changes: modified for work with new multi-thread ICON. |
||
51 | mikedld | 64 | ;****************************************************************************** |
2538 | mario79 | 65 | ICON_SIZE equ 32*32*4 |
51 | mikedld | 66 | REC_SIZE equ 80 |
2538 | mario79 | 67 | ICONS_DAT equ '/sys/icons.dat' |
2548 | mario79 | 68 | ICON_APP equ '/sys/ICON' |
9587 | vitalkrilo | 69 | ICON_STRIP equ '/sys/iconstrp.png' |
2469 | mario79 | 70 | ;------------------------------------------------------------------------------ |
71 | use32 |
||
72 | org 0x0 |
||
2475 | mario79 | 73 | db 'MENUET01' ; 8 byte id |
74 | dd 0x01 ; header version |
||
75 | dd START ; start of code |
||
76 | dd IM_END ; size of image |
||
77 | dd I_END ; memory for app |
||
78 | dd stack_area ; esp |
||
79 | dd I_Param ; boot parameters |
||
2538 | mario79 | 80 | dd path ; path |
2469 | mario79 | 81 | ;------------------------------------------------------------------------------ |
2538 | mario79 | 82 | include 'lang.inc' |
2469 | mario79 | 83 | include '../../../macros.inc' |
9570 | IgorA | 84 | include '../../../KOSfuncs.inc' |
85 | include '../../../load_lib.mac' |
||
3013 | dunkaist | 86 | ;include '../../../debug.inc' |
2469 | mario79 | 87 | ;------------------------------------------------------------------------------ |
2538 | mario79 | 88 | @use_library ;use load lib macros |
89 | ;------------------------------------------------------------------------------ |
||
2475 | mario79 | 90 | START: ; start of execution |
2476 | mario79 | 91 | mcall 68,11 |
2538 | mario79 | 92 | ;--------------------------------------------------------------------- |
93 | load_libraries l_libs_start,end_l_libs |
||
94 | test eax,eax |
||
95 | jnz close |
||
96 | |||
97 | ; unpack deflate |
||
98 | mov eax,[unpack_DeflateUnpack2] |
||
99 | mov [deflate_unpack],eax |
||
100 | ;--------------------------------------------------------------------- |
||
2697 | mario79 | 101 | ; get size of file ICONSTRP.PNG |
2469 | mario79 | 102 | mcall 70,finfo |
2476 | mario79 | 103 | test eax,eax |
104 | jnz close |
||
2697 | mario79 | 105 | ; get memory for ICONSTRP.PNG |
2538 | mario79 | 106 | mov ecx,[procinfo+32] |
2476 | mario79 | 107 | mov [finfo.size],ecx |
2538 | mario79 | 108 | mov [img_size],ecx |
2476 | mario79 | 109 | mcall 68,12 |
110 | mov [finfo.point],eax |
||
2538 | mario79 | 111 | mov [image_file],eax |
2697 | mario79 | 112 | ; load ICONSTRP.PNG |
2476 | mario79 | 113 | mov [finfo],dword 0 |
114 | mcall 70,finfo |
||
115 | test eax,eax |
||
116 | jnz close |
||
2538 | mario79 | 117 | ; convert PNG to RAW |
118 | xor eax,eax |
||
119 | mov [return_code],eax |
||
120 | |||
121 | push image_file |
||
122 | call [cnv_png_import.Start] |
||
123 | |||
124 | mov eax,[raw_pointer] |
||
2697 | mario79 | 125 | mov ebx,[eax+32] |
126 | mov [strip_file_size],ebx |
||
2538 | mario79 | 127 | mov eax,[eax+28] |
128 | add eax,[raw_pointer] |
||
2476 | mario79 | 129 | mov [strip_file],eax |
130 | ; back memeory to system |
||
131 | mcall 68,13,[finfo.point] |
||
2538 | mario79 | 132 | |
133 | mov eax,[raw_pointer] |
||
134 | mov eax,[eax+8] |
||
2469 | mario79 | 135 | shr eax,5 |
136 | mov [icon_count],eax |
||
2697 | mario79 | 137 | |
138 | and eax,0x7 |
||
139 | mov [cur_band_compensation],eax |
||
2476 | mario79 | 140 | ; load ICON.DAT |
2469 | mario79 | 141 | call load_ic |
142 | boot_str: |
||
143 | cmp [I_Param],dword 'BOOT' |
||
2538 | mario79 | 144 | je START2 |
145 | ;------------------------------------------------------------------------------ |
||
146 | ; ICON EDITOR MODE - START1 entering label |
||
147 | ;------------------------------------------------------------------------------ |
||
148 | START1: |
||
2469 | mario79 | 149 | call load_icon_list |
2538 | mario79 | 150 | ;------------------------------------------------------------------------------ |
151 | align 4 |
||
2469 | mario79 | 152 | red: |
2475 | mario79 | 153 | call draw_window ; at first, draw the window |
2469 | mario79 | 154 | mov esi,[current_icon] |
155 | jmp band |
||
156 | ;------------------------------------------------------------------------------ |
||
157 | align 4 |
||
51 | mikedld | 158 | still: |
2469 | mario79 | 159 | mcall 10 ; wait here for event |
2475 | mario79 | 160 | dec eax ; redraw request ? |
2469 | mario79 | 161 | jz red |
162 | |||
2475 | mario79 | 163 | dec eax ; key in buffer ? |
2469 | mario79 | 164 | jz key |
165 | ;------------------------------------------------------------------------------ |
||
166 | align 4 |
||
2475 | mario79 | 167 | button: |
2469 | mario79 | 168 | mcall 17 ; get id |
169 | shr eax,8 |
||
51 | mikedld | 170 | |
2475 | mario79 | 171 | cmp eax,1 ; button id=1 ? |
2469 | mario79 | 172 | je close |
2538 | mario79 | 173 | |
174 | mov esi,[current_icon] |
||
175 | add esi,12 |
||
176 | mov ebx,[cur_band] |
||
177 | |||
178 | cmp eax,11 |
||
179 | jb @f |
||
180 | cmp eax,13 |
||
181 | ja @f |
||
182 | call read_string |
||
183 | jmp still |
||
2469 | mario79 | 184 | ;-------------------------------------- |
185 | align 4 |
||
2538 | mario79 | 186 | @@: |
187 | cmp eax,21 ; apply changes |
||
188 | je apply |
||
189 | |||
190 | cmp eax,22 ; user pressed the 'add icon' button |
||
191 | je add_icon |
||
192 | |||
193 | cmp eax,23 ; user pressed the remove icon button |
||
194 | je remove_icon |
||
195 | |||
196 | |||
197 | cmp eax,30 ; left arrow to icons bar |
||
198 | je arrow.left |
||
199 | |||
2469 | mario79 | 200 | cmp eax,31 ; right arrow to icons bar |
2538 | mario79 | 201 | je arrow.right |
202 | |||
203 | cmp eax,32 |
||
204 | je ico |
||
51 | mikedld | 205 | |
2538 | mario79 | 206 | cmp eax,40 ; user pressed button for icon position |
207 | jae press_button_for_icon_position |
||
208 | |||
209 | jmp still |
||
210 | ;------------------------------------------------------------------------------ |
||
211 | align 4 |
||
212 | arrow: |
||
213 | .right: |
||
214 | |||
2469 | mario79 | 215 | mov eax,[icon_count] |
2538 | mario79 | 216 | sub eax,8 |
217 | cmp ebx,eax |
||
218 | jae still ;.drwic2 |
||
51 | mikedld | 219 | |
2538 | mario79 | 220 | add ebx,1 |
2469 | mario79 | 221 | jmp .drwic2 |
222 | ;-------------------------------------- |
||
223 | align 4 |
||
2538 | mario79 | 224 | .left: |
2469 | mario79 | 225 | test ebx,ebx |
2538 | mario79 | 226 | jz still |
51 | mikedld | 227 | |
2538 | mario79 | 228 | sub ebx,1 |
2469 | mario79 | 229 | ;-------------------------------------- |
230 | align 4 |
||
231 | .drwic2: |
||
232 | mov [cur_band],ebx |
||
233 | ;-------------------------------------- |
||
234 | align 4 |
||
235 | .drwic1: |
||
236 | call draw_icon |
||
237 | jmp still |
||
2538 | mario79 | 238 | ;------------------------------------------------------------------------------ |
2469 | mario79 | 239 | align 4 |
2538 | mario79 | 240 | ico: |
2469 | mario79 | 241 | push ebx |
242 | mcall 37,1 |
||
243 | pop ebx |
||
244 | shr eax,16 |
||
245 | sub eax,33-19 |
||
246 | mov edi,34 |
||
247 | xor edx,edx |
||
248 | div edi |
||
249 | lea ecx,[ebx+eax] |
||
250 | cmp ecx,[icon_count] |
||
251 | jae still |
||
51 | mikedld | 252 | |
2469 | mario79 | 253 | mov ecx,eax |
254 | add eax,ebx |
||
255 | call itoa |
||
2538 | mario79 | 256 | jmp arrow.drwic1 |
257 | ;------------------------------------------------------------------------------ |
||
2475 | mario79 | 258 | align 4 |
2538 | mario79 | 259 | apply: |
2469 | mario79 | 260 | ; (1) save list |
2538 | mario79 | 261 | mov ebx,finfo |
2469 | mario79 | 262 | mov dword[ebx],2 |
263 | mov edx,REC_SIZE |
||
264 | imul edx,dword [icons] |
||
265 | mov [ebx+12],edx |
||
266 | mov esi,iconlst |
||
267 | call lst_path |
||
268 | mcall 70 |
||
269 | ; (2) terminate all icons |
||
2475 | mario79 | 270 | or ecx,-1 |
2538 | mario79 | 271 | mcall 9,procinfo |
2469 | mario79 | 272 | mov edi,[ebx+30] |
273 | ;-------------------------------------- |
||
274 | align 4 |
||
275 | newread2: |
||
276 | mov esi,1 |
||
277 | ;-------------------------------------- |
||
278 | align 4 |
||
279 | newread: |
||
280 | inc esi |
||
281 | mov ecx,esi |
||
2538 | mario79 | 282 | mcall 9,procinfo |
283 | |||
2469 | mario79 | 284 | cmp edi,[ebx+30] |
285 | je newread |
||
51 | mikedld | 286 | |
2469 | mario79 | 287 | cmp esi,eax |
2538 | mario79 | 288 | jg .apply_changes |
51 | mikedld | 289 | |
2475 | mario79 | 290 | mov eax,[ebx+10] |
2469 | mario79 | 291 | and eax,not 20202020h |
292 | cmp eax,'@ICO' |
||
293 | jz @f |
||
294 | cmp eax,'ICON' |
||
295 | jne newread |
||
296 | ;-------------------------------------- |
||
297 | align 4 |
||
298 | @@: |
||
2538 | mario79 | 299 | xor eax,eax |
2475 | mario79 | 300 | cmp eax,[ebx+42] |
2469 | mario79 | 301 | jne newread |
51 | mikedld | 302 | |
2475 | mario79 | 303 | cmp eax,[ebx+46] |
2469 | mario79 | 304 | jne newread |
51 | mikedld | 305 | |
2469 | mario79 | 306 | mov ecx,esi |
307 | mcall 18,2 |
||
2538 | mario79 | 308 | |
2469 | mario79 | 309 | jmp newread2 |
2538 | mario79 | 310 | ;-------------------------------------- |
2469 | mario79 | 311 | align 4 |
2538 | mario79 | 312 | .apply_changes: |
2469 | mario79 | 313 | mov ebx, finfo_start |
314 | mov dword [ebx+8], boot_str+6 |
||
315 | mov esi, iconname |
||
316 | call lst_path |
||
317 | mcall 70 |
||
2538 | mario79 | 318 | mcall 68,1 |
319 | mcall 15,3 |
||
2469 | mario79 | 320 | jmp still |
321 | ;------------------------------------------------------------------------------ |
||
322 | align 4 |
||
2538 | mario79 | 323 | add_icon: |
2469 | mario79 | 324 | mov ebx,24*65536+250+8*14 |
325 | mcall 4,,0xc0ff0000,add_text,,0xffffff |
||
408 | halyavin | 326 | |
2469 | mario79 | 327 | mcall 10 |
328 | cmp eax,3 |
||
329 | jne still |
||
51 | mikedld | 330 | |
2469 | mario79 | 331 | mcall 17 |
332 | shr eax,8 |
||
333 | cmp eax,40 |
||
334 | jb no_f |
||
335 | mov edi,eax |
||
336 | sub eax,40 |
||
337 | |||
2475 | mario79 | 338 | xor edx,edx ; bcd -> 10 |
2469 | mario79 | 339 | mov ebx,16 |
340 | div ebx |
||
341 | ; multiply x10 |
||
342 | shl eax,1 ; multiply x2 |
||
343 | lea eax,[eax+eax*4] ; multiply x5 |
||
344 | add eax,edx |
||
345 | |||
346 | mov ebx,eax |
||
347 | add ebx,icons_reserved |
||
348 | cmp [ebx],byte 'x' |
||
349 | je no_f |
||
350 | mov [ebx],byte 'x' |
||
351 | |||
352 | mov [cur_btn],edi |
||
353 | xor edx,edx |
||
354 | mov ebx,10 |
||
355 | div ebx |
||
356 | add eax,65 |
||
357 | add edx,65 |
||
358 | mov [icon_default+0],dl |
||
359 | mov [icon_default+1],al |
||
360 | |||
361 | inc dword [icons] |
||
362 | mov edi,[icons] |
||
363 | dec edi |
||
364 | imul edi,REC_SIZE |
||
365 | add edi,icon_data |
||
366 | |||
367 | mov [current_icon],edi |
||
51 | mikedld | 368 | |
2469 | mario79 | 369 | mov esi,icon_default |
370 | mov ecx,REC_SIZE |
||
371 | cld |
||
372 | rep movsb |
||
373 | mov esi,[current_icon] |
||
374 | jmp band |
||
375 | ;-------------------------------------- |
||
376 | align 4 |
||
377 | no_f: |
||
378 | call draw_btns ;draw_window |
||
379 | jmp still |
||
2538 | mario79 | 380 | ;------------------------------------------------------------------------------ |
2469 | mario79 | 381 | align 4 |
2538 | mario79 | 382 | remove_icon: |
2469 | mario79 | 383 | mov ebx,24*65536+250+8*14 |
384 | mcall 4,,0xc0ff0000,rem_text,,0xffffff |
||
385 | |||
386 | mcall 10 |
||
387 | cmp eax,3 |
||
2476 | mario79 | 388 | jne no_f |
51 | mikedld | 389 | |
2469 | mario79 | 390 | mcall 17 |
391 | shr eax,8 |
||
392 | cmp eax,40 |
||
2475 | mario79 | 393 | jb red |
2469 | mario79 | 394 | sub eax,40 |
395 | |||
396 | xor edx,edx |
||
397 | mov ebx,16 |
||
398 | div ebx |
||
399 | ; multiply x10 |
||
400 | shl eax,1 ; multiply x2 |
||
401 | lea eax,[eax+eax*4] ; multiply x5 |
||
402 | add eax,edx |
||
403 | |||
404 | mov ebx,eax |
||
405 | add ebx,icons_reserved |
||
406 | cmp [ebx],byte 'x' |
||
407 | jne red |
||
408 | mov [ebx],byte ' ' |
||
409 | |||
410 | xor edx,edx |
||
411 | mov ebx,10 |
||
412 | div ebx |
||
413 | shl eax,8 |
||
414 | mov al,dl |
||
415 | |||
416 | add eax,65*256+65 |
||
417 | |||
418 | mov esi,icon_data |
||
419 | mov edi,REC_SIZE |
||
420 | imul edi,[icons] |
||
421 | add edi,icon_data |
||
422 | ;-------------------------------------- |
||
423 | align 4 |
||
424 | news: |
||
425 | cmp word [esi],ax |
||
426 | je foundi |
||
427 | add esi,REC_SIZE |
||
428 | cmp esi,edi |
||
429 | jb news |
||
430 | jmp red |
||
431 | ;-------------------------------------- |
||
432 | align 4 |
||
433 | foundi: |
||
434 | mov ecx,edi |
||
435 | sub ecx,esi |
||
436 | |||
437 | mov edi,esi |
||
438 | add esi,REC_SIZE |
||
439 | |||
440 | cld |
||
441 | rep movsb |
||
442 | |||
443 | dec [icons] |
||
444 | |||
445 | mov eax,icon_data |
||
446 | mov [current_icon],eax |
||
447 | movzx ebx,word[eax] |
||
448 | sub bx,'AA' |
||
449 | shl bl,4 |
||
450 | shr ebx,4 |
||
451 | add ebx,40 |
||
452 | mov [cur_btn],ebx |
||
453 | jmp red |
||
2538 | mario79 | 454 | ;------------------------------------------------------------------------------ |
2469 | mario79 | 455 | align 4 |
2538 | mario79 | 456 | press_button_for_icon_position: |
2469 | mario79 | 457 | mov edi,eax |
458 | sub eax,40 |
||
459 | mov edx,eax |
||
460 | shl eax,4 |
||
461 | and edx,0xf |
||
462 | mov dh,ah |
||
463 | add edx,65*256+65 |
||
464 | mov esi,icon_data |
||
465 | mov ecx,[icons] |
||
466 | cld |
||
467 | ;-------------------------------------- |
||
468 | align 4 |
||
469 | findl1: |
||
470 | cmp dx,[esi] |
||
471 | je foundl1 |
||
472 | add esi,REC_SIZE |
||
473 | loop findl1 |
||
474 | jmp still |
||
475 | ;-------------------------------------- |
||
476 | align 4 |
||
477 | foundl1: |
||
478 | mov [current_icon],esi |
||
479 | mov [cur_btn],edi |
||
480 | ;-------------------------------------- |
||
481 | align 4 |
||
482 | band: |
||
483 | add esi,12 |
||
2538 | mario79 | 484 | call ASCII_to_icon_number |
2697 | mario79 | 485 | ; and eax,0xfffff8 |
486 | cmp eax,[cur_band_compensation] |
||
487 | jb @f |
||
488 | |||
489 | sub eax,[cur_band_compensation] |
||
490 | ;-------------------------------------- |
||
491 | align 4 |
||
492 | @@: |
||
2469 | mario79 | 493 | mov [cur_band],eax |
494 | call draw_btns |
||
495 | jmp still |
||
496 | ;------------------------------------------------------------------------------ |
||
497 | align 4 |
||
51 | mikedld | 498 | print_strings: |
2469 | mario79 | 499 | pusha |
500 | mcall 13,<100,180>,<278+12,40>,0xffffff ; clear text area |
||
501 | xor edi,edi |
||
2475 | mario79 | 502 | mov eax,4 ; icon text |
2469 | mario79 | 503 | mov ebx,100*65536+278+14 |
504 | mov ecx,3 |
||
505 | ;-------------------------------------- |
||
506 | align 4 |
||
507 | .ll: |
||
508 | push ecx |
||
509 | mov ecx,0x000000 |
||
510 | mov edx,[current_icon] |
||
511 | add edx,[positions+edi*4] |
||
512 | movzx esi,byte[str_lens+edi] |
||
513 | inc edi |
||
514 | mcall |
||
515 | add ebx,14 |
||
516 | pop ecx |
||
517 | loop .ll |
||
51 | mikedld | 518 | |
2469 | mario79 | 519 | popa |
520 | ret |
||
521 | ;------------------------------------------------------------------------------ |
||
522 | align 4 |
||
51 | mikedld | 523 | load_icon_list: |
2475 | mario79 | 524 | mov edi,icons_reserved ; clear reserved area |
2469 | mario79 | 525 | mov eax,32 |
526 | mov ecx,10*9 |
||
527 | cld |
||
528 | rep stosb |
||
51 | mikedld | 529 | |
2475 | mario79 | 530 | mov ecx,[icons] ; set used icons to reserved area |
2469 | mario79 | 531 | mov esi,icon_data |
532 | ;-------------------------------------- |
||
533 | align 4 |
||
534 | ldl1: |
||
535 | movzx ebx,byte [esi+1] |
||
536 | sub ebx,65 |
||
537 | ; multiply x10 |
||
538 | shl ebx,1 ; multiply x2 |
||
539 | lea ebx,[ebx+ebx*4] ; multiply x5 |
||
540 | movzx eax,byte [esi] |
||
541 | add ebx,eax |
||
542 | sub ebx,65 |
||
543 | add ebx,icons_reserved |
||
544 | mov [ebx],byte 'x' |
||
545 | add esi,REC_SIZE |
||
546 | loop ldl1 |
||
547 | ret |
||
548 | ;------------------------------------------------------------------------------ |
||
549 | align 4 |
||
51 | mikedld | 550 | lst_path: |
2469 | mario79 | 551 | mov ecx,30 |
552 | mov edi,finfo.path |
||
553 | rep movsb |
||
554 | ret |
||
555 | ;------------------------------------------------------------------------------ |
||
556 | align 4 |
||
51 | mikedld | 557 | load_ic: |
2469 | mario79 | 558 | mov ebx,finfo |
559 | mov dword[ebx+12],48*REC_SIZE |
||
560 | mov dword[ebx+16],icon_data |
||
561 | mov esi,iconlst |
||
562 | call lst_path |
||
563 | mcall 70 |
||
564 | lea eax,[ebx+10] |
||
565 | xor edx,edx |
||
566 | mov ebx,REC_SIZE |
||
567 | div ebx |
||
568 | mov [icons],eax |
||
569 | ret |
||
570 | ;------------------------------------------------------------------------------ |
||
571 | align 4 |
||
51 | mikedld | 572 | read_string: |
2469 | mario79 | 573 | pusha |
574 | sub eax,11 |
||
575 | movzx ecx,byte[str_lens+eax] |
||
576 | mov [cur_str],ecx |
||
577 | mov eax,[positions+eax*4] |
||
578 | mov edi,[current_icon] |
||
579 | add edi,eax |
||
580 | mov [addr],edi |
||
581 | add edi,ecx |
||
582 | ;-------------------------------------- |
||
583 | align 4 |
||
584 | .l1: |
||
585 | dec edi |
||
586 | cmp byte[edi],' ' |
||
587 | jne .found |
||
51 | mikedld | 588 | |
2469 | mario79 | 589 | mov byte[edi],'_' |
590 | loop .l1 |
||
51 | mikedld | 591 | |
2469 | mario79 | 592 | dec edi |
593 | ;-------------------------------------- |
||
594 | align 4 |
||
595 | .found: |
||
596 | inc edi |
||
597 | push edi |
||
598 | call print_strings |
||
599 | pop edi |
||
600 | ;-------------------------------------- |
||
601 | align 4 |
||
602 | f11: |
||
603 | mcall 10 |
||
604 | cmp eax,2 |
||
605 | jz fbu |
||
606 | jmp rs_done |
||
607 | ;-------------------------------------- |
||
608 | align 4 |
||
609 | fbu: |
||
610 | mcall 2 |
||
611 | shr eax,8 |
||
612 | cmp eax,13 |
||
613 | je rs_done |
||
614 | cmp eax,8 |
||
615 | jnz nobsl |
||
616 | cmp edi,[addr] |
||
617 | jz f11 |
||
618 | dec edi |
||
619 | mov [edi],byte '_' |
||
620 | call print_strings |
||
621 | jmp f11 |
||
622 | ;-------------------------------------- |
||
623 | align 4 |
||
624 | nobsl: |
||
625 | cmp eax,31 |
||
626 | jbe f11 |
||
627 | mov [edi],al |
||
628 | call print_strings |
||
629 | inc edi |
||
630 | mov esi,[addr] |
||
631 | add esi,[cur_str] |
||
632 | cmp esi,edi |
||
633 | jnz f11 |
||
634 | ;-------------------------------------- |
||
635 | align 4 |
||
636 | rs_done: |
||
637 | mov ecx,[addr] |
||
638 | add ecx,[cur_str] |
||
639 | sub ecx,edi |
||
640 | mov eax,32 |
||
641 | cld |
||
642 | rep stosb |
||
643 | call print_strings |
||
644 | popa |
||
645 | ret |
||
646 | ;------------------------------------------------------------------------------ |
||
647 | align 4 |
||
2475 | mario79 | 648 | key: |
649 | mcall 2 ; just read it and ignore |
||
2469 | mario79 | 650 | jmp still |
651 | ;------------------------------------------------------------------------------ |
||
51 | mikedld | 652 | ; ********************************************* |
653 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
||
654 | ; ********************************************* |
||
2469 | mario79 | 655 | align 4 |
51 | mikedld | 656 | draw_window: |
2469 | mario79 | 657 | mcall 12,1 |
2475 | mario79 | 658 | ; DRAW WINDOW |
2469 | mario79 | 659 | xor eax,eax |
660 | xor esi,esi |
||
661 | mcall ,<210,300>,<30,(390-14)>,0x14ffffff,,title |
||
51 | mikedld | 662 | |
2469 | mario79 | 663 | mcall 13,<20,260>,<35,200>,0x3366cc ; WINDOW AREA |
51 | mikedld | 664 | |
2469 | mario79 | 665 | mcall 38,<150,150>,<35,235>,0xffffff ; VERTICAL LINE ON WINDOW AREA |
51 | mikedld | 666 | |
2469 | mario79 | 667 | mcall ,<20,280>,<135,135> ; HOROZONTAL LINE ON WINDOW AREA |
51 | mikedld | 668 | |
2469 | mario79 | 669 | mcall 8,<20,72>,<(275+1+14),(13-2)>,11,[bcolor] ;id 11 TEXT ENTER BUTTONS |
670 | |||
671 | inc edx |
||
672 | add ecx,14*65536 |
||
673 | mcall ; id 12 |
||
674 | |||
675 | inc edx |
||
676 | add ecx,14*65536 |
||
677 | mcall ; id 13 |
||
51 | mikedld | 678 | |
2469 | mario79 | 679 | mcall ,<20,259>,<(329+2),(15-4)>,21 ; id 21 APPLY AND SAVE CHANGES BUTTON |
51 | mikedld | 680 | |
2469 | mario79 | 681 | add ecx,14*65536 |
682 | inc edx |
||
683 | mcall ,<20,(129-2)> ; id 22 ADD ICON BUTTON |
||
51 | mikedld | 684 | |
2469 | mario79 | 685 | add ebx,(130+2)*65536 |
686 | inc edx |
||
687 | mcall ; id 23 REMOVE ICON BUTTON |
||
51 | mikedld | 688 | |
2469 | mario79 | 689 | mcall ,<(20-14),8>,<(260-23),32>,30 + 1 shl 30 ; id 30 IMAGE BUTTON |
51 | mikedld | 690 | |
2469 | mario79 | 691 | inc edx |
692 | add ebx,(36*7+26) shl 16 |
||
693 | mcall ; id 31 |
||
51 | mikedld | 694 | |
2469 | mario79 | 695 | add edx,1 + 1 shl 29 |
696 | mcall ,<(33-19),(34*8)> ; id 32 |
||
697 | |||
698 | mcall 4,<(23-15),(273-24)>,0,arrows,1 |
||
51 | mikedld | 699 | |
2469 | mario79 | 700 | add ebx,(36*7+27)shl 16 |
701 | add edx,2 |
||
702 | mcall |
||
51 | mikedld | 703 | |
2469 | mario79 | 704 | dec edx |
705 | mcall ,<120,250> |
||
51 | mikedld | 706 | |
2469 | mario79 | 707 | lea edx,[ebx+8 shl 16] |
708 | mcall 47,0x30000,[icon_count],,0 |
||
51 | mikedld | 709 | |
2469 | mario79 | 710 | mov eax,4 |
711 | mov ebx,24 shl 16+(250+14+14+14) |
||
712 | mov ecx,0xffffff |
||
713 | mov edx,text |
||
714 | mov esi,47 |
||
715 | ;-------------------------------------- |
||
716 | align 4 |
||
2538 | mario79 | 717 | .newline: |
2469 | mario79 | 718 | mov ecx,[edx] |
719 | add edx,4 |
||
720 | mcall |
||
721 | add ebx,14 |
||
722 | add edx,47 |
||
723 | cmp [edx],byte 'x' |
||
2538 | mario79 | 724 | jne .newline |
2469 | mario79 | 725 | ;-------------------------------------- |
726 | align 4 |
||
727 | draw_btns: |
||
2475 | mario79 | 728 | mov eax,0 ; DRAW BUTTONS ON WINDOW AREA |
2469 | mario79 | 729 | mov ebx,20 shl 16+25 |
730 | mov ecx,35 shl 16+19 |
||
731 | mov edi,icon_table |
||
732 | mov edx,40 |
||
733 | ;-------------------------------------- |
||
734 | align 4 |
||
735 | newbline: |
||
736 | cmp [edi],byte 'x' |
||
737 | jne no_button |
||
51 | mikedld | 738 | |
2469 | mario79 | 739 | mov esi,0x5577cc |
740 | cmp [edi+90],byte 'x' |
||
741 | jne nores |
||
51 | mikedld | 742 | |
2469 | mario79 | 743 | mov esi,0xcc5555 |
744 | cmp edx,[cur_btn] |
||
745 | jne nores |
||
51 | mikedld | 746 | |
2469 | mario79 | 747 | mov esi,0xe7e05a |
748 | ;-------------------------------------- |
||
749 | align 4 |
||
750 | nores: |
||
751 | push eax |
||
752 | mcall 8 |
||
753 | pop eax |
||
754 | ;-------------------------------------- |
||
755 | align 4 |
||
756 | no_button: |
||
757 | add ebx,26 shl 16 |
||
51 | mikedld | 758 | |
2469 | mario79 | 759 | inc edi |
760 | inc edx |
||
761 | inc al |
||
762 | cmp al,9 |
||
763 | jbe newbline |
||
764 | |||
765 | mov al,0 |
||
766 | add edx,6 |
||
767 | ror ebx,16 |
||
768 | mov bx,20 |
||
769 | ror ebx,16 |
||
770 | add ecx,20 shl 16 |
||
771 | inc ah |
||
2538 | mario79 | 772 | cmp ah,8 |
2469 | mario79 | 773 | jbe newbline |
51 | mikedld | 774 | |
2469 | mario79 | 775 | call print_strings |
776 | call draw_icon |
||
777 | mcall 12,2 |
||
778 | ret |
||
779 | ;------------------------------------------------------------------------------ |
||
780 | align 4 |
||
51 | mikedld | 781 | draw_icon: |
2469 | mario79 | 782 | mcall 13,<(33-20),(34*8+2)>,<(260-24),(37+15-2)>,0xffffff |
783 | mov esi,[current_icon] |
||
784 | add esi,12 |
||
2538 | mario79 | 785 | call ASCII_to_icon_number |
2469 | mario79 | 786 | push eax |
787 | cmp eax,[cur_band] |
||
788 | jb .nou |
||
789 | sub eax,[cur_band] |
||
790 | cmp eax,7 |
||
791 | ja .nou |
||
792 | imul eax,34 shl 16 |
||
793 | lea ebx,[eax+(33-19) shl 16] |
||
794 | mov bx,34 |
||
795 | mcall 13,,<(236+35),3>,0xff0000 |
||
796 | mov eax,[esp] |
||
797 | ;-------------------------------------- |
||
798 | align 4 |
||
799 | .nou: |
||
800 | mov eax,[cur_band] |
||
801 | push eax |
||
802 | imul eax,ICON_SIZE |
||
2476 | mario79 | 803 | mov ebx,[strip_file] |
2538 | mario79 | 804 | add ebx,eax |
2469 | mario79 | 805 | mov ecx,8 |
806 | mov edx,(33-18) shl 16+238 |
||
807 | ;-------------------------------------- |
||
808 | align 4 |
||
809 | .nxt: |
||
810 | push ecx |
||
2538 | mario79 | 811 | pusha |
812 | mov ebp,0 |
||
2697 | mario79 | 813 | |
814 | mov eax,[strip_file_size] |
||
815 | add eax,[strip_file] |
||
816 | cmp eax,ebx |
||
817 | ja @f |
||
818 | ; draw a rectangle if icon does not exist |
||
819 | mov ebx,edx ; X |
||
820 | mov ecx,edx ; Y |
||
821 | shl ecx,16 |
||
822 | mov bx,32 |
||
823 | mov cx,bx |
||
824 | xor edx,edx |
||
825 | mcall 13 |
||
826 | jmp .draw_pict_end |
||
827 | ;-------------------------------------- |
||
828 | align 4 |
||
829 | @@: |
||
2538 | mario79 | 830 | mcall 65,,<32,32>,,32 |
2697 | mario79 | 831 | ;-------------------------------------- |
832 | align 4 |
||
833 | .draw_pict_end: |
||
2538 | mario79 | 834 | popa |
2469 | mario79 | 835 | pop ecx |
836 | add ebx,ICON_SIZE |
||
837 | add edx,34 shl 16 |
||
51 | mikedld | 838 | |
2697 | mario79 | 839 | dec ecx |
840 | jnz .nxt |
||
841 | |||
2469 | mario79 | 842 | mcall 4,<45,280-2>,0,rep_text,rep_text_len-rep_text |
843 | lea edx,[ebx+(8*5)shl 16] |
||
844 | pop ecx |
||
845 | mcall 47,0x30000,,,0xff |
||
846 | |||
847 | add ecx,7 |
||
848 | add edx,(3*8+4)shl 16 |
||
849 | mcall |
||
850 | |||
851 | add edx,(5*8+4)shl 16 |
||
852 | mcall ,,[icon_count] |
||
853 | |||
854 | pop ecx |
||
855 | add edx,(10*8+4)shl 16 |
||
856 | mcall ,,,,0xff0000 |
||
857 | ret |
||
858 | ;------------------------------------------------------------------------------ |
||
859 | align 4 |
||
860 | close: |
||
861 | or eax,-1 |
||
862 | mcall |
||
863 | ;------------------------------------------------------------------------------ |
||
2538 | mario79 | 864 | ; ICON PROCESSING MODE - START2 entering label |
2475 | mario79 | 865 | ;------------------------------------------------------------------------------ |
2469 | mario79 | 866 | align 4 |
2538 | mario79 | 867 | START2: |
868 | mcall 40,10000b ; only Event 5 - draw background |
||
869 | |||
2542 | mario79 | 870 | mcall 48,5 |
871 | mov [warea.by_x],eax |
||
872 | mov [warea.by_y],ebx |
||
873 | |||
2538 | mario79 | 874 | mcall 51,1,START_mouse_thread,stack_mouse_thread |
2542 | mario79 | 875 | |
876 | xor eax,eax |
||
877 | mov [x_left],eax |
||
878 | mov [y_top],eax |
||
879 | |||
880 | mcall 14 |
||
881 | mov ebx,eax |
||
882 | shr eax,16 |
||
883 | and ebx,0xffff |
||
884 | mov [x_right],eax |
||
885 | mov [y_bottom],ebx |
||
886 | jmp still2.1 |
||
2469 | mario79 | 887 | ;------------------------------------------------------------------------------ |
888 | align 4 |
||
51 | mikedld | 889 | still2: |
2469 | mario79 | 890 | mcall 10 |
51 | mikedld | 891 | |
2538 | mario79 | 892 | mcall 15,8 |
893 | |||
894 | mov ecx,eax |
||
895 | shr ecx,16 |
||
896 | mov [x_left],ecx |
||
897 | and eax,0xffff |
||
898 | mov [x_right],eax |
||
899 | |||
900 | mov ecx,ebx |
||
901 | shr ecx,16 |
||
902 | mov [y_top],ecx |
||
903 | and ebx,0xffff |
||
904 | mov [y_bottom],ebx |
||
905 | |||
2542 | mario79 | 906 | mcall 48,5 |
907 | mov [warea.by_x],eax |
||
908 | mov [warea.by_y],ebx |
||
909 | .1: |
||
2538 | mario79 | 910 | mov ecx,[icons] |
911 | mov ebx,icon_data |
||
912 | ;-------------------------------------- |
||
2469 | mario79 | 913 | align 4 |
2538 | mario79 | 914 | .start_new: |
915 | push ebx ecx |
||
916 | mov [adress_of_icon_data],ebx |
||
917 | mov eax,[ebx] |
||
2469 | mario79 | 918 | call calc_icon_pos |
2538 | mario79 | 919 | mov [current_X],ebx |
920 | mov [current_Y],eax |
||
921 | |||
922 | call draw_picture |
||
923 | pop ecx ebx |
||
924 | add ebx,REC_SIZE |
||
925 | dec ecx |
||
926 | jnz .start_new |
||
2469 | mario79 | 927 | jmp still2 |
2538 | mario79 | 928 | ;------------------------------------------------------------------------------ |
2469 | mario79 | 929 | align 4 |
2538 | mario79 | 930 | draw_picture: |
931 | mov eax,[current_X] |
||
932 | cmp eax,[x_right] |
||
933 | ja .exit |
||
51 | mikedld | 934 | |
2538 | mario79 | 935 | add eax,52 |
936 | cmp eax,[x_left] |
||
937 | jb .exit |
||
938 | |||
939 | mov eax,[current_Y] |
||
940 | cmp eax,[y_bottom] |
||
941 | ja .exit |
||
942 | |||
943 | add eax,52 |
||
944 | cmp eax,[y_top] |
||
945 | jb .exit |
||
2469 | mario79 | 946 | ;-------------------------------------- |
947 | align 4 |
||
2245 | mario79 | 948 | @@: |
2548 | mario79 | 949 | mov edi,[adress_of_icon_data] |
2538 | mario79 | 950 | lea esi,[edi+12] |
951 | call ASCII_to_icon_number |
||
952 | ; protect for icon area RAW size limit |
||
953 | cmp eax,[icon_count] |
||
954 | jbe @f |
||
2469 | mario79 | 955 | ;-------------------------------------- |
956 | align 4 |
||
2538 | mario79 | 957 | .exit: |
2469 | mario79 | 958 | ret |
959 | ;-------------------------------------- |
||
960 | align 4 |
||
2476 | mario79 | 961 | @@: |
2538 | mario79 | 962 | push eax |
963 | mcall 68,12,52*52*4+8 |
||
964 | mov [draw_area],eax |
||
965 | mov ebx,52 |
||
966 | mov [eax],ebx |
||
967 | mov [eax+4],ebx |
||
968 | pop eax |
||
2475 | mario79 | 969 | |
2538 | mario79 | 970 | shl eax,12 ; multiply x4096 |
971 | add eax,[strip_file] |
||
972 | mov esi,eax |
||
51 | mikedld | 973 | |
2538 | mario79 | 974 | mov edi,[draw_area] |
975 | add edi,(52-32)/2*4+8 |
||
976 | mov ebx,32 |
||
977 | cld |
||
2469 | mario79 | 978 | ;-------------------------------------- |
2538 | mario79 | 979 | align 4 |
980 | .y: |
||
981 | mov ecx,32 |
||
982 | rep movsd |
||
2475 | mario79 | 983 | |
2538 | mario79 | 984 | add edi,(52-32)*4 |
985 | dec ebx |
||
986 | jnz .y |
||
2476 | mario79 | 987 | |
2538 | mario79 | 988 | call draw_text |
2475 | mario79 | 989 | |
2548 | mario79 | 990 | mov edx,[current_X] |
2538 | mario79 | 991 | shl edx,16 |
2548 | mario79 | 992 | add edx,[current_Y] |
2538 | mario79 | 993 | mov ebx,[draw_area] |
994 | add ebx,8 |
||
995 | mcall 25,,<52,52> |
||
996 | mcall 68,13,[draw_area] |
||
2469 | mario79 | 997 | ret |
998 | ;------------------------------------------------------------------------------ |
||
999 | align 4 |
||
1000 | draw_text: |
||
2548 | mario79 | 1001 | mov esi,[adress_of_icon_data] |
2469 | mario79 | 1002 | add esi,3 |
1003 | push edi |
||
1004 | mov edi,title |
||
1005 | mov ecx,8/4 |
||
1006 | cld |
||
1007 | rep movsd |
||
1008 | pop edi |
||
1009 | mov eax,title |
||
1010 | ;-------------------------------------- |
||
1011 | align 4 |
||
1012 | news2: |
||
1013 | cmp [eax],byte 33 |
||
1014 | jb founde |
||
1015 | inc eax |
||
1016 | cmp eax,title+8 ;11 |
||
1017 | jb news2 |
||
1018 | ;-------------------------------------- |
||
1019 | align 4 |
||
1020 | founde: |
||
1021 | sub eax,title |
||
1022 | mov [tl],eax |
||
1023 | |||
1024 | mov eax,[tl] |
||
2475 | mario79 | 1025 | lea eax,[eax+eax*2] ; eax *= char_width/2 |
2469 | mario79 | 1026 | shl eax,16 |
1027 | |||
1028 | mov ebx,27 shl 16+40 |
||
1029 | sub ebx,eax |
||
1030 | |||
2475 | mario79 | 1031 | xor ecx,ecx ; black shade of text |
2538 | mario79 | 1032 | or ecx,0x08000000 ; redirect the output to the user area |
2475 | mario79 | 1033 | add ebx,1 shl 16 ;*65536+1 |
2538 | mario79 | 1034 | |
1035 | mov edi,[draw_area] |
||
2469 | mario79 | 1036 | mcall 4,,,title,[tl] |
51 | mikedld | 1037 | |
2469 | mario79 | 1038 | inc ebx |
1039 | mcall |
||
51 | mikedld | 1040 | |
2469 | mario79 | 1041 | add ebx,1 shl 16 |
1042 | mcall |
||
51 | mikedld | 1043 | |
2469 | mario79 | 1044 | inc ebx |
1045 | mcall |
||
51 | mikedld | 1046 | |
2469 | mario79 | 1047 | sub ebx,1 shl 16 |
1048 | mcall |
||
51 | mikedld | 1049 | |
2469 | mario79 | 1050 | dec ebx |
1051 | sub ebx,1 shl 16 |
||
1052 | mcall |
||
51 | mikedld | 1053 | |
2469 | mario79 | 1054 | sub ebx,1 shl 16 |
1055 | dec ebx |
||
1056 | mcall |
||
51 | mikedld | 1057 | |
2469 | mario79 | 1058 | dec ebx |
1059 | add ebx,1 shl 16 |
||
1060 | mcall |
||
51 | mikedld | 1061 | |
2469 | mario79 | 1062 | inc ebx |
2538 | mario79 | 1063 | mov ecx,0xffffff ; white text |
1064 | or ecx,0x08000000 ; redirect the output to the user area |
||
1065 | mcall |
||
2469 | mario79 | 1066 | ret |
1067 | ;------------------------------------------------------------------------------ |
||
1068 | align 4 |
||
2538 | mario79 | 1069 | ASCII_to_icon_number: |
1070 | ; |
||
1071 | ; in: |
||
1072 | ; esi - adress of icon ASCII text number (line start + 12) |
||
1073 | ; |
||
1074 | ; out: |
||
1075 | ; eax - number of icon |
||
1076 | ; |
||
1077 | push esi |
||
1078 | xor eax,eax |
||
1079 | xor ebx,ebx |
||
2475 | mario79 | 1080 | ;-------------------------------------- |
1081 | align 4 |
||
2538 | mario79 | 1082 | .next: |
1083 | lodsb |
||
1084 | cmp al,'0' |
||
1085 | jb .done |
||
1086 | cmp al,'9' |
||
1087 | ja .done |
||
1088 | sub eax,'0' |
||
1089 | ; multiply x10 |
||
1090 | shl ebx,1 ; multiply x2 |
||
1091 | lea ebx,[ebx+ebx*4] ; multiply x5 |
||
1092 | add ebx,eax |
||
1093 | jmp .next |
||
2469 | mario79 | 1094 | ;-------------------------------------- |
1095 | align 4 |
||
2538 | mario79 | 1096 | .done: |
1097 | pop esi |
||
1098 | mov eax,ebx |
||
1099 | ret |
||
1100 | ;------------------------------------------------------------------------------ |
||
2469 | mario79 | 1101 | align 4 |
2538 | mario79 | 1102 | itoa: |
1103 | add esi,2 |
||
1104 | mov ebx,10 |
||
1105 | mov ecx,3 |
||
2469 | mario79 | 1106 | ;-------------------------------------- |
1107 | align 4 |
||
2538 | mario79 | 1108 | .l0: |
1109 | xor edx,edx |
||
1110 | div ebx |
||
1111 | add dl,'0' |
||
1112 | mov [esi],dl |
||
1113 | dec esi |
||
1114 | loop .l0 |
||
2469 | mario79 | 1115 | ret |
1116 | ;------------------------------------------------------------------------------ |
||
2538 | mario79 | 1117 | align 4 |
1118 | calc_icon_pos: |
||
1119 | ; in: |
||
1120 | ; eax - dword [icon_position] |
||
1121 | ; out: |
||
1122 | ; eax - current Y |
||
1123 | ; ebx - current X |
||
1124 | push eax |
||
1125 | movzx eax,al |
||
1126 | sub eax,'A' ;eax - number of letter |
||
1127 | cmp eax,4 |
||
1128 | jg no_left |
||
51 | mikedld | 1129 | |
2538 | mario79 | 1130 | shl eax,6 ;imul eax,64 |
1131 | add eax,16 |
||
1132 | movzx ebx,[warea.left] |
||
1133 | add eax,ebx |
||
1134 | jmp x_done |
||
1135 | ;-------------------------------------- |
||
2475 | mario79 | 1136 | align 4 |
2538 | mario79 | 1137 | no_left: |
1138 | sub eax,9 |
||
1139 | sal eax,6 ;imul eax,64 |
||
1140 | sub eax,16+52-1 |
||
1141 | movzx ebx,[warea.right] |
||
1142 | add eax,ebx |
||
1143 | ;-------------------------------------- |
||
2475 | mario79 | 1144 | align 4 |
2538 | mario79 | 1145 | x_done: |
1146 | mov ebx,eax |
||
1147 | pop eax |
||
1148 | push ebx |
||
1149 | movzx eax,ah |
||
1150 | sub eax,'A' ; eax - number of letter |
||
1151 | cmp eax,4 |
||
1152 | jg no_up |
||
1153 | |||
1154 | shl eax,6 ;imul eax,80 |
||
1155 | add eax,16 |
||
1156 | movzx ebx,[warea.top] |
||
1157 | add eax,ebx |
||
1158 | jmp y_done |
||
1159 | ;-------------------------------------- |
||
2475 | mario79 | 1160 | align 4 |
2538 | mario79 | 1161 | no_up: |
1162 | sub eax,9 |
||
1163 | shl eax,6 ;imul eax,80 |
||
1164 | sub eax,16-1 |
||
1165 | movzx ebx,[warea.bottom] |
||
1166 | add eax,ebx |
||
1167 | ;-------------------------------------- |
||
2475 | mario79 | 1168 | align 4 |
2538 | mario79 | 1169 | y_done: |
1170 | pop ebx |
||
1171 | ret |
||
2475 | mario79 | 1172 | ;------------------------------------------------------------------------------ |
2538 | mario79 | 1173 | include 'mouse.inc' |
2475 | mario79 | 1174 | ;------------------------------------------------------------------------------ |
2538 | mario79 | 1175 | include 'data.inc' |
2475 | mario79 | 1176 | ;------------------------------------------------------------------------------ |
2538 | mario79 | 1177 | IM_END: |
2475 | mario79 | 1178 | ;------------------------------------------------------------------------------ |
2538 | mario79 | 1179 | include 'dat_area.inc' |
1180 | ;------------------------------------------------------------------------------ |
||
51 | mikedld | 1181 | I_END: |
2538 | mario79 | 1182 | ;------------------------------------------------------------------------------52,52>45,280-2>32,32>(236+35),3>(260-24),(37+15-2)>(33-20),(34*8+2)>120,250>(23-15),(273-24)>(33-19),(34*8)>(260-23),32>(20-14),8>20,(129-2)>(329+2),(15-4)>20,259>(275+1+14),(13-2)>20,72>135,135>20,280>35,235>150,150>35,200>20,260>30,(390-14)>210,300>278+12,40>100,180> |