Rev 9932 | Rev 9947 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9932 | Rev 9941 | ||
---|---|---|---|
Line 75... | Line 75... | ||
75 | format binary as "mnt" |
75 | format binary as "mnt" |
Line 76... | Line 76... | ||
76 | 76 | ||
77 | include 'macros.inc' |
77 | include 'macros.inc' |
Line 78... | Line 78... | ||
78 | include 'struct.inc' |
78 | include 'struct.inc' |
Line 79... | Line 79... | ||
79 | 79 | ||
80 | $Revision: 9932 $ |
80 | $Revision: 9941 $ |
Line 1899... | Line 1899... | ||
1899 | pop edx |
1899 | pop edx |
1900 | ret |
1900 | ret |
Line 1901... | Line 1901... | ||
1901 | 1901 | ||
1902 | ;----------------------------------------------------------------------------- |
1902 | ;----------------------------------------------------------------------------- |
1903 | sys_end: |
- | |
1904 | cmp [_display.select_cursor], 0 |
- | |
1905 | je @f |
1903 | sys_end: |
1906 | ; restore default cursor before killing |
1904 | ; restore default cursor before killing |
1907 | pusha |
1905 | pusha |
1908 | mov ecx, [current_slot] |
1906 | mov ecx, [current_slot] |
1909 | mov ecx, [ecx + APPDATA.window] |
1907 | mov ecx, [ecx + APPDATA.window] |
1910 | call restore_default_cursor_before_killing |
1908 | call restore_default_cursor_before_killing |
1911 | popa |
- | |
1912 | @@: |
1909 | popa |
1913 | ;-------------------------------------- |
1910 | ;-------------------------------------- |
1914 | ; kill all sockets this process owns |
1911 | ; kill all sockets this process owns |
1915 | pusha |
1912 | pusha |
1916 | mov edx, [current_slot] |
1913 | mov edx, [current_slot] |
Line 1952... | Line 1949... | ||
1952 | mov esi, [window_data + edx + WDATA.cursor] |
1949 | mov esi, [window_data + edx + WDATA.cursor] |
Line 1953... | Line 1950... | ||
1953 | 1950 | ||
1954 | cmp esi, [current_cursor] |
1951 | cmp esi, [current_cursor] |
Line -... | Line 1952... | ||
- | 1952 | je @f |
|
1955 | je @f |
1953 | |
- | 1954 | cmp [_display.select_cursor], 0 |
|
1956 | 1955 | jz @f |
|
1957 | push esi |
1956 | |
1958 | call [_display.select_cursor] |
1957 | stdcall [_display.select_cursor], esi |
1959 | mov [current_cursor], esi |
1958 | mov [current_cursor], esi |
1960 | @@: |
1959 | @@: |
1961 | mov [redrawmouse_unconditional], 1 |
1960 | mov [redrawmouse_unconditional], 1 |
Line 2060... | Line 2059... | ||
2060 | pusha |
2059 | pusha |
2061 | mov eax, edx ;TODO: check function |
2060 | mov eax, edx ;TODO: check function |
2062 | call socket_process_end |
2061 | call socket_process_end |
2063 | popa |
2062 | popa |
2064 | ;-------------------------------------- |
2063 | ;-------------------------------------- |
2065 | cmp [_display.select_cursor], 0 |
- | |
2066 | je .restore_end |
- | |
2067 | ; restore default cursor before killing |
2064 | ; restore default cursor before killing |
2068 | pusha |
2065 | pusha |
2069 | mov ecx, [esp+32] |
2066 | mov ecx, [esp+32] |
2070 | shl ecx, BSF sizeof.WDATA |
2067 | shl ecx, BSF sizeof.WDATA |
2071 | add ecx, window_data |
2068 | add ecx, window_data |
Line 2073... | Line 2070... | ||
2073 | cmp [ecx + WDATA.cursor], eax |
2070 | cmp [ecx + WDATA.cursor], eax |
2074 | je @f |
2071 | je @f |
2075 | call restore_default_cursor_before_killing |
2072 | call restore_default_cursor_before_killing |
2076 | @@: |
2073 | @@: |
2077 | popa |
2074 | popa |
2078 | .restore_end: |
- | |
2079 | ;-------------------------------------- |
2075 | ;-------------------------------------- |
2080 | ;call MEM_Heap_Lock ;guarantee that process isn't working with heap |
2076 | ;call MEM_Heap_Lock ;guarantee that process isn't working with heap |
2081 | mov [ecx + APPDATA.state], TSTATE_ZOMBIE; clear possible i40's |
2077 | mov [ecx + APPDATA.state], TSTATE_ZOMBIE; clear possible i40's |
2082 | call wakeup_osloop |
2078 | call wakeup_osloop |
2083 | ;call MEM_Heap_UnLock |
2079 | ;call MEM_Heap_UnLock |
Line 2555... | Line 2551... | ||
2555 | .os_mem: |
2551 | .os_mem: |
2556 | stosd |
2552 | stosd |
2557 | lea eax, [edx-1] |
2553 | lea eax, [edx-1] |
2558 | stosd |
2554 | stosd |
Line 2559... | Line -... | ||
2559 | - | ||
2560 | mov edx, ecx |
2555 | |
Line 2561... | Line 2556... | ||
2561 | shr edx, (BSF sizeof.APPDATA - BSF sizeof.WDATA) |
2556 | mov edx, [SLOT_BASE + ecx + APPDATA.window] |
2562 | 2557 | ||
2563 | ; +30: PID/TID |
2558 | ; +30: PID/TID |
Line 2564... | Line 2559... | ||
2564 | mov eax, [SLOT_BASE + ecx + APPDATA.tid] |
2559 | mov eax, [SLOT_BASE + ecx + APPDATA.tid] |
2565 | stosd |
2560 | stosd |
2566 | 2561 | ||
2567 | ; window position and size |
2562 | ; window position and size |
2568 | push esi |
2563 | push esi |
2569 | lea esi, [window_data + edx + WDATA.box] |
2564 | lea esi, [edx + WDATA.box] |
2570 | movsd |
2565 | movsd |
Line 2571... | Line 2566... | ||
2571 | movsd |
2566 | movsd |
2572 | movsd |
2567 | movsd |
2573 | movsd |
2568 | movsd |
Line 2574... | Line 2569... | ||
2574 | 2569 | ||
2575 | ; Process state (+50) |
2570 | ; Process state (+50) |
2576 | movzx eax, byte [SLOT_BASE + ecx + APPDATA.state] |
2571 | movzx eax, byte [SLOT_BASE + ecx + APPDATA.state] |
2577 | stosd |
2572 | stosd |
2578 | 2573 | ||
2579 | ; Window client area box |
2574 | ; Window client area box |
Line 2580... | Line 2575... | ||
2580 | lea esi, [window_data + edx + WDATA.clientbox] |
2575 | lea esi, [edx + WDATA.clientbox] |
2581 | movsd |
2576 | movsd |
2582 | movsd |
2577 | movsd |
Line 2583... | Line 2578... | ||
2583 | movsd |
2578 | movsd |
2584 | movsd |
2579 | movsd |
2585 | 2580 | ||
Line 2769... | Line 2764... | ||
2769 | mov cr0, eax |
2764 | mov cr0, eax |
2770 | ret |
2765 | ret |
Line 2771... | Line 2766... | ||
2771 | 2766 | ||
2772 | is_cache_enabled: |
2767 | is_cache_enabled: |
2773 | mov eax, cr0 |
- | |
2774 | mov ebx, eax |
2768 | mov eax, cr0 |
2775 | and eax, 01100000_00000000_00000000_00000000b |
- | |
2776 | jz cache_disabled |
2769 | and eax, 01100000_00000000_00000000_00000000b |
2777 | mov [esp + SYSCALL_STACK.eax], ebx |
- | |
2778 | cache_disabled: |
- | |
2779 | mov dword [esp + SYSCALL_STACK.eax], eax;0 |
2770 | mov [esp + SYSCALL_STACK.eax], eax |
Line 2780... | Line 2771... | ||
2780 | ret |
2771 | ret |
2781 | 2772 | ||
2782 | modify_pce: |
2773 | modify_pce: |
Line 2889... | Line 2880... | ||
2889 | ; DEBUGF 1, "K : drawbackground\n" |
2880 | ; DEBUGF 1, "K : drawbackground\n" |
2890 | ; DEBUGF 1, "K : backg x %x\n",[BG_Rect_X_left_right] |
2881 | ; DEBUGF 1, "K : backg x %x\n",[BG_Rect_X_left_right] |
2891 | ; DEBUGF 1, "K : backg y %x\n",[BG_Rect_Y_top_bottom] |
2882 | ; DEBUGF 1, "K : backg y %x\n",[BG_Rect_Y_top_bottom] |
2892 | ;--------- set event 5 start ---------- |
2883 | ;--------- set event 5 start ---------- |
2893 | push ecx edi |
2884 | push ecx edi |
2894 | xor edi, edi |
2885 | mov edi, window_data |
2895 | mov ecx, [thread_count] |
2886 | mov ecx, [thread_count] |
2896 | ;-------------------------------------- |
2887 | ;-------------------------------------- |
2897 | align 4 |
2888 | align 4 |
2898 | set_bgr_event: |
2889 | set_bgr_event: |
2899 | add edi, sizeof.WDATA |
2890 | add edi, sizeof.WDATA |
2900 | mov eax, [BG_Rect_X_left_right] |
2891 | mov eax, [BG_Rect_X_left_right] |
2901 | mov edx, [BG_Rect_Y_top_bottom] |
2892 | mov edx, [BG_Rect_Y_top_bottom] |
2902 | cmp [window_data + edi + WDATA.draw_bgr_x], 0 |
2893 | cmp [edi + WDATA.draw_bgr_x], 0 |
2903 | jz .set |
2894 | jz .set |
2904 | .join: |
2895 | .join: |
2905 | cmp word [window_data + edi + WDATA.draw_bgr_x], ax |
2896 | cmp word [edi + WDATA.draw_bgr_x], ax |
2906 | jae @f |
2897 | jae @f |
2907 | mov word [window_data + edi + WDATA.draw_bgr_x], ax |
2898 | mov word [edi + WDATA.draw_bgr_x], ax |
2908 | @@: |
2899 | @@: |
2909 | shr eax, 16 |
2900 | shr eax, 16 |
2910 | cmp word [window_data + edi + WDATA.draw_bgr_x + 2], ax |
2901 | cmp word [edi + WDATA.draw_bgr_x + 2], ax |
2911 | jbe @f |
2902 | jbe @f |
2912 | mov word [window_data + edi + WDATA.draw_bgr_x + 2], ax |
2903 | mov word [edi + WDATA.draw_bgr_x + 2], ax |
2913 | @@: |
2904 | @@: |
2914 | cmp word [window_data + edi + WDATA.draw_bgr_y], dx |
2905 | cmp word [edi + WDATA.draw_bgr_y], dx |
2915 | jae @f |
2906 | jae @f |
2916 | mov word [window_data + edi + WDATA.draw_bgr_y], dx |
2907 | mov word [edi + WDATA.draw_bgr_y], dx |
2917 | @@: |
2908 | @@: |
2918 | shr edx, 16 |
2909 | shr edx, 16 |
2919 | cmp word [window_data + edi + WDATA.draw_bgr_y+2], dx |
2910 | cmp word [edi + WDATA.draw_bgr_y+2], dx |
2920 | jbe @f |
2911 | jbe @f |
2921 | mov word [window_data + edi + WDATA.draw_bgr_y+2], dx |
2912 | mov word [edi + WDATA.draw_bgr_y+2], dx |
2922 | @@: |
2913 | @@: |
2923 | jmp .common |
2914 | jmp .common |
2924 | .set: |
2915 | .set: |
2925 | mov [window_data + edi + WDATA.draw_bgr_x], eax |
2916 | mov [edi + WDATA.draw_bgr_x], eax |
2926 | mov [window_data + edi + WDATA.draw_bgr_y], edx |
2917 | mov [edi + WDATA.draw_bgr_y], edx |
2927 | .common: |
2918 | .common: |
2928 | mov eax, [window_data + edi + WDATA.thread] |
2919 | mov eax, [edi + WDATA.thread] |
2929 | test eax, eax |
2920 | test eax, eax |
2930 | jz @f |
2921 | jz @f |
2931 | or [eax + APPDATA.occurred_events], EVENT_BACKGROUND |
2922 | or [eax + APPDATA.occurred_events], EVENT_BACKGROUND |
2932 | @@: |
2923 | @@: |
2933 | sub ecx, 1 |
- | |
2934 | jnz set_bgr_event |
- | |
2935 | ;loop set_bgr_event |
2924 | loop set_bgr_event |
2936 | pop edi ecx |
2925 | pop edi ecx |
2937 | ;--------- set event 5 stop ----------- |
2926 | ;--------- set event 5 stop ----------- |
2938 | dec [REDRAW_BACKGROUND] ; got new update request? |
2927 | dec [REDRAW_BACKGROUND] ; got new update request? |
2939 | jnz backgr |
2928 | jnz backgr |
Line 2954... | Line 2943... | ||
2954 | 2943 | ||
2955 | cmp [SYS_SHUTDOWN], dl |
2944 | cmp [SYS_SHUTDOWN], dl |
Line 2956... | Line 2945... | ||
2956 | jne noshutdown |
2945 | jne noshutdown |
2957 | 2946 | ||
2958 | lea ecx, [edx-1] |
2947 | lea ecx, [edx-1] |
2959 | mov edx, SLOT_BASE + sizeof.APPDATA ;OS_BASE+0x3040 |
2948 | mov edx, SLOT_BASE + sizeof.APPDATA*2 ;OS_BASE+0x3040 |
2960 | jecxz no_mark_system_shutdown |
2949 | jecxz no_mark_system_shutdown |
2961 | ;-------------------------------------- |
2950 | ;-------------------------------------- |
2962 | align 4 |
2951 | align 4 |
Line 3001... | Line 2990... | ||
3001 | 2990 | ||
3002 | cmp cl, TSTATE_TERMINATING |
2991 | cmp cl, TSTATE_TERMINATING |
3003 | jnz .noterminate |
2992 | jnz .noterminate |
3004 | .terminate: |
2993 | .terminate: |
3005 | pushad |
2994 | pushad |
3006 | mov ecx, eax |
2995 | push esi |
3007 | shl ecx, BSF sizeof.WDATA |
- | |
3008 | add ecx, window_data |
2996 | mov ecx, dword[ebx - APPDATA.state + APPDATA.window] |
3009 | call restore_default_cursor_before_killing |
- | |
Line 3010... | Line 2997... | ||
3010 | popad |
2997 | call restore_default_cursor_before_killing |
3011 | 2998 | ||
3012 | pushad |
2999 | pop esi |
3013 | call terminate |
3000 | call terminate |
3014 | popad |
3001 | popad |
3015 | cmp byte [SYS_SHUTDOWN], 0 |
3002 | cmp byte [SYS_SHUTDOWN], 0 |
Line 3023... | Line 3010... | ||
3023 | dec eax |
3010 | dec eax |
3024 | jnz newct |
3011 | jnz newct |
3025 | ret |
3012 | ret |
3026 | ;----------------------------------------------------------------------------- |
3013 | ;----------------------------------------------------------------------------- |
3027 | align 4 |
3014 | align 4 |
- | 3015 | ; eax - ptr to WDATA |
|
3028 | redrawscreen: |
3016 | redrawscreen: |
3029 | ; eax , if process window_data base is eax, do not set flag/limits |
3017 | ; eax , if process window_data base is eax, do not set flag/limits |
Line 3030... | Line 3018... | ||
3030 | 3018 | ||
3031 | pushad |
3019 | pushad |
Line 3063... | Line 3051... | ||
3063 | @@: |
3051 | @@: |
Line 3064... | Line 3052... | ||
3064 | 3052 | ||
3065 | mov eax, [edi + WDATA.box.left] |
3053 | mov eax, [edi + WDATA.box.left] |
Line 3066... | Line 3054... | ||
3066 | mov ebx, [edi + WDATA.box.top] |
3054 | mov ebx, [edi + WDATA.box.top] |
3067 | - | ||
3068 | mov ecx, [draw_limits.bottom] ; ecx = area y end ebx = window y start |
3055 | |
Line 3069... | Line 3056... | ||
3069 | cmp ecx, ebx |
3056 | cmp ebx, [draw_limits.bottom] ; ecx = area y end ebx = window y start |
3070 | jb ricino |
- | |
3071 | 3057 | jae ricino |
|
Line 3072... | Line 3058... | ||
3072 | mov ecx, [draw_limits.right] ; ecx = area x end eax = window x start |
3058 | |
3073 | cmp ecx, eax |
3059 | cmp eax, [draw_limits.right] ; ecx = area x end eax = window x start |
3074 | jb ricino |
3060 | jae ricino |
3075 | 3061 | ||
Line 3088... | Line 3074... | ||
3088 | cmp ecx, eax |
3074 | cmp ecx, eax |
3089 | jb ricino |
3075 | jb ricino |
3090 | ;-------------------------------------- |
3076 | ;-------------------------------------- |
3091 | align 4 |
3077 | align 4 |
3092 | bgli: |
3078 | bgli: |
3093 | cmp dword[esp], 1 |
3079 | cmp dword[esp], 1 ; check index in window_data array, 1 - idle |
3094 | jnz .az |
3080 | jnz .az |
Line 3095... | Line 3081... | ||
3095 | 3081 | ||
3096 | cmp [REDRAW_BACKGROUND], 0 |
3082 | cmp [REDRAW_BACKGROUND], 0 |
Line 3137... | Line 3123... | ||
3137 | call wakeup_osloop |
3123 | call wakeup_osloop |
3138 | jmp newdw8 |
3124 | jmp newdw8 |
3139 | ;-------------------------------------- |
3125 | ;-------------------------------------- |
3140 | align 4 |
3126 | align 4 |
3141 | .az: |
3127 | .az: |
3142 | mov eax, edi |
- | |
3143 | - | ||
3144 | mov ebx, [draw_limits.left] ; set limits |
3128 | mov ebx, [draw_limits.left] ; set limits |
3145 | mov [eax + WDATA.draw_data.left], ebx |
3129 | mov [edi + WDATA.draw_data.left], ebx |
3146 | mov ebx, [draw_limits.top] |
3130 | mov ebx, [draw_limits.top] |
3147 | mov [eax + WDATA.draw_data.top], ebx |
3131 | mov [edi + WDATA.draw_data.top], ebx |
3148 | mov ebx, [draw_limits.right] |
3132 | mov ebx, [draw_limits.right] |
3149 | mov [eax + WDATA.draw_data.right], ebx |
3133 | mov [edi + WDATA.draw_data.right], ebx |
3150 | mov ebx, [draw_limits.bottom] |
3134 | mov ebx, [draw_limits.bottom] |
3151 | mov [eax + WDATA.draw_data.bottom], ebx |
3135 | mov [edi + WDATA.draw_data.bottom], ebx |
Line 3152... | Line 3136... | ||
3152 | 3136 | ||
3153 | cmp dword [esp], 1 |
3137 | cmp dword [esp], 1 ; check idle thread |
3154 | jne nobgrd |
3138 | jne nobgrd |
3155 | inc [REDRAW_BACKGROUND] |
3139 | inc [REDRAW_BACKGROUND] |
3156 | call wakeup_osloop |
3140 | call wakeup_osloop |
3157 | ;-------------------------------------- |
3141 | ;-------------------------------------- |
3158 | align 4 |
3142 | align 4 |
3159 | newdw8: |
3143 | newdw8: |
3160 | nobgrd: |
3144 | nobgrd: |
3161 | ;-------------------------------------- |
3145 | ;-------------------------------------- |
3162 | push eax edi ebp |
3146 | push edi ebp |
3163 | mov edi, [esp+12] |
3147 | mov edi, [esp+8] |
3164 | cmp edi, 1 |
3148 | cmp edi, 1 |
Line 3165... | Line 3149... | ||
3165 | je .found |
3149 | je .found |
3166 | 3150 | ||
Line 3208... | Line 3192... | ||
3208 | dec edx |
3192 | dec edx |
3209 | jns .start_y |
3193 | jns .start_y |
3210 | ;-------------------------------------- |
3194 | ;-------------------------------------- |
3211 | align 4 |
3195 | align 4 |
3212 | .not_found: |
3196 | .not_found: |
3213 | pop ebp edi eax |
3197 | pop ebp edi |
3214 | jmp ricino |
3198 | jmp ricino |
3215 | ;-------------------------------------- |
3199 | ;-------------------------------------- |
3216 | align 4 |
3200 | align 4 |
3217 | .found: |
3201 | .found: |
3218 | pop ebp edi eax |
3202 | pop ebp edi |
Line 3219... | Line 3203... | ||
3219 | 3203 | ||
3220 | mov [eax + WDATA.fl_redraw], WSTATE_REDRAW ; mark as redraw |
3204 | mov [edi + WDATA.fl_redraw], WSTATE_REDRAW ; mark as redraw |
3221 | ;-------------------------------------- |
3205 | ;-------------------------------------- |
3222 | align 4 |
3206 | align 4 |
3223 | ricino: |
3207 | ricino: |
3224 | not_this_task: |
3208 | not_this_task: |