Rev 1074 | Rev 1260 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1074 | Rev 1220 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 1074 $ |
8 | $Revision: 1220 $ |
Line 9... | Line 9... | ||
9 | 9 | ||
Line 111... | Line 111... | ||
111 | jmp .namecopied |
111 | jmp .namecopied |
112 | .bigfilename: |
112 | .bigfilename: |
113 | popad |
113 | popad |
114 | mov eax, -ERROR_FILE_NOT_FOUND |
114 | mov eax, -ERROR_FILE_NOT_FOUND |
115 | ret |
115 | ret |
- | 116 | ||
116 | .namecopied: |
117 | .namecopied: |
Line 117... | Line 118... | ||
117 | 118 | ||
118 | mov [cmdline], ebx |
119 | mov [cmdline], ebx |
119 | test ebx, ebx |
120 | test ebx, ebx |
Line 199... | Line 200... | ||
199 | mov ebx,[slot_base] |
200 | mov ebx,[slot_base] |
200 | mov [ebx+APPDATA.dir_table],eax |
201 | mov [ebx+APPDATA.dir_table],eax |
201 | mov eax,[hdr_mem] |
202 | mov eax,[hdr_mem] |
202 | mov [ebx+APPDATA.mem_size],eax |
203 | mov [ebx+APPDATA.mem_size],eax |
Line -... | Line 204... | ||
- | 204 | ||
- | 205 | xor edx, edx |
|
- | 206 | cmp word [6], '02' |
|
- | 207 | jne @f |
|
- | 208 | ||
- | 209 | not edx |
|
- | 210 | @@: |
|
- | 211 | mov [ebx+APPDATA.tls_base],edx |
|
203 | 212 | ||
204 | if GREEDY_KERNEL |
213 | if GREEDY_KERNEL |
205 | else |
214 | else |
206 | mov ecx, [hdr_mem] |
215 | mov ecx, [hdr_mem] |
207 | mov edi, [file_size] |
216 | mov edi, [file_size] |
Line 276... | Line 285... | ||
276 | ret |
285 | ret |
Line 277... | Line 286... | ||
277 | 286 | ||
Line 278... | Line 287... | ||
278 | .check_01_header: |
287 | .check_01_header: |
- | 288 | ||
- | 289 | cmp [eax+6], word '01' |
|
279 | 290 | je @f |
|
280 | cmp [eax+6],word '01' |
291 | cmp [eax+6], word '02' |
281 | jne .fail |
292 | jne .fail |
282 | 293 | @@: |
|
283 | mov ecx,[APP_HEADER_01.start] |
294 | mov ecx,[APP_HEADER_01.start] |
Line 284... | Line 295... | ||
284 | mov [ebx+0x08], ecx ;app_eip |
295 | mov [ebx+0x08], ecx ;app_eip |
Line 734... | Line 745... | ||
734 | mov ecx, 0x8000 |
745 | mov ecx, 0x8000 |
735 | @@: |
746 | @@: |
736 | mov eax, [slot] |
747 | mov eax, [slot] |
737 | shl eax,8 |
748 | shl eax,8 |
738 | mov ebx, [offset] |
749 | mov ebx, [offset] |
739 | ; add ebx, new_app_base |
- | |
- | 750 | ||
740 | push ecx |
751 | push ecx |
741 | stdcall map_memEx, [proc_mem_map],\ |
752 | stdcall map_memEx, [proc_mem_map],\ |
742 | [SLOT_BASE+eax+0xB8],\ |
753 | [SLOT_BASE+eax+0xB8],\ |
743 | ebx, ecx |
754 | ebx, ecx |
744 | pop ecx |
755 | pop ecx |
Line 895... | Line 906... | ||
895 | mov [edx+APPDATA.mem_size], eax |
906 | mov [edx+APPDATA.mem_size], eax |
Line 896... | Line 907... | ||
896 | 907 | ||
897 | mov ecx,[ebx+APPDATA.dir_table] |
908 | mov ecx,[ebx+APPDATA.dir_table] |
Line -... | Line 909... | ||
- | 909 | mov [edx+APPDATA.dir_table],ecx ;copy page directory |
|
- | 910 | ||
- | 911 | mov eax, [ebx+APPDATA.tls_base] |
|
- | 912 | test eax, eax |
|
- | 913 | jz @F |
|
- | 914 | ||
- | 915 | push edx |
|
- | 916 | stdcall user_alloc, 4096 |
|
- | 917 | pop edx |
|
- | 918 | test eax, eax |
|
- | 919 | jz .failed |
|
- | 920 | @@: |
|
898 | mov [edx+APPDATA.dir_table],ecx ;copy page directory |
921 | mov [edx+APPDATA.tls_base], eax |
899 | 922 | ||
900 | lea eax, [app_cmdline] |
923 | lea eax, [app_cmdline] |
Line 901... | Line 924... | ||
901 | stdcall set_app_params ,[slot],eax,dword 0,\ |
924 | stdcall set_app_params ,[slot],eax,dword 0,\ |
Line 929... | Line 952... | ||
929 | .locked: |
952 | .locked: |
930 | pop ebx |
953 | pop ebx |
931 | pop eax |
954 | pop eax |
932 | ret |
955 | ret |
Line -... | Line 956... | ||
- | 956 | ||
- | 957 | align 4 |
|
- | 958 | tls_app_entry: |
|
- | 959 | ||
- | 960 | call init_heap |
|
- | 961 | stdcall user_alloc, 4096 |
|
- | 962 | ||
- | 963 | mov edx, [current_slot] |
|
- | 964 | mov [edx+APPDATA.tls_base], eax |
|
- | 965 | mov [tls_data_l+2],ax |
|
- | 966 | shr eax,16 |
|
- | 967 | mov [tls_data_l+4],al |
|
- | 968 | mov [tls_data_l+7],ah |
|
- | 969 | mov dx, app_tls |
|
- | 970 | mov fs, dx |
|
- | 971 | popad |
|
- | 972 | iretd |
|
- | 973 | ||
933 | 974 | ||
934 | EFL_IF equ 0x0200 |
975 | EFL_IF equ 0x0200 |
935 | EFL_IOPL1 equ 0x1000 |
976 | EFL_IOPL1 equ 0x1000 |
936 | EFL_IOPL2 equ 0x2000 |
977 | EFL_IOPL2 equ 0x2000 |
Line 1035... | Line 1076... | ||
1035 | mov ebx,[slot] |
1076 | mov ebx,[slot] |
1036 | mov eax,ebx |
1077 | mov eax,ebx |
1037 | shl ebx,5 |
1078 | shl ebx,5 |
1038 | lea ecx,[draw_data+ebx] ;ecx - pointer to draw data |
1079 | lea ecx,[draw_data+ebx] ;ecx - pointer to draw data |
Line -... | Line 1080... | ||
- | 1080 | ||
- | 1081 | mov edx, irq0.return |
|
- | 1082 | cmp [ebx*8+SLOT_BASE+APPDATA.tls_base], -1 |
|
- | 1083 | jne @F |
|
- | 1084 | mov edx, tls_app_entry |
|
1039 | 1085 | @@: |
|
1040 | ; set window state to 'normal' (non-minimized/maximized/rolled-up) state |
1086 | ; set window state to 'normal' (non-minimized/maximized/rolled-up) state |
1041 | mov [ebx+window_data+WDATA.fl_wstate], WSTATE_NORMAL |
1087 | mov [ebx+window_data+WDATA.fl_wstate], WSTATE_NORMAL |
1042 | mov [ebx+window_data+WDATA.fl_redraw], 1 |
1088 | mov [ebx+window_data+WDATA.fl_redraw], 1 |
1043 | add ebx,CURRENT_TASK ;ebx - pointer to information about process |
1089 | add ebx,CURRENT_TASK ;ebx - pointer to information about process |
Line 1061... | Line 1107... | ||
1061 | mov ebx, [pl0_stack] |
1107 | mov ebx, [pl0_stack] |
1062 | mov esi,[params] |
1108 | mov esi,[params] |
1063 | lea ecx, [ebx+REG_EIP] |
1109 | lea ecx, [ebx+REG_EIP] |
1064 | xor eax, eax |
1110 | xor eax, eax |
Line 1065... | Line 1111... | ||
1065 | 1111 | ||
1066 | mov [ebx+REG_RET], dword irq0.return |
1112 | mov [ebx+REG_RET], edx |
1067 | mov [ebx+REG_EDI], eax |
1113 | mov [ebx+REG_EDI], eax |
1068 | mov [ebx+REG_ESI], eax |
1114 | mov [ebx+REG_ESI], eax |
1069 | mov [ebx+REG_EBP], eax |
1115 | mov [ebx+REG_EBP], eax |
1070 | mov [ebx+REG_ESP], ecx ;ebx+REG_EIP |
1116 | mov [ebx+REG_ESP], ecx ;ebx+REG_EIP |