/kernel/trunk/core/syscall.inc |
---|
219,7 → 219,7 |
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,. |
/kernel/trunk/docs/sysfuncr.txt |
---|
1729,6 → 1729,22 |
¬®¦® ¯®«ãç¨âì äãªæ¨¥© 61. |
====================================================================== |
=============== ãªæ¨ï 36 - ¯à®ç¨â âì ®¡« áâì íªà . ============== |
====================================================================== |
à ¬¥âàë: |
* eax = 36 - ®¬¥à äãªæ¨¨ |
* ebx = 㪠§ â¥«ì ¯à¥¤¢ à¨â¥«ì® ¢ë¤¥«¥ãî ®¡« áâì ¯ ¬ïâ¨, |
ªã¤ ¡ã¤¥â ¯®¬¥é¥® ¨§®¡à ¦¥¨¥ ¢ ä®à¬ ⥠BBGGRRBBGGRR... |
* ecx = [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y] |
* edx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ®®à¤¨ âë ¨§®¡à ¦¥¨ï - íâ® ª®®à¤¨ âë ¢¥à奣® «¥¢®£® 㣫 |
¨§®¡à ¦¥¨ï ®â®á¨â¥«ì® ®ª . |
* §¬¥à ¨§®¡à ¦¥¨ï ¢ ¡ ©â å ¥áâì 3*xsize*ysize. |
====================================================================== |
==================== ãªæ¨ï 37 - à ¡®â á ¬ëèìî. ==================== |
====================================================================== |
/kernel/trunk/docs/sysfuncs.txt |
---|
1707,6 → 1707,22 |
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. =================== |
====================================================================== |
/kernel/trunk/kernel.asm |
---|
5087,7 → 5087,61 |
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 |
syscall_drawline: ; DrawLine |