v09i095: patches for X11R4 for SCO UNIX, Part09/12
microsoft!jimke at uunet.uu.net
microsoft!jimke at uunet.uu.net
Fri Oct 12 15:20:40 AEST 1990
Submitted-by: microsoft!jimke at uunet.uu.net
Posting-number: Volume 9, Issue 95
Archive-name: sco.patches/part09
#! /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 9 (of 12)."
# Contents: fix-14.sco09
# Wrapped by jimke at kellman on Sat Oct 6 17:13:33 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'fix-14.sco09' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'fix-14.sco09'\"
else
echo shar: Extracting \"'fix-14.sco09'\" \(46868 characters\)
sed "s/^X//" >'fix-14.sco09' <<'END_OF_FILE'
X*** ./mit-orig/server/ddx/ibm/sysV/sysVKeymap.h Thu Oct 4 18:02:21 1990
X--- ./mit/server/ddx/ibm/sysV/sysVKeymap.h Fri Sep 28 10:36:38 1990
X***************
X*** 0 ****
X--- 1,155 ----
X+ /*
X+ * Copyright IBM Corporation 1987,1988,1989
X+ *
X+ * All Rights Reserved
X+ *
X+ * Permission to use, copy, modify, and distribute this software and its
X+ * documentation for any purpose and without fee is hereby granted,
X+ * provided that the above copyright notice appear in all copies and that
X+ * both that copyright notice and this permission notice appear in
X+ * supporting documentation, and that the name of IBM not be
X+ * used in advertising or publicity pertaining to distribution of the
X+ * software without specific, written prior permission.
X+ *
X+ * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X+ * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X+ * SOFTWARE.
X+ *
X+ */
X+ #ifndef SYSVKEYMAP_H
X+ #define SYSVKEYMAP_H
X+ KeySym sysvmap[MAP_LENGTH*SYSV_GLYPHS_PER_KEY] = {
X+ /* 0x00 */ NoSymbol, NoSymbol,
X+ /* 0x01 */ XK_Escape, NoSymbol,
X+ /* 0x02 */ XK_1, XK_exclam,
X+ /* 0x03 */ XK_2, XK_at,
X+ /* 0x04 */ XK_3, XK_numbersign,
X+ /* 0x05 */ XK_4, XK_dollar,
X+ /* 0x06 */ XK_5, XK_percent,
X+ /* 0x07 */ XK_6, XK_asciicircum,
X+ /* 0x08 */ XK_7, XK_ampersand,
X+ /* 0x09 */ XK_8, XK_asterisk,
X+ /* 0x0a */ XK_9, XK_parenleft,
X+ /* 0x0b */ XK_0, XK_parenright,
X+ /* 0x0c */ XK_minus, XK_underscore,
X+ /* 0x0d */ XK_equal, XK_plus,
X+ /* 0x0e */ XK_BackSpace, XK_BackSpace,
X+ /* 0x0f */ XK_Tab, NoSymbol,
X+ /* 0x10 */ XK_q, XK_Q,
X+ /* 0x11 */ XK_w, XK_W,
X+ /* 0x12 */ XK_e, XK_E,
X+ /* 0x13 */ XK_r, XK_R,
X+ /* 0x14 */ XK_t, XK_T,
X+ /* 0x15 */ XK_y, XK_Y,
X+ /* 0x16 */ XK_u, XK_U,
X+ /* 0x17 */ XK_i, XK_I,
X+ /* 0x18 */ XK_o, XK_O,
X+ /* 0x19 */ XK_p, XK_P,
X+ /* 0x1a */ XK_bracketleft, XK_braceleft,
X+ /* 0x1b */ XK_bracketright,XK_braceright,
X+ /* 0x1c */ XK_Return, XK_Return,
X+ /* 0x1d */ XK_Control_L, NoSymbol,
X+ /* 0x1e */ XK_a, XK_A,
X+ /* 0x1f */ XK_s, XK_S,
X+ /* 0x20 */ XK_d, XK_D,
X+ /* 0x21 */ XK_f, XK_F,
X+ /* 0x22 */ XK_g, XK_G,
X+ /* 0x23 */ XK_h, XK_H,
X+ /* 0x24 */ XK_j, XK_J,
X+ /* 0x25 */ XK_k, XK_K,
X+ /* 0x26 */ XK_l, XK_L,
X+ /* 0x27 */ XK_semicolon, XK_colon,
X+ /* 0x28 */ XK_quoteright, XK_quotedbl,
X+ /* 0x29 */ XK_quoteleft, XK_asciitilde,
X+ /* 0x2a */ XK_Shift_L, NoSymbol,
X+ /* 0x2b */ XK_backslash, XK_bar,
X+ /* 0x2c */ XK_z, XK_Z,
X+ /* 0x2d */ XK_x, XK_X,
X+ /* 0x2e */ XK_c, XK_C,
X+ /* 0x2f */ XK_v, XK_V,
X+ /* 0x30 */ XK_b, XK_B,
X+ /* 0x31 */ XK_n, XK_N,
X+ /* 0x32 */ XK_m, XK_M,
X+ /* 0x33 */ XK_comma, XK_less,
X+ /* 0x34 */ XK_period, XK_greater,
X+ /* 0x35 */ XK_slash, XK_question,
X+ /* 0x36 */ XK_Shift_R, NoSymbol,
X+ /* 0x37 */ XK_asterisk, XK_mu,
X+ /* 0x38 */ XK_Alt_L, NoSymbol,
X+ /* 0x39 */ XK_space, NoSymbol,
X+ /* 0x3a */ XK_Caps_Lock, NoSymbol,
X+ /* 0x3b */ XK_F1, NoSymbol,
X+ /* 0x3c */ XK_F2, NoSymbol,
X+ /* 0x3d */ XK_F3, NoSymbol,
X+ /* 0x3e */ XK_F4, NoSymbol,
X+ /* 0x3f */ XK_F5, NoSymbol,
X+ /* 0x40 */ XK_F6, NoSymbol,
X+ /* 0x41 */ XK_F7, NoSymbol,
X+ /* 0x42 */ XK_F8, NoSymbol,
X+ /* 0x43 */ XK_F9, NoSymbol,
X+ /* 0x44 */ XK_F10, NoSymbol,
X+ /* 0x45 */ XK_Num_Lock, NoSymbol, /* num lock */
X+ /* 0x46 */ XK_Break, NoSymbol, /* scroll lock - XXX */
X+ /* 0x47 */ XK_Begin, XK_KP_7,
X+ /* 0x48 */ XK_Up, XK_KP_8,
X+ /* 0x49 */ XK_Prior, XK_KP_9,
X+ /* 0x4a */ XK_KP_Subtract, NoSymbol,
X+ /* 0x4b */ XK_Left, XK_KP_4,
X+ /* 0x4c */ NoSymbol, XK_KP_5,
X+ /* 0x4d */ XK_Right, XK_KP_6,
X+ /* 0x4e */ XK_KP_Add, NoSymbol,
X+ /* 0x4f */ XK_End, XK_KP_1,
X+ /* 0x50 */ XK_Down, XK_KP_2,
X+ /* 0x51 */ XK_Next, XK_KP_3,
X+ /* 0x52 */ XK_Insert, XK_KP_0,
X+ /* 0x53 */ XK_Delete, XK_KP_Decimal,
X+ /* 0x54 */ XK_Execute, NoSymbol, /* Action - XXX */
X+ /* 0x55 */ XK_Down, NoSymbol, /* down arrow */
X+ /* 0x56 */ XK_less, XK_greater,
X+ /* 0x57 */ XK_F11, NoSymbol,
X+ /* 0x58 */ XK_F12, NoSymbol,
X+ /* 0x59 */ NoSymbol, NoSymbol,
X+ /* 0x5a */ NoSymbol, NoSymbol,
X+ /* 0x5b */ NoSymbol, NoSymbol,
X+ /* 0x5c */ NoSymbol, NoSymbol,
X+ /* 0x5d */ NoSymbol, NoSymbol,
X+ /* 0x5e */ NoSymbol, NoSymbol,
X+ /* 0x5f */ NoSymbol, NoSymbol,
X+ /* 0x60 */ NoSymbol, NoSymbol,
X+ /* 0x61 */ NoSymbol, NoSymbol,
X+ /* 0x62 */ NoSymbol, NoSymbol,
X+ /* 0x63 */ NoSymbol, NoSymbol,
X+ /* 0x64 */ NoSymbol, NoSymbol,
X+ /* 0x65 */ NoSymbol, NoSymbol,
X+ /* 0x66 */ NoSymbol, NoSymbol,
X+ /* 0x67 */ NoSymbol, NoSymbol,
X+ /* 0x68 */ NoSymbol, NoSymbol,
X+ /* 0x69 */ NoSymbol, NoSymbol,
X+ /* 0x6a */ NoSymbol, NoSymbol,
X+ /* 0x6b */ NoSymbol, NoSymbol,
X+ /* 0x6c */ NoSymbol, NoSymbol,
X+ /* 0x6d */ NoSymbol, NoSymbol,
X+ /* 0x6e */ NoSymbol, NoSymbol,
X+ /* 0x6f */ XK_Prior, NoSymbol, /* page up */
X+ /* 0x70 */ NoSymbol, NoSymbol,
X+ /* 0x71 */ NoSymbol, NoSymbol,
X+ /* 0x72 */ XK_Alt_R, NoSymbol,
X+ /* 0x73 */ XK_Control_R, NoSymbol,
X+ /* 0x74 */ XK_KP_Enter, NoSymbol,
X+ /* 0x75 */ XK_backslash, NoSymbol,
X+ /* 0x76 */ NoSymbol, NoSymbol,
X+ /* 0x77 */ XK_Cancel, NoSymbol, /* scroll lock - XXX */
X+ /* 0x78 */ XK_Up, NoSymbol, /* up arrow */
X+ /* 0x79 */ XK_Delete, NoSymbol,
X+ /* 0x7a */ XK_End, NoSymbol,
X+ /* 0x7b */ XK_Insert, NoSymbol,
X+ /* 0x7c */ XK_Left, NoSymbol,
X+ /* 0x7d */ XK_Right, NoSymbol, /* right arrow */
X+ /* 0x7e */ XK_Next, NoSymbol, /* page down */
X+ /* 0x7f */ XK_Home, NoSymbol,
X+ };
X+ #endif /* SYSVKEYMAP_H */
X*** ./mit-orig/server/ddx/ibm/sysV/sysVModKeys.h Thu Oct 4 18:02:22 1990
X--- ./mit/server/ddx/ibm/sysV/sysVModKeys.h Mon Sep 17 10:45:32 1990
X***************
X*** 0 ****
X--- 1,46 ----
X+ /*
X+ * Copyright IBM Corporation 1987,1988,1989
X+ *
X+ * All Rights Reserved
X+ *
X+ * Permission to use, copy, modify, and distribute this software and its
X+ * documentation for any purpose and without fee is hereby granted,
X+ * provided that the above copyright notice appear in all copies and that
X+ * both that copyright notice and this permission notice appear in
X+ * supporting documentation, and that the name of IBM not be
X+ * used in advertising or publicity pertaining to distribution of the
X+ * software without specific, written prior permission.
X+ *
X+ * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X+ * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X+ * SOFTWARE.
X+ *
X+ */
X+ /* Copyright International Business Machines Corporation 1987, 1988
X+ *
X+ */
X+ #ifndef SYSVINPUT_H
X+ #define SYSVINPUT_H
X+ #if defined(ix386) || defined(sco)
X+ #define SYSV_MIN_KEY 0x08
X+ #define SYSV_MAX_KEY (0x7f + SYSV_MIN_KEY)
X+ #define SYSV_GLYPHS_PER_KEY 2
X+ /* Position
X+ * Base Code
X+ */
X+ #define Sysv_Control_L (SYSV_MIN_KEY + 0x1D)
X+ #define Sysv_Control_R (SYSV_MIN_KEY + 0x73)
X+ #define Sysv_Shift_L (SYSV_MIN_KEY + 0x2A)
X+ #define Sysv_Shift_R (SYSV_MIN_KEY + 0x36)
X+ #define Sysv_Caps_Lock (SYSV_MIN_KEY + 0x3A)
X+ #define Sysv_Alt_L (SYSV_MIN_KEY + 0x38)
X+ #define Sysv_Alt_R (SYSV_MIN_KEY + 0x72)
X+ #define Sysv_Delete (SYSV_MIN_KEY + 0x53)
X+ #define Sysv_Num_Lock (SYSV_MIN_KEY + 0x45)
X+ #define NumLockMask Mod5Mask
X+ #endif /* ix386 or sco */
X+ #endif /* SYSVINPUT_H */
X*** ./mit-orig/server/ddx/ibm/sysV/sysVMouse.c Thu Oct 4 18:02:22 1990
X--- ./mit/server/ddx/ibm/sysV/sysVMouse.c Mon Sep 17 10:45:32 1990
X***************
X*** 0 ****
X--- 1,142 ----
X+ /*
X+ * Copyright IBM Corporation 1987,1988,1989
X+ *
X+ * All Rights Reserved
X+ *
X+ * Permission to use, copy, modify, and distribute this software and its
X+ * documentation for any purpose and without fee is hereby granted,
X+ * provided that the above copyright notice appear in all copies and that
X+ * both that copyright notice and this permission notice appear in
X+ * supporting documentation, and that the name of IBM not be
X+ * used in advertising or publicity pertaining to distribution of the
X+ * software without specific, written prior permission.
X+ *
X+ * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X+ * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X+ * SOFTWARE.
X+ *
X+ */
X+ /***********************************************************
X+ Copyright IBM Corporation 1987,1988
X+ All Rights Reserved
X+ Permission to use, copy, modify, and distribute this software and its
X+ documentation for any purpose and without fee is hereby granted,
X+ provided that the above copyright notice appear in all copies and that
X+ both that copyright notice and this permission notice appear in
X+ supporting documentation, and that the name of IBM not be
X+ used in advertising or publicity pertaining to distribution of the
X+ software without specific, written prior permission.
X+ IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X+ ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X+ IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X+ ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X+ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X+ SOFTWARE.
X+ ******************************************************************/
X+ #include <stdio.h>
X+ #include <sys/types.h>
X+ #include <sys/file.h>
X+ #include <sys/fcntl.h>
X+ #include <sys/termio.h>
X+ #include "X.h"
X+ #include "Xproto.h"
X+ #include "miscstruct.h"
X+ #include "scrnintstr.h"
X+ #include "input.h"
X+ #include "cursorstr.h"
X+ #include "ibmIO.h"
X+ #include "ibmMouse.h"
X+ #include "ibmScreen.h"
X+ #include "ibmTrace.h"
X+ #include "OSio.h"
X+ extern char *getenv();
X+ int SYSVMouseChordDelay= 20;
X+ int SYSVMouseType = MicroSoft;
X+ char * SYSVPtrDev = "/dev/tty1a";
X+ int (* SYSVPtrEvents)();
X+ /***================================================================***/
X+ static int
X+ SYSVGetMotionEvents(buff, start, stop)
X+ CARD32 start, stop;
X+ xTimecoord *buff;
X+ {
X+ TRACE(("GetMotionEvents( buff= 0x%x, start= %d, stop= %d )\n",
X+ buff,start,stop));
X+ return 0;
X+ }
X+ /***================================================================***/
X+ static unsigned always0= 0;
X+ int
X+ SYSVMouseProc(pDev, onoff)
X+ DevicePtr pDev;
X+ int onoff;
X+ {
X+ BYTE map[4];
X+ struct termio tty;
X+ TRACE(("SYSVMouseProc( pDev= 0x%x, onoff= 0x%x )\n",pDev, onoff ));
X+ switch (onoff)
X+ {
X+ case DEVICE_INIT:
X+ if (pDev != LookupPointerDevice()) {
X+ ErrorF ("Cannot open non-system mouse");
X+ return (!Success);
X+ }
X+ if (SYSVmouseFd < 0) {
X+ switch (SYSVMouseType) {
X+ case MouseSystems:
X+ if ((SYSVmouseFd= open(SYSVPtrDev,O_RDONLY | O_NDELAY)) < 0) {
X+ Error ("Opening MouseSystemsMouse");
X+ return (!Success); }
X+ ioctl(SYSVmouseFd,TCGETA,&tty);
X+ tty.c_iflag = IGNBRK | IGNPAR ;
X+ tty.c_oflag = 0;
X+ tty.c_cflag = B1200 | CS8 | CSTOPB | CREAD;
X+ tty.c_lflag = 0;
X+ tty.c_cc[VTIME]=0;
X+ tty.c_cc[VMIN]=1;
X+ ioctl(SYSVmouseFd,TCSETA,&tty);
X+ SYSVPtrEvents = MSMPtrEvent;
X+ break;
X+ case MicroSoft:
X+ if ((SYSVmouseFd= open(SYSVPtrDev,O_RDONLY | O_NDELAY)) < 0) {
X+ Error ("Opening MicroSoftMouse");
X+ return (!Success); }
X+ ioctl(SYSVmouseFd,TCGETA,&tty);
X+ tty.c_iflag = IGNBRK | IGNPAR ;
X+ tty.c_oflag = 0;
X+ tty.c_cflag = B1200 | CS7 | CREAD;
X+ tty.c_lflag = 0;
X+ tty.c_cc[VTIME]=0;
X+ tty.c_cc[VMIN]=1;
X+ ioctl(SYSVmouseFd,TCSETA,&tty);
X+ SYSVPtrEvents = MSPtrEvent;
X+ break;
X+ }}
X+ SYSVMouseState = 0;
X+ pDev->on = FALSE;
X+ ibmPtr = pDev;
X+ map[1] = 1;
X+ map[2] = 2;
X+ map[3] = 3;
X+ InitPointerDeviceStruct(
X+ ibmPtr, map, 3, SYSVGetMotionEvents, ibmChangePointerControl );
X+ break;
X+ case DEVICE_ON:
X+ AddEnabledDevice(SYSVmouseFd);
X+ pDev->on = TRUE;
X+ break;
X+ case DEVICE_CLOSE:
X+ pDev->on = FALSE;
X+ break;
X+ case DEVICE_OFF:
X+ RemoveEnabledDevice(SYSVmouseFd);
X+ pDev->on = FALSE;
X+ break;
X+ }
X+ return Success;
X+ }
X*** ./mit-orig/server/ddx/ibm/vga/Imakefile Thu Oct 4 16:51:00 1990
X--- ./mit/server/ddx/ibm/vga/Imakefile Mon Oct 1 16:09:15 1990
X***************
X*** 19,25 ****
X vgaStipple.c \
X vgaSolid.c
X
X! ASM_SRCS = vgaLine.386.s
X
X OTHER_FILES = vgaAddr.c
X
X--- 19,27 ----
X vgaStipple.c \
X vgaSolid.c
X
X! ASM_SRCS = vgaLine.386.s \
X! vgaSld.386.s \
X! vgaBlit.386.s
X
X OTHER_FILES = vgaAddr.c
X
X***************
X*** 39,57 ****
X vgaStipple.o \
X vgaSolid.o
X
X! #if defined(PS2Architecture) || defined(iAPX286) || defined(DOS)
X! ASM_OBJS = vgaLine.386.o
X! #else
X! ASM_OBJS =
X! #endif
X
X OBJS = $(C_OBJS) $(ASM_OBJS)
X
X- #if defined(PS2Architecture) || defined(iAPX286) || defined(DOS)
X STD_DEFINES = ServerDefines -DPCIO
X- #else
X- STD_DEFINES = ServerDefines -DATRIO -DUSE_PORTABLE_FAST_LINES=1
X- #endif
X
X INCLUDES = -I. -I../OPERATING_SYSTEM -I../ppc -I../../../include \
X -I$(INCLUDESRC) -I../common -I../../mfb -I../../mi
X--- 41,53 ----
X vgaStipple.o \
X vgaSolid.o
X
X! ASM_OBJS = vgaLine.386.o \
X! vgaSld.386.o \
X! vgaBlit.386.o
X
X OBJS = $(C_OBJS) $(ASM_OBJS)
X
X STD_DEFINES = ServerDefines -DPCIO
X
X INCLUDES = -I. -I../OPERATING_SYSTEM -I../ppc -I../../../include \
X -I$(INCLUDESRC) -I../common -I../../mfb -I../../mi
X***************
X*** 130,133 ****
X--- 126,150 ----
X #ifndef LCGBUILD
X LintLibraryTarget(vga,$(SRCS))
X NormalLintTarget($(SRCS))
X+ #endif
X+
X+ #if defined(i386Architecture) && !HasGcc
X+ /*
X+ * rcc won't statically initialize unions. Maybe we can do this at runtime.
X+ *
X+ * We are in trouble if we have to use cc here. cc does not pack bit
X+ * fields the same way that rcc and gcc do. The result is that object
X+ * files made by two different compilers are incompatible.
X+ *
X+ * struct {
X+ * char a[3];
X+ * unsigned i:1;
X+ * int j;
X+ * };
X+ *
X+ * cc produces an offset of 8 for j.
X+ * rcc and gcc produce an offset of 4 for j.
X+ */
X+ vgaData.o: vgaData.c
X+ gcc $(CFLAGS) -c vgaData.c
X #endif
X*** ./mit-orig/server/ddx/ibm/vga/vgaBitBlt.c Thu Oct 4 16:51:02 1990
X--- ./mit/server/ddx/ibm/vga/vgaBitBlt.c Sun Sep 16 22:19:27 1990
X***************
X*** 62,67 ****
X--- 62,71 ----
X #undef LEFT_SHIFT
X
X
X+ #ifdef USE_ASM
X+ extern void fast_blt_Aligned_Left();
X+ extern void fast_blt_Aligned_Right();
X+ #else
X #define NO_SHIFT
X #define MOVE_RIGHT
X static /* fast_blt_Aligned_Right() */
X***************
X*** 71,76 ****
X--- 75,81 ----
X #define MOVE_LEFT
X static /* fast_blt_Aligned_Left() */
X #include "vgaAddr.c"
X+ #endif
X #undef MOVE_LEFT
X #undef NO_SHIFT
X
X*** ./mit-orig/server/ddx/ibm/vga/vgaBlit.386.s Thu Oct 4 18:02:23 1990
X--- ./mit/server/ddx/ibm/vga/vgaBlit.386.s Mon Sep 17 16:55:55 1990
X***************
X*** 0 ****
X--- 1,436 ----
X+ .file "vgaBlit.386.s"
X+ .text
X+ .align 4
X+ .globl fast_blt_Aligned_Left
X+ fast_blt_Aligned_Left:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %edi
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%edi
X+ movl 16(%ebp),%edx
X+ movl 20(%ebp),%ebx
X+ movl 24(%ebp),%ecx
X+ leal (%ecx,%edx),%eax
X+ std
X+ negl %edx
X+ addl $128,%edx
X+ leal .fastALeft0(%edx),%edx
X+ jmp *%edx
X+ .align 4
X+ .fastALeft0:
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ movsb; movsb; movsb; movsb; movsb; movsb; movsb; movsb;
X+ decl %ebx
X+ je .fastALeft1
X+ addl %eax,%esi
X+ addl %eax,%edi
X+ jmp *%edx
X+ .fastALeft1:
X+ cld
X+ leal -24(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ popl %edi
X+ leave
X+ ret
X+ .align 4
X+ .globl fast_blt_Aligned_Right
X+ fast_blt_Aligned_Right:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %edi
X+ pushl %esi
X+ pushl %ebx
X+ pushl %ebp
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%edi
X+ movl 16(%ebp),%edx
X+ movl 20(%ebp),%ebx
X+ movl 24(%ebp),%ebp
X+ movl %ebp,%eax
X+ subl %edx,%eax
X+ leal (%esi,%edx),%ecx
X+ cld
X+ andl $15,%edx
X+ jmp *.fastARight0(,%edx,4)
X+ .align 4
X+ .fastARight0:
X+ .long .fastARight1
X+ .long .fastARight16
X+ .long .fastARight15
X+ .long .fastARight14
X+ .long .fastARight13
X+ .long .fastARight12
X+ .long .fastARight11
X+ .long .fastARight10
X+ .long .fastARight9
X+ .long .fastARight8
X+ .long .fastARight7
X+ .long .fastARight6
X+ .long .fastARight5
X+ .long .fastARight4
X+ .long .fastARight3
X+ .long .fastARight2
X+ .fastARight1:
X+ movsb
X+ .fastARight2:
X+ movsb
X+ .fastARight3:
X+ movsb
X+ .fastARight4:
X+ movsb
X+ .fastARight5:
X+ movsb
X+ .fastARight6:
X+ movsb
X+ .fastARight7:
X+ movsb
X+ .fastARight8:
X+ movsb
X+ .fastARight9:
X+ movsb
X+ .fastARight10:
X+ movsb
X+ .fastARight11:
X+ movsb
X+ .fastARight12:
X+ movsb
X+ .fastARight13:
X+ movsb
X+ .fastARight14:
X+ movsb
X+ .fastARight15:
X+ movsb
X+ .fastARight16:
X+ movsb
X+ cmpl %esi,%ecx
X+ jne .fastARight1
X+ decl %ebx
X+ je .fastARight17
X+ addl %eax,%esi
X+ addl %eax,%edi
X+ addl %ebp,%ecx
X+ jmp *.fastARight0(,%edx,4)
X+ .fastARight17:
X+ popl %ebp
X+ leal -24(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ popl %edi
X+ leave
X+ ret
X+ .text
X+ .align 4
X+ fast_CursortoBlt1:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ decl %eax
X+ .fast_toBlt1_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ incl %esi
X+ leal 1(%eax,%ecx),%ecx
X+ .fast_toBlt1_1:
X+ decl %ebx
X+ jne .fast_toBlt1_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursortoBlt2:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $2,%eax
X+ .fast_toBlt2_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ addl $2,%esi
X+ leal 2(%eax,%ecx),%ecx
X+ .fast_toBlt2_1:
X+ decl %ebx
X+ jne .fast_toBlt2_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursortoBlt3:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $3,%eax
X+ .fast_toBlt3_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ movb 2(%esi),%dl
X+ movb %dl,2(%ecx)
X+ addl $3,%esi
X+ leal 3(%eax,%ecx),%ecx
X+ .fast_toBlt3_1:
X+ decl %ebx
X+ jne .fast_toBlt3_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursortoBlt4:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $4,%eax
X+ .fast_toBlt4_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ movb 2(%esi),%dl
X+ movb %dl,2(%ecx)
X+ movb 3(%esi),%dl
X+ movb %dl,3(%ecx)
X+ addl $4,%esi
X+ leal 4(%eax,%ecx),%ecx
X+ .fast_toBlt4_1:
X+ decl %ebx
X+ jne .fast_toBlt4_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursortoBlt5:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $5,%eax
X+ .fast_toBlt5_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ movb 2(%esi),%dl
X+ movb %dl,2(%ecx)
X+ movb 3(%esi),%dl
X+ movb %dl,3(%ecx)
X+ movb 4(%esi),%dl
X+ movb %dl,4(%ecx)
X+ addl $5,%esi
X+ leal 5(%eax,%ecx),%ecx
X+ .fast_toBlt5_1:
X+ decl %ebx
X+ jne .fast_toBlt5_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursorfromBlt1:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ decl %eax
X+ .fast_fromBlt1_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ incl %ecx
X+ leal 1(%eax,%esi),%esi
X+ .fast_fromBlt1_1:
X+ decl %ebx
X+ jne .fast_fromBlt1_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursorfromBlt2:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $2,%eax
X+ .fast_fromBlt2_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ addl $2,%ecx
X+ leal 2(%eax,%esi),%esi
X+ .fast_fromBlt2_1:
X+ decl %ebx
X+ jne .fast_fromBlt2_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursorfromBlt3:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $3,%eax
X+ .fast_fromBlt3_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ movb 2(%esi),%dl
X+ movb %dl,2(%ecx)
X+ addl $3,%ecx
X+ leal 3(%eax,%esi),%esi
X+ .fast_fromBlt3_1:
X+ decl %ebx
X+ jne .fast_fromBlt3_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursorfromBlt4:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $4,%eax
X+ .fast_fromBlt4_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ movb 2(%esi),%dl
X+ movb %dl,2(%ecx)
X+ movb 3(%esi),%dl
X+ movb %dl,3(%ecx)
X+ addl $4,%ecx
X+ leal 4(%eax,%esi),%esi
X+ .fast_fromBlt4_1:
X+ decl %ebx
X+ jne .fast_fromBlt4_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .align 4
X+ fast_CursorfromBlt5:
X+ pushl %ebp
X+ movl %esp,%ebp
X+ pushl %esi
X+ pushl %ebx
X+ movl 8(%ebp),%esi
X+ movl 12(%ebp),%ecx
X+ movl 16(%ebp),%ebx
X+ movl BYTES_PER_ROW,%eax
X+ subl $5,%eax
X+ .fast_fromBlt5_0:
X+ movb (%esi),%dl
X+ movb %dl,(%ecx)
X+ movb 1(%esi),%dl
X+ movb %dl,1(%ecx)
X+ movb 2(%esi),%dl
X+ movb %dl,2(%ecx)
X+ movb 3(%esi),%dl
X+ movb %dl,3(%ecx)
X+ movb 4(%esi),%dl
X+ movb %dl,4(%ecx)
X+ addl $5,%ecx
X+ leal 5(%eax,%esi),%esi
X+ .fast_fromBlt5_1:
X+ decl %ebx
X+ jne .fast_fromBlt5_0
X+ leal -8(%ebp),%esp
X+ popl %ebx
X+ popl %esi
X+ leave
X+ ret
X+ .data
X+ .align 4
X+ .globl UnwoundtoBlitProcs
X+ UnwoundtoBlitProcs:
X+ .long fast_CursortoBlt1
X+ .long fast_CursortoBlt2
X+ .long fast_CursortoBlt3
X+ .long fast_CursortoBlt4
X+ .long fast_CursortoBlt5
X+ .align 4
X+ .globl UnwoundfromBlitProcs
X+ UnwoundfromBlitProcs:
X+ .long fast_CursorfromBlt1
X+ .long fast_CursorfromBlt2
X+ .long fast_CursorfromBlt3
X+ .long fast_CursorfromBlt4
X+ .long fast_CursorfromBlt5
X*** ./mit-orig/server/ddx/ibm/vga/vgaCurs.c Thu Oct 4 16:51:02 1990
X--- ./mit/server/ddx/ibm/vga/vgaCurs.c Sun Sep 16 22:14:11 1990
X***************
X*** 55,63 ****
X /* CONSTANTS FOR NOW */
X #define MAX_CURSOR_WIDTH 32
X #define MAX_CURSOR_HEIGHT 32
X- #define CURSOR_SAVE_ROW ( MAX_OFFSCREEN_ROW - MAX_CURSOR_HEIGHT )
X- #define CURSOR_SAVE_COL 0
X
X /* Global Semaphore For Low Level ( e.g. Screen Drawing ) Routines */
X int vgaCursorSemaphore = 0 ;
X
X--- 55,62 ----
X /* CONSTANTS FOR NOW */
X #define MAX_CURSOR_WIDTH 32
X #define MAX_CURSOR_HEIGHT 32
X
X+ extern unsigned char * CURSOR_BUFFER;
X /* Global Semaphore For Low Level ( e.g. Screen Drawing ) Routines */
X int vgaCursorSemaphore = 0 ;
X
X***************
X*** 85,118 ****
X static int background_width = MAX_CURSOR_WIDTH ; /* width */
X static int background_height = MAX_CURSOR_HEIGHT ; /* height */
X
X /* Bytewidth == 1 */
X static void
X! fast_CursorBlt1( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! #define row_jump ( BYTES_PER_ROW - 1 )
X
X! for ( ; height-- ; source += row_jump, destination += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X }
X return ;
X }
X- #undef row_jump
X /* Bytewidth == 2 */
X static void
X! fast_CursorBlt2( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! #define row_jump ( BYTES_PER_ROW - 2 )
X
X! for ( ; height-- ; source += row_jump, destination += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X--- 84,217 ----
X static int background_width = MAX_CURSOR_WIDTH ; /* width */
X static int background_height = MAX_CURSOR_HEIGHT ; /* height */
X
X+ #ifdef USE_ASM
X+ extern void (*UnwoundfromBlitProcs[5])();
X+ extern void (*UnwoundtoBlitProcs[5])();
X+ #else
X /* Bytewidth == 1 */
X static void
X! fast_CursortoBlt1( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X+ register int row_jump = BYTES_PER_ROW - 1;
X+ for ( ; height-- ; destination += row_jump ) {
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ }
X+ return ;
X+ }
X+ /* Bytewidth == 2 */
X+ static void
X+ fast_CursortoBlt2( source, destination, height )
X+ register volatile unsigned char *source ;
X+ register volatile unsigned char *destination ;
X+ register unsigned int height ;
X+ {
X+ register int row_jump = BYTES_PER_ROW - 2;
X+ for ( ; height-- ; destination += row_jump ) {
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ }
X+ return ;
X+ }
X+ /* Bytewidth == 3 */
X+ static void
X+ fast_CursortoBlt3( source, destination, height )
X+ register volatile unsigned char *source ;
X+ register volatile unsigned char *destination ;
X+ register unsigned int height ;
X+ {
X+ register int row_jump = BYTES_PER_ROW - 3;
X+ for ( ; height-- ; destination += row_jump ) {
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ }
X+ return ;
X+ }
X+ /* Bytewidth == 4 */
X+ static void
X+ fast_CursortoBlt4( source, destination, height )
X+ register volatile unsigned char *source ;
X+ register volatile unsigned char *destination ;
X+ register unsigned int height ;
X+ {
X+ register int row_jump = BYTES_PER_ROW - 4;
X+ for ( ; height-- ; destination += row_jump ) {
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ }
X+ return ;
X+ }
X+ /* Bytewidth == 5 */
X+ static void
X+ fast_CursortoBlt5( source, destination, height )
X+ register volatile unsigned char *source ;
X+ register volatile unsigned char *destination ;
X+ register unsigned int height ;
X+ {
X+ register int row_jump = BYTES_PER_ROW - 5;
X+ for ( ; height-- ; destination += row_jump ) {
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ *( (VgaMemoryPtr) ( destination ++ ) ) =
X+ *( (VgaMemoryPtr) ( source ++ ) ) ;
X+ }
X+ return ;
X+ }
X+ static void (*UnwoundtoBlitProcs[5])() = {
X+ fast_CursortoBlt1,
X+ fast_CursortoBlt2,
X+ fast_CursortoBlt3,
X+ fast_CursortoBlt4,
X+ fast_CursortoBlt5
X+ } ;
X+ /* Bytewidth == 1 */
X+ static void
X+ fast_CursorfromBlt1( source, destination, height )
X+ register volatile unsigned char *source ;
X+ register volatile unsigned char *destination ;
X+ register unsigned int height ;
X+ {
X
X! register int row_jump = BYTES_PER_ROW - 1;
X
X! for ( ; height-- ; source += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X }
X return ;
X }
X /* Bytewidth == 2 */
X static void
X! fast_CursorfromBlt2( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! register int row_jump = BYTES_PER_ROW - 2;
X
X! for ( ; height-- ; source += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X***************
X*** 120,137 ****
X }
X return ;
X }
X- #undef row_jump
X /* Bytewidth == 3 */
X static void
X! fast_CursorBlt3( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! #define row_jump ( BYTES_PER_ROW - 3 )
X
X! for ( ; height-- ; source += row_jump, destination += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X--- 219,235 ----
X }
X return ;
X }
X /* Bytewidth == 3 */
X static void
X! fast_CursorfromBlt3( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! register int row_jump = BYTES_PER_ROW - 3;
X
X! for ( ; height-- ; source += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X***************
X*** 141,158 ****
X }
X return ;
X }
X- #undef row_jump
X /* Bytewidth == 4 */
X static void
X! fast_CursorBlt4( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! #define row_jump ( BYTES_PER_ROW - 4 )
X
X! for ( ; height-- ; source += row_jump, destination += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X--- 239,255 ----
X }
X return ;
X }
X /* Bytewidth == 4 */
X static void
X! fast_CursorfromBlt4( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! register int row_jump = BYTES_PER_ROW - 4;
X
X! for ( ; height-- ; source += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X***************
X*** 164,181 ****
X }
X return ;
X }
X- #undef row_jump
X /* Bytewidth == 5 */
X static void
X! fast_CursorBlt5( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! #define row_jump ( BYTES_PER_ROW - 5 )
X
X! for ( ; height-- ; source += row_jump, destination += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X--- 261,277 ----
X }
X return ;
X }
X /* Bytewidth == 5 */
X static void
X! fast_CursorfromBlt5( source, destination, height )
X register volatile unsigned char *source ;
X register volatile unsigned char *destination ;
X register unsigned int height ;
X {
X
X! register int row_jump = BYTES_PER_ROW - 5;
X
X! for ( ; height-- ; source += row_jump ) {
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X *( (VgaMemoryPtr) ( source ++ ) ) ;
X *( (VgaMemoryPtr) ( destination ++ ) ) =
X***************
X*** 189,213 ****
X }
X return ;
X }
X- #undef row_jump
X
X! static void (*UnwoundBlitProcs[5])() = {
X! fast_CursorBlt1,
X! fast_CursorBlt2,
X! fast_CursorBlt3,
X! fast_CursorBlt4,
X! fast_CursorBlt5
X } ;
X
X /* Only Does Special Case -- VERY Fast Blt
X * ( Width % 8 ) == 0 AND ( x0 % 8 ) == 0 AND ( x1 % 8 ) == 0
X */
X static void
X! vgaCursorBitBlt( x0, y0, x1, y1, w, h )
X register int x0 ;
X register int y0 ;
X- register int x1 ;
X- register int y1 ;
X register int w, h ;
X {
X
X--- 285,330 ----
X }
X return ;
X }
X
X! static void (*UnwoundfromBlitProcs[5])() = {
X! fast_CursorfromBlt1,
X! fast_CursorfromBlt2,
X! fast_CursorfromBlt3,
X! fast_CursorfromBlt4,
X! fast_CursorfromBlt5
X } ;
X+ #endif
X
X /* Only Does Special Case -- VERY Fast Blt
X * ( Width % 8 ) == 0 AND ( x0 % 8 ) == 0 AND ( x1 % 8 ) == 0
X */
X static void
X! vgaCursortoBitBlt( x0, y0, w, h )
X! register int x0 ;
X! register int y0 ;
X! register int w, h ;
X! {
X! /* ******************** Vga Register Setup ******************** */
X! /* Disable SET/RESET Function */
X! SetVideoGraphics( Enb_Set_ResetIndex, 0 ) ;
X! /* Set Write Mode To 0 -- Read Mode To 0 */
X! SetVideoGraphics( Graphics_ModeIndex, 0 ) ;
X! /* Set Bit Mask -- ALL OFF */
X! SetVideoGraphics( Bit_MaskIndex, 0 ) ;
X! /* Ignore Data Rotate Function */
X! /* Set Map Mask */
X! SetVideoSequencer( Mask_MapIndex, VGA_ALLPLANES ) ;
X! /* Really Do It Here! */
X! (*UnwoundtoBlitProcs[ROW_OFFSET( w ) - 1])(
X! (unsigned char *) CURSOR_BUFFER,
X! (unsigned char *) VGABASE + ( BYTES_PER_ROW * y0 ) + ROW_OFFSET( x0 ),
X! h ) ;
X! return ;
X! }
X! static void
X! vgaCursorfromBitBlt( x0, y0, w, h )
X register int x0 ;
X register int y0 ;
X register int w, h ;
X {
X
X***************
X*** 223,231 ****
X SetVideoSequencer( Mask_MapIndex, VGA_ALLPLANES ) ;
X
X /* Really Do It Here! */
X! (*UnwoundBlitProcs[ROW_OFFSET( w ) - 1])(
X (unsigned char *) VGABASE + ( BYTES_PER_ROW * y0 ) + ROW_OFFSET( x0 ),
X! (unsigned char *) VGABASE + ( BYTES_PER_ROW * y1 ) + ROW_OFFSET( x1 ),
X h ) ;
X
X return ;
X--- 340,348 ----
X SetVideoSequencer( Mask_MapIndex, VGA_ALLPLANES ) ;
X
X /* Really Do It Here! */
X! (*UnwoundfromBlitProcs[ROW_OFFSET( w ) - 1])(
X (unsigned char *) VGABASE + ( BYTES_PER_ROW * y0 ) + ROW_OFFSET( x0 ),
X! (unsigned char *) CURSOR_BUFFER,
X h ) ;
X
X return ;
X***************
X*** 389,396 ****
X void
X vgaRemoveCursor()
X {
X! vgaCursorBitBlt( CURSOR_SAVE_COL, CURSOR_SAVE_ROW,
X! cursor_save_x_loc, cursor_save_y_loc,
X cursor_save_width, cursor_save_height ) ;
X active = FALSE ;
X return ;
X--- 506,512 ----
X void
X vgaRemoveCursor()
X {
X! vgaCursortoBitBlt( cursor_save_x_loc, cursor_save_y_loc,
X cursor_save_width, cursor_save_height ) ;
X active = FALSE ;
X return ;
X***************
X*** 445,456 ****
X && ( ( bg_height > 0 ) || ( fg_height > 0 ) )
X && ( x <= MAX_COLUMN )
X && ( y <= MAX_ROW ) ) {
X! /* Round Edges To Use FAST Blt */
X! vgaCursorBitBlt(
X ( cursor_save_x_loc = x & ~0x7 ),
X ( cursor_save_y_loc = y ),
X- CURSOR_SAVE_COL,
X- CURSOR_SAVE_ROW,
X ( cursor_save_width = ( ( MAX( bgwidth, fgwidth )
X + ( x & 0x7 ) ) + 0x7 ) & ~0x7 ),
X ( cursor_save_height = MAX( bg_height, fg_height ) ) ) ;
X--- 561,570 ----
X && ( ( bg_height > 0 ) || ( fg_height > 0 ) )
X && ( x <= MAX_COLUMN )
X && ( y <= MAX_ROW ) ) {
X! /* screeen to buffer */
X! vgaCursorfromBitBlt(
X ( cursor_save_x_loc = x & ~0x7 ),
X ( cursor_save_y_loc = y ),
X ( cursor_save_width = ( ( MAX( bgwidth, fgwidth )
X + ( x & 0x7 ) ) + 0x7 ) & ~0x7 ),
X ( cursor_save_height = MAX( bg_height, fg_height ) ) ) ;
X*** ./mit-orig/server/ddx/ibm/vga/vgaData.c Thu Oct 4 16:51:11 1990
X--- ./mit/server/ddx/ibm/vga/vgaData.c Tue Sep 18 21:42:52 1990
X***************
X*** 166,172 ****
X VGA_ALLPLANES, /* unsigned long planemask */
X VGA_BLACK_PIXEL, /* unsigned long fgPixel */
X VGA_WHITE_PIXEL, /* unsigned long bgPixel */
X! 0, /* PixmapPtr tile */
X 0, /* PixmapPtr stipple */
X { 0, 0 }, /* DDXPointRec patOrg */
X 0, /* FontPtr font */
X--- 166,172 ----
X VGA_ALLPLANES, /* unsigned long planemask */
X VGA_BLACK_PIXEL, /* unsigned long fgPixel */
X VGA_WHITE_PIXEL, /* unsigned long bgPixel */
X! { 0 }, /* PixUnion tile */
X 0, /* PixmapPtr stipple */
X { 0, 0 }, /* DDXPointRec patOrg */
X 0, /* FontPtr font */
X***************
X*** 175,183 ****
X NULL, /* pointer clientClip */
X (1<<(GCLastBit+1))-1, /* unsigned long stateChanges */
X 0, /* unsigned long serialNumber */
X! (GCFuncs *) &vgaGCFuncs, /* pointer funcs */
X! (GCOps *) &vgaGCOps, /* pointer ops */
X! (DevUnion *) &vgaPrototypeGCPriv /* DevUnion *devPrivates */
X } ;
X
X ppcScrnPriv vgaScrnPriv = {
X--- 175,183 ----
X NULL, /* pointer clientClip */
X (1<<(GCLastBit+1))-1, /* unsigned long stateChanges */
X 0, /* unsigned long serialNumber */
X! (GCFuncs *)&vgaGCFuncs, /* pointer funcs */
X! (GCOps *)&vgaGCOps, /* pointer ops */
X! (DevUnion *)&vgaPrototypeGCPriv /* DevUnion *devPrivates */
X } ;
X
X ppcScrnPriv vgaScrnPriv = {
X***************
X*** 190,203 ****
X 0, /* unsigned long id */
X 0, /* short x */
X 0, /* short y */
X! MAX_COLUMN + 1, /* short width */
X! MAX_ROW + 1, /* short height */
X 0, /* ScreenPtr pScreen */
X 0, /* unsigned long serialNumber */
X }, /* DrawableRec drawable */
X 1, /* int refcnt */
X! (MAX_ROW + 1) / 8, /* int devKind */
X! 0 /* pointer devPrivate */
X }, /* PixmapRec pixmap */
X 0, /* void (* devHardwareInitBB)() */
X 0, /* void (* devHardwareInitAB)() */
X--- 190,203 ----
X 0, /* unsigned long id */
X 0, /* short x */
X 0, /* short y */
X! 640, /* short width */
X! 480, /* short height */
X 0, /* ScreenPtr pScreen */
X 0, /* unsigned long serialNumber */
X }, /* DrawableRec drawable */
X 1, /* int refcnt */
X! 60, /* int devKind */
X! { 0 } /* DevUnion devPrivate */
X }, /* PixmapRec pixmap */
X 0, /* void (* devHardwareInitBB)() */
X 0, /* void (* devHardwareInitAB)() */
X***************
X*** 233,242 ****
X ScreenRec vgaScreenRec = {
X 0, /* int myNum */
X 0, /* ATOM id */
X! MAX_COLUMN + 1, /* short width */
X! MAX_ROW + 1, /* short height */
X! ((MAX_COLUMN+1)*254 )/800, /* short mmWidth */
X! ((MAX_ROW+1)*254)/800, /* short mmHeight */
X sizeof vgaDepths/sizeof (DepthRec), /* short numDepths */
X VGA_MAXPLANES, /* short rootDepth */
X vgaDepths, /* DepthPtr allowedDepths */
X--- 233,242 ----
X ScreenRec vgaScreenRec = {
X 0, /* int myNum */
X 0, /* ATOM id */
X! 640, /* short width */
X! 480, /* short height */
X! 240, /* short mmWidth */
X! 180, /* short mmHeight */
X sizeof vgaDepths/sizeof (DepthRec), /* short numDepths */
X VGA_MAXPLANES, /* short rootDepth */
X vgaDepths, /* DepthPtr allowedDepths */
X*** ./mit-orig/server/ddx/ibm/vga/vgaGBlt.c Thu Oct 4 16:51:03 1990
X--- ./mit/server/ddx/ibm/vga/vgaGBlt.c Sun Sep 16 22:14:12 1990
X***************
X*** 70,94 ****
X #include "mfb.h"
X #include "ppc.h"
X #include "maskbits.h"
X- #include "ppcUtils.h"
X
X extern PixmapPtr ppcCreatePixmap() ;
X
X! static
X! void filltempPixmap( pPixmap, pglyph, w, h )
X! register PixmapPtr pPixmap ;
X register unsigned char *pglyph ;
X! register int w, h ;
X {
X! register unsigned char *dest ;
X! register int djmp = (int) pPixmap->devKind ;
X!
X! dest = pPixmap->devPrivate ;
X
X while ( h-- ) {
X! bcopy( pglyph, dest, w ) ;
X pglyph += w ;
X! dest += djmp ;
X }
X
X return ;
X--- 70,92 ----
X #include "mfb.h"
X #include "ppc.h"
X #include "maskbits.h"
X
X extern PixmapPtr ppcCreatePixmap() ;
X
X! void
X! filltempPixmap( pPixmap, pglyph, w, h )
X! PixmapPtr pPixmap ;
X register unsigned char *pglyph ;
X! register const int w ;
X! register int h ;
X {
X! register unsigned char *dest = pPixmap->devPrivate.ptr;
X! register int dstWidth= pPixmap->devKind;
X
X while ( h-- ) {
X! MOVE( pglyph, dest, w ) ;
X pglyph += w ;
X! dest += dstWidth;
X }
X
X return ;
X***************
X*** 133,140 ****
X
X QueryGlyphExtents( pGC->font, ppci, nglyph, &info ) ;
X
X! x += ( (WindowPtr) pDrawable )->absCorner.x ;
X! y += ( (WindowPtr) pDrawable )->absCorner.y ;
X
X backrect.x = x + info.overallLeft ;
X backrect.y = y - pGC->font->pFI->fontAscent ;
X--- 131,138 ----
X
X QueryGlyphExtents( pGC->font, ppci, nglyph, &info ) ;
X
X! x += pDrawable->x ;
X! y += pDrawable->y ;
X
X backrect.x = x + info.overallLeft ;
X backrect.y = y - pGC->font->pFI->fontAscent ;
X***************
X*** 148,157 ****
X bbox.y1 = y - info.overallAscent ;
X bbox.y2 = y + info.overallDescent ;
X
X! pRegion = ( (mfbPrivGC *) ( pGC->devPriv ) )->pCompositeClip ;
X! if ( !( nbox = pRegion->numRects ) )
X return ;
X! pbox = pRegion->rects ;
X
X alu = pGC->alu ;
X pm = pGC->planemask ;
X--- 146,155 ----
X bbox.y1 = y - info.overallAscent ;
X bbox.y2 = y + info.overallDescent ;
X
X! pRegion = ((ppcPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip ;
X! if ( !( nbox = REGION_NUM_RECTS(pRegion) ) )
X return ;
X! nbox = (int)REGION_RECTS(pRegion);
X
X alu = pGC->alu ;
X pm = pGC->planemask ;
X***************
X*** 221,232 ****
X been_here = TRUE ;
X }
X prgnClip = (*pScreen->RegionCreate)
X! ( &cbox, pRegion->numRects ) ;
X (*pScreen->Intersect)( prgnClip,
X prgnClip,
X pRegion ) ;
X! pbox = prgnClip->rects ;
X! if ( !( nbox = prgnClip->numRects ) )
X break ;
X filltempPixmap( pTempPixmap, pglyph,
X GLYPHWIDTHBYTESPADDED( pci ),
X--- 219,230 ----
X been_here = TRUE ;
X }
X prgnClip = (*pScreen->RegionCreate)
X! ( &cbox, REGION_NUM_RECTS(pRegion)) ;
X (*pScreen->Intersect)( prgnClip,
X prgnClip,
X pRegion ) ;
X! pbox = REGION_RECTS(prgnClip);
X! if ( !( nbox = REGION_NUM_RECTS(prgnClip)) )
X break ;
X filltempPixmap( pTempPixmap, pglyph,
X GLYPHWIDTHBYTESPADDED( pci ),
X***************
X*** 298,305 ****
X
X QueryGlyphExtents( pGC->font, ppci, nglyph, &info ) ;
X
X! x += ( (WindowPtr) pDrawable )->absCorner.x ;
X! y += ( (WindowPtr) pDrawable )->absCorner.y ;
X
X bbox.x1 = x + info.overallLeft ;
X bbox.x2 = x + info.overallRight ;
X--- 296,303 ----
X
X QueryGlyphExtents( pGC->font, ppci, nglyph, &info ) ;
X
X! x += pDrawable->x ;
X! y += pDrawable->y ;
X
X bbox.x1 = x + info.overallLeft ;
X bbox.x2 = x + info.overallRight ;
X***************
X*** 306,314 ****
X bbox.y1 = y - info.overallAscent ;
X bbox.y2 = y + info.overallDescent ;
X
X! pRegion = ( (mfbPrivGC *) ( pGC->devPriv ) )->pCompositeClip ;
X! pbox = pRegion->rects ;
X! if ( !( nbox = pRegion->numRects ) )
X return ;
X
X alu = pGC->alu ;
X--- 304,312 ----
X bbox.y1 = y - info.overallAscent ;
X bbox.y2 = y + info.overallDescent ;
X
X! pRegion = ((ppcPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip ;
X! pbox = REGION_RECTS(pRegion);
X! if ( !( nbox = REGION_NUM_RECTS(pRegion) ) )
X return ;
X
X alu = pGC->alu ;
X***************
X*** 375,386 ****
X been_here = TRUE ;
X }
X prgnClip =
X! (*pScreen->RegionCreate)( &cbox, pRegion->numRects ) ;
X (*pScreen->Intersect)( prgnClip,
X prgnClip,
X pRegion ) ;
X! pbox = prgnClip->rects ;
X! if ( !( nbox = prgnClip->numRects ) )
X break ;
X filltempPixmap( pTempPixmap, pglyph,
X GLYPHWIDTHBYTESPADDED( pci ),
X--- 373,384 ----
X been_here = TRUE ;
X }
X prgnClip =
X! (*pScreen->RegionCreate)( &cbox, REGION_NUM_RECTS(pRegion)) ;
X (*pScreen->Intersect)( prgnClip,
X prgnClip,
X pRegion ) ;
X! pbox = REGION_RECTS(prgnClip);
X! if ( !( nbox = REGION_NUM_RECTS(prgnClip)) )
X break ;
X filltempPixmap( pTempPixmap, pglyph,
X GLYPHWIDTHBYTESPADDED( pci ),
END_OF_FILE
if test 46868 -ne `wc -c <'fix-14.sco09'`; then
echo shar: \"'fix-14.sco09'\" unpacked with wrong size!
fi
# end of 'fix-14.sco09'
fi
echo shar: End of archive 9 \(of 12\).
cp /dev/null ark9isdone
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 at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.
More information about the Comp.sources.x
mailing list