https://www.folklore.org/Thunderscan.html
folklore.org
Home | About Folklore | Quotes
[needlemac] The Original [leftarrow] 102 of Rating
Macintosh: 125 [rightarrow] Overall
Rating: 4.53
Thunderscan [stars] (best)
Author: Andy Hertzfeld Your rating:
Date: June 1984 ( ) ( ) ( ) ( ) ( )
Characters: Tom Petrie, Victor Bull, Bill 1 2 3 4 5
Atkinson, Andy Hertzfeld
Topics: 3rd party developers, Hardware
Design, Software Design, Technical
Summary: A clever device transforms a printer
into a scanner
[tscan_broc]
brochure for Thunderscan
The first project that I worked on for Apple
after starting in August 1979 was writing low
level software for the Silentype printer (see
What Hath Woz Wrought), a cute, inexpensive
thermal printer for the Apple II, that was based
on technology licensed from a local company named
Trendcom. In typical Apple fashion, we improved
on Trendcom's design by replacing their
relatively expensive controller board with a much
simpler one that relied on the microprocessor in
the Apple II to do most of the dirty work.
The only other engineer working on the project
was Victor Bull, who was the hardware designer
and also the project leader. Vic was smart,
taciturn and easy to work with, and I learned a
lot from him about how thermal printers worked,
as well as how things worked at Apple. We
finished the project quickly, and the Silentype
shipped in November 1979, less than four months
after I began working on it.
In May 1984, during my leave of absence from
Apple (see Leave Of Absence), I received a phone
call from Victor Bull, who I hadn't heard from in
a couple of years. He had left Apple more than a
year ago to work with his friend Tom Petrie at a
tiny company based in Orinda named Thunderware,
that sold a single product called Thunderclock,
an inexpensive calendar/clock card for the Apple
II. Victor said that he thought that I might be
interested in writing software for an exciting,
clever new product that Thunderware was
developing for the Macintosh, which he refused to
describe over the phone. He invited me to come
visit them to check it out.
In early June, I drove up to Thunderware's office
in Orinda, which was about an hour's drive from
my house in Palo Alto. After I arrived at their
modest headquarters, Vic introduced me to his
partner, Tom Petrie, and I signed a
non-disclosure agreement before they ushered me
into a back room to see their demo.
The most popular printer for both the Apple II
and the Macintosh was the ImageWriter, a $500
dot-matrix printer capable of rendering bitmapped
graphics, that was designed and manufactured by
Japanese company named C.Itoh Electronics and
marketed by Apple. Virtually every Macintosh
owner purchased an ImageWriter, since it was the
only printer that was supported by Apple. Tom's
demo consisted of an ImageWriter printer hooked
up to an Apple II, that at first glance appeared
to be busily printing away. But when I looked
closer, I noticed that instead of blank paper,
there was a glossy photograph of a cat threaded
through the printer's platen, and the printer's
black plastic ribbon cartridge was missing,
replaced by a makeshift contraption containing an
optical sensing device that trailed an umbilical
cord back to the Apple II.
Their potential new product, Thunderscan, was a
low cost way to temporarily turn an ImageWriter
printer into a high resolution scanner, by
replacing the ribbon cartridge with an optical
sensor and writing some clever software. Since
the resolution was determined by the precision of
the printer's stepper motors, which had to be
very accurate in order to print detailed
graphics, Thunderscan, priced at under $200, had
better resolution than flat bed scanners costing
more than ten times as much. I loved the
cleverness of the ingenious concept, and the
Woz-like elegance of saving money and adding
flexibility by doing everything in software, but
there were also a few problems.
The biggest problem was that Thunderscan could
only capture one scan line's worth of data on
each pass of the print head, which made it nine
times slower than regular printing, since the
print head could deposit nine dots at a time.
This made for frustratingly slow scanning, often
taking over an hour to scan a full page at the
highest resolution. Thunderscan was never going
to win any races.
Another apparent problem was the disappointingly
low quality of the image being captured and
displayed by Tom Petrie's Apple II application.
Tom and Vic said their scanner was capable of
capturing up to 32 different levels of light
intensity, but both the Apple II (in hi-res mode)
and the Macintosh only had one bit per pixel to
display, so the software had to simulate gray
scales using patterns of black and white dots. It
looked like Tom was using a simple threshold
algorithm to do the rendering, which threw away
most of the gray scale information and made the
resulting image look unacceptably blotchy. It was
hard to tell if the quality promised by Tom and
Vic was there or not.
Tom and Vic proposed to hire me to write
Macintosh software for Thunderscan. I knew that a
low cost scanner would be a great product for the
image hungry Macintosh, but only if it had
sufficient quality, and I wasn't sure about that.
I told them that I'd think it over during the
next few days, and, as I did, I became more
excited about the potential of Thunderscan for
the Macintosh, realizing that the slow speed
wouldn't be that much of an impediment if the
quality and resolution was good enough. The low
image quality in Tom's prototype was probably
caused more by the Apple II software than by
anything inherent in the scanner. The Macintosh
was almost ten times faster than the Apple II, so
it should be able to sample the incoming data
better to obtain more horizontal resolution.
Plus, I knew a much better algorithm for gray
scale rendering that would be fun to try out in
practice.
My friend and colleague Bill Atkinson was a
talented photographer, and one of his hobbies was
playing around with digitized pictures,
periodically experimenting to find the best
algorithms for rendering them. Bill loved to
explain his current work to whoever would listen
to him, so I learned a lot about rendering gray
scale images over the years simply by being
around him. Bill had progressed over the years
from using an "ordered dither" algorithm, where
varying threshold values are specified in a
sliding matrix, to his current favorite, which
was a modified version of what was known as the
"Floyd-Steinberg" algorithm, where an error term
is maintained and distributed proportionally to
neighboring pixels.
I called Thunderware and told them I was
interested in working on Macintosh software for
Thunderscan, in exchange for a per-unit royalty.
I drove back up to Orinda, where Tom and Vic gave
me lots of documentation about the scanner, and
the sample code that Tom had written for the
Apple II. For the next couple of months, I drove
up to Orinda once a week, usually on Thursday, to
meet with Tom and Vic show them my progress,
prioritize development issues and discussion
various complications as they arose. We would
also discuss business terms, but we didn't sign a
formal contract until the software was almost
finished, when we settled on a royalty of $7.50
per unit.
Tom and Vic had already encountered and
surmounted a number of tough problems just to get
scanning going at all. For example, the
ImageWriter printer was not really designed to be
stepped one scanline at a time, and if you tried
that the paper would bunch up against the platen,
causing distortion. Tom and Vic solved the
problem by commanding the printer to move three
steps up and then two steps back, instead of a
single step up, which held the paper snugly
against the platen as required. There were also
various techniques for sensing the beginning and
end of the scan line, and some timings that were
determined by tedious experimentation for how
long it took the printer to respond to a command.
[tscanapp_t]It took a week or so to get basic
scanning working on the Macintosh, and then a few
more days to render the gray scale data with
Bill's modified Floyd-Steinberg dithering. After
shaking out a variety of problems, mostly
involving synchronization between the printer and
the software, I was surprised and impressed by
the consistent high quality of the results. I
went through a brief, elated phase of scanning
every image in sight that would fit through the
printer, just to see how it would turn out.
One important design decision that I made early
on was to keep the gray scale data around, to
allow more flexible image processing. Thunderscan
documents were five bits per pixel, before the
Macintosh generally supported gray scale, and the
user could manipulate the contrast and brightness
of selected areas of the image, dodging and
burning to reveal detail in the captured image.
This also paid off in later versions when we
implemented gray scale printing for Postscript
printers.
My favorite feature that I came up with for
Thunderscan had to do with two dimensional
scrolling. Thunderscan documents could be quite
large, so you could only show a portion of them
in the image area of the window. You could scroll
the image by dragging with a MacPaint-style
"hand" scrolling tool, but you had to drag an
awful lot to get to the extremes of a large
image. I decided to add what I called "inertial"
scrolling, where you gave the image a push and it
kept scrolling at a variable speed in the
direction of the push, after the mouse button was
released. I had to add some hysteresis to keep
the image from moving accidentally, and make
various other tweaks, but soon I had it working
and it felt great to be able to zip around large
images by pushing them.
The hardest feature to perfect was bidirectional
scanning. At first, Thunderscan only scanned from
left to right, but it wasted time to return the
scannner to the left after every scan line. We
could almost double the speed if we scanned in
both directions, but it was hard to get the
adjacent scan lines that were scanned in opposite
directions to line up properly. Ultimately, we
made bidirectional scanning an optional feature,
if you wanted to trade a little quality for
greater speed.
I finished the software in November 1984, after
taking a short break to work on something else
(see Switcher). Thunderscan shipped in December
1984, and did well from the very beginning, with
sales gradually rising from around 1,000 units/
month to over 7,500 units/month at its peak in
1987. For a while, it was both the least
expensive and highest quality scanning
alternative for the Macintosh, although I'm sure
it frustrated a lot of users by being too slow. I
did three major revisions of the software over
the next few years, improving the scan quality
and adding features like gray scale printing and
eventually gray scale display for the Macintosh
II.
Eventually, the flat bed scanners caught up to
Thunderscan, and then surpassed it, in both cost,
quality and convenience. Over its lifetime,
Thunderscan sold approximately 100,000 units and
improved countless documents by providing users
with an inexpensive way to capture high
resolution graphics with their Macintoshes.
Where'd Back to Things
That The Are
[leftarrow] Hand Original Better [rightarrow]
Come Macintosh Than
From? Ever
[triangle]6 Comments Show Comments
from David Fry on July 23, 2004 04:51:57
Andy, Great site and great story on the Thunderscan. Thunderscan was
actually the inspiration (along with some Sports Illustrated swimsuit
photographs) that drove me to write my first program ever. In the
summer of 1987, when I was in grad school, I was obsessed with
writing an app for the new Mac II to display and manipulate the full
five bits resolution saved in the Thunderscan files. I didn't know
what I was doing but I kept plodding. After a week or so a beautiful
grayscale image of the model Kim Alexis showed up on my monitor. I
got a shiver that I still remember! I eventually developed a program
called GrayView for displaying Thunderscan images, editing and
colorizing them, and doing some things that are pretty standard in
the digital photography world today. One day I got a call from you
because Thunderscan was interested in having me finishing the
software for inclusion with the scanner. It was like getting a call
from the President. I was very excited. :-) Ultimately I decided the
software was taking too much time away from my thesis and stopped my
project. But Thunderscan, GrayView, and you played a huge role in my
professional development and my 17 years in the computer industry.
Thanks for all you've done! David Fry
from Tonio Loewald on December 23, 2004 23:18:57
Some friends and I put together the money for a Thunderscan way back
when, and I remember being amazed at how incredibly solid the
software was. (I don't know which version I had, or whether I got the
updates.) Although it scanned slowly, it worked brilliantly with
Switcher (gee, I wonder why...) and you could play a game (Red Baron,
for example) while Thunderscan continued to scan with no real
problems. I remember years later being blown away when I found a copy
of the Thunderscan software along with a bunch of 5-bit scanned
images sitting on some old floppies. I stuck it in my IIci running
System 6.0.4 and it just worked. Amazing stuff.
from Scott Darpel on January 19, 2006 02:59:28
I owe, in large part, my undergraduate degree to the Thunderscan. You
see, Tom Petrie, my uncle only by marriage, paid my way through
school. Tom was just that kind of person, always taking care of
people. Unfortunately, Tom passed before I took that walk across the
stage. There were a few times when I didn't think I could do it. Tom
never stopped believing in me. Having just started a doctorate in
engineering, I think about him often. Tom's only request was that if
I found myself in the position to do so, help someone else. Towards
that end, I have been thinking of late of establishing a Tom Petrie
Scholarship. If you were a friend or colleague Tom's, and would
interested in seeing something like this happen, please let me know.
You can reach me at Scott@darpel.com.
from Rick Auricchio on March 12, 2008 19:06:50
I forgot about the T'Scan. But I certainly remember the ThunderClock,
a clock/calendar card for the Apple II. I wrote "ThunderDOS" for the
clock around 1981. I don't think I ever met Tom Petrie in person,
though we spoke often by phone during the project. ThunderDOS was a
modified version of Apple DOS that timestamped files. Files had
creation and modification dates, and the Catalog command was modified
to list those dates. Naturally, DOS obtained time/date from the
ThunderClock. Because the source for DOS was not available outside
Apple, I implemented the entire set of changes in patches! (I must
have had DOS source listings, which helped greatly, but I know I
didn't have buildable source code. The patches changed various
internal routines to add the dates (shortening file names to make
space for the data), and a new Catalog command to print the info. If
there was no ThunderClock installed, nothing bad happened. (I don't
recall, but I assume creation dates were zeroes and mod dates were
not changed). DOS was shipped in a 16K-bootable "master" version,
which relocated itself to the top of available memory. Disks
formatted from a relocated version were not themselves relocatable
(i.e. they had to boot in a same- or larger-memory machine). The
space formerly occupied by the relocator was thus available on these
"slave" images of DOS. I was able to fit the entire set of patches
into that space, so the only feature replaced was relocation. Gee,
all this stuff was over 25 years ago.
from Cecil Meeks on July 27, 2017 17:00:05
$7.50 per unit...100,000 units. That must have been some sweet
paychecks coming in. ;-) Great job!
from Alex Marelli on February 05, 2020 10:29:46
I still have it, working with my mac 128k and my 136 columns
Imagewriter :-)
User Name: [ ]
Password: [ ]
[ ]
[ ]
[ ]
[ ]
Your Comment: [ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[Add Comment] [Cancel Comment]
Creative Commons The text of this story is licensed under a
License Creative Commons License.