[comp.sources.x] v09i097: patches for X11R4 for SCO UNIX, Part11/12

jimke@uunet.uu.net (10/12/90)

Submitted-by: microsoft!jimke@uunet.uu.net
Posting-number: Volume 9, Issue 97
Archive-name: sco.patches/part11

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 11 (of 12)."
# Contents:  fix-14.sco11
# Wrapped by jimke@kellman on Sat Oct  6 17:13:35 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'fix-14.sco11' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fix-14.sco11'\"
else
echo shar: Extracting \"'fix-14.sco11'\" \(39005 characters\)
sed "s/^X//" >'fix-14.sco11' <<'END_OF_FILE'
X*** ./mit-orig/server/ddx/ibm/vga/vgaOSD.c	Thu Oct  4 16:51:11 1990
X--- ./mit/server/ddx/ibm/vga/vgaOSD.c	Wed Oct  3 18:33:47 1990
X***************
X*** 20,42 ****
X  SOFTWARE.
X  
X  ******************************************************************/
X- /* $Header: /andrew/X11/r3src/r3plus/server/ddx/ibm/vga/RCS/vgaOSD.c,v 6.7 89/08/13 22:25:39 jeff Exp $ */
X- /* $Source: /andrew/X11/r3src/r3plus/server/ddx/ibm/vga/RCS/vgaOSD.c,v $ */
X- 
X- #ifndef lint
X- static char *rcsid = "$Header: /andrew/X11/r3src/r3plus/server/ddx/ibm/vga/RCS/vgaOSD.c,v 6.7 89/08/13 22:25:39 jeff Exp $";
X- #endif
X- 
X- #ifdef BSDrt
X- #include <sys/file.h>
X- #include <machinecons/buf_emul.h>
X- #else
X- #if defined(AIX386)
X  #include <sys/fcntl.h>
X  #include <sys/ioctl.h>
X  #else
X! 	******** ERROR ********
X! #endif
X  #endif
X  
X  #include "X.h"
X--- 20,36 ----
X  SOFTWARE.
X  
X  ******************************************************************/
X  #include <sys/fcntl.h>
X  #include <sys/ioctl.h>
X+ #include <sys/types.h>
X+ #ifdef sco
X+ #define C_IOC ('X' << 8)
X+ #define MAP_CLASS (C_IOC | 1)
X+ #include <sys/vtkd.h>
X  #else
X! #include <sys/at_ansi.h>
X! #include <sys/kd.h>
X! #include <sys/vt.h>
X  #endif
X  
X  #include "X.h"
X***************
X*** 43,224 ****
X  #include "miscstruct.h"
X  #include "scrnintstr.h"
X  #include "cursorstr.h"
X! 
X  #include "OScompiler.h"
X  
X  #include "ibmScreen.h"
X  
X  #include "vgaVideo.h"
X  #include "vgaSave.h"
X! 
X! #if defined(BSDrt)
X! #if !defined(IBM_OS_HAS_X_QUEUE)
X! #define IBM_OS_HAS_X_QUEUE 1
X! #endif
X! #else
X! #if defined(AIX386)
X! #include "ibmXhftMap.h"
X! #endif
X! #endif
X! 
X! #if defined(IBM_OS_HAS_X_QUEUE)
X! #include <sys/ioctl.h>
X! #endif
X! 
X! #if defined(IBM_OS_HAS_X_QUEUE) || defined(BSDrt)
X! #define USE_SLASH_DEV_FILES 1
X! #else
X! #define USE_SLASH_DEV_FILES 0
X! #endif
X  
X! /* Global Variables */
X! int vgaDisplayTubeType = 0 ;
X  
X! int vgaCheckDisplay( fd )
X! register int fd ; /* Device File Decriptor */
X! {
X! #if defined(BSDrt)
X! static unsigned long int infoword ;
X  
X! return ( ioctl( fd, BUFDISPINFO, &infoword ) < 0 ) ? -1 : ( infoword & 3 ) ;
X! #else
X  
X! return COLOR_TUBE ; /* THIS IS CERTAINLY WRONG !! */
X  
X! #endif
X! }
X  
X! static int vga_file_desc = -1 ; /* Set IFF open on VGA_DEV_FILE succeedes */
X  
X! #if defined(IBM_OS_HAS_HFT)
X! extern int ibm8514FD;
X! #endif
X  
X  int
X  vgaProbe()
X  {
X! register int fd ;
X! 
X! #if USE_SLASH_DEV_FILES
X!     if ( ( fd = open( VGA_DEV_FILE, O_RDWR | O_NDELAY ) ) >= 0 ) {
X! #if defined(i386) && defined(IBM_OS_HAS_X_QUEUE)
X! 	/* Set the display to BIOS mode 0x12 -- AIX386 mode 0x1C */
X! 	if ( ioctl( fd, EGAMODE, 0x1C ) < 0 ) {
X! 	    ErrorF( "vgaProbe: vgaioctl, set ega mode\n" ) ;
X! 	    (void) close( fd ) ;
X! 	    return -1 ;
X! 	}
X! 	/* Map the display buffer into user space */
X! 	if ( SCREEN_ADDR != ioctl( fd, MAPCONS, 0 ) ) {
X! 	    ErrorF(
X! 		"vgaProbe: vgaioctl, vga map video memory address wrong\n" ) ;
X! 	    (void) close( fd ) ;
X! 	    return -1 ;
X! 	}
X! #endif /* defined(i386) && defined(IBM_OS_HAS_X_QUEUE) */
X! 	vga_file_desc = fd ;
X!     }
X!     else /* Open of device file failed */
X! #endif /* USE_SLASH_DEV_FILES */
X! #if defined(IBM_OS_HAS_HFT)
X!     {
X! 	if ( ibm8514FD != -1 )
X! 	    fd = ibm8514FD;
X! 	else if ( ( fd = hftProbe( VGAxHFTid ) ) < 0 )
X! 	    return fd ;
X!     }
X! #else /* No hft and initial devFile open failed */
X!     {
X! 	ErrorF( "vgaProbe: Failed to open %s\n", VGA_DEV_FILE ) ;
X! 	return -1 ;
X!     }
X! #endif /* defined(IBM_OS_HAS_HFT) */
X! 
X!     if ( ( vgaDisplayTubeType = vgaCheckDisplay( fd ) ) <= 0 ) {
X! 	(void) close( fd ) ;
X! 	return -1 ;
X!     }
X      ibmInfoMsg( ( vgaDisplayTubeType == COLOR_TUBE )
X!       ? "Found a vga with color display.\n" : 
X  	"Found a vga with gray scale display.\n" ) ;
X! 
X!     return fd ;
X! }
X! 
X! #if !defined(DOS) && !defined(AIX)
X! static void
X! unix_vga_init()
X! {
X! register int fd ;
X! #if defined(BSDrt) && defined(ATRIO)
X! static const int mode = (int) MODE_124 ;
X! static unsigned page = SCREEN_ADDR ;
X! 
X! extern void exit() ;
X! #endif
X! 
X! extern int ioctl() ;
X! 
X! /* Open Device File */
X! if ( ( fd = vga_file_desc ) < 0 ) {
X! 	ErrorF( "unix_vga_init: vga file descriptor invalid, exiting...\n" ) ;
X! 	exit( 1 ) ;
X  }
X  
X- #if defined(BSDrt) && defined(ATRIO)
X- 
X- /* Set 128k window to point to vga display buffer */
X- if ( ioctl( fd, BUFSETWIND, &page ) < 0 )
X- 	ErrorF( "unix_vga_init: vgaioctl, set window\n" ) ;
X- /* Set The Display Mode To Avoid Confusing The BIOS Later */
X- if ( ioctl( fd, BUFINITVGA, &mode ) < 0 )
X- 	ErrorF( "unix_vga_init: vgaioctl, vga init\n" ) ;
X- #endif
X- 
X- return ;
X- }
X- 
X- #endif
X- 
X- extern void save_vga_state() ;
X- extern void restore_vga_state() ;
X- extern void save_dac() ;
X- extern void restore_dac() ;
X- extern void set_graphics_mode() ;
X- 
X- /* Video State On Program Entry */
X- static struct vga_video_hardware_state VS_Start ;
X- static DAC_TABLE init_dac_table ;
X- 
X  int
X  vgaScreenInitHW( index )
X  register int index ;
X  {
X! static char been_here = 0 ;
X  
X! if ( !been_here ) {
X! #if !defined(DOS) && !defined(AIX)
X! 	unix_vga_init() ;
X! #endif
X! 	/* Save Extant Video State & Setup For Graphics */
X! 	save_vga_state( &VS_Start ) ;
X! 	save_dac( init_dac_table ) ;
X! 	been_here = 1 ;
X! }
X! /* If The Display Is Turned Off Or Changed It Should Take Effect Now */
X! if ( ( vgaDisplayTubeType = vgaCheckDisplay( vga_file_desc ) ) > 0 ) {
X! 	if ( !( vgaDisabled & PhysicalVgaAccessDisabled ) )
X! 		set_graphics_mode( &VS_Start ) ;
X! 	else
X! 		vgaDisabled = ( vgaDisabled & ~ VirtualVgaHardwareClosePending )
X! 			    | VirtualVgaHardwareOpenPending ;
X! 	return 1 ; /* SUCCESS !! */
X! }
X! else {
X! 	ErrorF( "Headless vga!\n Check monitor cables!\n" ) ;
X! 	return 0 ; /* Error Condition -- FAILURE !! */
X! }
X! /*NOTREACHED*/
X  }
X  
X  /*ARGSUSED*/
X--- 37,233 ----
X  #include "miscstruct.h"
X  #include "scrnintstr.h"
X  #include "cursorstr.h"
X! #include "pixmapstr.h"
X  #include "OScompiler.h"
X+ #include "OSio.h"
X  
X  #include "ibmScreen.h"
X  
X  #include "vgaVideo.h"
X  #include "vgaSave.h"
X! #include "ppc.h"
X! #include "vgaProcs.h"
X  
X! struct vga_video_hardware_state VS640x480 = {
X!   0xE3, 0x00, 0x00, 0x00, 0x01,                    /* general registers */
X!   0x00, {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 },  /* attribute registers */
X!   0x81, 0x00, 0x0F, 0x00, 0x00,
X!   0x00,                                            /* crt registers */
X!   0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0x0B, 0x3E,
X!   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X!   0xEA, 0x8C, 0xDF, 0x28, 0x00, 0xE7, 0x04, 0xE3,
X!   0xFF,
X!   0x00, 0x02, 0x01, 0x0F, 0x00, 0x06,              /* sequencer registers */
X!   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05,  /* graphics registers */
X!   0x0F, 0xFF,
X!   0x00, 0x00, 0x00, 0x00, 0xFF                     /* dac registers */
X! };
X! struct vga_video_hardware_state VS800x600 = {
X!   0xEF, 0x00, 0x00, 0x00, 0x01,                    /* general registers */
X!   0x00, {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 },  /* attribute registers */
X!   0x81, 0x00, 0x0F, 0x00, 0x00,
X!   0x00,                                            /* crt registers */
X!   0x85, 0x6B, 0x6E, 0x04, 0x72, 0x19, 0x78, 0xF0,
X!   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X!   0x5F, 0x80, 0x5C, 0x36, 0x00, 0x62, 0x72, 0xC3,
X!   0xFF,
X!   0x00, 0x02, 0x01, 0x0F, 0x00, 0x06,              /* sequencer registers */
X!   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05,  /* graphics registers */
X!   0x0F, 0xFF,
X!   0x00, 0x00, 0x00, 0x00, 0xFF                     /* dac registers */
X! };
X! struct vga_video_hardware_state VS1024x768 = {
X!   0xE7, 0x00, 0x00, 0x00, 0x01,                    /* general registers */
X!   0x00, {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 },  /* attribute registers */
X!   0x81, 0x00, 0x0F, 0x00, 0x00,
X!   0x00,                                            /* crt registers */
X!   0x69, 0x59, 0x5A, 0x8A, 0x5C, 0x88, 0x4F, 0xF0,
X!   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X!   0x20, 0x8C, 0x1B, 0x2D, 0x00, 0x23, 0x02, 0xE3,
X!   0xFF,
X!   0x00, 0x02, 0x01, 0x0F, 0x00, 0x06,              /* sequencer registers */
X!   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05,  /* graphics registers */
X!   0x0F, 0xFF,
X!   0x00, 0x00, 0x00, 0x00, 0xFF                     /* dac registers */
X! };
X! struct vgaModeRec {
X!   char *                             resName;
X!   BoxRec                             dimensions;
X!   int                                bytes_per_row, max_row;
X!   struct vga_video_hardware_state *  VS;
X!   void                               (* SpecialGraphicsEnter)();
X!   void                               (* SpecialGraphicsLeave)();
X! };
X  
X! /* Video State On Program Entry */
X! static struct vga_video_hardware_state VS_Start ;
X! static DAC_TABLE init_dac_table ;
X  
X! extern void save_vga_state() ;
X! extern void restore_vga_state() ;
X! extern void save_dac() ;
X! extern void restore_dac() ;
X! extern void set_text_mode() ;
X! extern void set_graphics_mode() ;
X  
X! extern void set_graphics_mode_640_480() ;
X! extern void set_graphics_mode_800_600() ;
X! extern void set_graphics_mode_1024_768() ;
X  
X! struct vgaModeRec vgaModeTab[] = {
X!   { "640x480", {0, 0, 639, 479},  80, 479, &VS640x480,
X! 	set_graphics_mode_640_480,
X! 	NoopDDA },
X!   { "800x600v7", {0, 0, 799, 599},  100, 599, &VS800x600,
X! 	set_graphics_mode_800_600,
X! 	set_text_mode },
X!   { "1024x768v7", {0, 0, 1023, 767}, 128, 767, &VS1024x768,
X! 	set_graphics_mode_1024_768,
X!         set_text_mode },
X! };
X  
X! #define NUMMODES sizeof(vgaModeTab) / sizeof(struct vgaModeRec)
X  
X! int BYTES_PER_ROW, MAX_ROW, MAX_COLUMN, MAX_OFFSCREEN_ROW,CURSOR_BUFFER;
X! int vgaDisplayTubeType = 0 ;
X! struct vgaModeRec * vgaDefaultMode = &(vgaModeTab[0]);
X  
X  int
X  vgaProbe()
X  {
X!   extern ibmPerScreenInfo vgaScreenInfoStruct;
X!   extern ppcScrnPriv vgaScrnPriv;
X!   extern ScreenRec vgaScreenRec;
X!   int i;
X!   
X!   /*
X!    * select a video mode for the vga card
X!    */
X!   for (i=0; i < NUMMODES; i++)
X!     if (strcmp(SYSVresolution,vgaModeTab[i]) == 0)
X!       vgaDefaultMode = &(vgaModeTab[i]);
X!   /*
X!    * patch the original structures
X!    */
X!   BYTES_PER_ROW = vgaDefaultMode->bytes_per_row;
X!   MAX_ROW       = vgaDefaultMode->max_row;
X!   MAX_COLUMN    = BYTES_PER_ROW * PIX_PER_BYTE -1;
X!   CURSOR_BUFFER = 64*1024 - (32*32)/8;
X!   vgaScreenInfoStruct.ibm_ScreenBounds = vgaDefaultMode->dimensions;
X!   vgaScrnPriv.pixmap.drawable.width = MAX_COLUMN + 1;
X!   vgaScrnPriv.pixmap.drawable.height = MAX_ROW + 1;
X!   vgaScrnPriv.pixmap.devKind = (MAX_ROW + 1) / 8;
X!   vgaScreenRec.width = MAX_COLUMN + 1;
X!   vgaScreenRec.height = MAX_ROW + 1;
X!   
X!   vgaDisplayTubeType = COLOR_TUBE;
X      ibmInfoMsg( ( vgaDisplayTubeType == COLOR_TUBE )
X!       ? "Found a vga with color display.\n" :
X  	"Found a vga with gray scale display.\n" ) ;
X!   return 0;
X  }
X  
X  int
X  vgaScreenInitHW( index )
X  register int index ;
X  {
X!   static char been_here = 0 ;
X  
X!   if ( !been_here ) {
X!     extern int SYSVconsoleFd;
X!     struct vt_mode vgaVT;
X! 
X!     ioctl(SYSVconsoleFd, VT_GETMODE, &vgaVT);
X!     vgaVT.mode = VT_PROCESS;
X!     ioctl(SYSVconsoleFd, VT_SETMODE, &vgaVT);
X!     ioctl(SYSVconsoleFd, KDSETMODE, KD_GRAPHICS);
X! 
X! #ifdef sco
X!      /*
X!       * This is an ioctl to the vid driver (I found it in the 3.2v2.0
X!       * release notes) which searches the video class list from
X!       * /etc/conf/pack.d/cn/class.h for physical addresses and sizes.
X!       * It will enable I/O ports for the class, map the adapter memory
X!       * to virtual mem and return that address.
X!       */
X!     if ((vgaBASE = ioctl(SYSVconsoleFd, MAP_CLASS, "SVGA")) == -1)
X! 	ErrorF("MAP_CLASS(%08x)\n", vgaBASE);
X! 
X!     /*
X!      * Also need to set IO priviledges for a few more ports.
X!      */
X!     ioctl(SYSVconsoleFd, KDENABIO, 0);
X! #else
X!     struct kd_memloc vgaDSC;
X! 
X!     vgaBASE = (int)malloc(0x21000);
X!     if ((unsigned int)vgaBASE & 0xFFF) {
X!       vgaBASE = (int)(((unsigned int)vgaBASE & 0xFFFFF000)
X! 				  + 0x1000);
X!     }
X!     vgaDSC.vaddr    = (char *)vgaBASE;
X!     vgaDSC.physaddr = (char *)0xA0000;
X!     vgaDSC.length   = 0x20000;
X!     vgaDSC.ioflg    = 1;
X!     ioctl(SYSVconsoleFd, KDMAPDISP, &vgaDSC);
X! #endif
X!     /* Save Extant Video State & Setup For Graphics */
X!     save_vga_state( &VS_Start ) ;
X!     save_dac( init_dac_table ) ;
X!     been_here = 1 ;
X!     CURSOR_BUFFER += (unsigned int) vgaBASE;
X!   }
X!   /* If The Display Is Turned Off Or Changed It Should Take Effect Now */
X!   if ( !( vgaDisabled & PhysicalVgaAccessDisabled ) ) {
X!     (* (vgaDefaultMode->SpecialGraphicsEnter))();
X! /*
X!     restore_vga_state( vgaDefaultMode->VS);
X! */
X!   }
X!   else
X!     vgaDisabled = ( vgaDisabled & ~ VirtualVgaHardwareClosePending )
X!       | VirtualVgaHardwareOpenPending ;
X!   return 1 ; /* SUCCESS !! */
X  }
X  
X  /*ARGSUSED*/
X***************
X*** 227,244 ****
X  register int index ;
X  {
X  if ( !( vgaDisabled & PhysicalVgaAccessDisabled ) ) {
X! #if defined(i386) && !defined(DOS)
X! 	/* Set the display to BIOS mode 0x7 -- AIX386 mode 0x3 */
X! 	if ( ( vga_file_desc >= 0 )
X! 	  && ( ioctl( vga_file_desc, EGAMODE, 0x3 ) < 0 ) )
X! 		ErrorF( "vgaCloseHW: vgaioctl, set ega mode\n" ) ;
X! #endif
X! 	restore_dac( init_dac_table ) ;
X! 	restore_vga_state( &VS_Start ) ;
X  }
X  else
X! 	vgaDisabled = ( vgaDisabled & ~ VirtualVgaHardwareOpenPending )
X! 		    | VirtualVgaHardwareClosePending ;
X  
X  return ;
X  }
X--- 236,256 ----
X  register int index ;
X  {
X  if ( !( vgaDisabled & PhysicalVgaAccessDisabled ) ) {
X!     extern int SYSVconsoleFd;
X!     struct vt_mode vgaVT;
X! extern int errno;
X! 
X!   restore_dac( init_dac_table ) ;
X!   restore_vga_state( &VS_Start ) ;
X!   (*(vgaDefaultMode->SpecialGraphicsLeave))();
X!     ioctl(SYSVconsoleFd, VT_GETMODE, &vgaVT);
X!     vgaVT.mode = VT_AUTO;
X!     ioctl(SYSVconsoleFd, VT_SETMODE, &vgaVT);
X!     ioctl(SYSVconsoleFd, KDSETMODE, KD_TEXT0);
X  }
X  else
X!   vgaDisabled = ( vgaDisabled & ~ VirtualVgaHardwareOpenPending )
X!     | VirtualVgaHardwareClosePending ;
X  
X  return ;
X  }
X*** ./mit-orig/server/ddx/ibm/vga/vgaProcs.h	Thu Oct  4 16:51:07 1990
X--- ./mit/server/ddx/ibm/vga/vgaProcs.h	Sun Sep 16 22:14:12 1990
X***************
X*** 69,88 ****
X  	const CursorPtr pCurs ) ;
X  
X  /* vgaHWCntl.o */
X! extern void save_vga_state(
X! 	struct vga_video_hardware_state *VS ) ;
X  
X- extern void restore_vga_state(
X- 	struct vga_video_hardware_state const *VS ) ;
X- 
X  extern void vgaSetColor(
X  	unsigned long int color,
X  	unsigned short int r,
X  	unsigned short int g,
X  	unsigned short int b ) ;
X- 
X- extern void set_graphics_mode(
X- 	struct vga_video_hardware_state *VS ) ;
X  
X  extern Bool vgaScreenClose(
X  	const int index,
X--- 69,82 ----
X  	const CursorPtr pCurs ) ;
X  
X  /* vgaHWCntl.o */
X! extern void save_vga_state();
X! extern void restore_vga_state();
X  
X  extern void vgaSetColor(
X  	unsigned long int color,
X  	unsigned short int r,
X  	unsigned short int g,
X  	unsigned short int b ) ;
X  
X  extern Bool vgaScreenClose(
X  	const int index,
X*** ./mit-orig/server/ddx/ibm/vga/vgaReg.h	Thu Oct  4 16:51:07 1990
X--- ./mit/server/ddx/ibm/vga/vgaReg.h	Sun Sep 16 22:14:13 1990
X***************
X*** 72,82 ****
X  #define AttributeDataWriteRegister	REGBASE + 0xC0
X  #define AttributeDataReadRegister	REGBASE + 0xC1
X  #define AttributeRegister		AttributeIndexRegister
X! #define AttributeModeIndex		0x30
X! #define OverScanColorIndex		0x31
X! #define ColorPlaneEnableIndex		0x32
X! #define HorizPelPanIndex		0x33
X! #define ColorSelectIndex		0x34
X  #define SetVideoAttributeIndex( index ) \
X  	SET_INDEX_REGISTER( AttributeIndexRegister, index )
X  #define SetVideoAttribute( index, value ) \
X--- 72,82 ----
X  #define AttributeDataWriteRegister	REGBASE + 0xC0
X  #define AttributeDataReadRegister	REGBASE + 0xC1
X  #define AttributeRegister		AttributeIndexRegister
X! #define AttributeModeIndex		0x10
X! #define OverScanColorIndex		0x11
X! #define ColorPlaneEnableIndex		0x12
X! #define HorizPelPanIndex		0x13
X! #define ColorSelectIndex		0x14
X  #define SetVideoAttributeIndex( index ) \
X  	SET_INDEX_REGISTER( AttributeIndexRegister, index )
X  #define SetVideoAttribute( index, value ) \
X*** ./mit-orig/server/ddx/ibm/vga/vgaSld.386.s	Thu Oct  4 18:02:27 1990
X--- ./mit/server/ddx/ibm/vga/vgaSld.386.s	Mon Sep 17 16:55:38 1990
X***************
X*** 0 ****
X--- 1,261 ----
X+ 	.file	"vgaSolid.386.s"
X+ 	.text
X+ 	.align 4
X+ 	.globl fastFill
X+ fastFill:
X+ 	pushl %ebp
X+ 	movl %esp,%ebp
X+ 	pushl %edi
X+ 	pushl %esi
X+ 	pushl %ebx
X+ 	movl 8(%ebp),%edi
X+ 	movl 12(%ebp),%edx
X+ 	movl 16(%ebp),%ebx
X+ 	movl BYTES_PER_ROW,%esi
X+ 	movl %edx,%eax
X+ 	andl $3,%eax
X+ 	subl %eax,%esi
X+ 	andl $0x7C,%edx
X+ .fastFill0:
X+ 	test $1,%eax
X+ 	jz .fastFill1
X+ 	movb $0xFF,(%edi)
X+ 	incl %edi
X+ .fastFill1:
X+ 	test $2,%eax
X+ 	jz .fastFill2
X+ 	movw $0xFFFF,(%edi)
X+ 	addl $2,%edi
X+ 
X+ .fastFill2:
X+ 	jmp *.fastFill3(%edx)
X+  	.align 4
X+ .fastFill3:
X+ 	.long .fastFill35
X+ 	.long .fastFill34
X+ 	.long .fastFill33
X+ 	.long .fastFill32
X+ 	.long .fastFill31
X+ 	.long .fastFill30
X+ 	.long .fastFill29
X+ 	.long .fastFill28
X+ 	.long .fastFill27
X+ 	.long .fastFill26
X+ 	.long .fastFill25
X+ 	.long .fastFill24
X+ 	.long .fastFill23
X+ 	.long .fastFill22
X+ 	.long .fastFill21
X+ 	.long .fastFill20
X+ 	.long .fastFill19
X+ 	.long .fastFill18
X+ 	.long .fastFill17
X+ 	.long .fastFill16
X+ 	.long .fastFill15
X+ 	.long .fastFill14
X+ 	.long .fastFill13
X+ 	.long .fastFill12
X+ 	.long .fastFill11
X+ 	.long .fastFill10
X+ 	.long .fastFill9
X+ 	.long .fastFill8
X+ 	.long .fastFill7
X+ 	.long .fastFill6
X+ 	.long .fastFill5
X+ 	.long .fastFill4
X+ 
X+ .fastFill4:
X+ 	movl $0xFFFFFFFF,124(%edi)
X+ .fastFill5:
X+ 	movl $0xFFFFFFFF,120(%edi)
X+ .fastFill6:
X+ 	movl $0xFFFFFFFF,112(%edi)
X+ .fastFill7:
X+ 	movl $0xFFFFFFFF,108(%edi)
X+ .fastFill8:
X+ 	movl $0xFFFFFFFF,104(%edi)
X+ .fastFill9:
X+ 	movl $0xFFFFFFFF,100(%edi)
X+ .fastFill10:
X+ 	movl $0xFFFFFFFF,96(%edi)
X+ .fastFill11:
X+ 	movl $0xFFFFFFFF,92(%edi)
X+ .fastFill12:
X+ 	movl $0xFFFFFFFF,88(%edi)
X+ .fastFill13:
X+ 	movl $0xFFFFFFFF,84(%edi)
X+ .fastFill14:
X+ 	movl $0xFFFFFFFF,80(%edi)
X+ .fastFill15:
X+ 	movl $0xFFFFFFFF,76(%edi)
X+ .fastFill16:
X+ 	movl $0xFFFFFFFF,72(%edi)
X+ .fastFill17:
X+ 	movl $0xFFFFFFFF,68(%edi)
X+ .fastFill18:
X+ 	movl $0xFFFFFFFF,64(%edi)
X+ .fastFill19:
X+ 	movl $0xFFFFFFFF,60(%edi)
X+ .fastFill20:
X+ 	movl $0xFFFFFFFF,56(%edi)
X+ .fastFill21:
X+ 	movl $0xFFFFFFFF,52(%edi)
X+ .fastFill22:
X+ 	movl $0xFFFFFFFF,48(%edi)
X+ .fastFill23:
X+ 	movl $0xFFFFFFFF,44(%edi)
X+ .fastFill24:
X+ 	movl $0xFFFFFFFF,40(%edi)
X+ .fastFill25:
X+ 	movl $0xFFFFFFFF,36(%edi)
X+ .fastFill26:
X+ 	movl $0xFFFFFFFF,32(%edi)
X+ .fastFill27:
X+ 	movl $0xFFFFFFFF,28(%edi)
X+ .fastFill28:
X+ 	movl $0xFFFFFFFF,24(%edi)
X+ .fastFill29:
X+ 	movl $0xFFFFFFFF,20(%edi)
X+ .fastFill30:
X+ 	movl $0xFFFFFFFF,16(%edi)
X+ .fastFill31:
X+ 	movl $0xFFFFFFFF,12(%edi)
X+ .fastFill32:
X+ 	movl $0xFFFFFFFF,8(%edi)
X+ .fastFill33:
X+ 	movl $0xFFFFFFFF,4(%edi)
X+ .fastFill34:
X+ 	movl $0xFFFFFFFF,0(%edi)
X+ .fastFill35:
X+ 
X+ 	addl %esi,%edi
X+ 	decl %ebx
X+ 	jnz .fastFill0
X+ 
X+ 	leal -12(%ebp),%esp
X+ 	popl %ebx
X+ 	popl %esi
X+ 	popl %edi
X+ 	leave
X+ 	ret
X+ 
X+ 
X+ 	.text
X+ 	.align 4
X+ 	.globl fastFillRMW
X+ fastFillRMW:
X+ 	pushl %ebp
X+ 	movl %esp,%ebp
X+ 	pushl %edi
X+ 	pushl %esi
X+ 	pushl %ebx
X+ 	movl 8(%ebp),%edi
X+ 	movl 12(%ebp),%edx
X+ 	movl 16(%ebp),%ebx
X+ 	movl BYTES_PER_ROW,%esi
X+ 	subl %edx,%esi
X+ 
X+ 	cld
X+ 	leal (%edi,%edx),%ecx
X+ 	andl $15,%edx
X+ 
X+ 	jmp *.fastFillRMW1(,%edx,4)
X+ 
X+ 	.align 4
X+ .fastFillRMW1:
X+ 	.long .fastFillRMW2
X+ 	.long .fastFillRMW17
X+ 	.long .fastFillRMW16
X+ 	.long .fastFillRMW15
X+ 	.long .fastFillRMW14
X+ 	.long .fastFillRMW13
X+ 	.long .fastFillRMW12
X+ 	.long .fastFillRMW11
X+ 	.long .fastFillRMW10
X+ 	.long .fastFillRMW9
X+ 	.long .fastFillRMW8
X+ 	.long .fastFillRMW7
X+ 	.long .fastFillRMW6
X+ 	.long .fastFillRMW5
X+ 	.long .fastFillRMW4
X+ 	.long .fastFillRMW3
X+ .fastFillRMW2:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW3:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW4:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW5:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW6:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW7:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW8:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW9:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW10:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW11:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW12:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW13:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW14:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW15:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW16:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ .fastFillRMW17:
X+ 	movb (%edi),%ah
X+ 	movb $255,(%edi)
X+ 	incl %edi
X+ 
X+ 	cmpl %edi,%ecx
X+ 	jne .fastFillRMW2
X+ 	decl %ebx
X+ 	je .fastFillRMW18
X+ 	leal (%esi,%edi),%edi
X+ 	addl BYTES_PER_ROW,%ecx
X+ 	jmp *.fastFillRMW1(,%edx,4)
X+ 
X+ .fastFillRMW18:
X+ 	leal -12(%ebp),%esp
X+ 	popl %ebx
X+ 	popl %esi
X+ 	popl %edi
X+ 	leave
X+ 	ret
X*** ./mit-orig/server/ddx/ibm/vga/vgaSolid.c	Thu Oct  4 16:51:10 1990
X--- ./mit/server/ddx/ibm/vga/vgaSolid.c	Sun Sep 16 22:14:13 1990
X***************
X*** 69,74 ****
X--- 69,78 ----
X  extern int vgaCheckCursor() ;
X  extern void vgaReplaceCursor() ;
X  
X+ #ifdef USE_ASM
X+ extern void fastFill();
X+ extern void fastFillRMW();
X+ #else
X  static void fastFill( destination, bytewidth, height )
X  register volatile unsigned char *destination ;
X  register const unsigned int bytewidth ;	/* MUST BE > 0 !! */
X***************
X*** 177,182 ****
X--- 181,187 ----
X  #undef SINGLE_STORE
X  /*NOTREACHED*/
X  }
X+ #endif
X  
X  void vgaFillSolid( color, alu, planes, x0, y0, lx, ly )
X  unsigned long int color ;
X*** ./mit-orig/server/ddx/ibm/vga/vgaTile.c	Thu Oct  4 16:51:09 1990
X--- ./mit/server/ddx/ibm/vga/vgaTile.c	Sun Sep 16 22:14:13 1990
X***************
X*** 43,72 ****
X  
X  ******************************************************************/
X  
X- /* $Header: /andrew/X11/R3src/earlyRelease/server/ddx/ibm/vga/RCS/vgaTile.c,v 6.1 88/10/30 20:26:24 paul Exp $ */
X- /* $Source: /andrew/X11/R3src/earlyRelease/server/ddx/ibm/vga/RCS/vgaTile.c,v $ */
X- 
X- #ifndef lint
X- static char *rcsid = "$Header: /andrew/X11/R3src/earlyRelease/server/ddx/ibm/vga/RCS/vgaTile.c,v 6.1 88/10/30 20:26:24 paul Exp $" ;
X- #endif
X- 
X- /* vga Tile
X-  * P. Shupak 10/87
X-  * Modified From ppc Tile
X-  * T. Paquin 9/87
X-  * Uses private imageFill a bunch of times
X-  */
X- 
X  #include "X.h"
X! #include "gcstruct.h"
X! #include "scrnintstr.h"
X  #include "pixmapstr.h"
X  #include "pixmap.h"
X! #include "rtutils.h"
X! #include "misc.h"
X  #include "colormap.h"
X  #include "ppc.h"
X  #include "ppcProcs.h"
X  
X  extern void vgaFillSolid( ) ;
X  extern void ErrorF( ) ;
X--- 43,64 ----
X  
X  ******************************************************************/
X  
X  #include "X.h"
X! #include "Xproto.h"
X! #include "windowstr.h"
X! #include "window.h"
X  #include "pixmapstr.h"
X  #include "pixmap.h"
X! #include "scrnintstr.h"
X  #include "colormap.h"
X+ #include "font.h"
X+ #include "cursorstr.h"
X  #include "ppc.h"
X  #include "ppcProcs.h"
X+ #include "ibmTrace.h"
X+ #include "gcstruct.h"
X+ #include "misc.h"
X+ #include "OScompiler.h"
X  
X  extern void vgaFillSolid( ) ;
X  extern void ErrorF( ) ;
X***************
X*** 109,116 ****
X  		break ;
X  }
X  
X! tlx = pTile->width ;
X! tly = pTile->height ;
X  pScreen = pTile->drawable.pScreen ;
X  depth   = pTile->drawable.depth ;
X  
X--- 101,108 ----
X  		break ;
X  }
X  
X! tlx = pTile->drawable.width ;
X! tly = pTile->drawable.height ;
X  pScreen = pTile->drawable.pScreen ;
X  depth   = pTile->drawable.depth ;
X  
X***************
X*** 231,237 ****
X  		savehcount = w / tlx ;
X  	
X  		/* FIRST DO COMPLETELY VISIBLE PORTIONS */
X! 		for ( data = (char *) pTile->devPrivate,
X  		      vcount = savevcount,
X  		      vtarget = y ;
X  		      vcount-- ;
X--- 223,229 ----
X  		savehcount = w / tlx ;
X  	
X  		/* FIRST DO COMPLETELY VISIBLE PORTIONS */
X! 		for ( data = (char *) pTile->devPrivate.ptr,
X  		      vcount = savevcount,
X  		      vtarget = y ;
X  		      vcount-- ;
X***************
X*** 256,262 ****
X  			}
X  			ppcClipZ8Pixmap( pTile, pTmpTile ) ;
X  		
X! 			for ( data = (char *) pTmpTile->devPrivate,
X  			      vcount = savevcount,
X  			      htarget = x + savehcount * tlx,
X  			      vtarget = y ;
X--- 248,254 ----
X  			}
X  			ppcClipZ8Pixmap( pTile, pTmpTile ) ;
X  		
X! 			for ( data = (char *) pTmpTile->devPrivate.ptr,
X  			      vcount = savevcount,
X  			      htarget = x + savehcount * tlx,
X  			      vtarget = y ;
X***************
X*** 271,277 ****
X  		
X  		/* NOW DO BOTTOM */
X  		if ( Btly = h % tly ) {
X! 			for ( data = (char *) pTile->devPrivate,
X  			      hcount = savehcount,
X  			      htarget = x,
X  			      vtarget = y + savevcount * tly ;
X--- 263,269 ----
X  		
X  		/* NOW DO BOTTOM */
X  		if ( Btly = h % tly ) {
X! 			for ( data = (char *) pTile->devPrivate.ptr,
X  			      hcount = savehcount,
X  			      htarget = x,
X  			      vtarget = y + savevcount * tly ;
X*** ./mit-orig/server/ddx/ibm/vga/vgaVideo.h	Thu Oct  4 16:51:09 1990
X--- ./mit/server/ddx/ibm/vga/vgaVideo.h	Tue Sep 18 21:21:29 1990
X***************
X*** 65,70 ****
X--- 65,74 ----
X  #define signed /**/
X  #endif
X  
X+ #if defined(sco) && !defined(__GNUC__)
X+ #define volatile
X+ #endif
X+ 
X  /*
X   * References to all pc ( i.e. '286 ) memory in the
X   * regions used by the [ev]ga server ( the 128K windows )
X***************
X*** 72,176 ****
X   * This definition will change for other memory architectures
X   * ( e.g. AIX-Rt )
X   */
X- #if defined(ATRIO)
X- typedef unsigned long int VideoAdapterObject ;
X- #else
X- #if defined(RTIO) || defined(PCIO)
X  typedef unsigned char VideoAdapterObject ;
X- #else
X- 	******** ERROR ********
X- #endif
X- #endif
X  typedef volatile VideoAdapterObject *VideoMemoryPtr ;
X- #if !defined(BUILD_EGA)
X  typedef volatile VideoAdapterObject *VgaMemoryPtr ;
X- #else
X- typedef volatile VideoAdapterObject *EgaMemoryPtr ;
X- #endif
X- 
X- #if defined(BUILD_EGA)
X- #define EGA_DEV_FILE "/dev/ega"
X- #else
X- #define VGA_DEV_FILE "/dev/vga"
X- #endif
X- 
X  #if !defined(BITMAP_BIT_ORDER)
X- #if defined(ibm032) || defined(i386) || defined(iAPX286) || defined(DOS)
X  #define BITMAP_BIT_ORDER MSBFirst
X- #else
X- 	******** ERROR ********
X  #endif
X- #endif
X  
X  #if !defined(IMAGE_BYTE_ORDER)
X- #if defined(ibm032)
X- #define IMAGE_BYTE_ORDER MSBFirst
X- #else
X- #if defined(i386) || defined(iAPX286) || defined(DOS)
X  #define IMAGE_BYTE_ORDER LSBFirst
X- #else
X- 	******** ERROR ********
X- #endif
X- #endif
X- #endif
X- 
X- #if defined(BUILD_EGA)
X- #if defined(BSDrt) && defined(ATRIO)
X- #define SCREEN_ADDR	0x000b8000
X- #else
X- #define SCREEN_ADDR	0x000a0000
X- #endif
X- #else /* Must be for the vga */
X- #if defined(i386) && defined(AIX386)
X- #define SCREEN_ADDR	0x020400000 /* "very" MAGIC NUMBER */
X- #else
X- #define SCREEN_ADDR	0x000a0000
X- #endif
X  #endif
X  
X! #if defined(i386) || defined(iAPX286) || defined(DOS)
X  #define VIDEO_MEMORY_BASE ( (volatile unsigned char *) ( SCREEN_ADDR ) )
X- #else /* BSD43 */
X- #if defined(ATRIO)
X- #define VIDEO_MEMORY_BASE ( (volatile unsigned char *) \
X- 	( 0xd00c0000 | ( SCREEN_ADDR & 0x0001ffff ) ) )
X- #else
X- #if defined(RTIO)
X- #define VIDEO_MEMORY_BASE ( (volatile unsigned char *) \
X- 	( 0xd00c0000 | ( SCREEN_ADDR & 0x0001ffff ) ) )
X- #endif
X- #endif
X- #endif
X- 
X- #if defined(BUILD_EGA)
X- #define EGABASE VIDEO_MEMORY_BASE
X- #else
X  #define VGABASE VIDEO_MEMORY_BASE
X- #endif
X  
X  /* Bit Ordering Macros */
X  #if !defined(SCRLEFT8)
X- #if (BITMAP_BIT_ORDER == MSBFirst)	/* pc/rt */
X  #define SCRLEFT8(lw, n)	( (unsigned char) (((unsigned char) lw) << (n)) )
X- #else
X- #if (BITMAP_BIT_ORDER == LSBFirst)	/* intel */
X- #define SCRLEFT8(lw, n)	( (unsigned char) (((unsigned char) lw) >> (n)) )
X- #else
X- 	******** ERROR ********
X- #endif
X- #endif
X  #endif
X  #if !defined(SCRRIGHT8)
X- #if BITMAP_BIT_ORDER == MSBFirst	/* pc/rt */
X  #define SCRRIGHT8(lw, n)	( (unsigned char) (((unsigned char)lw) >> (n)) )
X- #else
X- #if BITMAP_BIT_ORDER == LSBFirst
X- #define SCRRIGHT8(lw, n)	( (unsigned char) (((unsigned char)lw) << (n)) )
X- #else
X- 	******** ERROR ********
X  #endif
X- #endif
X- #endif
X  /* These work ONLY on 8-bit wide Quantities !! */
X  #define LeftmostBit ( SCRLEFT8( 0xFF, 7 ) & 0xFF )
X  #define RightmostBit ( SCRRIGHT8( 0xFF, 7 ) & 0xFF )
X--- 76,104 ----
X   * This definition will change for other memory architectures
X   * ( e.g. AIX-Rt )
X   */
X  typedef unsigned char VideoAdapterObject ;
X  typedef volatile VideoAdapterObject *VideoMemoryPtr ;
X  typedef volatile VideoAdapterObject *VgaMemoryPtr ;
X  #if !defined(BITMAP_BIT_ORDER)
X  #define BITMAP_BIT_ORDER MSBFirst
X  #endif
X  
X  #if !defined(IMAGE_BYTE_ORDER)
X  #define IMAGE_BYTE_ORDER LSBFirst
X  #endif
X  
X! int vgaBASE;
X! #define SCREEN_ADDR vgaBASE
X  #define VIDEO_MEMORY_BASE ( (volatile unsigned char *) ( SCREEN_ADDR ) )
X  #define VGABASE VIDEO_MEMORY_BASE
X  
X  /* Bit Ordering Macros */
X  #if !defined(SCRLEFT8)
X  #define SCRLEFT8(lw, n)	( (unsigned char) (((unsigned char) lw) << (n)) )
X  #endif
X  #if !defined(SCRRIGHT8)
X  #define SCRRIGHT8(lw, n)	( (unsigned char) (((unsigned char)lw) >> (n)) )
X  #endif
X  /* These work ONLY on 8-bit wide Quantities !! */
X  #define LeftmostBit ( SCRLEFT8( 0xFF, 7 ) & 0xFF )
X  #define RightmostBit ( SCRRIGHT8( 0xFF, 7 ) & 0xFF )
X***************
X*** 186,195 ****
X  #define xGA_MAXPLANES 4
X  #define xGA_ALLPLANES 0xF
X  
X- #if !defined(BUILD_EGA)
X- #define NO_TUBE 0
X  #define COLOR_TUBE 1
X- #define MONO_TUBE 2
X  
X  #define VGA_BLACK_PIXEL xGA_BLACK_PIXEL
X  #define VGA_WHITE_PIXEL xGA_WHITE_PIXEL
X--- 114,120 ----
X***************
X*** 197,226 ****
X  #define VGA_MAXPLANES xGA_MAXPLANES
X  #define VGA_ALLPLANES xGA_ALLPLANES
X  
X! #define VIDEO_MEM_BYTES_PER_PLANE ( 64 * 1024 )
X! 
X! #ifndef VGA720
X! #define BYTES_PER_ROW 80
X! #define MAX_ROW	479
X! #else
X! #define BYTES_PER_ROW 90
X! #define MAX_ROW	539
X! #endif
X! #else /* Must be for ega */
X! #define EGA_BLACK_PIXEL xGA_BLACK_PIXEL
X! #define EGA_WHITE_PIXEL xGA_WHITE_PIXEL
X! 
X! #define EGA_MAXPLANES xGA_MAXPLANES
X! #define EGA_ALLPLANES xGA_ALLPLANES
X! 
X! #define VIDEO_MEM_BYTES_PER_PLANE ( 32 * 1024 )
X  
X! #define BYTES_PER_ROW 80
X! #define MAX_ROW	349
X! #endif
X  
X- #define MAX_COLUMN ( ( BYTES_PER_ROW * PIX_PER_BYTE ) - 1 )
X- #define MAX_OFFSCREEN_ROW ( ( VIDEO_MEM_BYTES_PER_PLANE / BYTES_PER_ROW ) - 1 )
X  #define ROW_OFFSET( PIXEL_X_VALUE ) ( ( PIXEL_X_VALUE ) >> 3 )
X  #define BIT_OFFSET( PIXEL_X_VALUE ) ( ( PIXEL_X_VALUE ) & 0x7 )
X  #define BYTE_OFFSET( PIXEL_X_VALUE, PIXEL_Y_VALUE ) \
X--- 122,134 ----
X  #define VGA_MAXPLANES xGA_MAXPLANES
X  #define VGA_ALLPLANES xGA_ALLPLANES
X  
X! #define VIDEO_MEM_BYTES_PER_PLANE ( 96 * 1024 )
X  
X! extern int BYTES_PER_ROW;
X! extern int MAX_ROW;
X! extern int MAX_COLUMN;
X! extern int MAX_OFFSCREEN_ROW;
X  
X  #define ROW_OFFSET( PIXEL_X_VALUE ) ( ( PIXEL_X_VALUE ) >> 3 )
X  #define BIT_OFFSET( PIXEL_X_VALUE ) ( ( PIXEL_X_VALUE ) & 0x7 )
X  #define BYTE_OFFSET( PIXEL_X_VALUE, PIXEL_Y_VALUE ) \
X*** ./mit-orig/server/ddx/mfb/maskbits.h	Thu Oct  4 16:48:23 1990
X--- ./mit/server/ddx/mfb/maskbits.h	Sun Sep 16 22:21:22 1990
X***************
X*** 191,196 ****
X--- 191,197 ----
X  
X  #if (BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER)
X  #define LONG2CHARS(x) (x)
X+ #define LONG2CHARS_F(x) (x)
X  #else
X  /*
X   *  the unsigned case below is for compilers like
X***************
X*** 200,213 ****
X                        | ( ( ( x ) & 0x0000FF00 ) << 0x08 ) \
X                        | ( ( ( x ) & 0x00FF0000 ) >> 0x08 ) \
X                        | ( ( ( x ) & (unsigned long)0xFF000000 ) >> 0x18 ) )
X  #endif
X  
X  #ifdef STRICT_ANSI_SHIFT
X! #define SHL(x,y)    ((y) >= 32 ? 0 : LONG2CHARS(LONG2CHARS(x) << (y)))
X! #define SHR(x,y)    ((y) >= 32 ? 0 : LONG2CHARS(LONG2CHARS(x) >> (y)))
X  #else
X! #define SHL(x,y)    LONG2CHARS(LONG2CHARS(x) << (y))
X! #define SHR(x,y)    LONG2CHARS(LONG2CHARS(x) >> (y))
X  #endif
X  
X  #if (BITMAP_BIT_ORDER == MSBFirst)	/* pc/rt, 680x0 */
X--- 201,224 ----
X                        | ( ( ( x ) & 0x0000FF00 ) << 0x08 ) \
X                        | ( ( ( x ) & 0x00FF0000 ) >> 0x08 ) \
X                        | ( ( ( x ) & (unsigned long)0xFF000000 ) >> 0x18 ) )
X+ static
X+ #ifndef sco
X+ inline
X  #endif
X+ unsigned
X+ LONG2CHARS_F(it)
X+ unsigned it;
X+ {
X+   return LONG2CHARS(it);
X+   }
X+ #endif
X  
X  #ifdef STRICT_ANSI_SHIFT
X! #define SHL(x,y)    ((y) >= 32 ? 0 : LONG2CHARS_F(LONG2CHARS_F(x) << (y)))
X! #define SHR(x,y)    ((y) >= 32 ? 0 : LONG2CHARS_F(LONG2CHARS_F(x) >> (y)))
X  #else
X! #define SHL(x,y)    LONG2CHARS_F(LONG2CHARS_F(x) << (y))
X! #define SHR(x,y)    LONG2CHARS_F(LONG2CHARS_F(x) >> (y))
X  #endif
X  
X  #if (BITMAP_BIT_ORDER == MSBFirst)	/* pc/rt, 680x0 */
X***************
X*** 214,221 ****
X  #define SCRLEFT(lw, n)	SHL((unsigned int)(lw),(n))
X  #define SCRRIGHT(lw, n)	SHR((unsigned int)(lw),(n))
X  #else					/* vax, intel */
X! #define SCRLEFT(lw, n)	SHR((lw),(n))
X! #define SCRRIGHT(lw, n)	SHL((lw),(n))
X  #endif
X  
X  #define maskbits(x, w, startmask, endmask, nlw) \
X--- 225,232 ----
X  #define SCRLEFT(lw, n)	SHL((unsigned int)(lw),(n))
X  #define SCRRIGHT(lw, n)	SHR((unsigned int)(lw),(n))
X  #else					/* vax, intel */
X! #define SCRLEFT(lw, n)	SHR((unsigend int)(lw),(n))
X! #define SCRRIGHT(lw, n)	SHL((unsigned int)(lw),(n))
X  #endif
X  
X  #define maskbits(x, w, startmask, endmask, nlw) \
X*** ./mit-orig/server/ddx/mfb/mfbfillsp.c	Thu Oct  4 16:48:25 1990
X--- ./mit/server/ddx/mfb/mfbfillsp.c	Sun Sep 16 22:21:23 1990
X***************
X*** 839,845 ****
X  		       offset in the tile.
X  		    */
X  		    w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_UNIT);
X! 		    endinc = rem / BITMAP_SCANLINE_UNIT;
X  		    getandputrop((psrc+endinc), (rem&0x1f), (x & 0x1f), w, pdst, rop);
X  		    if((x & 0x1f) + w >= 0x20)
X  			pdst++;
X--- 839,845 ----
X  		       offset in the tile.
X  		    */
X  		    w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_UNIT);
X! 		    endinc = rem / BITMAP_SCANLINE_PAD ;
X  		    getandputrop((psrc+endinc), (rem&0x1f), (x & 0x1f), w, pdst, rop);
X  		    if((x & 0x1f) + w >= 0x20)
X  			pdst++;
X***************
X*** 996,1002 ****
X  		       offset in the tile.
X  		    */
X  		    w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_UNIT);
X! 		    endinc = rem / BITMAP_SCANLINE_UNIT;
X  		    getandputrrop((psrc + endinc), (rem & 0x1f), (x & 0x1f),
X  				 w, pdst, rop)
X  		    if((x & 0x1f) + w >= 0x20)
X--- 996,1002 ----
X  		       offset in the tile.
X  		    */
X  		    w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_UNIT);
X! 		    endinc = rem / BITMAP_SCANLINE_PAD;
X  		    getandputrrop((psrc + endinc), (rem & 0x1f), (x & 0x1f),
X  				 w, pdst, rop)
X  		    if((x & 0x1f) + w >= 0x20)
X*** ./mit-orig/server/ddx/mfb/mfbtegblt.c	Thu Oct  4 16:48:22 1990
X--- ./mit/server/ddx/mfb/mfbtegblt.c	Sun Sep 16 22:21:23 1990
X***************
X*** 76,82 ****
X  #define ShiftAmnt   16
X  #endif
X  
X! #define GetBits4    c = (*char1++ << ShiftAmnt) | \
X  			SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \
X  			SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \
X  			SCRRIGHT (*char4++ << ShiftAmnt, xoff4);
X--- 76,82 ----
X  #define ShiftAmnt   16
X  #endif
X  
X! #define GetBits4    c = LONG2CHARS_F(*char1++ << ShiftAmnt) | \
X  			SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \
X  			SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \
X  			SCRRIGHT (*char4++ << ShiftAmnt, xoff4);
X***************
X*** 104,109 ****
X--- 104,111 ----
X  
X  #ifdef USE_LEFTBITS
X  #define GetBits1    getleftbits (char1, widthGlyph, c); \
X+                     if (glyphBytes == 1) \
X+                        c <<=8; \
X  		    c &= glyphMask; \
X  		    char1 = (glyphPointer) (((char *) char1) + glyphBytes);
X  #else
X*** ./mit-orig/server/ddx/mfb/mfbzerarc.c	Thu Oct  4 16:48:27 1990
X--- ./mit/server/ddx/mfb/mfbzerarc.c	Sun Sep 16 22:21:23 1990
X***************
X*** 35,45 ****
X--- 35,48 ----
X  
X  extern void miPolyArc(), miZeroPolyArc();
X  
X+ #define LEFTMOST endtab[1]
X+ /*
X  #if (BITMAP_BIT_ORDER == MSBFirst)
X  #define LEFTMOST	((unsigned int) 0x80000000)
X  #else
X  #define LEFTMOST	((unsigned int) 1)
X  #endif
X+ */
X  
X  #define PixelateWhite(addr,off) \
X      (addr)[(off)>>5] |= SCRRIGHT (LEFTMOST, ((off) & 0x1f))
X*** ./mit-orig/server/ddx/mi/mispritest.h	Thu Oct  4 16:47:48 1990
X--- ./mit/server/ddx/mi/mispritest.h	Sun Sep 16 22:22:36 1990
X***************
X*** 92,98 ****
X   */
X  #define SPN_OVERLAP(pCbox,y,x,w) BOX_OVERLAP((pCbox),(x),(y),(x)+(w),(y))
X  
X! #define LINE_SORT(x1,y2,x2,y2) \
X  { int _t; \
X    if (x1 > x2) { _t = x1; x1 = x2; x2 = _t; } \
X    if (y1 > y2) { _t = y1; y1 = y2; y2 = _t; } }
X--- 92,98 ----
X   */
X  #define SPN_OVERLAP(pCbox,y,x,w) BOX_OVERLAP((pCbox),(x),(y),(x)+(w),(y))
X  
X! #define LINE_SORT(x1,y1,x2,y2) \
X  { int _t; \
X    if (x1 > x2) { _t = x1; x1 = x2; x2 = _t; } \
X    if (y1 > y2) { _t = y1; y1 = y2; y2 = _t; } }
X*** ./mit-orig/server/include/fontdir.h	Thu Oct  4 16:52:59 1990
X--- ./mit/server/include/fontdir.h	Sun Sep 16 22:24:58 1990
X***************
X*** 79,81 ****
X--- 79,85 ----
X  extern FontTable	MakeFontTable();
X  extern Boolean		Match();
X  
X+ #if defined(ix386) || defined(sco)
X+ #include <dirent.h>
X+ #define MAXPATHLEN 1024
X+ #endif
X*** ./mit-orig/server/include/misc.h	Thu Oct  4 16:53:01 1990
X--- ./mit/server/include/misc.h	Sun Sep 16 22:24:58 1990
X***************
X*** 34,40 ****
X  extern unsigned long serverGeneration;
X  
X  #ifndef NULL
X! #if __STDC__ && !NOSTDHDRS
X  #include <stddef.h>
X  #else
X  #define NULL            0
X--- 34,40 ----
X  extern unsigned long serverGeneration;
X  
X  #ifndef NULL
X! #if __STDC__ && !NOSTDHDRS && !defined(__GNUC__)
X  #include <stddef.h>
X  #else
X  #define NULL            0
X*** ./mit-orig/server/include/os.h	Thu Oct  4 16:53:03 1990
X--- ./mit/server/include/os.h	Sun Sep 16 22:24:58 1990
X***************
X*** 126,129 ****
X--- 126,136 ----
X  unsigned long	*Xrealloc();
X  long		GetTimeInMillis();
X  
X+ #ifdef sco
X+ #ifdef NULL
X+ #undef NULL
X+ #endif
X+ #define NULL 0
X+ #endif
X+ 
X  #endif /* OS_H */
X*** ./mit-orig/server/include/servermd.h	Thu Oct  4 16:53:00 1990
X--- ./mit/server/include/servermd.h	Sun Sep 16 22:24:58 1990
X***************
X*** 126,131 ****
X--- 126,140 ----
X  
X  #endif /* sun */
X  
X+ #if defined(ix386) || defined(sco)
X+ #define IMAGE_BYTE_ORDER	LSBFirst        /* Values for the i386 only */
X+ #define BITMAP_BIT_ORDER	MSBFirst        /* Not compatible to other..*/
X+ #define	GLYPHPADBYTES		1
X+ #define GETLEFTBITS_ALIGNMENT	4
X+ #define AVOID_MEMORY_READ
X+ #define LARGE_INSTRUCTION_CACHE
X+ #define FAST_CONSTANT_OFFSET_MODE
X+ #endif /* ix386 or sco */
X  #ifdef apollo
X  
X  #define IMAGE_BYTE_ORDER	MSBFirst        /* Values for the Apollo only*/
X***************
X*** 226,232 ****
X  #endif
X  
X  /* pad scanline to a longword */
X! #if defined(ibm) && defined(i386)
X  #define BITMAP_SCANLINE_UNIT	8
X  #else
X  #define BITMAP_SCANLINE_UNIT	32
X--- 235,241 ----
X  #endif
X  
X  /* pad scanline to a longword */
X! #if (defined(ibm) && defined(i386)) || defined(ix386) || defined(sco)
X  #define BITMAP_SCANLINE_UNIT	8
X  #else
X  #define BITMAP_SCANLINE_UNIT	32
END_OF_FILE
if test 39005 -ne `wc -c <'fix-14.sco11'`; then
    echo shar: \"'fix-14.sco11'\" unpacked with wrong size!
fi
# end of 'fix-14.sco11'
fi
echo shar: End of archive 11 \(of 12\).
cp /dev/null ark11isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 12 archives.
    echo "instructions are in fix-14.sco01"
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0


dan
----------------------------------------------------
O'Reilly && Associates   argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.