/kernel/trunk/core/newproce.inc |
---|
469,6 → 469,8 |
mov [ecx+8],eax |
mov eax,[0xfe04] |
mov [ecx+12],eax |
;set window state to 'normal' (non-minimized/maximized/rolled-up) state |
mov [ecx+WDATA.fl_wstate],WSTATE_NORMAL |
;set cr3 register in TSS of application |
mov ecx,[new_process_place] |
shl ecx,8 |
/kernel/trunk/gui/button.inc |
---|
501,6 → 501,10 |
movzx ebx,word [eax+0] |
shl ebx,5 |
test [ebx+window_data+WDATA.fl_wstate],WSTATE_MINIMIZED |
jnz buttonnewcheck |
; add ebx,window_data |
; mov ecx,[window_data+ebx+8] ; window end X |
movzx edx,word [eax+4] ; button start X |
/kernel/trunk/gui/window.inc |
---|
1,3 → 1,29 |
get_titlebar_height: ; edi = window draw_data pointer |
mov al,[edi+WDATA.fl_wstyle] |
and al,0x0F |
cmp al,0x03 |
jne @f |
mov eax,[_skinh] |
ret |
@@: mov eax,21 |
ret |
get_rolledup_height: ; edi = window draw_data pointer |
mov al,[edi+WDATA.fl_wstyle] |
and al,0x0F |
cmp al,0x03 |
jne @f |
mov eax,[_skinh] |
add eax,3 |
ret |
@@: or al,al |
jnz @f |
mov eax,21 |
ret |
@@: mov eax,21+2 |
ret |
setwindowdefaults: |
pushad |
42,14 → 68,14 |
movzx edi, word [0xC400 + esi * 2] |
shl edi, 5 |
add edi, window_data |
mov eax, [edi+0] |
mov ebx, [edi+4] |
mov ecx, [edi+8] |
test ecx, ecx |
jz .not_wnd |
add ecx, eax |
mov edx, [edi+12] |
add edx, ebx |
test [edi+WDATA.fl_wstate],WSTATE_MINIMIZED |
jnz .not_wnd |
mov eax,[edi+WDATA.left] |
mov ebx,[edi+WDATA.top] |
mov ecx,[edi+WDATA.width] |
add ecx,eax |
mov edx,[edi+WDATA.height] |
add edx,ebx |
push esi |
movzx esi, word [0xC400 + esi * 2] |
call setscreen |
234,6 → 260,14 |
; eax = 4 ; get skin height |
; input : nothing |
; output : eax = skin height in pixel |
; eax = 5 ; get screen workarea |
; input : nothing |
; output : eax = [left]*65536+[right] |
; ebx = [top]*65536+[bottom] |
; eax = 6 ; set screen workarea |
; input : ecx = [left]*65536+[right] |
; edx = [top]*65536+[bottom] |
; output : nothing |
pushad |
245,6 → 279,7 |
cmp [windowtypechanged],dword 1 |
jne dspl00 |
mov [windowtypechanged],dword 0 |
redraw_screen_direct: |
mov [dlx],dword 0 |
mov [dly],dword 0 |
mov eax,[0xfe00] |
307,6 → 342,67 |
ret |
no_skin_height: |
cmp eax,5 ; get screen workarea |
jne no_get_workarea |
popad |
mov eax,[screen_workarea.left-2] |
mov ax,word[screen_workarea.right] |
mov [esp+36],eax |
mov eax,[screen_workarea.top-2] |
mov ax,word[screen_workarea.bottom] |
mov [esp+24],eax |
ret |
no_get_workarea: |
cmp eax,6 ; set screen workarea |
jne no_set_workarea |
movzx eax,word[esp+16+2] |
movzx ebx,word[esp+16] |
cmp eax,[0xFE00] |
jae .exit |
cmp ebx,[0xFE00] |
ja .exit |
cmp eax,ebx |
jae .exit |
mov [screen_workarea.left],eax |
mov [screen_workarea.right],ebx |
movzx eax,word[esp+24+2] |
movzx ebx,word[esp+24] |
cmp eax,[0xFE04] |
jae .exit |
cmp ebx,[0xFE04] |
ja .exit |
cmp eax,ebx |
jae .exit |
mov [screen_workarea.top],eax |
mov [screen_workarea.bottom],ebx |
mov ecx,[0x3004] |
mov esi,0x20*2 |
dec ecx |
@@: test [esi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jz .lp1 |
mov eax,[screen_workarea.left] |
mov [esi+WDATA.left],eax |
sub eax,[screen_workarea.right] |
neg eax |
mov [esi+WDATA.width],eax |
mov eax,[screen_workarea.top] |
mov [esi+WDATA.top],eax |
test [esi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jnz .lp1 |
sub eax,[screen_workarea.bottom] |
neg eax |
mov [esi+WDATA.height],eax |
.lp1: add esi,0x20 |
loop @b |
call calculatescreen |
jmp redraw_screen_direct |
.exit: |
popad |
ret |
no_set_workarea: |
popad |
ret |
327,6 → 423,9 |
shl edi,5 |
add edi,window_data |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz window_move_return |
push dword [edi+0] ; save old coordinates |
push dword [edi+4] |
push dword [edi+8] |
345,6 → 444,10 |
je no_y_reposition |
mov [edi+4],ebx |
no_y_reposition: |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jnz no_y_resizing |
cmp ecx,-1 |
je no_x_resizing |
mov [edi+8],ecx |
984,8 → 1087,8 |
movzx edi, word [0xC400 + esi * 2] |
shl edi, 5 |
add edi, window_data |
cmp [edi+12],dword 0 |
je .mouse_buttons_pressed |
test [edi+WDATA.fl_wstate],WSTATE_MINIMIZED |
jnz .mouse_buttons_pressed |
; jne .no_activate_request_2 |
; .no_activate_request_1: |
; cmp [window_minimize],1 |
1017,6 → 1120,8 |
mov ebx,edx |
cmp [window_minimize],1 |
jge .window_minimize_no_check_mouse |
test [edi+WDATA.fl_wstate],WSTATE_MINIMIZED |
jnz cwloop |
movzx eax, word [0xfb0a] |
movzx ebx, word [0xfb0c] |
1063,6 → 1168,9 |
ret |
.window_move_enabled_for_user: |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jnz .no_resize_2 |
mov [do_resize_from_corner],byte 0 ; resize for skinned window |
mov edx, [edi+0x10] |
and edx, 0x0f000000 |
1078,24 → 1186,13 |
jmp .continue |
.no_resize_2: |
;// mike.dld [ |
mov dl,[edi+0x10+3] |
and dl,0x0F |
cmp dl,0x03 |
jne @f |
mov edx, [edi+4] ; check if touch on bar |
add edx, [_skinh] |
cmp ebx, edx |
jae .exit |
jmp .continue |
@@: |
;// mike.dld ] |
push eax |
call get_titlebar_height |
add eax,[edi+4] |
cmp ebx,eax |
pop eax |
jae .exit |
mov edx, [edi+4] ; check if touch on bar |
add edx, 21 |
cmp ebx, edx |
jae .exit |
.continue: |
push esi |
1111,9 → 1208,6 |
mov cl, [0xfb40] ; save for shade check |
mov [do_resize], cl |
cmp [window_minimize],0 |
je no_emulation_righ_button |
mov [do_resize], byte 2 |
no_emulation_righ_button: |
mov ecx, [edi+0] |
mov edx, [edi+4] |
1157,7 → 1251,10 |
mov word [npye],ax |
pop eax |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz @f |
call drawwindowframes |
@@: |
mov [reposition],0 |
mov [0xfb44],byte 1 ; no reaction to mouse up/down |
1192,7 → 1289,10 |
push ax |
push bx |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz @f |
call drawwindowframes |
@@: |
mov ax,[0xfe00] |
mov bx,[0xfe04] |
1245,13 → 1345,15 |
mov [npxe],eax |
nnepx: |
call get_titlebar_height |
mov ebx,eax |
movzx eax,word [0xfb0c] |
cmp eax,[edi+4] |
jb nnepy |
sub eax,[edi+4] |
cmp eax,23 ; [edx+0x90+12] |
jge nnepy2 |
mov eax,23 ; [edx+0x90+12] |
cmp eax,ebx ; [edx+0x90+12] |
jge nnepy2 |
mov eax,ebx ; [edx+0x90+12] |
nnepy2: |
mov [npye],eax |
nnepy: |
1263,7 → 1365,10 |
pop bx |
pop ax |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz @f |
call drawwindowframes |
@@: |
mov esi,[0xfb0a] |
mov [0xf300],esi |
1272,8 → 1377,12 |
cmp [0xfb40],byte 0 |
jne newchm |
; new position done |
call drawwindowframes |
mov [0xfff5],byte 1 |
mov [0xfff5],byte 1 |
mov cl,0 |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz @f |
mov cl,[reposition] |
call drawwindowframes |
mov eax,[npx] |
mov [edi+0],eax |
1284,6 → 1393,8 |
mov eax,[npye] |
mov [edi+12],eax |
@@: mov [reposition],cl |
cmp [reposition],1 ; save new X and Y start |
jne no_xy_save |
; <IP 28.08.2004> |
1310,67 → 1421,40 |
shl edx,8 |
add edx,0x80000 ; process base at 0x80000+ |
cmp [window_minimize],0 |
je no_wnd_minimize_restore |
mov [reposition],1 |
wnd_minimize: |
cmp [window_minimize],1 |
jne wnd_restore |
or [edi+WDATA.fl_wstate],WSTATE_MINIMIZED |
jmp no_wnd_minimize_restore |
wnd_restore: |
cmp [window_minimize],2 |
jne no_wnd_minimize_restore |
and [edi+WDATA.fl_wstate],not WSTATE_MINIMIZED |
no_wnd_minimize_restore: |
cmp [do_resize],2 ; window shade ? |
jb no_window_shade |
jne no_window_shade |
mov [reposition],1 |
cmp [window_minimize],1 |
jge for_window_minimize |
cmp [edi+12],dword 23 |
jle window_shade_up |
jmp for_window_shade |
for_window_minimize: |
cmp [edi+12],dword 0 |
je window_shade_up |
for_window_shade: |
cmp [window_minimize],0 |
je no_window_minimize |
cmp [window_minimize],2 |
je window_minimize_no_shade_full ;window_shade_up |
mov [edi+8],dword 0 ;66 |
mov [edi+12],dword 0 ;279 ; on |
jmp no_window_shade |
no_window_minimize: |
mov [edi+12],dword 23 ; on |
jmp no_window_shade |
window_shade_up: |
cmp [window_minimize],1 |
jge window_minimize_no_shade_full |
mov eax,[edi+0] |
add eax,[edi+4] |
test eax, eax |
je shade_full |
push edi |
lea esi, [edx + 0x90] |
mov ecx,4 |
cld |
rep movsd |
pop edi |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jnz wnd_rolldown |
wnd_rollup: |
or [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
call get_rolledup_height |
jmp @f |
wnd_rolldown: |
and [edi+WDATA.fl_wstate],not WSTATE_ROLLEDUP |
mov eax,[edx+0x90+BOX.height] |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jz @f |
mov eax,[screen_workarea.bottom] |
sub eax,[screen_workarea.top] |
@@: mov [edi+WDATA.height],eax |
window_minimize_no_shade_full: |
; mov eax,[edx+0x90] ; off |
; mov [edi+0],eax |
; mov eax,[edx+0x94] ; off |
; mov [edi+4],eax |
; mov eax,[edx+0x98] ; off |
; mov [edi+8],eax |
; mov eax,[edx+0x9C] ; off |
; mov [edi+12],eax |
push edi |
lea esi, [edx + 0x90] |
mov ecx,4 |
cld |
rep movsd |
pop edi |
jmp no_window_shade |
shade_full: |
; mov eax,[0xfe00] |
; mov [edi+8],eax |
mov eax,[0xfe04] |
sub eax,19 |
mov [edi+12],eax |
no_window_shade: |
cmp [do_resize],1 ; fullscreen/restore ? |
1378,27 → 1462,37 |
cmp [latest_window_touch_delta],dword 50 |
jg no_fullscreen_restore |
mov [reposition],1 |
mov eax,[edi+12] |
add eax,19 |
cmp eax,[0xfe04] |
je restore_from_fullscreen |
mov [edi+0],dword 0 ; set fullscreen |
mov [edi+4],dword 0 |
mov eax,[0xfe00] |
mov [edi+8],eax |
mov eax,[0xfe04] |
sub eax,19 |
mov [edi+12],eax |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz restore_from_fullscreen |
or [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
mov eax,[screen_workarea.left] |
mov [edi+WDATA.left],eax |
sub eax,[screen_workarea.right] |
neg eax |
mov [edi+WDATA.width],eax |
mov eax,[screen_workarea.top] |
mov [edi+WDATA.top],eax |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jnz @f |
sub eax,[screen_workarea.bottom] |
neg eax |
mov [edi+WDATA.height],eax |
@@: |
jmp no_fullscreen_restore |
restore_from_fullscreen: |
and [edi+WDATA.fl_wstate],not WSTATE_MAXIMIZED |
push [edi+WDATA.height] |
push edi ; restore |
; mov esi,edx |
; add esi,0x90 |
lea esi, [edx + 0x90] |
mov ecx,4 |
cld |
rep movsd |
pop edi |
pop eax |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jz @f |
mov [edi+WDATA.height],eax |
@@: |
no_fullscreen_restore: |
1452,7 → 1546,7 |
popad |
mov [edi+31],byte 1 ; mark first as redraw |
mov [edi+WDATA.fl_redraw],1 |
mov [0xfff5],byte 1 ; no mouse |
push eax ebx ecx edx |
1472,7 → 1566,7 |
waitre2: |
mov [0xfff5],byte 1 |
call checkidle |
cmp [edi+31],byte 0 |
cmp [edi+WDATA.fl_redraw],0 |
jz retwm |
loop waitre2 |
/kernel/trunk/kernel.asm |
---|
60,20 → 60,6 |
use16 |
org 0x10000 |
macro diff16 title,l2 |
{ |
local s,d,l1 |
s = l2 |
display title,': 0x' |
repeat 8 |
d = 48 + s shr ((8-%) shl 2) and $0F |
if d > 57 |
d = d + 65-57-1 |
end if |
display d |
end repeat |
display 13,10 |
} |
jmp start_of_code |
; mike.dld { |
227,7 → 213,7 |
; begin ealex 04.08.05 |
; in al,0x61 |
; and al,01111111b |
; out 0x61,al |
; out 0x61,al |
; end ealex 04.08.05 |
.bll1: in al,0x60 ; wait for ESC key press |
cmp al,129 |
275,7 → 261,7 |
; xor eax,eax |
mov edi,0x80000 |
mov ecx,(0x90000-0x80000)/4 |
; cld |
; cld |
rep stosd |
; CLEAR KERNEL UNDEFINED GLOBALS |
304,9 → 290,11 |
movzx eax,word [0x2f0000+0x900A] ; X max |
dec eax |
mov [0xfe00],eax |
mov [screen_workarea.right],eax |
movzx eax,word [0x2f0000+0x900C] ; Y max |
dec eax |
mov [0xfe04],eax |
mov [screen_workarea.bottom],eax |
movzx eax,word [0x2f0000+0x9008] ; screen mode |
mov [0xFE0C],eax |
mov eax,[0x2f0000+0x9014] ; Vesa 1.2 bnk sw add |
404,11 → 392,11 |
mov dword [0xFE84], 0xD80000 ; =0x100000*13.5 |
@@: |
mov dword [0xFE8C], edi |
;!!!!!!!!!!!!!!!!!!!!!!!!!! |
include 'detect/disks.inc' |
;!!!!!!!!!!!!!!!!!!!!!!!!!! |
; CHECK EXTRA REGION |
; ENABLE PAGING |
mov eax,cr0 |
415,14 → 403,14 |
or eax,0x80000000 |
mov cr0,eax |
jmp $+2 |
mov dword [0xfe80],0x800000 |
;Set base of graphic segment to linear address of LFB |
mov dword [0xfe80],0x800000 |
;Set base of graphic segment to linear address of LFB |
mov eax,[0xfe80] ; set for gs |
mov [graph_data_l+2],ax |
shr eax,16 |
mov [graph_data_l+4],al |
mov [graph_data_l+7],ah |
mov [graph_data_l+7],ah |
; READ RAMDISK IMAGE FROM HD |
476,7 → 464,7 |
mov edi, 1 |
mov eax, 0x00040000 |
call display_number |
; CHECK EXTENDED REGION |
; mov dword [0x80000000],0x12345678 |
; cmp dword [0x80000000],0x12345678 |
485,9 → 473,9 |
; call boot_log |
; jmp $ |
;extended_region_found: |
call MEM_Init |
;add 0x800000-0xc00000 area |
;add 0x800000-0xc00000 area |
cmp word [0xfe0c],0x13 |
jle .less_memory |
mov eax,0x80000000 ;linear address |
498,7 → 486,7 |
mov eax,0x80180000 ;linear address |
mov ebx,0x280000 shr 12 ;size in pages (2.5Mb) |
mov ecx,0x980000 ;physical address |
.end_first_block: |
.end_first_block: |
call MEM_Add_Heap ;nobody can lock mutex yet |
call create_general_page_table |
512,7 → 500,7 |
call MEM_Add_Heap |
;init physical memory manager. |
call Init_Physical_Memory_Manager |
; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f |
mov esi,boot_irqs |
582,12 → 570,12 |
; mov cr4,eax |
; fail_fpu: |
;The CPU to this moment should be already in PM, |
;and bit MP of the register cr0 should be installed in 1. |
finit ;reset of the FPU (finit, instead of fninit) |
fsetpm ;enable PM of the FPU |
finit ;reset the registers, contents which are still equal RM |
;Now FPU too in PM |
;The CPU to this moment should be already in PM, |
;and bit MP of the register cr0 should be installed in 1. |
finit ;reset of the FPU (finit, instead of fninit) |
fsetpm ;enable PM of the FPU |
finit ;reset the registers, contents which are still equal RM |
;Now FPU too in PM |
; DETECT DEVICES |
mov esi,boot_devices |
728,12 → 716,12 |
cmp al,1 |
jne no_load_vrr_m |
mov eax,vrr_m |
xor ebx,ebx ; no parameters |
xor ebx,ebx ; no parameters |
xor edx,edx ; no flags |
call start_application_fl |
cmp eax,2 ; if vrr_m app found (PID=2) |
je first_app_found |
no_load_vrr_m: |
mov eax,firstapp |
xor ebx,ebx ; no parameters |
758,7 → 746,7 |
; wait until 8042 is ready |
; xor ecx,ecx |
; @@: |
; in al,64h |
; in al,64h |
; and al,00000010b |
; loopnz @b |
call Wait8042BufferEmpty |
769,7 → 757,7 |
; mov al, 111b |
; call kb_write |
; call kb_read |
mov al, 0xF3 ; set repeat rate & delay |
call kb_write |
call kb_read |
791,7 → 779,7 |
mov esi,boot_allirqs |
call boot_log |
cli ;guarantee forbidance of interrupts. |
mov al,0 ; unmask all irq's |
out 0xA1,al |
1181,7 → 1169,7 |
shr ax,1 |
mov [0xfb0a],eax |
pop eax |
mov byte [SB16_Status],0 ; Minazzi Paolo |
mov [display_data-12],dword 1 ; tiled background |
mov [0xfe88],dword 0x2C0000 ; address of button list |
2064,7 → 2052,7 |
mov eax,[0x3010] |
add eax,0xa |
mov [eax],byte 3 ; terminate this program |
waitterm: ; wait here for termination |
mov eax,5 |
call delay_hs |
2075,7 → 2063,7 |
cmp eax,1 ; BOOT |
jnz nosystemboot |
mov [0x2f0000+0x9030],byte 0 |
for_shutdown_parameter: |
for_shutdown_parameter: |
mov eax,[0x3004] |
add eax,2 |
mov [shutdown_processes],eax |
2098,7 → 2086,7 |
shl ebx,5 |
mov edx,[ebx+0x3000+4] |
add ebx,0x3000+0xa |
;call MEM_Heap_Lock ;guarantee that process isn't working with heap |
mov [ebx],byte 3 ; clear possible i40's |
;call MEM_Heap_UnLock |
2138,7 → 2126,7 |
mov [0xff01],edi ; activate |
xor eax, eax |
ret |
nowindowactivate: |
cmp eax,4 ; GET IDLETIME |
2161,7 → 2149,7 |
jnz nogetactiveprocess |
mov eax,[active_process] |
ret |
nogetactiveprocess: |
nogetactiveprocess: |
cmp eax,8 |
jnz nosoundflag |
cmp ebx,1 |
2173,7 → 2161,7 |
jnz nosoundflag |
inc byte [sound_flag] ; set sound_flag |
and byte [sound_flag],1 ; |
ret |
ret |
nosoundflag: |
cmp eax,9 ; system shutdown with param |
jnz noshutdownsystem |
2238,14 → 2226,14 |
nogetkernel_id: |
cmp eax,14 ; sys wait retrace |
jnz nosys_wait_retrace |
;wait retrace functions |
sys_wait_retrace: |
mov edx,0x3da |
WaitRetrace_loop: |
in al,dx |
test al,1000b |
jz WaitRetrace_loop |
mov [esp+36],dword 0 |
;wait retrace functions |
sys_wait_retrace: |
mov edx,0x3da |
WaitRetrace_loop: |
in al,dx |
test al,1000b |
jz WaitRetrace_loop |
mov [esp+36],dword 0 |
ret |
nosys_wait_retrace: |
cmp eax,15 ; mouse centered |
2259,7 → 2247,7 |
mov eax,[MEM_FreeSpace] |
shl eax,2 |
ret |
no_get_free_space: |
no_get_free_space: |
cmp eax,17 |
jnz no_get_all_space |
mov eax,[0xFE8C] |
2267,23 → 2255,28 |
; mov eax,[MEM_AllSpace] |
; shl eax,2 |
ret |
no_get_all_space: |
no_get_all_space: |
ret |
uglobal |
;// mike.dld, 2006-29-01 [ |
screen_workarea RECT |
;// mike.dld, 2006-29-01 ] |
window_minimize db 0 |
sound_flag db 0 |
last_key_press dd 0 |
keyboard_mode_sys db 0 |
endg |
iglobal |
version_inf: |
iglobal |
version_inf: |
db 0,5,2,9 ; version 0.5.2.9 |
db UID_KOLIBRI |
db 'Kolibri',0 |
version_end: |
endg |
db UID_KOLIBRI |
db 'Kolibri',0 |
version_end: |
endg |
UID_NONE=0 |
UID_NONE=0 |
UID_MENUETOS=1 ;official |
UID_KOLIBRI=2 ;russian |
2337,7 → 2330,7 |
call save_image |
mov [esp+36],dword 0 |
cmp [FDC_Status],0 |
je yes_floppy_save |
je yes_floppy_save |
no_floppy_b_save: |
mov [esp+36],dword 1 |
yes_floppy_save: |
2965,7 → 2958,7 |
mov [0xfff4],byte 0 |
temp_nobackgr: |
ret |
uglobal |
window_move_pr dd 0x0 |
window_move_eax dd 0x0 |
3112,7 → 3105,7 |
cmp [ctrl_alt_del], 1 |
jne nocpustart |
mov eax, cpustring |
xor ebx,ebx ; no parameters |
xor ebx,ebx ; no parameters |
xor edx,edx ; no flags |
call start_application_fl |
mov [ctrl_alt_del], 0 |
4576,12 → 4569,12 |
add ebx,[edi] |
noapppar: |
; call start_application_fl |
xor edx,edx ; compatibility - flags=0 |
xor edx,edx ; compatibility - flags=0 |
call new_start_application_fl |
mov [esp+36],eax |
ret |
align 4 |
syscall_cdaudio: ; CD |
4612,7 → 4605,7 |
add eax,[edi] |
add ecx,[edi] |
xor ebp,ebp |
xor edx,edx ; compatibility - flags=0 |
xor edx,edx ; compatibility - flags=0 |
call start_application_hd |
mov [esp+36],eax |
ret |
4951,5 → 4944,5 |
endofcode: |
IncludeUGlobals |
uglobals_size = $ - endofcode |
diff16 "end of kernel code",$ |
diff16 "end of kernel code",0,$ |
/kernel/trunk/kernel32.inc |
---|
29,7 → 29,97 |
ends fix } struct_helper name@struct |
;// mike.dld, 2006-29-01 [ |
; macros definition |
macro diff16 title,l1,l2 |
{ |
local s,d |
s = l2-l1 |
display title,': 0x' |
repeat 8 |
d = 48 + s shr ((8-%) shl 2) and $0F |
if d > 57 |
d = d + 65-57-1 |
end if |
display d |
end repeat |
display 13,10 |
} |
struc db [a] { common . db a |
if ~used . |
display 'not used db: ',`.,13,10 |
end if } |
struc dw [a] { common . dw a |
if ~used . |
display 'not used dw: ',`.,13,10 |
end if } |
struc dd [a] { common . dd a |
if ~used . |
display 'not used dd: ',`.,13,10 |
end if } |
struc dp [a] { common . dp a |
if ~used . |
display 'not used dp: ',`.,13,10 |
end if } |
struc dq [a] { common . dq a |
if ~used . |
display 'not used dq: ',`.,13,10 |
end if } |
struc dt [a] { common . dt a |
if ~used . |
display 'not used dt: ',`.,13,10 |
end if } |
; constants definition |
WSTATE_NORMAL = 00000000b |
WSTATE_MAXIMIZED = 00000001b |
WSTATE_MINIMIZED = 00000010b |
WSTATE_ROLLEDUP = 00000100b |
; structures definition |
struc WDATA { |
.left dd ? |
.top dd ? |
.width dd ? |
.height dd ? |
.cl_workarea dd ? |
.cl_titlebar dd ? |
.cl_frames dd ? |
.reserved db ? |
.fl_wstate db ? |
.fl_wdrawn db ? |
.fl_redraw db ? |
} |
virtual at 0 |
WDATA WDATA |
end virtual |
label WDATA.fl_wstyle byte at 0x13 ; WDATA.cl_workarea+3 |
struc RECT { |
.left dd ? |
.top dd ? |
.right dd ? |
.bottom dd ? |
} |
virtual at 0 |
RECT RECT |
end virtual |
struc BOX { |
.left dd ? |
.top dd ? |
.width dd ? |
.height dd ? |
} |
virtual at 0 |
BOX BOX |
end virtual |
;// mike.dld, 2006-29-01 ] |
; Core functions |
include "core/sync.inc" |
include "core/sys32.inc" ; process management |
/kernel/trunk/video/vesa20.inc |
---|
599,7 → 599,9 |
mov [drbar.color], edi |
sub edx, ebx |
jle .exit ;// mike.dld, 2005-01-29 |
sub ecx, eax |
jle .exit ;// mike.dld, 2005-01-29 |
mov [drbar.bar_sy], edx |
mov [drbar.bar_sx], ecx |
616,6 → 618,7 |
mov ebx, [edi-twdw + 8] ; ebx = wnd_sx |
sub ebx, [drbar.bar_cx] |
ja @f |
.exit: ;// mike.dld, 2005-01-29 |
add esp, drbar.stack_data |
popad |
xor eax, eax |