Subversion Repositories Kolibri OS

Rev

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