258,7 → 258,6 |
rep stosd |
; CLEAR 0x80000-0x90000 |
; xor eax,eax |
|
mov edi,0x80000 |
mov ecx,(0x90000-0x80000)/4 |
; cld |
608,18 → 607,18 |
call boot_log |
|
mov eax, fpu_data |
mov dword [SLOT_BASE+APPDATA.fpu_state], eax |
mov dword [SLOT_BASE+APPDATA.fpu_handler], 0 |
mov dword [SLOT_BASE+APPDATA.sse_handler], 0 |
mov dword [0x80000+APPDATA.fpu_state], eax |
mov dword [0x80000+APPDATA.fpu_handler], 0 |
mov dword [0x80000+APPDATA.sse_handler], 0 |
|
; name for OS/IDLE process |
|
mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' |
mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' |
mov dword [0x80000+256+APPDATA.app_name], dword 'OS/I' |
mov dword [0x80000+256+APPDATA.app_name+4], dword 'DLE ' |
mov edi, [os_stack] |
mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi |
mov dword [0x80000+256+APPDATA.pl0_stack], edi |
add edi, 0x2000-512 |
mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi |
mov dword [0x80000+256+APPDATA.fpu_state], edi |
|
mov esi, fpu_data |
mov ecx, 512/4 |
626,15 → 625,15 |
cld |
rep movsd |
|
mov dword [SLOT_BASE+256+APPDATA.fpu_handler], 0 |
mov dword [SLOT_BASE+256+APPDATA.sse_handler], 0 |
mov dword [0x80000+256+APPDATA.fpu_handler], 0 |
mov dword [0x80000+256+APPDATA.sse_handler], 0 |
|
mov ebx, [def_cursor] |
mov dword [SLOT_BASE+256+APPDATA.cursor], ebx |
mov dword [0x80000+256+APPDATA.cursor], ebx |
|
mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET |
mov dword [SLOT_BASE+256+APPDATA.fd_obj], ebx |
mov dword [SLOT_BASE+256+APPDATA.bk_obj], ebx |
mov ebx, PROC_BASE+256+APP_OBJ_OFFSET |
mov dword [0x80000+256+APPDATA.fd_obj], ebx |
mov dword [0x80000+256+APPDATA.bk_obj], ebx |
|
; task list |
mov [TASK_DATA+TASKDATA.wnd_number], 1 ; on screen number |
1329,9 → 1328,9 |
|
; mov edi,[CURRENT_TASK] |
; shl edi,8 |
; add ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
; add ax,word[edi+0x80000+APPDATA.wnd_clientbox.top] |
; rol eax,16 |
; add ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
; add ax,word[edi+0x80000+APPDATA.wnd_clientbox.left] |
; rol eax,16 |
|
mov edx,eax |
1342,10 → 1341,10 |
push edx ; add window start x & y |
mov edx,[TASK_BASE] |
mov ebx,[edx-twdw+WDATA.box.left] |
add ebx, [(edx-CURRENT_TASK)*8+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add ebx, [(edx-CURRENT_TASK)*8+0x80000+APPDATA.wnd_clientbox.left] |
shl ebx,16 |
add ebx,[edx-twdw+WDATA.box.top] |
add ebx, [(edx-CURRENT_TASK)*8+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add ebx, [(edx-CURRENT_TASK)*8+0x80000+APPDATA.wnd_clientbox.top] |
add eax,ebx |
pop edx |
mov ebx,[esp+64+32-12+4] |
1742,9 → 1741,9 |
|
mov edi,[CURRENT_TASK] |
shl edi,8 |
sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
sub ax,word[edi+PROC_BASE+APPDATA.wnd_clientbox.top] |
rol eax,16 |
sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
sub ax,word[edi+PROC_BASE+APPDATA.wnd_clientbox.left] |
rol eax,16 |
mov [esp+36],eax |
ret |
2001,7 → 2000,7 |
|
mov [window_minimize], 2 ; restore window if minimized |
|
movzx esi, word [WIN_STACK + ebx*2] |
movzx esi, word [0xC000 + ebx*2] |
cmp esi, [TASK_COUNT] |
je .nowindowactivate ; already active |
|
2008,8 → 2007,8 |
mov edi, ebx |
shl edi, 5 |
add edi, window_data |
movzx esi, word [WIN_STACK + ebx * 2] |
lea esi, [WIN_POS + esi * 2] |
movzx esi, word [0xC000 + ebx * 2] |
lea esi, [0xC400 + esi * 2] |
call waredraw |
.nowindowactivate: |
ret |
2031,7 → 2030,7 |
|
sysfn_getactive: ; 18.7 = get active window |
mov eax, [TASK_COUNT] |
movzx eax, word [WIN_POS + eax*2] |
movzx eax, word [0xC400 + eax*2] |
mov [esp+36],eax |
ret |
|
2349,7 → 2348,7 |
mov [esp+36],dword 1 |
; test main buffer |
mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK |
movzx ecx,word [WIN_STACK + ebx * 2] |
movzx ecx,word [0xC000 + ebx * 2] |
mov edx,[TASK_COUNT] |
cmp ecx,edx |
jne .finish |
2398,7 → 2397,7 |
|
mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK |
mov [esp+36],dword 1 |
movzx ecx, word [WIN_STACK + ebx * 2] |
movzx ecx, word [0xC000 + ebx * 2] |
mov edx, [TASK_COUNT] ; less than 256 processes |
cmp ecx,edx |
jne .exit |
2454,14 → 2453,14 |
mov ecx,[ebx] |
mov [eax],ecx |
pop ebx |
mov cx, [WIN_STACK + ebx * 2] |
mov cx, [0xC000 + ebx * 2] |
mov [eax+4],cx |
mov cx, [WIN_POS + ebx * 2] |
mov cx, [0xC400 + ebx * 2] |
mov [eax+6],cx |
push eax |
mov eax,ebx |
shl eax,8 |
add eax,SLOT_BASE+APPDATA.app_name |
add eax,0x80000+APPDATA.app_name |
pop ebx |
add ebx,10 |
mov ecx,11 |
2475,7 → 2474,7 |
cmp ecx,1 |
je os_mem |
shl ecx,8 |
mov edx,[SLOT_BASE+ecx+APPDATA.mem_size] ;0x8c |
mov edx,[0x80000+ecx+APPDATA.mem_size] ;0x8c |
mov eax,std_application_base_address |
; eax run base -> edx used memory |
os_mem: |
2514,7 → 2513,7 |
|
mov esi,[esp] |
shl esi,8 |
add esi,SLOT_BASE+APPDATA.wnd_clientbox |
add esi,0x80000+APPDATA.wnd_clientbox |
lea edi,[ebx+44] |
mov ecx,4 |
rep movsd |
2733,7 → 2732,7 |
; parameter for drawwindow_IV |
push 0 |
mov edi, [TASK_COUNT] |
movzx edi, word [WIN_POS + edi*2] |
movzx edi, word [0xC400 + edi*2] |
cmp edi, [CURRENT_TASK] |
jne @f |
inc dword [esp] |
2759,7 → 2758,7 |
|
xor eax,eax |
mov edx,[TASK_COUNT] |
movzx edx,word[WIN_POS+edx*2] |
movzx edx,word[0xC400+edx*2] |
cmp edx,[CURRENT_TASK] |
jne @f |
inc eax |
2795,7 → 2794,7 |
shl edi,5 |
test [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION |
jz @f |
mov ecx,[edi*8+SLOT_BASE+APPDATA.wnd_caption] |
mov ecx,[edi*8+0x80000+APPDATA.wnd_caption] |
or ecx,ecx |
jz @f |
add ecx,[edi+twdw+TASKDATA.mem_start] |
2881,21 → 2880,21 |
movzx eax,[ecx+WDATA.fl_wstyle] |
and eax,0x0F |
mov eax,[eax*8+window_topleft+0] |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.left],eax |
shl eax,1 |
neg eax |
add eax,[ecx+WDATA.box.width] |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.width],eax |
|
movzx eax,[ecx+WDATA.fl_wstyle] |
and eax,0x0F |
push [eax*8+window_topleft+0] |
mov eax,[eax*8+window_topleft+4] |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.top],eax |
neg eax |
sub eax,[esp] |
add eax,[ecx+WDATA.box.height] |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.height],eax |
add esp,4 |
|
pop edi ecx eax |
2902,12 → 2901,12 |
ret |
@@: |
xor eax,eax |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.left],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.top],eax |
mov eax,[ecx+WDATA.box.width] |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.width],eax |
mov eax,[ecx+WDATA.box.height] |
mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax |
mov [edi+0x80000+APPDATA.wnd_clientbox.height],eax |
|
pop edi ecx eax |
ret |
2951,7 → 2950,7 |
|
sub edi,window_data |
shl edi,3 |
add edi,SLOT_BASE |
add edi,0x80000 |
|
and cl,0x0F |
mov [edi+APPDATA.wnd_caption],0 |
3005,12 → 3004,12 |
; caption still can become over bounds |
; diamond, 31.10.2006: check removed because with new memory manager |
; there can be valid data after APPDATA.mem_size bound |
; mov ecx,[edi*8+SLOT_BASE+APPDATA.mem_size] |
; mov ecx,[edi*8+0x80000+APPDATA.mem_size] |
; add ecx,255 ; max caption length |
; cmp ebx,ecx |
; ja .exit_fail |
|
mov [edi*8+SLOT_BASE+APPDATA.wnd_caption],ebx |
mov [edi*8+0x80000+APPDATA.wnd_caption],ebx |
or [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION |
|
call draw_window_caption |
3073,7 → 3072,7 |
sub edi,window_data |
shr edi,5 |
shl edi,8 |
add edi, SLOT_BASE + APPDATA.saved_box |
add edi, 0x80000 + APPDATA.saved_box |
mov ecx,4 |
cld |
rep movsd |
3303,7 → 3302,7 |
mov ecx, [TASK_COUNT] |
set_mouse_event: |
add edi, 256 |
or [edi+SLOT_BASE+APPDATA.event_mask], dword 00100000b |
or [edi+0x80000+APPDATA.event_mask], dword 00100000b |
loop set_mouse_event |
mouse_not_active: |
|
4004,9 → 4003,9 |
@@: |
mov edi,[CURRENT_TASK] |
shl edi,8 |
add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add dx,word[edi+0x80000+APPDATA.wnd_clientbox.top] |
rol edx,16 |
add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add dx,word[edi+0x80000+APPDATA.wnd_clientbox.left] |
rol edx,16 |
.forced: |
push ebp esi 0 |
4046,9 → 4045,9 |
; ebp = row delta |
mov eax, [CURRENT_TASK] |
shl eax, 8 |
add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add dx, word [eax+0x80000+APPDATA.wnd_clientbox.top] |
rol edx, 16 |
add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add dx, word [eax+0x80000+APPDATA.wnd_clientbox.left] |
rol edx, 16 |
.forced: |
push ebp esi ebp |
4107,10 → 4106,10 |
__sys_drawbar: |
mov esi,[CURRENT_TASK] |
shl esi,8 |
add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add ecx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add edx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add eax,[esi+0x80000+APPDATA.wnd_clientbox.left] |
add ecx,[esi+0x80000+APPDATA.wnd_clientbox.left] |
add ebx,[esi+0x80000+APPDATA.wnd_clientbox.top] |
add edx,[esi+0x80000+APPDATA.wnd_clientbox.top] |
.forced: |
inc [mouse_pause] |
; call [disable_mouse] |
4481,7 → 4480,7 |
jne no_set_keyboard_setup |
|
shl edi,8 |
mov [edi+SLOT_BASE + APPDATA.keyboard_mode],bl |
mov [edi+0x80000 + APPDATA.keyboard_mode],bl |
|
ret |
|
4491,7 → 4490,7 |
jne no_get_keyboard_setup |
|
shl edi,8 |
movzx eax, byte [SLOT_BASE+edi + APPDATA.keyboard_mode] |
movzx eax, byte [0x80000+edi + APPDATA.keyboard_mode] |
|
mov [esp+36],eax |
|
4641,8 → 4640,8 |
add ebx,[edx-twdw+WDATA.box.top] |
mov edi,[CURRENT_TASK] |
shl edi,8 |
add eax,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add eax,[edi+0x80000+APPDATA.wnd_clientbox.left] |
add ebx,[edi+0x80000+APPDATA.wnd_clientbox.top] |
xor edi,edi ; no force |
; mov edi,1 |
call [disable_mouse] |
4657,10 → 4656,10 |
push esi |
mov esi,[CURRENT_TASK] |
shl esi,8 |
add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left] |
shl ebp,16 |
add ebp,[edi-twdw+WDATA.box.top] |
add bp,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add bp,word[esi+0x80000+APPDATA.wnd_clientbox.top] |
pop esi |
add ecx,[edi+TASKDATA.mem_start] |
add eax,ebp |
4697,8 → 4696,8 |
shr ebx,16 |
mov esi,[CURRENT_TASK] |
shl esi,8 |
add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add eax,[esi+0x80000+APPDATA.wnd_clientbox.left] |
add ebx,[esi+0x80000+APPDATA.wnd_clientbox.top] |
add ecx,eax |
add edx,ebx |
jmp [drawbar] |
4779,15 → 4778,15 |
mov ebp,edx |
mov esi,[CURRENT_TASK] |
shl esi,8 |
add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] |
add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left] |
add dx,word[esi+0x80000+APPDATA.wnd_clientbox.left] |
shl edx,16 |
add ebp,edx |
movzx edx,word[edi-twdw+WDATA.box.top] |
add eax,ebp |
mov ebp,edx |
add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] |
add ebp,[esi+0x80000+APPDATA.wnd_clientbox.top] |
add dx,word[esi+0x80000+APPDATA.wnd_clientbox.top] |
shl edx,16 |
xor edi,edi |
add edx,ebp |