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 ; 33-reserved
dd undefined_syscall ; 34-reserved dd undefined_syscall ; 34-reserved
dd syscall_getpixel ; 35-GetPixel dd syscall_getpixel ; 35-GetPixel
dd undefined_syscall ; 36-reserved dd syscall_getarea ; 36-GetArea
dd cross_order ; 37-GetMousePosition_ScreenRelative,. dd cross_order ; 37-GetMousePosition_ScreenRelative,.
dd syscall_drawline ; 38-DrawLine dd syscall_drawline ; 38-DrawLine
dd cross_order ; 39-GetBackgroundSize,ReadBgrData,. dd cross_order ; 39-GetBackgroundSize,ReadBgrData,.

View File

@ -1728,6 +1728,22 @@ dd 638
ä㭪権) ç¥à¥§ ᥫ¥ªâ®à gs. <20> à ¬¥âàë ⥪ã饣® ¢¨¤¥®à¥¦¨¬  ä㭪権) ç¥à¥§ ᥫ¥ªâ®à gs. <20> à ¬¥âàë ⥪ã饣® ¢¨¤¥®à¥¦¨¬ 
¬®¦­® ¯®«ãç¨âì ä㭪樥© 61. ¬®¦­® ¯®«ãç¨âì ä㭪樥© 61.
======================================================================
=============== ”ã­ªæ¨ï 36 - ¯à®ç¨â âì ®¡« áâì íªà ­ . ==============
======================================================================
<EFBFBD> à ¬¥âàë:
* eax = 36 - ­®¬¥à ä㭪樨
* ebx = 㪠§ â¥«ì ­  ¯à¥¤¢ à¨â¥«ì­® ¢ë¤¥«¥­­ãî ®¡« áâì ¯ ¬ïâ¨,
ªã¤  ¡ã¤¥â ¯®¬¥é¥­® ¨§®¡à ¦¥­¨¥ ¢ ä®à¬ â¥ BBGGRRBBGGRR...
* ecx = [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y]
* edx = [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
‚®§¢à é ¥¬®¥ §­ ç¥­¨¥:
* äã­ªæ¨ï ­¥ ¢®§¢à é ¥â §­ ç¥­¨ï
‡ ¬¥ç ­¨ï:
* Š®®à¤¨­ âë ¨§®¡à ¦¥­¨ï - íâ® ª®®à¤¨­ âë ¢¥àå­¥£® «¥¢®£® 㣫 
¨§®¡à ¦¥­¨ï ®â­®á¨â¥«ì­® ®ª­ .
* <20> §¬¥à ¨§®¡à ¦¥­¨ï ¢ ¡ ©â å ¥áâì 3*xsize*ysize.
====================================================================== ======================================================================
==================== ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî. ==================== ==================== ”ã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî. ====================
====================================================================== ======================================================================

View File

@ -1706,6 +1706,22 @@ Remarks:
to videomemory through the selector gs. To get parameters of to videomemory through the selector gs. To get parameters of
the current videomode, use function 61. 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. =================== =================== Function 37 - work with mouse. ===================
====================================================================== ======================================================================

View File

@ -5087,6 +5087,60 @@ syscall_getpixel: ; GetPixel
mov [esp + 32], ecx mov [esp + 32], ecx
ret 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 align 4