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