Rev 379 | Rev 381 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 379 | Rev 380 | ||
---|---|---|---|
Line 256... | Line 256... | ||
256 | mov ecx,(0x100000*0xF-0x280000) / 4 |
256 | mov ecx,(0x100000*0xF-0x280000) / 4 |
257 | cld |
257 | cld |
258 | rep stosd |
258 | rep stosd |
259 | ; CLEAR 0x80000-0x90000 |
259 | ; CLEAR 0x80000-0x90000 |
260 | ; xor eax,eax |
260 | ; xor eax,eax |
- | 261 | ||
261 | mov edi,0x80000 |
262 | mov edi,0x80000 |
262 | mov ecx,(0x90000-0x80000)/4 |
263 | mov ecx,(0x90000-0x80000)/4 |
263 | ; cld |
264 | ; cld |
264 | rep stosd |
265 | rep stosd |
Line 605... | Line 606... | ||
605 | 606 | ||
606 | mov esi,boot_setostask |
607 | mov esi,boot_setostask |
Line 607... | Line 608... | ||
607 | call boot_log |
608 | call boot_log |
608 | 609 | ||
609 | mov eax, fpu_data |
610 | mov eax, fpu_data |
610 | mov dword [0x80000+APPDATA.fpu_state], eax |
611 | mov dword [SLOT_BASE+APPDATA.fpu_state], eax |
Line 611... | Line 612... | ||
611 | mov dword [0x80000+APPDATA.fpu_handler], 0 |
612 | mov dword [SLOT_BASE+APPDATA.fpu_handler], 0 |
Line 612... | Line 613... | ||
612 | mov dword [0x80000+APPDATA.sse_handler], 0 |
613 | mov dword [SLOT_BASE+APPDATA.sse_handler], 0 |
613 | 614 | ||
614 | ; name for OS/IDLE process |
615 | ; name for OS/IDLE process |
615 | 616 | ||
616 | mov dword [0x80000+256+APPDATA.app_name], dword 'OS/I' |
617 | mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' |
617 | mov dword [0x80000+256+APPDATA.app_name+4], dword 'DLE ' |
618 | mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' |
Line 618... | Line 619... | ||
618 | mov edi, [os_stack] |
619 | mov edi, [os_stack] |
619 | mov dword [0x80000+256+APPDATA.pl0_stack], edi |
620 | mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi |
620 | add edi, 0x2000-512 |
621 | add edi, 0x2000-512 |
621 | mov dword [0x80000+256+APPDATA.fpu_state], edi |
622 | mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi |
Line 622... | Line 623... | ||
622 | 623 | ||
623 | mov esi, fpu_data |
624 | mov esi, fpu_data |
Line 624... | Line 625... | ||
624 | mov ecx, 512/4 |
625 | mov ecx, 512/4 |
625 | cld |
626 | cld |
Line 626... | Line 627... | ||
626 | rep movsd |
627 | rep movsd |
627 | 628 | ||
628 | mov dword [0x80000+256+APPDATA.fpu_handler], 0 |
629 | mov dword [SLOT_BASE+256+APPDATA.fpu_handler], 0 |
Line 629... | Line 630... | ||
629 | mov dword [0x80000+256+APPDATA.sse_handler], 0 |
630 | mov dword [SLOT_BASE+256+APPDATA.sse_handler], 0 |
630 | 631 | ||
631 | mov ebx, [def_cursor] |
632 | mov ebx, [def_cursor] |
632 | mov dword [0x80000+256+APPDATA.cursor], ebx |
633 | mov dword [SLOT_BASE+256+APPDATA.cursor], ebx |
Line 1326... | Line 1327... | ||
1326 | ; edx length |
1327 | ; edx length |
1327 | ; edi 1 force |
1328 | ; edi 1 force |
Line 1328... | Line 1329... | ||
1328 | 1329 | ||
1329 | ; mov edi,[CURRENT_TASK] |
1330 | ; mov edi,[CURRENT_TASK] |
1330 | ; shl edi,8 |
1331 | ; shl edi,8 |
1331 | ; add ax,word[edi+0x80000+APPDATA.wnd_clientbox.top] |
1332 | ; add ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
1332 | ; rol eax,16 |
1333 | ; rol eax,16 |
1333 | ; add ax,word[edi+0x80000+APPDATA.wnd_clientbox.left] |
1334 | ; add ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
Line 1334... | Line 1335... | ||
1334 | ; rol eax,16 |
1335 | ; rol eax,16 |
1335 | 1336 | ||
1336 | mov edx,eax |
1337 | mov edx,eax |
1337 | mov ecx,64+4 |
1338 | mov ecx,64+4 |
1338 | sub ecx,eax |
1339 | sub ecx,eax |
1339 | add ecx,esp |
1340 | add ecx,esp |
1340 | mov eax,[esp+64+32-8+4] |
1341 | mov eax,[esp+64+32-8+4] |
1341 | push edx ; add window start x & y |
1342 | push edx ; add window start x & y |
1342 | mov edx,[TASK_BASE] |
1343 | mov edx,[TASK_BASE] |
1343 | mov ebx,[edx-twdw+WDATA.box.left] |
1344 | mov ebx,[edx-twdw+WDATA.box.left] |
1344 | add ebx, [(edx-CURRENT_TASK)*8+0x80000+APPDATA.wnd_clientbox.left] |
1345 | add ebx, [(edx-CURRENT_TASK)*8+SLOT_BASE+APPDATA.wnd_clientbox.left] |
1345 | shl ebx,16 |
1346 | shl ebx,16 |
1346 | add ebx,[edx-twdw+WDATA.box.top] |
1347 | add ebx,[edx-twdw+WDATA.box.top] |
1347 | add ebx, [(edx-CURRENT_TASK)*8+0x80000+APPDATA.wnd_clientbox.top] |
1348 | add ebx, [(edx-CURRENT_TASK)*8+SLOT_BASE+APPDATA.wnd_clientbox.top] |
1348 | add eax,ebx |
1349 | add eax,ebx |
1349 | pop edx |
1350 | pop edx |
1350 | mov ebx,[esp+64+32-12+4] |
1351 | mov ebx,[esp+64+32-12+4] |
Line 1739... | Line 1740... | ||
1739 | mov bx, word [esi-twdw+WDATA.box.top] |
1740 | mov bx, word [esi-twdw+WDATA.box.top] |
1740 | sub eax,ebx |
1741 | sub eax,ebx |
Line 1741... | Line 1742... | ||
1741 | 1742 | ||
1742 | mov edi,[CURRENT_TASK] |
1743 | mov edi,[CURRENT_TASK] |
1743 | shl edi,8 |
1744 | shl edi,8 |
1744 | sub ax,word[edi+PROC_BASE+APPDATA.wnd_clientbox.top] |
1745 | sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
1745 | rol eax,16 |
1746 | rol eax,16 |
1746 | sub ax,word[edi+PROC_BASE+APPDATA.wnd_clientbox.left] |
1747 | sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
1747 | rol eax,16 |
1748 | rol eax,16 |
1748 | mov [esp+36],eax |
1749 | mov [esp+36],eax |
1749 | ret |
1750 | ret |
1750 | msbutton: |
1751 | msbutton: |
Line 1998... | Line 1999... | ||
1998 | cmp ebx,[TASK_COUNT] |
1999 | cmp ebx,[TASK_COUNT] |
1999 | ja .nowindowactivate |
2000 | ja .nowindowactivate |
Line 2000... | Line 2001... | ||
2000 | 2001 | ||
Line 2001... | Line 2002... | ||
2001 | mov [window_minimize], 2 ; restore window if minimized |
2002 | mov [window_minimize], 2 ; restore window if minimized |
2002 | 2003 | ||
2003 | movzx esi, word [0xC000 + ebx*2] |
2004 | movzx esi, word [WIN_STACK + ebx*2] |
Line 2004... | Line 2005... | ||
2004 | cmp esi, [TASK_COUNT] |
2005 | cmp esi, [TASK_COUNT] |
2005 | je .nowindowactivate ; already active |
2006 | je .nowindowactivate ; already active |
2006 | 2007 | ||
2007 | mov edi, ebx |
2008 | mov edi, ebx |
2008 | shl edi, 5 |
2009 | shl edi, 5 |
2009 | add edi, window_data |
2010 | add edi, window_data |
2010 | movzx esi, word [0xC000 + ebx * 2] |
2011 | movzx esi, word [WIN_STACK + ebx * 2] |
2011 | lea esi, [0xC400 + esi * 2] |
2012 | lea esi, [WIN_POS + esi * 2] |
Line 2012... | Line 2013... | ||
2012 | call waredraw |
2013 | call waredraw |
Line 2028... | Line 2029... | ||
2028 | include 'blkdev/rdsave.inc' |
2029 | include 'blkdev/rdsave.inc' |
2029 | ;!!!!!!!!!!!!!!!!!!!!!!!! |
2030 | ;!!!!!!!!!!!!!!!!!!!!!!!! |
Line 2030... | Line 2031... | ||
2030 | 2031 | ||
2031 | sysfn_getactive: ; 18.7 = get active window |
2032 | sysfn_getactive: ; 18.7 = get active window |
2032 | mov eax, [TASK_COUNT] |
2033 | mov eax, [TASK_COUNT] |
2033 | movzx eax, word [0xC400 + eax*2] |
2034 | movzx eax, word [WIN_POS + eax*2] |
2034 | mov [esp+36],eax |
2035 | mov [esp+36],eax |
Line 2035... | Line 2036... | ||
2035 | ret |
2036 | ret |
2036 | 2037 | ||
Line 2346... | Line 2347... | ||
2346 | 2347 | ||
2347 | sys_getkey: |
2348 | sys_getkey: |
2348 | mov [esp+36],dword 1 |
2349 | mov [esp+36],dword 1 |
2349 | ; test main buffer |
2350 | ; test main buffer |
2350 | mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK |
2351 | mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK |
2351 | movzx ecx,word [0xC000 + ebx * 2] |
2352 | movzx ecx,word [WIN_STACK + ebx * 2] |
2352 | mov edx,[TASK_COUNT] |
2353 | mov edx,[TASK_COUNT] |
2353 | cmp ecx,edx |
2354 | cmp ecx,edx |
2354 | jne .finish |
2355 | jne .finish |
2355 | cmp [0xf400],byte 0 |
2356 | cmp [0xf400],byte 0 |
Line 2395... | Line 2396... | ||
2395 | 2396 | ||
Line 2396... | Line 2397... | ||
2396 | sys_getbutton: |
2397 | sys_getbutton: |
2397 | 2398 | ||
2398 | mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK |
2399 | mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK |
2399 | mov [esp+36],dword 1 |
2400 | mov [esp+36],dword 1 |
2400 | movzx ecx, word [0xC000 + ebx * 2] |
2401 | movzx ecx, word [WIN_STACK + ebx * 2] |
2401 | mov edx, [TASK_COUNT] ; less than 256 processes |
2402 | mov edx, [TASK_COUNT] ; less than 256 processes |
2402 | cmp ecx,edx |
2403 | cmp ecx,edx |
2403 | jne .exit |
2404 | jne .exit |
Line 2451... | Line 2452... | ||
2451 | mov ebx,eax |
2452 | mov ebx,eax |
2452 | pop eax |
2453 | pop eax |
2453 | mov ecx,[ebx] |
2454 | mov ecx,[ebx] |
2454 | mov [eax],ecx |
2455 | mov [eax],ecx |
2455 | pop ebx |
2456 | pop ebx |
2456 | mov cx, [0xC000 + ebx * 2] |
2457 | mov cx, [WIN_STACK + ebx * 2] |
2457 | mov [eax+4],cx |
2458 | mov [eax+4],cx |
2458 | mov cx, [0xC400 + ebx * 2] |
2459 | mov cx, [WIN_POS + ebx * 2] |
2459 | mov [eax+6],cx |
2460 | mov [eax+6],cx |
2460 | push eax |
2461 | push eax |
2461 | mov eax,ebx |
2462 | mov eax,ebx |
2462 | shl eax,8 |
2463 | shl eax,8 |
2463 | add eax,0x80000+APPDATA.app_name |
2464 | add eax,SLOT_BASE+APPDATA.app_name |
2464 | pop ebx |
2465 | pop ebx |
2465 | add ebx,10 |
2466 | add ebx,10 |
2466 | mov ecx,11 |
2467 | mov ecx,11 |
2467 | call memmove |
2468 | call memmove |
Line 2472... | Line 2473... | ||
2472 | mov edx,0x100000*16 |
2473 | mov edx,0x100000*16 |
2473 | pop ecx ; get gdt of tss |
2474 | pop ecx ; get gdt of tss |
2474 | cmp ecx,1 |
2475 | cmp ecx,1 |
2475 | je os_mem |
2476 | je os_mem |
2476 | shl ecx,8 |
2477 | shl ecx,8 |
2477 | mov edx,[0x80000+ecx+APPDATA.mem_size] ;0x8c |
2478 | mov edx,[SLOT_BASE+ecx+APPDATA.mem_size] ;0x8c |
2478 | mov eax,std_application_base_address |
2479 | mov eax,std_application_base_address |
2479 | ; eax run base -> edx used memory |
2480 | ; eax run base -> edx used memory |
2480 | os_mem: |
2481 | os_mem: |
2481 | dec edx |
2482 | dec edx |
2482 | mov [ebx+12],eax |
2483 | mov [ebx+12],eax |
Line 2511... | Line 2512... | ||
2511 | 2512 | ||
Line 2512... | Line 2513... | ||
2512 | ; Window client area box |
2513 | ; Window client area box |
2513 | 2514 | ||
2514 | mov esi,[esp] |
2515 | mov esi,[esp] |
2515 | shl esi,8 |
2516 | shl esi,8 |
2516 | add esi,0x80000+APPDATA.wnd_clientbox |
2517 | add esi,SLOT_BASE+APPDATA.wnd_clientbox |
2517 | lea edi,[ebx+44] |
2518 | lea edi,[ebx+44] |
Line 2518... | Line 2519... | ||
2518 | mov ecx,4 |
2519 | mov ecx,4 |
Line 2730... | Line 2731... | ||
2730 | jne nosyswIV |
2731 | jne nosyswIV |
Line 2731... | Line 2732... | ||
2731 | 2732 | ||
2732 | ; parameter for drawwindow_IV |
2733 | ; parameter for drawwindow_IV |
2733 | push 0 |
2734 | push 0 |
2734 | mov edi, [TASK_COUNT] |
2735 | mov edi, [TASK_COUNT] |
2735 | movzx edi, word [0xC400 + edi*2] |
2736 | movzx edi, word [WIN_POS + edi*2] |
2736 | cmp edi, [CURRENT_TASK] |
2737 | cmp edi, [CURRENT_TASK] |
2737 | jne @f |
2738 | jne @f |
2738 | inc dword [esp] |
2739 | inc dword [esp] |
Line 2756... | Line 2757... | ||
2756 | inc [mouse_pause] |
2757 | inc [mouse_pause] |
2757 | call [disable_mouse] |
2758 | call [disable_mouse] |
Line 2758... | Line 2759... | ||
2758 | 2759 | ||
2759 | xor eax,eax |
2760 | xor eax,eax |
2760 | mov edx,[TASK_COUNT] |
2761 | mov edx,[TASK_COUNT] |
2761 | movzx edx,word[0xC400+edx*2] |
2762 | movzx edx,word[WIN_POS+edx*2] |
2762 | cmp edx,[CURRENT_TASK] |
2763 | cmp edx,[CURRENT_TASK] |
2763 | jne @f |
2764 | jne @f |
2764 | inc eax |
2765 | inc eax |
2765 | @@: mov edx,[CURRENT_TASK] |
2766 | @@: mov edx,[CURRENT_TASK] |
Line 2792... | Line 2793... | ||
2792 | .2: ;jmp @f |
2793 | .2: ;jmp @f |
2793 | mov edi,[CURRENT_TASK] |
2794 | mov edi,[CURRENT_TASK] |
2794 | shl edi,5 |
2795 | shl edi,5 |
2795 | test [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION |
2796 | test [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION |
2796 | jz @f |
2797 | jz @f |
2797 | mov ecx,[edi*8+0x80000+APPDATA.wnd_caption] |
2798 | mov ecx,[edi*8+SLOT_BASE+APPDATA.wnd_caption] |
2798 | or ecx,ecx |
2799 | or ecx,ecx |
2799 | jz @f |
2800 | jz @f |
2800 | add ecx,[edi+twdw+TASKDATA.mem_start] |
2801 | add ecx,[edi+twdw+TASKDATA.mem_start] |
Line 2801... | Line 2802... | ||
2801 | 2802 | ||
Line 2878... | Line 2879... | ||
2878 | jz @f |
2879 | jz @f |
Line 2879... | Line 2880... | ||
2879 | 2880 | ||
2880 | movzx eax,[ecx+WDATA.fl_wstyle] |
2881 | movzx eax,[ecx+WDATA.fl_wstyle] |
2881 | and eax,0x0F |
2882 | and eax,0x0F |
2882 | mov eax,[eax*8+window_topleft+0] |
2883 | mov eax,[eax*8+window_topleft+0] |
2883 | mov [edi+0x80000+APPDATA.wnd_clientbox.left],eax |
2884 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax |
2884 | shl eax,1 |
2885 | shl eax,1 |
2885 | neg eax |
2886 | neg eax |
2886 | add eax,[ecx+WDATA.box.width] |
2887 | add eax,[ecx+WDATA.box.width] |
Line 2887... | Line 2888... | ||
2887 | mov [edi+0x80000+APPDATA.wnd_clientbox.width],eax |
2888 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax |
2888 | 2889 | ||
2889 | movzx eax,[ecx+WDATA.fl_wstyle] |
2890 | movzx eax,[ecx+WDATA.fl_wstyle] |
2890 | and eax,0x0F |
2891 | and eax,0x0F |
2891 | push [eax*8+window_topleft+0] |
2892 | push [eax*8+window_topleft+0] |
2892 | mov eax,[eax*8+window_topleft+4] |
2893 | mov eax,[eax*8+window_topleft+4] |
2893 | mov [edi+0x80000+APPDATA.wnd_clientbox.top],eax |
2894 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax |
2894 | neg eax |
2895 | neg eax |
2895 | sub eax,[esp] |
2896 | sub eax,[esp] |
2896 | add eax,[ecx+WDATA.box.height] |
2897 | add eax,[ecx+WDATA.box.height] |
Line 2897... | Line 2898... | ||
2897 | mov [edi+0x80000+APPDATA.wnd_clientbox.height],eax |
2898 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax |
2898 | add esp,4 |
2899 | add esp,4 |
2899 | 2900 | ||
2900 | pop edi ecx eax |
2901 | pop edi ecx eax |
2901 | ret |
2902 | ret |
2902 | @@: |
2903 | @@: |
2903 | xor eax,eax |
2904 | xor eax,eax |
2904 | mov [edi+0x80000+APPDATA.wnd_clientbox.left],eax |
2905 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax |
2905 | mov [edi+0x80000+APPDATA.wnd_clientbox.top],eax |
2906 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax |
2906 | mov eax,[ecx+WDATA.box.width] |
2907 | mov eax,[ecx+WDATA.box.width] |
Line 2907... | Line 2908... | ||
2907 | mov [edi+0x80000+APPDATA.wnd_clientbox.width],eax |
2908 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax |
2908 | mov eax,[ecx+WDATA.box.height] |
2909 | mov eax,[ecx+WDATA.box.height] |
Line 2909... | Line 2910... | ||
2909 | mov [edi+0x80000+APPDATA.wnd_clientbox.height],eax |
2910 | mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax |
Line 2948... | Line 2949... | ||
2948 | 2949 | ||
Line 2949... | Line 2950... | ||
2949 | mov cl,[edi+WDATA.fl_wstyle] |
2950 | mov cl,[edi+WDATA.fl_wstyle] |
2950 | 2951 | ||
2951 | sub edi,window_data |
2952 | sub edi,window_data |
Line 2952... | Line 2953... | ||
2952 | shl edi,3 |
2953 | shl edi,3 |
2953 | add edi,0x80000 |
2954 | add edi,SLOT_BASE |
2954 | 2955 | ||
2955 | and cl,0x0F |
2956 | and cl,0x0F |
Line 3002... | Line 3003... | ||
3002 | ; have to check if caption is within application memory limit |
3003 | ; have to check if caption is within application memory limit |
3003 | ; check is trivial, and if application resizes its memory, |
3004 | ; check is trivial, and if application resizes its memory, |
3004 | ; caption still can become over bounds |
3005 | ; caption still can become over bounds |
3005 | ; diamond, 31.10.2006: check removed because with new memory manager |
3006 | ; diamond, 31.10.2006: check removed because with new memory manager |
3006 | ; there can be valid data after APPDATA.mem_size bound |
3007 | ; there can be valid data after APPDATA.mem_size bound |
3007 | ; mov ecx,[edi*8+0x80000+APPDATA.mem_size] |
3008 | ; mov ecx,[edi*8+SLOT_BASE+APPDATA.mem_size] |
3008 | ; add ecx,255 ; max caption length |
3009 | ; add ecx,255 ; max caption length |
3009 | ; cmp ebx,ecx |
3010 | ; cmp ebx,ecx |
3010 | ; ja .exit_fail |
3011 | ; ja .exit_fail |
Line 3011... | Line 3012... | ||
3011 | 3012 | ||
3012 | mov [edi*8+0x80000+APPDATA.wnd_caption],ebx |
3013 | mov [edi*8+SLOT_BASE+APPDATA.wnd_caption],ebx |
Line 3013... | Line 3014... | ||
3013 | or [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION |
3014 | or [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION |
Line 3014... | Line 3015... | ||
3014 | 3015 | ||
Line 3070... | Line 3071... | ||
3070 | pushad ; save for window fullscreen/resize |
3071 | pushad ; save for window fullscreen/resize |
3071 | mov esi,edi |
3072 | mov esi,edi |
3072 | sub edi,window_data |
3073 | sub edi,window_data |
3073 | shr edi,5 |
3074 | shr edi,5 |
3074 | shl edi,8 |
3075 | shl edi,8 |
3075 | add edi, 0x80000 + APPDATA.saved_box |
3076 | add edi, SLOT_BASE + APPDATA.saved_box |
3076 | mov ecx,4 |
3077 | mov ecx,4 |
3077 | cld |
3078 | cld |
3078 | rep movsd |
3079 | rep movsd |
3079 | popad |
3080 | popad |
Line 3300... | Line 3301... | ||
3300 | mov [mouse_active], 0 |
3301 | mov [mouse_active], 0 |
3301 | xor edi, edi |
3302 | xor edi, edi |
3302 | mov ecx, [TASK_COUNT] |
3303 | mov ecx, [TASK_COUNT] |
3303 | set_mouse_event: |
3304 | set_mouse_event: |
3304 | add edi, 256 |
3305 | add edi, 256 |
3305 | or [edi+0x80000+APPDATA.event_mask], dword 00100000b |
3306 | or [edi+SLOT_BASE+APPDATA.event_mask], dword 00100000b |
3306 | loop set_mouse_event |
3307 | loop set_mouse_event |
3307 | mouse_not_active: |
3308 | mouse_not_active: |
Line 3308... | Line 3309... | ||
3308 | 3309 | ||
Line 4001... | Line 4002... | ||
4001 | .exit: |
4002 | .exit: |
4002 | ret |
4003 | ret |
4003 | @@: |
4004 | @@: |
4004 | mov edi,[CURRENT_TASK] |
4005 | mov edi,[CURRENT_TASK] |
4005 | shl edi,8 |
4006 | shl edi,8 |
4006 | add dx,word[edi+0x80000+APPDATA.wnd_clientbox.top] |
4007 | add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4007 | rol edx,16 |
4008 | rol edx,16 |
4008 | add dx,word[edi+0x80000+APPDATA.wnd_clientbox.left] |
4009 | add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4009 | rol edx,16 |
4010 | rol edx,16 |
4010 | .forced: |
4011 | .forced: |
4011 | push ebp esi 0 |
4012 | push ebp esi 0 |
4012 | mov ebp, putimage_get24bpp |
4013 | mov ebp, putimage_get24bpp |
4013 | mov esi, putimage_init24bpp |
4014 | mov esi, putimage_init24bpp |
Line 4043... | Line 4044... | ||
4043 | ; esi = number of bits per pixel, must be 8, 24 or 32 |
4044 | ; esi = number of bits per pixel, must be 8, 24 or 32 |
4044 | ; edi = pointer to palette |
4045 | ; edi = pointer to palette |
4045 | ; ebp = row delta |
4046 | ; ebp = row delta |
4046 | mov eax, [CURRENT_TASK] |
4047 | mov eax, [CURRENT_TASK] |
4047 | shl eax, 8 |
4048 | shl eax, 8 |
4048 | add dx, word [eax+0x80000+APPDATA.wnd_clientbox.top] |
4049 | add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4049 | rol edx, 16 |
4050 | rol edx, 16 |
4050 | add dx, word [eax+0x80000+APPDATA.wnd_clientbox.left] |
4051 | add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4051 | rol edx, 16 |
4052 | rol edx, 16 |
4052 | .forced: |
4053 | .forced: |
4053 | push ebp esi ebp |
4054 | push ebp esi ebp |
4054 | cmp esi, 8 |
4055 | cmp esi, 8 |
4055 | jnz @f |
4056 | jnz @f |
Line 4104... | Line 4105... | ||
4104 | ; edi color |
4105 | ; edi color |
Line 4105... | Line 4106... | ||
4105 | 4106 | ||
4106 | __sys_drawbar: |
4107 | __sys_drawbar: |
4107 | mov esi,[CURRENT_TASK] |
4108 | mov esi,[CURRENT_TASK] |
4108 | shl esi,8 |
4109 | shl esi,8 |
4109 | add eax,[esi+0x80000+APPDATA.wnd_clientbox.left] |
4110 | add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4110 | add ecx,[esi+0x80000+APPDATA.wnd_clientbox.left] |
4111 | add ecx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4111 | add ebx,[esi+0x80000+APPDATA.wnd_clientbox.top] |
4112 | add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4112 | add edx,[esi+0x80000+APPDATA.wnd_clientbox.top] |
4113 | add edx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4113 | .forced: |
4114 | .forced: |
4114 | inc [mouse_pause] |
4115 | inc [mouse_pause] |
4115 | ; call [disable_mouse] |
4116 | ; call [disable_mouse] |
4116 | cmp [0xfe0c],word 0x12 |
4117 | cmp [0xfe0c],word 0x12 |
Line 4478... | Line 4479... | ||
4478 | 4479 | ||
4479 | dec eax ; 1 = set keyboard mode |
4480 | dec eax ; 1 = set keyboard mode |
Line 4480... | Line 4481... | ||
4480 | jne no_set_keyboard_setup |
4481 | jne no_set_keyboard_setup |
4481 | 4482 | ||
Line 4482... | Line 4483... | ||
4482 | shl edi,8 |
4483 | shl edi,8 |
Line 4483... | Line 4484... | ||
4483 | mov [edi+0x80000 + APPDATA.keyboard_mode],bl |
4484 | mov [edi+SLOT_BASE + APPDATA.keyboard_mode],bl |
Line 4484... | Line 4485... | ||
4484 | 4485 | ||
4485 | ret |
4486 | ret |
Line 4486... | Line 4487... | ||
4486 | 4487 | ||
4487 | no_set_keyboard_setup: |
4488 | no_set_keyboard_setup: |
Line 4488... | Line 4489... | ||
4488 | 4489 | ||
Line 4489... | Line 4490... | ||
4489 | dec eax ; 2 = get keyboard mode |
4490 | dec eax ; 2 = get keyboard mode |
Line 4638... | Line 4639... | ||
4638 | mov edx,[TASK_BASE] |
4639 | mov edx,[TASK_BASE] |
4639 | add eax,[edx-twdw+WDATA.box.left] |
4640 | add eax,[edx-twdw+WDATA.box.left] |
4640 | add ebx,[edx-twdw+WDATA.box.top] |
4641 | add ebx,[edx-twdw+WDATA.box.top] |
4641 | mov edi,[CURRENT_TASK] |
4642 | mov edi,[CURRENT_TASK] |
4642 | shl edi,8 |
4643 | shl edi,8 |
4643 | add eax,[edi+0x80000+APPDATA.wnd_clientbox.left] |
4644 | add eax,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4644 | add ebx,[edi+0x80000+APPDATA.wnd_clientbox.top] |
4645 | add ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4645 | xor edi,edi ; no force |
4646 | xor edi,edi ; no force |
4646 | ; mov edi,1 |
4647 | ; mov edi,1 |
4647 | call [disable_mouse] |
4648 | call [disable_mouse] |
4648 | jmp [putpixel] |
4649 | jmp [putpixel] |
Line 4654... | Line 4655... | ||
4654 | mov edi,[TASK_BASE] |
4655 | mov edi,[TASK_BASE] |
4655 | mov ebp,[edi-twdw+WDATA.box.left] |
4656 | mov ebp,[edi-twdw+WDATA.box.left] |
4656 | push esi |
4657 | push esi |
4657 | mov esi,[CURRENT_TASK] |
4658 | mov esi,[CURRENT_TASK] |
4658 | shl esi,8 |
4659 | shl esi,8 |
4659 | add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left] |
4660 | add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4660 | shl ebp,16 |
4661 | shl ebp,16 |
4661 | add ebp,[edi-twdw+WDATA.box.top] |
4662 | add ebp,[edi-twdw+WDATA.box.top] |
4662 | add bp,word[esi+0x80000+APPDATA.wnd_clientbox.top] |
4663 | add bp,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4663 | pop esi |
4664 | pop esi |
4664 | add ecx,[edi+TASKDATA.mem_start] |
4665 | add ecx,[edi+TASKDATA.mem_start] |
4665 | add eax,ebp |
4666 | add eax,ebp |
4666 | xor edi,edi |
4667 | xor edi,edi |
4667 | jmp dtext |
4668 | jmp dtext |
Line 4694... | Line 4695... | ||
4694 | shr eax,16 |
4695 | shr eax,16 |
4695 | movzx edx,bx |
4696 | movzx edx,bx |
4696 | shr ebx,16 |
4697 | shr ebx,16 |
4697 | mov esi,[CURRENT_TASK] |
4698 | mov esi,[CURRENT_TASK] |
4698 | shl esi,8 |
4699 | shl esi,8 |
4699 | add eax,[esi+0x80000+APPDATA.wnd_clientbox.left] |
4700 | add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4700 | add ebx,[esi+0x80000+APPDATA.wnd_clientbox.top] |
4701 | add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4701 | add ecx,eax |
4702 | add ecx,eax |
4702 | add edx,ebx |
4703 | add edx,ebx |
4703 | jmp [drawbar] |
4704 | jmp [drawbar] |
4704 | drectr: |
4705 | drectr: |
4705 | ret |
4706 | ret |
Line 4776... | Line 4777... | ||
4776 | mov edi,[TASK_BASE] |
4777 | mov edi,[TASK_BASE] |
4777 | movzx edx,word[edi-twdw+WDATA.box.left] |
4778 | movzx edx,word[edi-twdw+WDATA.box.left] |
4778 | mov ebp,edx |
4779 | mov ebp,edx |
4779 | mov esi,[CURRENT_TASK] |
4780 | mov esi,[CURRENT_TASK] |
4780 | shl esi,8 |
4781 | shl esi,8 |
4781 | add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left] |
4782 | add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4782 | add dx,word[esi+0x80000+APPDATA.wnd_clientbox.left] |
4783 | add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
4783 | shl edx,16 |
4784 | shl edx,16 |
4784 | add ebp,edx |
4785 | add ebp,edx |
4785 | movzx edx,word[edi-twdw+WDATA.box.top] |
4786 | movzx edx,word[edi-twdw+WDATA.box.top] |
4786 | add eax,ebp |
4787 | add eax,ebp |
4787 | mov ebp,edx |
4788 | mov ebp,edx |
4788 | add ebp,[esi+0x80000+APPDATA.wnd_clientbox.top] |
4789 | add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4789 | add dx,word[esi+0x80000+APPDATA.wnd_clientbox.top] |
4790 | add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
4790 | shl edx,16 |
4791 | shl edx,16 |
4791 | xor edi,edi |
4792 | xor edi,edi |
4792 | add edx,ebp |
4793 | add edx,ebp |
4793 | add ebx,edx |
4794 | add ebx,edx |
4794 | jmp [draw_line] |
4795 | jmp [draw_line] |