Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 380 → Rev 379

/kernel/trunk/kernel.asm
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