;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                              ;;
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License    ;;
;;                                                              ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

$Revision$


;
; Call of videomode driver's functions
;
; (Add in System function 21 (and/or 26) as a subfunction 13)
;
; Author: Trans
; Date:  19.07.2003
;
; Include in MeOS kernel and compile with FASM
;

uglobal
  old_screen_width  dd ?
  old_screen_height dd ?
endg

;     cmp  eax,13                 ; CALL VIDEOMODE DRIVER FUNCTIONS
     dec   ebx
     jnz  .no_vmode_drv_access
        pushd   [Screen_Max_X] [Screen_Max_Y]
	popd	[old_screen_height] [old_screen_width]
     or   eax,-1                 ; If driver is absent then eax does not change
     call (VMODE_BASE+0x100)     ; Entry point of video driver
     mov  [esp+36-4],eax
     mov  [esp+24-4],ebx
     mov  [esp+32-4],ecx
;    mov  [esp+28],edx
	mov	eax,[old_screen_width]
	mov	ebx,[old_screen_height]
        sub     eax,[Screen_Max_X]
	jnz	@f
        sub     ebx,[Screen_Max_Y]
	jz	.resolution_wasnt_changed
	jmp	.lp1
    @@: sub     ebx,[Screen_Max_Y]
  .lp1: sub	[screen_workarea.right],eax
	sub	[screen_workarea.bottom],ebx

	call	repos_windows
        xor     eax,eax
        xor     ebx,ebx
        mov     ecx, [Screen_Max_X]
        mov     edx, [Screen_Max_Y]
	call	calculatescreen

  .resolution_wasnt_changed:
     ret
   .no_vmode_drv_access: