Function 36. See sysfuncr.txt and sysfuncs.txt

git-svn-id: svn://kolibrios.org@921 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79)
2008-11-16 15:23:40 +00:00
parent 09b06cee2f
commit bbf8c5f14d
4 changed files with 87 additions and 1 deletions

View File

@@ -219,7 +219,7 @@ iglobal
dd undefined_syscall ; 33-reserved
dd undefined_syscall ; 34-reserved
dd syscall_getpixel ; 35-GetPixel
dd undefined_syscall ; 36-reserved
dd syscall_getarea ; 36-GetArea
dd cross_order ; 37-GetMousePosition_ScreenRelative,.
dd syscall_drawline ; 38-DrawLine
dd cross_order ; 39-GetBackgroundSize,ReadBgrData,.

View File

@@ -1728,6 +1728,22 @@ dd 638
<20>㭪権) <20><>१ ᥫ<><E1A5AB><EFBFBD><EFBFBD><EFBFBD> gs. <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5A6><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樥<E3ADAA> 61.
======================================================================
=============== <20><EFBFBD><E3ADAA><EFBFBD> 36 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. ==============
======================================================================
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
* eax = 36 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
* ebx = 㪠<><E3AAA0><EFBFBD> <20><> <20><EFBFBD><E0A5A4><EFBFBD><EFBFBD>⥫쭮 <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<20><20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E0ACA0> BBGGRRBBGGRR...
* ecx = [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> y]
* edx = [<5B><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [<5B><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> y]
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>:
* <20><EFBFBD><E3ADAA><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
* <20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E5ADA5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>
<20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD><EFBFBD>.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 3*xsize*ysize.
======================================================================
==================== <20><EFBFBD><E3ADAA><EFBFBD> 37 - ࠡ<><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>. ====================
======================================================================

View File

@@ -1706,6 +1706,22 @@ Remarks:
to videomemory through the selector gs. To get parameters of
the current videomode, use function 61.
======================================================================
=============== Function 36 - read screen area. ===============
======================================================================
Paramters:
* eax = 36 - function number
* ebx = pointer on the previously allocated area of memory,
where will be placed the image in the format BBGGRRBBGGRR...
* ecx = [size on axis x]*65536 + [size on axis y]
* edx = [coordinate on axis x]*65536 + [coordinate on axis y]
Returned value:
* function does not return value
Remarks:
* Coordinates of the image are coordinates of the upper left corner
of the image relative to the window.
* Size of the image in bytes is 3*xsize*ysize.
======================================================================
=================== Function 37 - work with mouse. ===================
======================================================================

View File

@@ -5087,6 +5087,60 @@ syscall_getpixel: ; GetPixel
mov [esp + 32], ecx
ret
align 4
syscall_getarea:
;eax = 36
;ebx = pointer to bufer for img BBGGRRBBGGRR...
;ecx = [size x]*65536 + [size y]
;edx = [start x]*65536 + [start y]
pushad
mov edi,ebx
mov eax,edx
shr eax,16
mov ebx,edx
and ebx,0xffff
; eax - x, ebx - y
mov edx,ecx
shr ecx,16
and edx,0xffff
mov esi,ecx
; ecx - size x, edx - size y
.start_y:
push ecx
.start_x:
push eax ebx ecx edx esi edi
add eax,ecx
add ebx,edx
call dword [GETPIXEL] ; eax - x, ebx - y
pop edi esi
mov eax,ecx
pop edx ecx
push ecx edx
dec edx
lea edx,[edx*3]
imul edx,esi
dec ecx
lea ecx,[ecx*3]
add edx,ecx
add edx,edi
mov [edx],ax
shr eax,16
mov [edx+2],al
pop edx ecx ebx eax
dec ecx
jnz .start_x
pop ecx
dec edx
jnz .start_y
popad
ret
align 4