More memories (was: Re: [TriLUG] UNIX architecture page needed)

Rick DeNatale rick.denatale at gmail.com
Wed Dec 14 09:28:57 EST 2005


On 12/14/05, Greg Brown <gwbrown1 at gmail.com> wrote:


> There is a wealth of knowledge on Mr. Ritchie's home page for anyone interested.

Indeed.

I got a kick out of his story involving Penn and Teller and a
practical joke at Bell Labs.  It also mentioned Rob Pike which
reminded me of another 21 year old story.

At Siggraph '84, Rob Pike, Leo Guibas, and Dan Ingalls gave a tutorial
on bitmap graphics.  Lots of interesting stuff was presented. Dan
Ingalls, who was responsible for the basic BitBLT (Bit Block Transfer)
graphics primitive on the original Xerox Alto Smalltalk implementation
talked about that and went on to unusual applications such as using
bitblt for character recognition.  I can't exactly recall what Guibas
covered. Rob Pike talked about the implementation of bitblt on the
blit terminal.

I was intrigued to see that another person taking the class was Bill
Atkinson. This was just after the original Macintosh had been
introduced, and Bill was pretty famous as the guru behind Quickdraw,
the Mac's graphics engine.  Bill tended to do things the hard way. He
was one of the select few who Steve Jobs had brought to Xerox Parc to
see the demo of the Alto and Smalltalk, and had figured that they were
doing pretty sophisticated clipping at a low level in order to do
overlapping windows, so he invented the concept of regions in
Quickdraw which supported arbitrary non-retangular clipping.  Atkinson
was the sole developer of Quickdraw, and most of the tricks were
documented in his head.  There's a famous story of his having a pretty
serious car accident. Jobs rushed to the hospital to see him and ask
if he was still alright, and his reply was "Don't worry Steve, I still
remember regions."
http://www.folklore.org/StoryView.py?project=Macintosh&story=I_Still_Remember_Regions.txt&topic=QuickDraw

The irony is that the Alto/Smalltalk did no such complicated clipping,
it just relied on drawing the windows in z-order, perhaps to an
offscreen buffer.

Anyway, I seated myself a few rows behind Atkinson, and proceeded to
enjoy the tutorial.

One of the complications of BitBlt was/is that it deals with quite a
few variations. It would move retangular blocks of bits (B/W pixels)
which needed to be shifted, and combined with existing bits in the
framebuffer and a mask according to various boolean combination rules.
 Optimizing this was a challenge in balancing speed vs. code space in
implementing the innermost loop.  Usually this was done by picking a
few common cases to optimize by having special inner loops and
implement the others with slow code which included quite a few
conditional branches.

Pike talked about this problem and then said that on the blit, he
simply dynamically compiled optimized inner loop code.

I watched as Atkinson's head popped up and then sank down to rest on
the table for a few seconds!

--
Rick DeNatale

Visit the Project Mercury Wiki Site
http://www.mercuryspacecraft.com/



More information about the TriLUG mailing list