Function 15.9 - Redraws a rectangular part of the background

git-svn-id: svn://kolibrios.org@2547 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79) 2012-04-02 22:30:24 +00:00
parent 56b95cf179
commit 60bd1cf7b6
3 changed files with 76 additions and 2 deletions

View File

@ -635,6 +635,22 @@
δγ­<CEB3>ζ¨ξ αΰ §γ ―®α«¥ ―®«γη¥­¨ο α®΅λβ¨ο:
5 = § Ά¥ΰ訫 αμ ―¥ΰ¥ΰ¨α®Ά<C2AE>  δ®­  ΰ ΅®η¥£® αβ®« 
======================================================================
====================== ”ã­ªæ¨ï 15, ¯®¤äã­ªæ¨ï 9 ======================
=============== <20>¥à¥à¨á®¢ âì ¯àאַ㣮«ì­ãî ç áâì ä®­ . ===============
======================================================================
<EFBFBD> à ¬¥âàë:
* eax = 15 - ­®¬¥à ä㭪樨
* ebx = 9 - ­®¬¥à ¯®¤ä㭪樨
* ecx = [left]*65536 + [right]
* edx = [top]*65536 + [bottom]
‚®§¢à é ¥¬®¥ §­ ç¥­¨¥:
* äã­ªæ¨ï ­¥ ¢®§¢à é ¥â §­ ç¥­¨ï
‡ ¬¥ç ­¨ï:
* (left,top) - ª®®à¤¨­ âë «¥¢®£® ¢¥àå­¥£® 㣫 ,
(right,bottom) - ª®®à¤¨­ âë ¯à ¢®£® ­¨¦­¥£®.
* …᫨ ¯ à ¬¥âàë ãáâ ­®¢«¥­ë ­¥ª®à४⭮ - ä®­ ­¥ ¯¥à¥à¨á®¢ë¢ ¥âáï.
======================================================================
============= ”γ­<CEB3>ζ¨ο 16 - α®εΰ ­¨βμ ΰ ¬¤¨α<C2A8> ­  ¤¨α<C2A8>¥βγ. =============
======================================================================

View File

@ -629,6 +629,22 @@ Remarks:
immediately after the event:
5 = kernel finished redrawing of the desktop background
======================================================================
===================== Function 15, subfunction 9 =====================
============= Redraws a rectangular part of the background ===========
======================================================================
Parameters:
* eax = 15 - function number
* ebx = 9 - subfunction number
* ecx = [left]*65536 + [right]
* edx = [top]*65536 + [bottom]
Returned value:
* function does not return value
Remarks:
* (left,top) are coordinates of the left upper corner,
(right,bottom) are coordinates of the right lower one.
* If parameters are set incorrectly then background is not redrawn.
======================================================================
=============== Function 16 - save ramdisk on a floppy. ==============
======================================================================

View File

@ -2425,10 +2425,9 @@ sys_background:
cmp ebx, 1 ; BACKGROUND SIZE
jnz nosb1
test ecx, ecx
; cmp ecx,0
jz sbgrr
test edx, edx
; cmp edx,0
jz sbgrr
;--------------------------------------
align 4
@ -2698,6 +2697,49 @@ nosb7:
;------------------------------------------------------------------------------
align 4
nosb8:
cmp ebx, 9
jnz nosb9
; ecx = [left]*65536 + [right]
; edx = [top]*65536 + [bottom]
mov eax, [Screen_Max_X]
mov ebx, [Screen_Max_Y]
; check [right]
cmp cx, ax
ja .exit
; check [left]
ror ecx, 16
cmp cx, ax
ja .exit
; check [bottom]
cmp dx, bx
ja .exit
; check [top]
ror edx, 16
cmp dx, bx
ja .exit
movzx eax, cx ; [left]
movzx ebx, dx ; [top]
shr ecx, 16 ; [right]
shr edx, 16 ; [bottom]
mov [background_defined], 1
mov [draw_data+32 + RECT.left], eax
mov [draw_data+32 + RECT.top], ebx
mov [draw_data+32 + RECT.right], ecx
mov [draw_data+32 + RECT.bottom], edx
inc byte[REDRAW_BACKGROUND]
;--------------------------------------
align 4
.exit:
ret
;------------------------------------------------------------------------------
align 4
nosb9:
ret
;------------------------------------------------------------------------------
align 4