*** ibm8514im.c.V	Sun Dec 13 15:06:33 1992
--- ibm8514im.c	Thu Feb 25 15:52:21 1993
***************
*** 95,101 ****
  #define VGABANKSIZE 0x10000 /* 64k */
  static char old_bank = -1;
  
! #define   VGA256INFOREC_HOLDS_VGAWIDTH 
  #ifdef   VGA256INFOREC_HOLDS_VGAWIDTH
  #define VGAWIDTH (vga256InfoRec.virtualX)
  
--- 95,101 ----
  #define VGABANKSIZE 0x10000 /* 64k */
  static char old_bank = -1;
  
! #undef   VGA256INFOREC_HOLDS_VGAWIDTH 
  #ifdef   VGA256INFOREC_HOLDS_VGAWIDTH
  #define VGAWIDTH (vga256InfoRec.virtualX)
  
***************
*** 132,138 ****
  
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (chip_id == S3_801) {
       int i;
  
       
--- 132,138 ----
  
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (S3_801_928_SERIES(chip_id)) {
       int i;
  
       
***************
*** 187,193 ****
      }
      old_bank = bank;
  
!    if (chip_id == S3_801) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
--- 187,193 ----
      }
      old_bank = bank;
  
!    if (S3_801_928_SERIES(chip_id)) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
***************
*** 226,232 ****
      WaitQueue(8);
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (chip_id == S3_801) {
       int i;
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
--- 226,232 ----
      WaitQueue(8);
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (S3_801_928_SERIES(chip_id)) {
       int i;
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
***************
*** 277,283 ****
  	memcpy(psrc, &videobuffer[offset], w);
      }
      old_bank = bank;
!    if (chip_id == S3_801) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
--- 277,283 ----
  	memcpy(psrc, &videobuffer[offset], w);
      }
      old_bank = bank;
!    if (S3_801_928_SERIES(chip_id)) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
***************
*** 321,327 ****
      modulus(x-pox,pw,xpix0);
      cxpix = pw - xpix0;
  
!     modulus(y+poy,ph,ypix);
      pline  = psrc + pwidth*ypix;
  
      offset0  = (y * VGAWIDTH) + x;
--- 321,327 ----
      modulus(x-pox,pw,xpix0);
      cxpix = pw - xpix0;
  
!     modulus(y-poy,ph,ypix);
      pline  = psrc + pwidth*ypix;
  
      offset0  = (y * VGAWIDTH) + x;
***************
*** 329,335 ****
      offset0 %= VGABANKSIZE;
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (chip_id == S3_801) {
       int i;
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
--- 329,335 ----
      offset0 %= VGABANKSIZE;
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (S3_801_928_SERIES(chip_id)) {
       int i;
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
***************
*** 432,438 ****
      }
      old_bank = bank;
  
!    if (chip_id == S3_801) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
--- 432,438 ----
      }
      old_bank = bank;
  
!    if (S3_801_928_SERIES(chip_id)) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
***************
*** 473,479 ****
      outpw(WRT_MASK, planemask);
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (chip_id == S3_801) {
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
       crt40 = inp(0x3d5);
--- 473,479 ----
      outpw(WRT_MASK, planemask);
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (S3_801_928_SERIES(chip_id)) {
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
       crt40 = inp(0x3d5);
***************
*** 517,523 ****
      }
      old_bank = bank;
  
!    if (chip_id == S3_801) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
--- 517,523 ----
      }
      old_bank = bank;
  
!    if (S3_801_928_SERIES(chip_id)) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
***************
*** 554,560 ****
      WaitIdleEmpty();
      outpw(FRGD_MIX, FSS_PCDATA | MIX_SRC);
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (chip_id == S3_801) {
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
       crt40 = inp(0x3d5);
--- 554,560 ----
      WaitIdleEmpty();
      outpw(FRGD_MIX, FSS_PCDATA | MIX_SRC);
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (S3_801_928_SERIES(chip_id)) {
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
       crt40 = inp(0x3d5);
***************
*** 593,599 ****
      }
      old_bank = bank;
  
!    if (chip_id == S3_801) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
--- 593,599 ----
      }
      old_bank = bank;
  
!    if (S3_801_928_SERIES(chip_id)) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
***************
*** 634,640 ****
      outpw(WRT_MASK, planemask);
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (chip_id == S3_801) {
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
       crt40 = inp(0x3d5);
--- 634,640 ----
      outpw(WRT_MASK, planemask);
  
     while ((inpw(0x9ae8) & 0x200) != 0); 
!    if (S3_801_928_SERIES(chip_id)) {
       /* begin 801 sequence for going in to linear mode */
       outp(0x3d4, 0x40);
       crt40 = inp(0x3d5);
***************
*** 654,660 ****
      modulus(x-pox,pw,xpix);
      cxpix = pw - xpix;
  
!     modulus(y+poy,ph,ypix);
      pline  = psrc + pwidth*ypix;
  
      offset0  = (y * VGAWIDTH) + x;
--- 654,660 ----
      modulus(x-pox,pw,xpix);
      cxpix = pw - xpix;
  
!     modulus(y-poy,ph,ypix);
      pline  = psrc + pwidth*ypix;
  
      offset0  = (y * VGAWIDTH) + x;
***************
*** 695,701 ****
  	    pline += pwidth;
      }
      old_bank = bank;
!    if (chip_id == S3_801) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
--- 695,701 ----
  	    pline += pwidth;
      }
      old_bank = bank;
!    if (S3_801_928_SERIES(chip_id)) {
     /* begin 801  sequence to go into enhanced mode */
     outp(0x3d4, 0x53);
     outp(0x3d5, 0);
