Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 alpha 4/15/85; site ucbvax.ARPA Path: utzoo!watmath!clyde!bonnie!akgua!whuxlm!whuxl!houxm!ihnp4!ucbvax!info-vlsi From: info-vlsi@ucbvax.ARPA Newsgroups: fa.info-vlsi Subject: Magic on AED767s Message-ID: <8677@ucbvax.ARPA> Date: Mon, 1-Jul-85 19:25:44 EDT Article-I.D.: ucbvax.8677 Posted: Mon Jul 1 19:25:44 1985 Date-Received: Wed, 3-Jul-85 07:24:43 EDT Sender: daemon@ucbvax.ARPA Organization: University of California at Berkeley Lines: 257 From: kelem@aero2 Here are context diffs on files in ~cad/src/magic/graphics that will allow magic to be run on an AED767 with a Summagraphics bitpad. Use the "patch" program to install them. The fixes allow the 767 to work most (90%) of the time. Occasionally garbage characters will be read from the bitpad and you have to use ":reset" to get magic to read the bitpad again. UCB reports getting the same symptoms, but hasn't figured that one out yet. Good luck, Steve ---------------------------------- *** grAed1.c Mon Jul 1 13:40:53 1985 --------- /tmp/d06952 Mon Jul 1 13:40:59 1985 *************** *** 22,28 #ifndef lint ! static char sccsid[] = "@(#)grAed1.c 3.17 MAGIC (Berkeley) 3/3/85"; #endif not lint --------- 22,28 ----- #ifndef lint ! static char sccsid[] = "@(#)grAed1.c 3.17.1.1 MAGIC (Berkeley) 6/12/85"; #endif not lint *************** *** 31,37 extern Void AedEnableTablet(), AedDisableTablet(), AedSetTrackingRect(); extern Void AedSetCMap(), aedPutText(), aedDefineCursor(); extern Void AedSetCursor(), AedTextSize(), AedDrawGlyph(); ! extern Void AedBitBlt(), aed1024BitBlt(); extern int AedReadPixel(); extern Void aedDrawLine(), aedSetLineStyle(), aedSetCharSize(); extern Void aedSetWMandC(), aedFillRect(); --------- 31,37 ----- extern Void AedEnableTablet(), AedDisableTablet(), AedSetTrackingRect(); extern Void AedSetCMap(), aedPutText(), aedDefineCursor(); extern Void AedSetCursor(), AedTextSize(), AedDrawGlyph(); ! extern Void AedBitBlt(), aed1024BitBlt(), Aed767BitBlt(); extern int AedReadPixel(); extern Void aedDrawLine(), aedSetLineStyle(), aedSetCharSize(); extern Void aedSetWMandC(), aedFillRect(); *************** *** 468,473 aedOffPoint.p_x = 512 - 14; aedOffPoint.p_y = aedCursorRow; aedHasProgCursor = TRUE; aedButtonOrder = BUT248; } else if (strcmp(dispType,"AED1024") == 0) { GrScreenRect.r_xtop = 1023; --------- 468,483 ----- aedOffPoint.p_x = 512 - 14; aedOffPoint.p_y = aedCursorRow; aedHasProgCursor = TRUE; + aedButtonOrder = BUT248; + } else if (strcmp(dispType,"AED767") == 0) { + GrScreenRect.r_xtop = 767; + GrScreenRect.r_ytop = 574; + aedDSP = "+!"; /* DSP: code for define stipple pattern */ + aedCursorRow = 575; + aedOffPoint.p_x = 512 - 14; + aedOffPoint.p_y = aedCursorRow; + aedHasProgCursor = FALSE; + GrBitBltPtr = Aed767BitBlt; aedButtonOrder = BUT248; } else if (str = 512 - 14; + aedOffPoint.p_y = aedCursorRow; + aedHasProgCursor = FALSE; + GrBitBltPtr = Aed767BitBlt; aedButtonOrder = BUT248; } else if (strcmp(dispType,"AED1024") == 0) { GrScreenRect.r_xtop = 1023; *** grAed3.c Mon Jul 1 13:41:23 1985 --------- /tmp/d06961 Mon Jul 1 13:41:27 1985 *************** *** 9,15 */ #ifndef lint ! static char sccsid[] = "@(#)grAed3.c 3.19 MAGIC (Berkeley) 3/3/85"; #endif not lint #include--------- 9,15 ----- */ #ifndef lint ! static char sccsid[] = "@(#)grAed3.c 3.19.1.1 MAGIC (Berkeley) 6/12/85"; #endif not lint #include *************** *** 338,343 /* restore write mask */ putc('L', grAedOutput); putc(aedWMask&0377, grAedOutput); } --------- 338,366 ----- /* restore write mask */ putc('L', grAedOutput); putc(aedWMask&0377, grAedOutput); + } + + /* + * ---------------------------------------------------------------------------- + * Aed767BitBlt -- + * + * Don't copy information from one part of the screen to the other + * if the Aed can't handle the BitBlt. + * Do not call 'Aed767BitBlt' directly, call 'GrBitBlt' instead. + * + * Results: + * None. + * + * Side effects: + * None. + * ---------------------------------------------------------------------------- + */ + + Void + Aed767BitBlt(r, p) + Rect *r; + Point *p; + { } *** grMain.c Mon Jul 1 13:41:51 1985 --------- /tmp/d06972 Mon Jul 1 13:41:56 1985 *************** *** 10,16 */ #ifndef lint ! static char sccsid[] = "@(#)grMain.c 3.22 MAGIC (Berkeley) 2/14/85"; #endif not lint /* --------- 10,16 ----- */ #ifndef lint ! static char sccsid[] = "@(#)grMain.c 3.22.1.1 MAGIC (Berkeley) 6/12/85"; #endif not lint /* *************** *** 28,33 * Sun optical mouse. Also works on some old Sun1s with * the 'Sun2 brain transplant'. * * AED1024 An AED1024 with a SummaGraphics Mouse and rev. D roms. * Because of a lack of features in this device, * programable cursors do not work. Many thanks to --------- 28,35 ----- * Sun optical mouse. Also works on some old Sun1s with * the 'Sun2 brain transplant'. * + * AED767 An AED767 with a SummaGraphics tablet + * * AED1024 An AED1024 with a SummaGraphics Mouse and rev. D roms. * Because of a lack of features in this device, * programable cursors do not work. Many thanks to *************** *** 66,71 "SUN120", #endif "UCB512", "AED1024", "NULL", NULL}; --------- 68,74 ----- "SUN120", #endif "UCB512", + "AED767", "AED1024", "NULL", NULL}; *************** *** 79,85 sunSetDisplay, sunSetDisplay, #endif ! aedSetDisplay, /* Handles both UCB512s and AED1024s */ aedSetDisplay, nullSetDisplay, NULL}; --------- 82,89 ----- sunSetDisplay, sunSetDisplay, #endif ! aedSetDisplay, /* Handles UCB512s, AED767s and AED1024s */ ! aedSetDisplay, aedSetDisplay, nullSetDisplay, NULL}; *** grText.c Mon Jul 1 13:42:06 1985 --------- /tmp/d06978 Mon Jul 1 13:42:08 1985 *************** *** 8,14 */ #ifndef lint ! static char sccsid[] = "@(#)grText.c 3.10 MAGIC (Berkeley) 1/23/85"; #endif not lint #include --------- 8,14 ----- */ #ifndef lint ! static char sccsid[] = "@(#)grText.c 3.10.1.1 MAGIC (Berkeley) 6/12/85"; #endif not lint #include *************** *** 78,85 /* don't let the clip area be off screen */ ASSERT( (** 78,85 /* don't let the clip area be off screen */ ASSERT( (clip->r_xbot >= 0) && (clip->r_ybot >= 0), "GrPutText"); ! ASSERT( (clip->r_xtop <= GrScreenRect.r_xtop) && \ ! (clip->r_ytop <= GrScreenRect.r_ytop), "GrPutText"); /* The following loop sees if the text will fit in the clipping * area. If not, and shrinking is allowed, we try again and --------- 78,84 ----- /* don't let the clip area be off screen */ ASSERT( (clip->r_xbot >= 0) && (clip->r_ybot >= 0), "GrPutText"); ! ASSERT( (clip->r_xtop <= GrScreenRect.r_xtop) && (clip->r_ytop <= GrScreenRect.r_ytop), "GrPutText"); /* The following loop sees if the text will fit in the clipping * area. If not, and shrinking is allowed, we try again and