Rev 419 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 419 | Rev 420 | ||
---|---|---|---|
Line 1009... | Line 1009... | ||
1009 | stdcall k_strncpy, edx, [app_path], 1024 |
1009 | stdcall k_strncpy, edx, [app_path], 1024 |
1010 | @@: |
1010 | @@: |
1011 | mov ebx,[slot] |
1011 | mov ebx,[slot] |
1012 | mov eax,ebx |
1012 | mov eax,ebx |
1013 | shl ebx,5 |
1013 | shl ebx,5 |
- | 1014 | lea ecx,[draw_data+ebx] ;ecx - pointer to draw data |
|
- | 1015 | ||
1014 | ; set window state to 'normal' (non-minimized/maximized/rolled-up) state |
1016 | ; set window state to 'normal' (non-minimized/maximized/rolled-up) state |
1015 | mov [ebx+window_data+WDATA.fl_wstate], WSTATE_NORMAL |
1017 | mov [ebx+window_data+WDATA.fl_wstate], WSTATE_NORMAL |
1016 | mov [ebx+window_data+WDATA.fl_redraw], 1 |
1018 | mov [ebx+window_data+WDATA.fl_redraw], 1 |
1017 | add ebx,CURRENT_TASK ;ebx - pointer to information about process |
1019 | add ebx,CURRENT_TASK ;ebx - pointer to information about process |
1018 | mov [ebx+TASKDATA.wnd_number],al;set window number on screen = process slot |
1020 | mov [ebx+TASKDATA.wnd_number],al;set window number on screen = process slot |
Line 1021... | Line 1023... | ||
1021 | 1023 | ||
1022 | inc dword [process_number] |
1024 | inc dword [process_number] |
1023 | mov eax,[process_number] |
1025 | mov eax,[process_number] |
Line 1024... | Line -... | ||
1024 | mov [ebx+4],eax ;set PID |
- | |
1025 | - | ||
1026 | mov ecx,ebx |
1026 | mov [ebx+4],eax ;set PID |
Line 1027... | Line 1027... | ||
1027 | add ecx,(draw_data-CURRENT_TASK) ;ecx - pointer to draw data |
1027 | |
1028 | ;set draw data to full screen |
1028 | ;set draw data to full screen |
1029 | 1029 | ||
Line 1056... | Line 1056... | ||
1056 | mov esi,[params] |
1056 | mov esi,[params] |
1057 | mov eax, [esi+0x08] ;app_eip |
1057 | mov eax, [esi+0x08] ;app_eip |
1058 | mov [edi+TSS._eip],eax ;set eip in TSS |
1058 | mov [edi+TSS._eip],eax ;set eip in TSS |
1059 | mov eax, [esi+0x0C] ;app_esp |
1059 | mov eax, [esi+0x0C] ;app_esp |
1060 | mov [edi+TSS._esp],eax ;set stack in TSS |
1060 | mov [edi+TSS._esp],eax ;set stack in TSS |
1061 | mov [edi+TSS._eflags],dword 0x3202 |
1061 | mov [edi+TSS._eflags],dword 0x1202 |
Line 1062... | Line 1062... | ||
1062 | 1062 | ||
1063 | mov [edi+TSS._cs],app_code ;selector of code segment |
1063 | mov [edi+TSS._cs],app_code ;selector of code segment |
1064 | mov [edi+TSS._ss],app_data |
1064 | mov [edi+TSS._ss],app_data |
1065 | mov [edi+TSS._ds],app_data |
1065 | mov [edi+TSS._ds],app_data |
1066 | mov [edi+TSS._es],app_data |
1066 | mov [edi+TSS._es],app_data |
1067 | mov [edi+TSS._fs],app_data |
1067 | mov [edi+TSS._fs],app_data |
1068 | mov [edi+TSS._gs],graph_data ;selector of graphic segment |
1068 | mov [edi+TSS._gs],graph_data ;selector of graphic segment |
1069 | mov [edi+TSS._io],word 128 |
1069 | mov [edi+TSS._io],word 128 |
1070 | mov [edi+TSS._ss0], os_data |
1070 | mov [edi+TSS._ss0], os_stack |
1071 | mov ebx, [pl0_stack] |
1071 | mov ebx, [pl0_stack] |
1072 | add ebx, RING0_STACK_SIZE |
1072 | add ebx, RING0_STACK_SIZE |
Line -... | Line 1073... | ||
- | 1073 | mov [edi+TSS._esp0],ebx |
|
- | 1074 | ||
- | 1075 | xor eax, eax |
|
- | 1076 | mov ebx, [pl0_stack] |
|
- | 1077 | lea ecx, [ebx+REG_EIP] |
|
- | 1078 | ||
- | 1079 | mov [ebx+REG_RET], dword irq0.return |
|
- | 1080 | mov [ebx+REG_EDI], eax |
|
- | 1081 | mov [ebx+REG_ESI], eax |
|
- | 1082 | mov [ebx+REG_EBP], eax |
|
- | 1083 | mov [ebx+REG_ESP], ecx ;ebx+REG_EIP |
|
- | 1084 | mov [ebx+REG_EBX], eax |
|
- | 1085 | mov [ebx+REG_EDX], eax |
|
- | 1086 | mov [ebx+REG_ECX], eax |
|
- | 1087 | mov [ebx+REG_EAX], eax |
|
- | 1088 | ||
- | 1089 | mov [ebx+REG_EFL_2], dword 0x1002 |
|
- | 1090 | ||
- | 1091 | mov eax, [esi+0x08] ;app_eip |
|
- | 1092 | mov [ebx+REG_EIP], eax ;app_entry |
|
- | 1093 | mov [ebx+REG_CS], dword app_code |
|
- | 1094 | mov [ebx+REG_EFLAGS], dword 0x1202 |
|
- | 1095 | ||
- | 1096 | mov eax, [esi+0x0C] ;app_esp |
|
- | 1097 | mov [ebx+REG_APP_ESP], eax ;app_stack |
|
- | 1098 | mov [ebx+REG_SS], dword app_data |
|
- | 1099 | ||
- | 1100 | lea ecx, [ebx+REG_RET] |
|
- | 1101 | mov ebx, [slot] |
|
- | 1102 | shl ebx, 8 |
|
1073 | mov [edi+TSS._esp0],ebx |
1103 | mov [ebx+SLOT_BASE+APPDATA.saved_esp], ecx |
1074 | 1104 | ||
1075 | mov ecx, edi ;ecx - address of application TSS |
1105 | mov ecx, edi ;ecx - address of application TSS |
1076 | mov ebx,[slot] |
1106 | mov ebx,[slot] |
1077 | shl ebx,3 |
1107 | shl ebx,3 |
Line 1107... | Line 1137... | ||
1107 | mov [SLOT_BASE+ebx*8+0xac],eax ;set debugger PID - current |
1137 | mov [SLOT_BASE+ebx*8+0xac],eax ;set debugger PID - current |
1108 | .no_debug: |
1138 | .no_debug: |
1109 | mov esi,new_process_running |
1139 | mov esi,new_process_running |
1110 | call sys_msg_board_str ;output information about succefull startup |
1140 | call sys_msg_board_str ;output information about succefull startup |
1111 | ret |
1141 | ret |
- | 1142 | ||
- | 1143 | if 0 |
|
- | 1144 | ; set stack frame |
|
- | 1145 | ||
- | 1146 | xor eax, eax |
|
- | 1147 | lea ecx, [ebx+REG_EIP] |
|
- | 1148 | mov ebx, [pl0_stack] |
|
- | 1149 | mov esi,[params] |
|
- | 1150 | ||
- | 1151 | mov [ebx+REG_RET], dword irq0.return |
|
- | 1152 | mov [ebx+REG_EDI], eax |
|
- | 1153 | mov [ebx+REG_ESI], eax |
|
- | 1154 | mov [ebx+REG_EBP], eax |
|
- | 1155 | mov [ebx+REG_ESP], ecx ;ebx+REG_EIP |
|
- | 1156 | mov [ebx+REG_EBX], eax |
|
- | 1157 | mov [ebx+REG_EDX], eax |
|
- | 1158 | mov [ebx+REG_ECX], eax |
|
- | 1159 | mov [ebx+REG_EAX], eax |
|
- | 1160 | ||
- | 1161 | mov [ebx+REG_EFL_2], dword 0x1002 |
|
- | 1162 | ||
- | 1163 | mov eax, [esi+0x08] ;app_eip |
|
- | 1164 | mov [ebx+REG_EIP], eax ;app_entry |
|
- | 1165 | mov [ebx+REG_CS], dword app_code |
|
- | 1166 | mov [ebx+REG_EFLAGS], dword 0x1202 |
|
- | 1167 | ||
- | 1168 | mov eax, [esi+0x0C] ;app_esp |
|
- | 1169 | mov [ebx+REG_ESP], eax ;app_stack |
|
- | 1170 | mov [ebx+REG_SS], dword app_data |
|
- | 1171 | end if |
|
- | 1172 | ||
1112 | endp |
1173 | endp |
Line 1113... | Line 1174... | ||
1113 | 1174 |