/kernel/branches/kolibri_pe/core/dll.c |
---|
454,10 → 454,10 |
thr_stack->ecx = 0; |
thr_stack->eax = 0; |
thr_stack->eip = entry; |
thr_stack->cs = 0x1b; |
thr_stack->cs = sel_app_code; |
thr_stack->eflags = EFL_IOPL3 | EFL_IF; |
thr_stack->pe_sp = 0x7FFFF000 + ((u32_t)ex_stack & 0xFFF); |
thr_stack->pe_ss = 0x23; |
thr_stack->pe_ss = sel_app_data; |
}; |
585,13 → 585,12 |
DBG("import from %s\n",libname); |
exp_dll = find_dll(&core_dll.link, libname); |
if(exp_dll == NULL) |
{ |
exp_dll = find_dll(¤t_slot->dll_list, libname); |
if(exp_dll != NULL) |
if(exp_dll == NULL) |
{ |
DBG("find %s\n", exp_dll->img_name); |
} |
else |
{ |
int len = strlen(libname)+1; |
memcpy(path, "/sys/lib/",9); |
604,6 → 603,8 |
return false; |
}; |
} |
}; |
DBG("find %s\n", exp_dll->img_name); |
exp = exp_dll->img_exp; |
/kernel/branches/kolibri_pe/core/init.asm |
---|
218,26 → 218,9 |
; SAVE & CLEAR 0-0xffff |
cld |
xor esi, esi |
mov edi,BOOT_VAR |
mov ecx,0x10000 / 4 |
rep movsd |
xor edi, edi |
xor eax, eax |
mov ecx,0x10000 / 4 |
rep stosd |
mov edi, 0x40000 |
mov ecx, (0x90000-0x40000)/4 |
rep stosd |
mov dword [_sys_pdbr], eax |
mov dword [_sys_pdbr+4], eax |
xchg bx, bx |
movzx eax,word [BOOT_VAR+0x9008] ; screen mode |
mov [scr_mode],eax |
256,8 → 239,6 |
mov [_current_thread], eax |
xchg bx, bx |
mov ebx, [eax+THR.pdir] |
mov ecx, cr3 |
cmp ebx, ecx |
/kernel/branches/kolibri_pe/core/sys32.inc |
---|
592,26 → 592,25 |
pusha ; save window coordinates for window restoring |
cld |
shl esi,5 |
add esi,window_data |
mov eax,[esi+WDATA.box.left] |
mov eax,[window_data+esi+WDATA.box.left] |
mov [dlx],eax |
add eax,[esi+WDATA.box.width] |
add eax,[window_data+esi+WDATA.box.width] |
mov [dlxe],eax |
mov eax,[esi+WDATA.box.top] |
mov eax,[window_data+esi+WDATA.box.top] |
mov [dly],eax |
add eax,[esi+WDATA.box.height] |
add eax,[window_data+esi+WDATA.box.height] |
mov [dlye],eax |
xor eax, eax |
mov [esi+WDATA.box.left],eax |
mov [esi+WDATA.box.width],eax |
mov [esi+WDATA.box.top],eax |
mov [esi+WDATA.box.height],eax |
mov [esi+WDATA.cl_workarea],eax |
mov [esi+WDATA.cl_titlebar],eax |
mov [esi+WDATA.cl_frames],eax |
mov dword [esi+WDATA.reserved],eax ; clear all flags: wstate, redraw, wdrawn |
lea edi, [esi-window_data+draw_data] |
mov [window_data+esi+WDATA.box.left],eax |
mov [window_data+esi+WDATA.box.width],eax |
mov [window_data+esi+WDATA.box.top],eax |
mov [window_data+esi+WDATA.box.height],eax |
mov [window_data+esi+WDATA.cl_workarea],eax |
mov [window_data+esi+WDATA.cl_titlebar],eax |
mov [window_data+esi+WDATA.cl_frames],eax |
mov dword [window_data+esi+WDATA.reserved],eax ; clear all flags: wstate, redraw, wdrawn |
lea edi, [esi+draw_data] |
mov ecx,32/4 |
rep stosd |
popa |
812,9 → 811,6 |
xor esi, esi |
call redrawscreen |
mov [mouse_background], 0 ; no mouse background |
mov [dont_draw_mouse], 0 ; draw mouse |
mov [application_table_status],0 |
;mov esi,process_terminated |
;call sys_msg_board_str |
/kernel/branches/kolibri_pe/core/taskman.inc |
---|
432,7 → 432,7 |
mov [ecx*8+SLOT_BASE+APPDATA.saved_esp], ebx |
mov [CURRENT_TASK+ecx+TASKDATA.state], 0 |
DEBUGF 1,"%s",new_process_running |
; DEBUGF 1,"%s",new_process_running |
.err: |
mov eax,[process_number] ;set result |
mov [application_table_status], 0 ;unlock application_table_status mutex |
446,7 → 446,6 |
align 4 |
_pe_restart: |
xchg bx, bx |
add esp, 12 |
popad |
iretd |
/kernel/branches/kolibri_pe/core/v86.inc |
---|
94,9 → 94,9 |
pop eax |
; first page - BIOS data (shared between all machines!) |
; physical address = 0x1f0000 |
; linear address = BOOT_VAR = OS_BASE + 0x1f0000 |
mov dword [eax], (BOOT_VAR - OS_BASE) or 111b |
mov dword [eax+800h], BOOT_VAR |
; linear address = 0 |
mov dword [eax], 111b |
mov dword [eax+800h], OS_BASE |
; page before 0xA0000 - Extended BIOS Data Area (shared between all machines!) |
; physical address = 0x9C000 |
; linear address = 0x8009C000 |