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 @@
<20><EFBFBD><E3ADAA><EFBFBD> <20><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><E7A5AD><><E1AEA1><EFBFBD><EFBFBD>:
5 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A8AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AEA2><><><EFBFBD> <20><EFBFBD>
======================================================================
====================== <20><EFBFBD><E3ADAA><EFBFBD> 15, <20><><EFBFBD><EFBFBD><EFBFBD><E3ADAA><EFBFBD> 9 ======================
=============== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AEA2><EFBFBD> <20><>אַ㣮<EFACAE><E3A3AE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><>. ===============
======================================================================
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
* eax = 15 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
* ebx = 9 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
* ecx = [left]*65536 + [right]
* edx = [top]*65536 + [bottom]
<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>:
* (left,top) - <20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E5ADA5><>,
(right,bottom) - <20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* <20><20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>४⭮ - 䮭 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ뢠<E1AEA2><EBA2A0><EFBFBD><EFBFBD>.
======================================================================
============= <20><EFBFBD><E3ADAA><EFBFBD> 16 - <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E0A0AC><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E1AAA5>. =============
======================================================================

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