/kernel/trunk/const.inc |
---|
362,6 → 362,8 |
SYSTEM_REBOOT equ 3 |
SYSTEM_RESTART equ 4 |
BLIT_CLIENT_RELATIVE equ 0x20000000 |
struct SYSCALL_STACK |
_eip dd ? |
_edi dd ? ; +4 |
/kernel/trunk/docs/sysfuncr.txt |
---|
4335,13 → 4335,14 |
* eax = 73 - номер функции |
* ebx = ROP и опциональные флаги |
31 6 5 4 3 0 |
[ reserved ][T][B][ROP] |
31 30 29 28 6 5 4 3 0 |
[reserved][CR][reserved][T][B][ROP] |
ROP - код растровых операций |
0: копировать |
1-15: Зарезервировано |
B - блит на фоновую поферхность |
T - блит с прозрачностью |
CR - относительно клиентской области окна |
* ecx = указатель на параметры функции |
смещение цели и отсечение |
/kernel/trunk/docs/sysfuncs.txt |
---|
4285,13 → 4285,14 |
* eax = 73 - function number |
* ebx = ROP and optional flags |
31 6 5 4 3 0 |
[ reserved ][T][B][ROP] |
31 30 29 28 6 5 4 3 0 |
[reserved][CR][reserved][T][B][ROP] |
ROP - raster operation code |
0: Copy |
1-15: reserved |
B - blit into the background surface |
T - transparent blit |
CR - blit client relative |
* ecx = pointer to the function parameters |
destination offset and clipping |
/kernel/trunk/video/blitter.inc |
---|
206,10 → 206,13 |
.position dd ? ; (x shl 16) + y |
; ??? |
.extra_var1 dd ? |
.flags dd ? |
.local_vars_size = $ |
end virtual |
sub esp, .local_vars_size |
mov [esp+.flags], ebx |
mov eax, [TASK_BASE] |
mov ebx, [eax-twdw + WDATA.box.width] |
mov edx, [eax-twdw + WDATA.box.height] |
263,6 → 266,14 |
add ebx, [eax-twdw + WDATA.box.left] |
add ebp, [eax-twdw + WDATA.box.top] |
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] |
.no_client_relative: |
mov ecx, ebx |
add ecx, [esp+BLITTER.w] |
shl ecx, 16 |