/kernel/trunk/const.inc |
---|
494,7 → 494,7 |
exc_handler dd ? ;+32 |
except_mask dd ? ;+36 |
pl0_stack dd ? ;+40 |
cursor dd ? ;+44 |
cursor dd ? ;+44 ; WDATA |
fd_ev dd ? ;+48 |
bk_ev dd ? ;+52 |
fd_obj dd ? ;+56 |
511,16 → 511,16 |
tls_base dd ? ;+104 |
event_mask dd ? ;+108 stores event types allowed for task |
tid dd ? ;+112 thread id |
draw_bgr_x dd ? ;+116 |
draw_bgr_y dd ? ;+120 |
draw_bgr_x dd ? ;+116 ; WDATA |
draw_bgr_y dd ? ;+120 ; WDATA |
state db ? ;+124 thread state |
wnd_number db ? ;+125 |
dw ? ;+126 |
wnd_shape dd ? ;+128 |
wnd_shape_scale dd ? ;+132 |
dd ? ;+128 |
dd ? ;+132 |
dd ? ;+136 |
counter_sum dd ? ;+140 ; R |
saved_box BOX ;+144 |
saved_box BOX ;+144 ; WDATA |
ipc_start dd ? ;+160 |
ipc_size dd ? ;+164 |
occurred_events dd ? ;+168 ; mask which accumulates occurred events |
527,13 → 527,12 |
debugger_slot dd ? ;+172 |
terminate_protection dd ? ;+176 |
keyboard_mode db ? ;+180 |
captionEncoding db ? |
rb 2 |
rb 3 |
exec_params dd ? ;+184 |
dbg_event_mem dd ? ;+188 |
dbg_regs DBG_REGS ;+192 |
wnd_caption dd ? ;+212 |
wnd_clientbox BOX ;+216 |
dd ? ;+212 |
rd 4 ;+216 |
priority dd ? ;+232 |
in_schedule LHEAD ;+236 |
counter_add dd ? ;+244 ; R |
598,11 → 597,17 |
fl_wstate db ? |
fl_wdrawn db ? |
fl_redraw db ? |
clientbox BOX |
shape dd ? |
shape_scale dd ? |
caption dd ? |
captionEncoding db ? |
rb 3 |
ends |
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3 |
assert sizeof.WDATA = 32 |
assert sizeof.WDATA = 64 |
struct SYS_VARS |
bpp dd ? |
/kernel/trunk/core/sys32.inc |
---|
630,7 → 630,7 |
shl edi, BSF sizeof.APPDATA |
cmp [SLOT_BASE + edi + APPDATA.state], TSTATE_FREE ; skip free slots |
je .check_next_window |
shr edi, 3 |
shr edi, (BSF sizeof.APPDATA - BSF sizeof.WDATA) |
add edi, window_data |
; \begin{diamond}[19.09.2006] |
; skip minimized windows |
/kernel/trunk/gui/background.inc |
---|
140,9 → 140,6 |
draw_background_temp: |
mov [background_defined], 1 |
call force_redraw_background |
;-------------------------------------- |
align 4 |
nosb31: |
ret |
;-------------------------------------- |
align 4 |
/kernel/trunk/gui/button.inc |
---|
95,12 → 95,13 |
; make coordinates clientbox-relative |
push eax |
mov eax, [current_slot] |
mov eax, [current_slot_idx] |
shl eax, BSF sizeof.WDATA |
rol ebx, 16 |
add bx, word[eax + APPDATA.wnd_clientbox.left] |
add bx, word[window_data + eax + WDATA.clientbox.left] |
rol ebx, 16 |
rol ecx, 16 |
add cx, word[eax + APPDATA.wnd_clientbox.top] |
add cx, word[window_data + eax + WDATA.clientbox.top] |
rol ecx, 16 |
pop eax |
339,12 → 340,11 |
mov esi, eax |
mov edi, ebx |
movzx ecx, [esi + SYS_BUTTON.pslot] |
shl ecx, 5 |
add ecx, window_data |
shl ecx, BSF sizeof.WDATA |
mov eax, dword[esi + SYS_BUTTON.left] |
mov ebx, dword[esi + SYS_BUTTON.top] |
add eax, [ecx + WDATA.box.left] |
add ebx, [ecx + WDATA.box.top] |
add eax, [window_data + ecx + WDATA.box.left] |
add ebx, [window_data + ecx + WDATA.box.top] |
mov ecx, eax |
mov edx, ebx |
bt edi, 30 |
/kernel/trunk/gui/event.inc |
---|
67,9 → 67,8 |
; edx - uid |
;scratched: ebx,ecx,esi,edi |
mov ebx, [current_slot] |
mov edx, [ebx+APPDATA.tid] |
add ebx, APP_OBJ_OFFSET |
mov edx, [current_slot] |
mov edx, [edx+APPDATA.tid] |
pushfd |
cli |
;-------------------------------------- |
463,7 → 462,7 |
;-------------------------------------- |
align 4 |
.result: |
setae byte[esp+32+4] ;we consider that initially was: dword[esp+32+4]==72 |
setae byte[esp + SYSCALL_STACK.eax + 4] ;we consider that initially was: dword[esp+32+4]==72 |
;-------------------------------------- |
align 4 |
.retf: |
510,7 → 509,7 |
; eax - event number (=0 => no events) |
movzx edi, bh ; bh is assumed as [current_slot_idx] |
mov ecx, [ebx+APPDATA.event_mask] |
shl edi, 5 |
shl edi, BSF sizeof.WDATA |
add edi, window_data |
and ecx, 0x7FFFFFFF |
;-------------------------------------- |
553,7 → 552,7 |
push eax |
mov eax, [current_slot] |
mov eax, [eax + APPDATA.event_mask] |
test eax, 0x80000000 ; bit 31: active/inactive filter f.40 |
test eax, EVM_MOUSE_FILTER ; bit 31: active/inactive filter f.40 |
jz @f |
pop eax |
jmp .FlagAutoReset |
/kernel/trunk/gui/mouse.inc |
---|
294,7 → 294,7 |
jz .exit |
mov eax, esi |
shl eax, 5 |
shl eax, BSF sizeof.WDATA |
add eax, window_data + WDATA.box |
mov ebx, mouse.active_sys_window.old_box |
mov ecx, sizeof.BOX |
515,7 → 515,7 |
push eax |
mov edi, esi |
shl edi, 5 |
shl edi, BSF sizeof.WDATA |
add edi, window_data |
call window._.get_rolledup_height |
mov ecx, eax |
582,7 → 582,7 |
mov [fl_moving], 1 |
push edi |
mov edi, esi |
shl edi, 5 |
shl edi, BSF sizeof.WDATA |
add edi, WDATA.box + window_data |
call window._.draw_negative_box |
pop edi |
609,7 → 609,7 |
add esi, [mouse.state.pos.x] |
movzx esi, byte[esi] |
mov edi, esi |
shl edi, 5 |
shl edi, BSF sizeof.WDATA |
add edi, window_data |
ret |
821,14 → 821,13 |
mov ax, [MOUSE_Y] |
mov esi, [current_slot_idx] |
shl esi, BSF sizeof.WDATA |
mov bx, word [esi + window_data + WDATA.box.left] |
mov bx, word[window_data + esi + WDATA.box.left] |
shl ebx, 16 |
mov bx, word [esi + window_data + WDATA.box.top] |
mov bx, word[window_data + esi + WDATA.box.top] |
sub eax, ebx |
mov edi, [current_slot] |
sub ax, word[edi + APPDATA.wnd_clientbox.top] |
sub ax, word[window_data + esi + WDATA.clientbox.top] |
rol eax, 16 |
sub ax, word[edi + APPDATA.wnd_clientbox.left] |
sub ax, word[window_data + esi + WDATA.clientbox.left] |
rol eax, 16 |
mov [esp + SYSCALL_STACK.eax], eax |
ret |
/kernel/trunk/gui/skincode.inc |
---|
97,7 → 97,7 |
jne .exit |
mov edi, skin_udata |
mov ecx, (skin_udata.end-skin_udata)/4 |
mov ecx, (skin_udata.size)/4 |
xor eax, eax |
cld |
rep stosd |
/kernel/trunk/gui/skindata.inc |
---|
59,6 → 59,6 |
align 4 |
skin_udata.end: |
skin_udata.size = $ - skin_udata |
endg |
/kernel/trunk/gui/window.inc |
---|
80,11 → 80,10 |
mov ecx, edx |
mov edx, [current_slot_idx] |
shl edx, BSF sizeof.WDATA |
add eax, [edx + window_data + WDATA.box.left] |
add ebx, [edx + window_data + WDATA.box.top] |
mov edi, [current_slot] |
add eax, [edi+APPDATA.wnd_clientbox.left] |
add ebx, [edi+APPDATA.wnd_clientbox.top] |
add eax, [window_data + edx + WDATA.box.left] |
add ebx, [window_data + edx + WDATA.box.top] |
add eax, [window_data + edx + WDATA.clientbox.left] |
add ebx, [window_data + edx + WDATA.clientbox.top] |
xor edi, edi ; no force |
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
jmp __sys_putpixel |
106,14 → 105,11 |
mov eax, [current_slot_idx] |
shl eax, BSF sizeof.WDATA |
mov ebp, [eax + window_data + WDATA.box.left] |
push esi |
mov esi, [current_slot] |
add ebp, [esi+APPDATA.wnd_clientbox.left] |
mov ebp, [window_data + eax + WDATA.box.left] |
add ebp, [window_data + eax + WDATA.clientbox.left] |
shl ebp, 16 |
add ebp, [eax + window_data + WDATA.box.top] |
add bp, word[esi+APPDATA.wnd_clientbox.top] |
pop esi |
add ebp, [window_data + eax + WDATA.box.top] |
add bp, word[window_data + eax + WDATA.clientbox.top] |
test ecx, 0x08000000 ; redirect the output to the user area |
jnz @f |
add ebx, ebp |
151,10 → 147,10 |
shr eax, 16 ; eax - x.coord |
movzx edx, bx ; edx - y.size |
shr ebx, 16 ; ebx - y.coord |
mov esi, [current_slot] |
add eax, [esi + APPDATA.wnd_clientbox.left] |
add ebx, [esi + APPDATA.wnd_clientbox.top] |
mov esi, [current_slot_idx] |
shl esi, BSF sizeof.WDATA |
add eax, [window_data + esi + WDATA.clientbox.left] |
add ebx, [window_data + esi + WDATA.clientbox.top] |
add ecx, eax |
add edx, ebx |
jmp vesa20_drawbar |
167,18 → 163,17 |
syscall_drawline: |
mov edi, [current_slot_idx] |
shl edi, BSF sizeof.WDATA |
movzx eax, word[edi + window_data + WDATA.box.left] |
movzx eax, word[window_data + edi + WDATA.box.left] |
mov ebp, eax |
mov esi, [current_slot] |
add ebp, [esi+APPDATA.wnd_clientbox.left] |
add ax, word[esi+APPDATA.wnd_clientbox.left] |
add ebp, [window_data + edi + WDATA.clientbox.left] |
add ax, word[window_data + edi + WDATA.clientbox.left] |
add ebp, ebx |
shl eax, 16 |
movzx ebx, word[edi + window_data + WDATA.box.top] |
movzx ebx, word[window_data + edi + WDATA.box.top] |
add eax, ebp |
mov ebp, ebx |
add ebp, [esi+APPDATA.wnd_clientbox.top] |
add bx, word[esi+APPDATA.wnd_clientbox.top] |
add ebp, [window_data + edi + WDATA.clientbox.top] |
add bx, word[window_data + edi + WDATA.clientbox.top] |
add ebp, ecx |
shl ebx, 16 |
xor edi, edi |
411,17 → 406,18 |
;> ebx = 1 |
;> ecx = scale power (resulting scale is 2^ebx) |
syscall_set_window_shape: |
mov edi, [current_slot] |
mov edi, [current_slot_idx] |
shl edi, BSF sizeof.WDATA |
test ebx, ebx |
jne .shape_scale |
mov [edi + APPDATA.wnd_shape], ecx |
mov [window_data + edi + WDATA.shape], ecx |
;-------------------------------------- |
align 4 |
.shape_scale: |
dec ebx |
jnz .exit |
mov [edi + APPDATA.wnd_shape_scale], ecx |
mov [window_data + edi + WDATA.shape_scale], ecx |
;-------------------------------------- |
align 4 |
.exit: |
498,8 → 494,8 |
jc @f |
xor edx, edx |
@@: |
mov [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx |
mov [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl |
mov [window_data + edi + WDATA.caption], ecx |
mov [window_data + edi + WDATA.captionEncoding], dl |
jmp window._.draw_window_caption |
;------------------------------------------------------------------------------ |
561,7 → 557,7 |
movzx edi, word[WIN_POS + esi * 2] |
shl edi, BSF sizeof.WDATA ;size of TASKDATA and WDATA = 32 bytes |
cmp byte [SLOT_BASE + edi*8 + APPDATA.state], TSTATE_FREE |
cmp byte [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.state], TSTATE_FREE |
je .skip_window |
add edi, window_data |
1090,10 → 1086,10 |
movzx edi, word[WIN_POS + eax * 2] |
shl edi, BSF sizeof.WDATA |
; it is a unused slot? |
cmp byte [SLOT_BASE + edi*8 + APPDATA.state], TSTATE_FREE |
cmp byte [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.state], TSTATE_FREE |
je @f |
; it is a hidden thread? |
lea esi, [SLOT_BASE + edi*8 + APPDATA.app_name] |
lea esi, [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.app_name] |
cmp [esi], byte '@' |
je @f |
; is it already minimized? |
1549,7 → 1545,7 |
mov eax, edi |
sub eax, window_data |
shl eax, 3 |
shl eax, (BSF sizeof.APPDATA - BSF sizeof.WDATA) |
add eax, SLOT_BASE |
lea ebx, [edi + WDATA.box] |
1584,8 → 1580,6 |
mov [window_topleft + 8 * 4 + 4], eax |
mov ecx, edi |
sub edi, window_data |
shl edi, 3 |
test [ecx + WDATA.fl_wstyle], WSTYLE_CLIENTRELATIVE |
jz .whole_window |
1592,23 → 1586,23 |
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 [ecx + WDATA.clientbox.left], eax |
shl eax, 1 |
neg eax |
add eax, [ecx + WDATA.box.width] |
inc eax ;Leency: as window is created width+1 so client the same |
mov [edi + SLOT_BASE + APPDATA.wnd_clientbox.width], eax |
mov [ecx + WDATA.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 [ecx + WDATA.clientbox.top], eax |
neg eax |
sub eax, [esp] |
add eax, [ecx + WDATA.box.height] |
inc eax ;Leency: as window is created height+1 so client the same |
mov [edi + SLOT_BASE + APPDATA.wnd_clientbox.height], eax |
mov [ecx + WDATA.clientbox.height], eax |
add esp, 4 |
jmp .exit |
;-------------------------------------- |
1615,12 → 1609,12 |
align 4 |
.whole_window: |
xor eax, eax |
mov [edi + SLOT_BASE + APPDATA.wnd_clientbox.left], eax |
mov [edi + SLOT_BASE + APPDATA.wnd_clientbox.top], eax |
mov [ecx + WDATA.clientbox.left], eax |
mov [ecx + WDATA.clientbox.top], eax |
mov eax, [ecx + WDATA.box.width] |
mov [edi + SLOT_BASE + APPDATA.wnd_clientbox.width], eax |
mov [ecx + WDATA.clientbox.width], eax |
mov eax, [ecx + WDATA.box.height] |
mov [edi + SLOT_BASE + APPDATA.wnd_clientbox.height], eax |
mov [ecx + WDATA.clientbox.height], eax |
;-------------------------------------- |
align 4 |
.exit: |
1666,9 → 1660,9 |
mov cl, [edi + WDATA.fl_wstyle] |
mov eax, [edi + WDATA.cl_frames] |
mov esi, [esp] |
sub edi, window_data |
shl edi, 3 |
add edi, SLOT_BASE |
shl edi, (BSF sizeof.APPDATA - BSF sizeof.WDATA) |
and cl, 0x0F |
cmp cl, 3 |
1680,10 → 1674,9 |
;-------------------------------------- |
align 4 |
@@: |
mov [edi + APPDATA.wnd_caption], eax |
mov [esi + WDATA.caption], eax |
mov esi, [esp] |
add edi, APPDATA.saved_box |
add edi, SLOT_BASE + APPDATA.saved_box |
movsd |
movsd |
movsd |
1866,10 → 1859,12 |
pushad |
mov edi, esi |
shl edi, BSF sizeof.WDATA |
cmp esi, 1 |
jz .check_for_shaped_window |
mov edi, esi |
shl edi, BSF sizeof.WDATA |
cmp [window_data + edi + WDATA.box.width], 0 |
jnz .check_for_shaped_window |
cmp [window_data + edi + WDATA.box.height], 0 |
1877,10 → 1872,7 |
;-------------------------------------- |
align 4 |
.check_for_shaped_window: |
mov edi, esi |
shl edi, BSF sizeof.APPDATA |
add edi, SLOT_BASE |
cmp [edi + APPDATA.wnd_shape], 0 |
cmp [window_data + edi + WDATA.shape], 0 |
jne .shaped_window |
; get x&y size |
1930,7 → 1922,7 |
inc ecx |
inc edx |
push [edi + APPDATA.wnd_shape_scale] ; push scale first -> for loop |
push [window_data + edi + WDATA.shape_scale] ; push scale first -> for loop |
; get WinMap start -> ebp |
push eax |
1940,7 → 1932,7 |
add eax, [_display.win_map] |
mov ebp, eax |
mov edi, [edi + APPDATA.wnd_shape] |
mov edi, [window_data + edi + WDATA.shape] |
pop eax |
; eax = x_start |
2178,7 → 2170,7 |
mov eax, edi |
sub eax, window_data |
shr eax, 5 |
shr eax, BSF sizeof.WDATA |
movzx eax, word[WIN_STACK + eax * 2] ; get value of the curr process |
lea esi, [WIN_POS + eax * 2] ; get address of this process at 0xC400 |
2195,7 → 2187,7 |
movzx edx, word[esi] |
shl edx, BSF sizeof.WDATA ; size of TASKDATA and WDATA is 32 bytes |
cmp byte [SLOT_BASE + edx*8 - sizeof.APPDATA + APPDATA.state], TSTATE_FREE |
cmp byte [SLOT_BASE + edx*(sizeof.APPDATA/sizeof.WDATA) - sizeof.APPDATA + APPDATA.state], TSTATE_FREE |
je .next_window |
mov eax, [edi + WDATA.box.top] |
2250,7 → 2242,7 |
align 4 |
@@: |
mov edx, [current_slot_idx] |
shl edx, 5 |
shl edx, BSF sizeof.WDATA |
add edx, window_data |
movzx ebx, [edx + WDATA.fl_wstyle] |
and bl, 0x0F |
2287,9 → 2279,9 |
.2: |
mov edi, [current_slot_idx] |
shl edi, BSF sizeof.WDATA |
test [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION |
test [window_data + edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION |
jz .exit |
mov edx, [edi * 8 + SLOT_BASE + APPDATA.wnd_caption] |
mov edx, [window_data + edi + WDATA.caption] |
or edx, edx |
jz .exit |
2332,7 → 2324,7 |
mov esi, eax |
add ebx, ebp |
mov ecx, [common_colours + 16] |
mov al, [edi*8 + SLOT_BASE + APPDATA.captionEncoding] |
mov al, [window_data + edi + WDATA.captionEncoding] |
test al, al |
jnz @f |
mov al, 1 |
2463,7 → 2455,7 |
movzx edi, word[WIN_POS + esi * 2] |
shl edi, BSF sizeof.WDATA ;size of TASKDATA and WDATA = 32 bytes |
cmp byte [SLOT_BASE + edi*8 + APPDATA.state], TSTATE_FREE |
cmp byte [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.state], TSTATE_FREE |
je .skip_window |
add edi, window_data |
/kernel/trunk/kernel.asm |
---|
551,7 → 551,7 |
xor eax, eax |
mov [clipboard_slots], eax |
mov [clipboard_write_lock], eax |
stdcall kernel_alloc, 4096 |
stdcall kernel_alloc, PAGE_SIZE |
test eax, eax |
jnz @f |
1554,16 → 1554,14 |
mov ebx, [esp+64+32-8+4] |
; add window start x & y |
mov edi, [current_slot_idx] |
mov ecx, edi |
shl edi, BSF sizeof.APPDATA |
mov ecx, [current_slot_idx] |
shl ecx, BSF sizeof.WDATA |
mov eax, [window_data + ecx + WDATA.box.left] |
add eax, [SLOT_BASE + edi + APPDATA.wnd_clientbox.left] |
add eax, [window_data + ecx + WDATA.clientbox.left] |
shl eax, 16 |
add eax, [window_data + ecx + WDATA.box.top] |
add eax, [SLOT_BASE + edi + APPDATA.wnd_clientbox.top] |
add eax, [window_data + ecx + WDATA.clientbox.top] |
add ebx, eax |
mov ecx, [esp+64+32-12+4] |
mov eax, [esp+64+8] ; background color (if given) |
2109,7 → 2107,7 |
je .nowindowdeactivate ; already deactive |
mov edi, ecx |
shl edi, 5 |
shl edi, BSF sizeof.WDATA |
add edi, window_data |
movzx esi, word [WIN_STACK + ecx * 2] |
lea esi, [WIN_POS + esi * 2] |
2174,7 → 2172,7 |
mov eax, edx |
shl edx, BSF sizeof.WDATA |
cmp [edx*8 + SLOT_BASE + APPDATA.state], TSTATE_FREE |
cmp [edx*(sizeof.APPDATA/sizeof.WDATA) + SLOT_BASE + APPDATA.state], TSTATE_FREE |
je .fail |
cmp ecx, 1 |
2533,7 → 2531,7 |
call memmove |
pop ecx |
shr ecx, 3 |
shr ecx, (BSF sizeof.APPDATA - BSF sizeof.WDATA) |
; +22: address of the process in memory |
; +26: size of used memory - 1 |
push edi |
2540,9 → 2538,9 |
lea edi, [ebx+12] |
xor eax, eax |
mov edx, 0x100000*16 |
cmp ecx, 1 shl 5 |
cmp ecx, 1 shl BSF sizeof.WDATA |
je .os_mem |
mov edx, [SLOT_BASE + ecx*8 + APPDATA.process] |
mov edx, [SLOT_BASE + ecx*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.process] |
mov edx, [edx + PROC.mem_used] |
mov eax, std_application_base_address |
.os_mem: |
2551,7 → 2549,7 |
stosd |
; +30: PID/TID |
mov eax, [SLOT_BASE + ecx*8 + APPDATA.tid] |
mov eax, [SLOT_BASE + ecx*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.tid] |
stosd |
; window position and size |
2563,11 → 2561,11 |
movsd |
; Process state (+50) |
movzx eax, byte [SLOT_BASE + ecx*8 + APPDATA.state] |
movzx eax, byte [SLOT_BASE + ecx*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.state] |
stosd |
; Window client area box |
lea esi, [SLOT_BASE + ecx*8 + APPDATA.wnd_clientbox] |
lea esi, [window_data + ecx + WDATA.clientbox] |
movsd |
movsd |
movsd |
2578,11 → 2576,11 |
stosb |
; Event mask (+71) |
mov EAX, dword [SLOT_BASE + ecx*8 + APPDATA.event_mask] |
mov EAX, dword [SLOT_BASE + ecx*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.event_mask] |
stosd |
; Keyboard mode (+75) |
mov al, byte [SLOT_BASE + ecx*8 + APPDATA.keyboard_mode] |
mov al, byte [SLOT_BASE + ecx*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.keyboard_mode] |
stosb |
pop esi |
3594,10 → 3592,11 |
;-------------------------------------- |
align 4 |
@@: |
mov edi, [current_slot] |
add dx, word[edi + APPDATA.wnd_clientbox.top] |
mov edi, [current_slot_idx] |
shl edi, BSF sizeof.WDATA |
add dx, word[window_data + edi + WDATA.clientbox.top] |
rol edx, 16 |
add dx, word[edi + APPDATA.wnd_clientbox.left] |
add dx, word[window_data + edi + WDATA.clientbox.left] |
rol edx, 16 |
;-------------------------------------- |
align 4 |
3632,10 → 3631,11 |
pop esi ecx |
jnz sys_putimage.exit |
mov eax, [current_slot] |
add dx, word [eax + APPDATA.wnd_clientbox.top] |
mov eax, [current_slot_idx] |
shl eax, BSF sizeof.WDATA |
add dx, word [window_data + eax + WDATA.clientbox.top] |
rol edx, 16 |
add dx, word [eax + APPDATA.wnd_clientbox.left] |
add dx, word [window_data + eax + WDATA.clientbox.left] |
rol edx, 16 |
;-------------------------------------- |
align 4 |
3944,11 → 3944,12 |
; edx y end |
; edi color |
;__sys_drawbar: |
; mov esi, [current_slot] |
; add eax, [esi+APPDATA.wnd_clientbox.left] |
; add ecx, [esi+APPDATA.wnd_clientbox.left] |
; add ebx, [esi+APPDATA.wnd_clientbox.top] |
; add edx, [esi+APPDATA.wnd_clientbox.top] |
; mov esi, [current_slot_idx] |
; shl esi, BSF sizeof.WDATA |
; add eax, [window_data+esi+WDATA.clientbox.left] |
; add ecx, [window_data+esi+WDATA.clientbox.left] |
; add ebx, [window_data+esi+WDATA.clientbox.top] |
; add edx, [window_data+esi+WDATA.clientbox.top] |
;-------------------------------------- |
;align 4 |
;.forced: |
/kernel/trunk/video/blitter.inc |
---|
271,9 → 271,8 |
test [esp + .flags], BLIT_CLIENT_RELATIVE |
jz .no_client_relative |
mov eax, [current_slot] |
add ebx, [eax + APPDATA.wnd_clientbox.left] |
add ebp, [eax + APPDATA.wnd_clientbox.top] |
add ebx, [window_data + eax + WDATA.clientbox.left] |
add ebp, [window_data + eax + WDATA.clientbox.top] |
.no_client_relative: |
mov ecx, ebx |
/kernel/trunk/video/cursors.inc |
---|
338,7 → 338,7 |
mov [eax + CURSOR.hot_x], ebx |
mov [eax + CURSOR.hot_y], ebx |
stdcall kernel_alloc, 0x1000 |
stdcall kernel_alloc, PAGE_SIZE |
test eax, eax |
jz .fail |
392,7 → 392,7 |
mov [edi + CURSOR.hot_y], edx |
xchg edi, eax |
mov ecx, 1024 |
mov ecx, PAGE_SIZE/4 |
cld |
rep movsd |
jmp .add_cursor |
/kernel/trunk/video/framebuffer.inc |
---|
156,7 → 156,7 |
or esi, PG_GLOBAL + PAT_WC + PG_UWR |
and esi, [pte_valid_mask] |
stdcall alloc_kernel_space, 0x1000 |
stdcall alloc_kernel_space, PAGE_SIZE |
mov edi, eax |
mov ebx, 4 |
168,15 → 168,15 |
stdcall map_page, edi, eax, PG_SWR |
mov eax, esi |
mov ecx, 1024 |
mov ecx, PAGE_SIZE/4 |
@@: |
stosd |
add eax, 0x1000 |
add eax, PAGE_SIZE |
loop @B |
add esi, 0x400000 |
add ebp, 4 |
sub edi, 4096 |
sub edi, PAGE_SIZE |
dec ebx |
jnz .new_pd |
stdcall free_kernel_space, edi |
185,7 → 185,7 |
.fake: |
mov [BOOT.mtrr], byte 2 |
stdcall alloc_kernel_space, 0x1000 |
stdcall alloc_kernel_space, PAGE_SIZE |
push eax ;store in stack for subsequent |
mov edi, eax ;free_kernel_space call |
197,13 → 197,13 |
; max VGA=640*480*4=1228800 bytes |
; + 32*640*4=81920 bytes for mouse pointer |
stdcall alloc_pages, ((1228800+81920)/4096) |
stdcall alloc_pages, ((1228800+81920)/PAGE_SIZE) |
or eax, PG_GLOBAL+PG_UWR |
and eax, [pte_valid_mask] |
mov ecx, (1228800+81920)/4096 |
mov ecx, (1228800+81920)/PAGE_SIZE |
@@: |
stosd |
add eax, 0x1000 |
add eax, PAGE_SIZE |
loop @B |
call free_kernel_space |
221,7 → 221,7 |
cli |
mov [_display.current_lfb], ecx |
.patch_pde: |
lea edi, [eax + PROC.pdt_0+4096-32] ;last 8 pd entries up to 32Mb framebuffer |
lea edi, [eax + PROC.pdt_0 + PAGE_SIZE -32] ;last 8 pd entries up to 32Mb framebuffer |
mov ecx, 4 |
rep movsd ;patch pde |
sub esi, 16 |