*** x386Cursor.c.V	Sat Nov 14 07:10:43 1992
--- x386Cursor.c	Wed Feb 17 23:39:43 1993
***************
*** 121,126 ****
--- 121,127 ----
  {
    Bool          frameChanged = FALSE;
    ScrnInfoPtr   pScr = X386SCRNINFO(pScreen);
+   int RealVDisplay; /* correct for Interlace mode using half the VDisplay */
  
    /*
     * check wether (x,y) belongs to the visual part of the screen
***************
*** 138,152 ****
      frameChanged = TRUE ;
    }
    
    if ( pScr->frameY0 > y) { 
      pScr->frameY0 = y;
!     pScr->frameY1 = y + pScr->modes->VDisplay - 1;
      frameChanged = TRUE;
    }
    
    if ( pScr->frameY1 < y) { 
      pScr->frameY1 = y;
!     pScr->frameY0 = y - pScr->modes->VDisplay + 1;
      frameChanged = TRUE; 
    }
    
--- 139,161 ----
      frameChanged = TRUE ;
    }
    
+   /* correct for Interlace mode using half the VDisplay */
+   RealVDisplay = pScr->modes->VDisplay; 
+   if (  ((pScr->modes->Flags & V_INTERLACE)!= 0) && 
+         ((pScr->modes->Flags & V_INTERLACE_INTERNAL)!=0) 
+      ) {
+     RealVDisplay *= 2; /* VDisplay was only half of real vertical disp. */
+   }
+ 
    if ( pScr->frameY0 > y) { 
      pScr->frameY0 = y;
!     pScr->frameY1 = y + RealVDisplay - 1;
      frameChanged = TRUE;
    }
    
    if ( pScr->frameY1 < y) { 
      pScr->frameY1 = y;
!     pScr->frameY0 = y - RealVDisplay + 1;
      frameChanged = TRUE; 
    }
    
***************
*** 167,172 ****
--- 176,182 ----
  {
    int           x, y;
    ScrnInfoPtr   pScr = X386SCRNINFO(pScreen);
+   int RealVDisplay; /* correct for Interlace mode using half the VDisplay */
  
    if (pScr->modes != pScr->modes->next)
      {
***************
*** 191,208 ****
  	  pScr->frameX1 = pScr->frameX0 + pScr->modes->HDisplay - 1;
  	}
        
!       pScr->frameY0 = (pScr->frameY1 + pScr->frameY0 -pScr->modes->VDisplay)/2;
!       pScr->frameY1 = pScr->frameY0 + pScr->modes->VDisplay - 1;
  
        if (pScr->frameY0 < 0)
  	{
  	  pScr->frameY0 = 0;
! 	  pScr->frameY1 = pScr->frameY0 + pScr->modes->VDisplay - 1;
  	}
        else if (pScr->frameY1 >= pScr->virtualY)
  	{
! 	  pScr->frameY0 = pScr->virtualY - pScr->modes->VDisplay;
! 	  pScr->frameY1 = pScr->frameY0 + pScr->modes->VDisplay - 1;
  	}
      }
  
--- 201,226 ----
  	  pScr->frameX1 = pScr->frameX0 + pScr->modes->HDisplay - 1;
  	}
        
!       /* correct for Interlace mode using half the VDisplay */
!       RealVDisplay = pScr->modes->VDisplay; 
!       if (  ((pScr->modes->Flags & V_INTERLACE)!= 0) && 
!             ((pScr->modes->Flags & V_INTERLACE_INTERNAL)!=0) 
!          ) {
!         RealVDisplay *= 2; /* VDisplay was only half of real vertical disp. */
!       }
! 
!       pScr->frameY0 = (pScr->frameY1 + pScr->frameY0 - RealVDisplay)/2;
!       pScr->frameY1 = pScr->frameY0 + RealVDisplay - 1;
  
        if (pScr->frameY0 < 0)
  	{
  	  pScr->frameY0 = 0;
! 	  pScr->frameY1 = pScr->frameY0 + RealVDisplay - 1;
  	}
        else if (pScr->frameY1 >= pScr->virtualY)
  	{
! 	  pScr->frameY0 = pScr->virtualY - RealVDisplay;
! 	  pScr->frameY1 = pScr->frameY0 + RealVDisplay - 1;
  	}
      }
  
