jimke@uunet.uu.net (10/12/90)
Submitted-by: microsoft!jimke@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@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@sun.com / argv@ora.com Opinions expressed reflect those of the author only.