forked from KolibriOS/kolibrios
Function 18.24 - set limits of screen.
git-svn-id: svn://kolibrios.org@2654 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
6ea08a8bb3
commit
01431c16e7
@ -1120,6 +1120,22 @@ dd 1675
|
|||||||
‡ ¬¥η ¨ο:
|
‡ ¬¥η ¨ο:
|
||||||
* <20><> α―¥ζ. ―®β®<CEB2>®Ά (¨¬ο η¨ ¥βαο α ᨬΆ®« @) ¥ αΆ®ΰ η¨Ά ξβαο.
|
* <20><> α―¥ζ. ―®β®<CEB2>®Ά (¨¬ο η¨ ¥βαο α ᨬΆ®« @) ¥ αΆ®ΰ η¨Ά ξβαο.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
===== ”ãªæ¨ï 18, ¯®¤äãªæ¨ï 24 - ãáâ ®¢¨âì ¯à¥¤¥«ë ®âà¨á®¢ª¨. ======
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD> à ¬¥âàë:
|
||||||
|
* eax = 18 - ®¬¥à äãªæ¨¨
|
||||||
|
* ebx = 24 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
|
* ecx = ®¢ë© à §¬¥à ¯® X
|
||||||
|
* edx = ®¢ë© à §¬¥à ¯® Y
|
||||||
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
|
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï
|
||||||
|
‡ ¬¥ç ¨ï:
|
||||||
|
* ”ãªæ¨ï ¥ ¬¥ï¥â 䨧¨ç¥áª¨© à §¬¥à ¢¨¤¥®à¥¦¨¬ . Ž ¯à¥¤ § ç¥
|
||||||
|
¤«ï ¥áâ ¤ àâëå ¤¨á¯«¥¥¢, ®â®¡à ¦ îé¨å ¨§®¡à ¦¥¨¥ ç áâ¨ç®.
|
||||||
|
* <20> §¬¥àë 㪠§ë¢ ¥¬ë¥ ¢ äãªæ¨¨ ¥ ¤®«¦ë ¯à¥¢ëè âì à §¬¥àë ⥪ã饣®
|
||||||
|
¢¨¤¥®à¥¦¨¬ , ¨ ç¥ äãªæ¨ï ¨ç¥£® ¥ ¨§¬¥¨â.
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
==================== ”γ<CEB3>ζ¨ο 20 - ¨β¥ΰ䥩α MIDI. ====================
|
==================== ”γ<CEB3>ζ¨ο 20 - ¨β¥ΰ䥩α MIDI. ====================
|
||||||
======================================================================
|
======================================================================
|
||||||
|
@ -1120,6 +1120,24 @@ Returned value:
|
|||||||
Remarks:
|
Remarks:
|
||||||
* Window of special thread (name begin to symbol @) is not minimize.
|
* Window of special thread (name begin to symbol @) is not minimize.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
======= Function 18, subfunction 24 - set limits of screen. ==========
|
||||||
|
======================================================================
|
||||||
|
Parameters:
|
||||||
|
* eax = 18 - function number
|
||||||
|
* ebx = 24 - subfunction number
|
||||||
|
* ecx = new X size
|
||||||
|
* edx = new Y size
|
||||||
|
Returned value:
|
||||||
|
* function does not return value
|
||||||
|
Remarks:
|
||||||
|
* The function does not change the physical size of the video mode.
|
||||||
|
It is designed for non-standard displays which display the image
|
||||||
|
partially.
|
||||||
|
* The sizes specified in the function should not exceed the sizes
|
||||||
|
of the current video mode, otherwise the function will not change
|
||||||
|
anything.
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
==================== Function 20 - MIDI interface. ===================
|
==================== Function 20 - MIDI interface. ===================
|
||||||
======================================================================
|
======================================================================
|
||||||
|
@ -383,11 +383,13 @@ high_code:
|
|||||||
|
|
||||||
movzx eax, word [BOOT_VAR+BOOT_X_RES]; X max
|
movzx eax, word [BOOT_VAR+BOOT_X_RES]; X max
|
||||||
mov [_display.width], eax
|
mov [_display.width], eax
|
||||||
|
mov [display_width_standard], eax
|
||||||
dec eax
|
dec eax
|
||||||
mov [Screen_Max_X], eax
|
mov [Screen_Max_X], eax
|
||||||
mov [screen_workarea.right], eax
|
mov [screen_workarea.right], eax
|
||||||
movzx eax, word [BOOT_VAR+BOOT_Y_RES]; Y max
|
movzx eax, word [BOOT_VAR+BOOT_Y_RES]; Y max
|
||||||
mov [_display.height], eax
|
mov [_display.height], eax
|
||||||
|
mov [display_height_standard], eax
|
||||||
dec eax
|
dec eax
|
||||||
mov [Screen_Max_Y], eax
|
mov [Screen_Max_Y], eax
|
||||||
mov [screen_workarea.bottom], eax
|
mov [screen_workarea.bottom], eax
|
||||||
@ -2055,6 +2057,7 @@ sys_system_table:
|
|||||||
dd sysfn_pid_to_slot ; 21 = get slot number for pid
|
dd sysfn_pid_to_slot ; 21 = get slot number for pid
|
||||||
dd sysfn_min_rest_window ; 22 = minimize and restore any window
|
dd sysfn_min_rest_window ; 22 = minimize and restore any window
|
||||||
dd sysfn_min_windows ; 23 = minimize all windows
|
dd sysfn_min_windows ; 23 = minimize all windows
|
||||||
|
dd sysfn_set_screen_sizes ; 24 = set screen sizes for Vesa
|
||||||
sysfn_num = ($ - sys_system_table)/4
|
sysfn_num = ($ - sys_system_table)/4
|
||||||
endg
|
endg
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
@ -2410,10 +2413,45 @@ sysfn_min_windows:
|
|||||||
call change_task
|
call change_task
|
||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
sysfn_set_screen_sizes:
|
||||||
|
cmp [SCR_MODE], word 0x13
|
||||||
|
jbe .exit
|
||||||
|
|
||||||
|
cmp [_display.select_cursor], select_cursor
|
||||||
|
jne .exit
|
||||||
|
|
||||||
|
cmp ecx, [display_width_standard]
|
||||||
|
ja .exit
|
||||||
|
|
||||||
|
cmp edx, [display_height_standard]
|
||||||
|
ja .exit
|
||||||
|
|
||||||
|
pushfd
|
||||||
|
cli
|
||||||
|
mov eax, ecx
|
||||||
|
mov ecx, [BytesPerScanLine]
|
||||||
|
mov [_display.width], eax
|
||||||
|
dec eax
|
||||||
|
mov [_display.height], edx
|
||||||
|
dec edx
|
||||||
|
; eax - new Screen_Max_X
|
||||||
|
; edx - new Screen_Max_Y
|
||||||
|
mov [do_not_touch_winmap], 1
|
||||||
|
call set_screen
|
||||||
|
mov [do_not_touch_winmap], 0
|
||||||
|
popfd
|
||||||
|
call change_task
|
||||||
|
.exit:
|
||||||
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
uglobal
|
uglobal
|
||||||
screen_workarea RECT
|
screen_workarea RECT
|
||||||
|
display_width_standard dd 0
|
||||||
|
display_height_standard dd 0
|
||||||
|
do_not_touch_winmap db 0
|
||||||
window_minimize db 0
|
window_minimize db 0
|
||||||
sound_flag db 0
|
sound_flag db 0
|
||||||
|
|
||||||
endg
|
endg
|
||||||
|
|
||||||
UID_NONE=0
|
UID_NONE=0
|
||||||
@ -5158,6 +5196,10 @@ calculate_fast_getting_offset_for_LFB:
|
|||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
set_screen:
|
set_screen:
|
||||||
|
; in:
|
||||||
|
; eax - new Screen_Max_X
|
||||||
|
; ecx - new BytesPerScanLine
|
||||||
|
; edx - new Screen_Max_Y
|
||||||
cmp eax, [Screen_Max_X]
|
cmp eax, [Screen_Max_X]
|
||||||
jne .set
|
jne .set
|
||||||
|
|
||||||
@ -5181,6 +5223,9 @@ set_screen:
|
|||||||
|
|
||||||
pushad
|
pushad
|
||||||
|
|
||||||
|
cmp [do_not_touch_winmap], 1
|
||||||
|
je @f
|
||||||
|
|
||||||
stdcall kernel_free, [_WinMapAddress]
|
stdcall kernel_free, [_WinMapAddress]
|
||||||
|
|
||||||
mov eax, [_display.width]
|
mov eax, [_display.width]
|
||||||
@ -5191,7 +5236,13 @@ set_screen:
|
|||||||
mov [_WinMapAddress], eax
|
mov [_WinMapAddress], eax
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .epic_fail
|
jz .epic_fail
|
||||||
|
; store for f.18.24
|
||||||
|
mov eax, [_display.width]
|
||||||
|
mov [display_width_standard], eax
|
||||||
|
|
||||||
|
mov eax, [_display.height]
|
||||||
|
mov [display_height_standard], eax
|
||||||
|
@@:
|
||||||
call calculate_fast_getting_offset_for_WinMapAddress
|
call calculate_fast_getting_offset_for_WinMapAddress
|
||||||
; for Qemu or non standart video cards
|
; for Qemu or non standart video cards
|
||||||
; Unfortunately [BytesPerScanLine] does not always
|
; Unfortunately [BytesPerScanLine] does not always
|
||||||
|
Loading…
Reference in New Issue
Block a user