Bernd Paysan <
bernd....@gmx.de> wrote:
>
> We have other denials of influence in the greater Forth history, too.
> Adobe denied for quite a long time that Postscript was inspired by
> Forth. However, just about half a year before they started the
> Postscript project, a Forth programmer did a demo at Adobe,
> demonstrating his graphics language, written in Forth.
Not exactly. The Geocities page has expired, so here's the article,
in full.
Andrew.
PLATO is resurrected!
The Genesis of Postscript (1981)
By Jim Bowery
Version 20010406
Copyright 2001
The author grants the right to copy, without modification.
The Challenge
From 2001 through 2007 I offered, with no takers, $500 to the first
person who could document the existence of a Xerox PARC communication
concerning post-fix notation for page description languages prior to
my visit to that facility in November 1981 in my capacity as Manager
of Interactive Architectures for Viewdata Corporation of America, the
videotex joint venture between AT&T and Knight-Ridder
News. Communiques regarding "JaM" were disqualified unless they
specifically use the term "page description language", "typesetting
language" or some equivalent phrase, and are appropriately dated.
The History
What was the true genesis of the Postscript?
Here's a perspective out of left field:
It started with the first scientific pocket calculator ever produced
-- the Hewlett-Packard 35 -- and its reverse polish "postfix"
notation.
I saw an HP-35 advertised in Scientific American during my senior year
in high school, in 1972, and thought:
"I want one."
That's why I worked all summer with "Shorty" the ex-convict, driving
garbage trucks with 18 gears I was never properly trained to use and
drinking beers so as to Lorenz-contract the days that were punctuated
with hot steaming maggots down my neck as bemused debs reclined in
their back yards nurturing their future basal cell carcinomas. When I
started at the University of Iowa, I forked over my saved up $495 to
Hewlett-Packard and instead of a slide-rule on my belt, I had this
neat little black pouch that could do it all while flashing tiny red
light-emitting-diode numbers -- reverse polish operation. I found only
one other person on campus who had one -- a chemistry professor.
Well, OK, I lied.
What really happened was that while I was working as a garbage man to
earn enough money for my HP-35, many mornings at 6AM they would tell
me they didn't need me that day, which is when I would head over to
Drake University and wait for my brother to get out of class at
noon. That was almost 6 hours away, and I needed some way to pass the
time. After poking around a bit on campus, I found this little old 2
story house that had a "Mathematics Department" sign. Inside, off to
the left, was a long room. In that room was a desk-top Hewlett-Packard
calculator with a flat-bed pen plotter hooked to it. It had more
buttons than you could shake a stick at and this little magnetic card
you could insert to record the buttons you were pressing, which
included comparison and conditional branch buttons. You could program
it to not only do calculations, but to move the pen around on the
plotter bed that held the paper down with static. It was really
cool. I could finally use a lot of that worthless junk about
polynomials and stuff I had learned in high school and draw lots of
neat op-art patterns with a pseudo-3D look to them.
That desk calculator (I don't recall the model number), of course,
also used reverse polish notation -- postfix -- to drive its plotter.
By the time I got my HP-35 that fall, postfix operations were second
nature to me. When the HP-35 fell in price by a factor of two later
that year, it taught me my first lesson of consumerism in the early
stages of Moore's Shockwave, but I never felt jealous of the guys who
bought the cheaper Texas Instruments calculators with all that
parenthetic noise. Who could think like that?
Postfix was obviously the right way to do things.
Ignoring some history we cut to the chase:
In August 1980, Byte magazine published its issue on the Forth
programming language.
At that time, I was working with Control Data Corporation's PLATO
project, pursuing a mass market version of that system using the
Intelligent Student Terminal (IST). The IST's were Z80 processor
terminals sporting 512*512 bit mapped displays with touch sensitive
screens and 1200bps modems that went for about $1500. We were shooting
for, and actually successfully tested, a system that could support
almost 8,000 simultaneous users on 7600-derived Cybers (the last
machine designed by Seymour Cray to be marketed by CDC --with 60 bits
per word, 6 bits per character, no virtual memory, but very big and
very fast) with under 1/4 second response time (all keys and touch
inputs went straight to the central processor) for $40/month flat rate
including terminal rental. Ray Ozzie had been working at the
University of Illinois on offloading the PLATO central system to the
Z80 terminal through downloaded assembly language programming, doing
exotic things like "local key echo" and such functions.
I was interested in extending Ray's work to offload the mass-market
version of the PLATO central system. In particular I was looking at a
UCSD Pascal-based approach to download p-code versions of terminal
functions -- and even more in particular the advanced scalable vector
graphics commands of TUTOR (the "relative/rotatable" commands like
rdraw, rat, rcircle, rcircleb, etc.) if not entire programs, to be
executed offline. Pascal was an attractive choice for us at the time
because CDC's new series of computers, the Cyber 180 (aka Cyber 800)
was to have virtual memory, 64 bit words, 8 bit characters and be
programmed in a version of the University of Minnesota Pascal called
CYBIL (which stood for Cyber Implementation Language). Although this
was a radically different architecture than that upon which PLATO was
then running, I thought it worthwhile to investigate an architecture
in which a reasonable language (you should have seen what we were used
to!) could be made to operate on both the server and the terminal so
that load could be dynamically redistributed. This idea of dynamic
load balancing would, later, contribute to the genesis of Postscript.
Over one weekend a group of us junior programmers managed to implement
a good portion of TUTOR's (PLATO's authoring language) advanced
graphics commands in CYBIL. Our little hunting pack at CDC 's Arden
Hills Operations was in a race against the impending visit of Dave
Anderson of the University of Illinois' PLATO project who was
promoting what he called "MicroTUTOR". Anderson was going to take the
TUTOR programming language and implement a modified version of it for
execution in the terminal -- possibly in a stand-alone mode. Many of
us didn't like TUTOR, itself, much. Indeed, I had to pull teeth to get
the authorization to put local variables into TUTOR -- and we were
determined to select a better board from our quiver with which to surf
Moore's Shockwave into the Network Revolution. CDC management wasn't
convinced that such a radical departure from TUTOR would be wise, and
we hoped to demonstrate that a p-code Pascal approach could accomplish
what microTUTOR purported to -- and more. We quickly ported a TUTOR
central system program to CYBIL -- a vocabulary lesson called "The
Great Elendo" (teaching how endings are added on to words) -- because
it had been written in a particularly "structured" manner (by Tom
Czwornog for Gary Michael's crew in Champaign-Urbana on the PLATO
system there), and therefore fit well the "structured programming"
paradigm pushed by Pascal adherents of the day.
A dramatic aside: We had a bit of a scare when David Woolley the
author of PLATO Notes (which would become the inspiration for Ray
Ozzie's Lotus Notes), came in on Monday and was so impressed with what
we'd accomplished over the weekened that he swam through all the code
we'd written. Unfortunately, there was some confusion and, quite
uncharacteristically for Dave, he deleted the wrong file -- the one
with our code in it which hadn't yet been backed up by the system
operators. Thankfully, rather than committing hara-kiri, Dave just
quietly expressed his deep remorse, turned around and during the next
24 hours rewrote the entire program which he had inspected so
carefully; all in time to save the demo. Dave is one of the most
meticulous people with whom I've worked. This is born out by the fact
that virtually anyone who has worked in computers for any length of
time has made an error like this, but few of us have been able to
recover our honor so quickly, gracefully and decisively.
Our little hunting pack bagged the demo, and we continued to be
interested in Pascal both on the central server and on the terminal,
as a means of dynamically distributing load, but the Cyber 180's
hardware architecture was inadequate and the conversion problems to
reimplement PLATO too great for this approach to be practical. It
looked as though we would be stuck with Cray's older architecture that
had demonstrated such economic performance in my tests of a version of
the PLATO system targeting the mass market (tests run at CDC's
Benchmark Laboratory next to CDC headquarters, right across from the
airport in Bloomington).
A tragic aside: CDC mangement refused even to run a market test of the
mass market version of PLATO, despite the fact that the financials
looked promising, the system was up and running at CDC's Benchmark
Laboratory with fully capable telephone and cable head end interfaces
and there were indications that the demand for email, alone, within a
metropolitan area would have ensured PLATO's success in the mass
market. I don't hold CDC's Bill Norris accountable for this except to
the extent that he probably should have just fired all his middle
management down to the grunts and spun CDC off into a bunch of small
companies, each with its own "Seymour" -- something that would have
placed Norris in jeopardy from the forces already arrayed against him
in Wall Street. If he had taken that draconian action on behalf of
CDC's stockholders, he would almost certainly have produced an
explosion of innovation fueled by the high-achieving Midwestern baby
boomer population as they entered their careers. Opposition to Norris
infected CDC itself, often incited by institutional investors who did
not agree with Norris' vision and were able to set fashions for the
fashion-conscious via their influence on the business press. If not
for them subverting CDC's culture of innovation with a culture of
popular fashion, combined with Norris' failure to ruthlessly rid CDC
of insubordinates, Norris could have delivered on his vision. I know
-- I was there and saw to it that PLATO was benchmarked out and ready
to ship to the masses at $40/month including IST rental, at the same
time HBO was making its first inroads, at least a year before IBM cut
its deal with Bill Gates and 4 years before Steve Jobs paid a buxom
valkyrie lookalike do a hammer-toss-and-jiggle on his behalf before
the stunned eyes of football fans everywhere. I did push on this
aspect of the PLATO project hard enough within the programming teams
that I became the person most associated with mass-marketing of PLATO
in the eyes of my peers and immediate supervisors, and was therefore
the person recommended for a key position with Viewdata Corporation of
America when that company advertised for a PLATO expert -- after, of
course, CDC management had rejected my proposed market test of
PLATO. It wasn't enough to be a 26 year old programmer pulling down a
Carter-inflation-wage-and-price-controlled $20,000/year. I was in a
poor position to by-pass 7 levels of middle management to gain Norris'
ear and Norris' bet-the-company strategy on filling unmet social needs
never meshed with the profound tactical strengths available in the
well-funded PLATO system that he was so intent on supporting. The
"Personal Computer" might never have risen to the prominence it
did. Rather we could have begun the evolution of the "Network
Computer" in 1980. It is no exaggeration to say that as a result of
CDC's failure to deploy PLATO to the mass market, Bill Gates is the
richest man in the world, midwest computing lost its leadership (which
began with the first computer) to the West and the network revolution
was delayed at least 15 years. The further ramifications of this
critical juncture in history, given the demographic power of the
recently-urbanized baby boomer generation on entry to its marrying
years in 1980, are radical and profound. I'm sure there are people
from Xerox PARC who have similar retrospective concerns, but did Xerox
have a man of Norris' publically articulated vision in the position of
command contending with a virtual mutiny of his officers?
It's interesting if not predictable that it was from the PLATO IST
that some of the key thinking directly parallel to, if not critical
to, Postscript would arise. The IST was the closest thing to the Apple
Macintosh in price and capability prior to the release of the Mac
(which was the first PC to use Postscript). It's also interesting that
the Mac ended up with a version of Pascal as its primary system
language. Something worthy of study by metahistorians, is that so
little history has been recorded about the PLATO IST. At $1500 it was
perhaps the most advanced technology of its kind at that time. People
had been playing remote 3D graphical multiuser games, at resolutions
similar to those supported by the Macintosh, on PLATO, for over 5
years by 1980 when the IST was being produced by the thousands at this
low price for use with PLATO.
Having looked at UCSD Pascal's threaded p-code, the Byte magazine
issue on Forth made a good case for considering the Forth virtual
machine, not only because of its own compactness, but also the
compactness of the programs that it could execute. Although we weren't
so tight on RAM with the IST that we were forced to consider Forth
over p-code, the compact representation of executable programs in
Forth was a big plus for transmission across the limited bandwidth
modems of the era. It wasn't so compelling compared to p-code as to
force an immediate reorientation -- particularly given the fact that
Pascal was a higher level language than was Forth, as well as matching
the central system implementation language CYBIL, and was therefore
more appropriate as a primary authoring language. Nevertheless,
Forth's postifix notation reminded me of the good old days with my
first HP calculators and drawing those cool pictures on the flat bed
plotter.
I admit it -- I was hooked on the ideas in Forth and wanted get my
hands on a working implementation.
As a consequence of CDC's refusal to pursue a test of PLATO in the
much larger markets made possible by a $40/month service, I accepted a
position with Viewdata Corporation of America, a joint venture between
AT&T and Knight-Ridder News, as its Manager of Interactive
Architectures -- primarily because AT&T and Knight-Ridder were
familiar with mass markets and were targeting them from the outset. My
responsibilities included design of an "authoring system" for the
Viewtron videotex system which was being developed by Viewdata for
deployment in those mass markets. Unfortunately, I was hampered in
this by the prior choice of a Tandem T-16 as the central system upon
which to run the service. The T-16 was abysmally weak as a central
system compared to the Cyber 760's (modernized 7600's) upon which I
had benchmarked the mass-market version of PLATO. Nevertheless, I
accepted the position with the impression that it might be possible to
select a different central system vendor. Certainly it makes little
sense to choose a central system vendor before acquiring a manager
responsible for "architectures".
I started at Viewdata the same month that Byte magazine put out it's
famous August 1981 Smalltalk issue. It was immediately apparent that
the Smalltalk language and programming environment was superior to
anything associated with Pascal. Further, Smalltalk had a similar
target audience to PLATO -- Alan Kay had even wanted children to be
able to program in it. As the person most responsible for devising an
authoring system, I was immediately hooked. I had seen the film of
Stanford Research Institute's mouse interface while working on the
PLATO Communications Project in 1974 (developing a computer-based
Delphi conferencing system) and the Smalltalk system was quite
reminiscent of some of what I had seen. This was for good reason, of
course, since Smalltalk's user interface design had benefitted from
SRI's pioneering work.
However, in addition to being saddled with the T-16 as the central
system, the Viewtron terminals being designed by Western Electric,
although quite capable in other ways, had very limited RAM. What ROM
was available in them was being committed to interpret the North
American Presentation Level Protocol Syntax (NAPLPS) -- which is a
fancy way of saying they displayed a vector graphics extension to the
ASCII character set. NAPLPS had a marginal "macro" and font definition
capability, but was otherwise very limited in its programmability.
Since the Viewtron system was planned to roll-out to all the
metropolitan areas in which Knight-Ridder had newspapers, as well as
in cities where partner companies had a presence, the architectural
challenge of the authoring system involved allowing for geographically
distributed programming as well as offloading of the central
processors to the terminal processors. PLATO had just started down the
path of a distributed file system and networked notes (ala Usenet), so
the issues, while not entirely alien, were somewhat new to me. Some of
the better work at the time was with Intel's research into the iMAX
operating system and its distributed file system based on the ideas of
MIT's David P. Reed and his 1978 doctoral thesis. Reed's work had been
closely associated with the CLU programming language which was an
early object oriented language with strong affinities to
Smalltalk. Although the iMAX OS itself ran on Intel's wildly advanced
iAPX432 processor (at PLATO, Dave Woolley and I christened it "the
UFO"), and was therefore geared toward the Department of Defense's
design-by-committee language, Ada, the version of "Ada" implemented on
the 432 was actually more dynamic than that specified by the
DoD. Indeed, the iMAX OS was designed to allow device drivers and
system libraries to be dynamically added and altered without
rebooting. The "Ada" running on the iMAX OS was so dynamic, it
actually had a lot more in common with Smalltalk than the folks at
Xerox PARC might have liked to believe. Although I didn't (and still
don't) see object-oriented programming as the long-term solution to
the distributed computing problem, and was in communication with one
of the iMAX OS's contributors, Bruce MacLennan, regarding a radically
different approach to programming based on the relational calculus, I
did see the Smalltalk and the iMAX's dynamic "Ada" systems as being
mature enough to ride on their strength for the next 5 to 10 years
until the relational paradigm was ready for deployment. I hoped that
the 432's hardware design could be sped up as Intel applied its best
hardware experts to demultiplexing its microprogramming enough that
its fault tolerance and distributed programming strengths could be
applied to Viewdata's unique requirements -- if not during the initial
roll-out, then in the next generation of the Viewtron network. The
first rollout of the 432 would rely on iMAX with its dynamic "Ada" and
then later deploy a distributed Smalltalk environment throughout the
network, including demand-driven downloads of Smalltalk to the
terminals themselves as they became genuine network computers.
All of this led me to begin seriously considering the migration paths
from the current "dumb" NAPLPS terminal with T-16 central systems to a
programmable terminal which could eventually execute Smalltalk.
As I admitted above, I was hooked on the very idea of Forth, and as it
turned out, so was another key figure within Viewdata, Jim
Thompson. Thompson, who would later develop Viewtron's postfix Game
Oriented Language for Business and Leisure (GOLFBAL) for actual
storage of execution on Viewtron, had a subscription to the Forth
Interest Group newsletter and was happy to provide me with all the
back issues. It made sense that with less than 8K of RAM in the
Western Electric terminals (far less than the PLATO ISTs), and only a
little more ROM, the best way to make them fully programmable was to
burn the ultra-compact Forth virtual machine into the ROM and use what
precious little RAM was available to store tightly threaded,
dynamically downloaded Forth "words" for the execution of high level
vector graphics primitives through low level interactive graphics
programs, transmitted as a stream of compressed definitions and
subsequent invocations over the limited-bandwidth phone connections.
A postfix language for page description was thereby conceived -- not
surprisingly -- as part of the first experiment in electronic
transmission of newspapers in a highly compressed form.
The migration path from such a low-capability terminal to a
fully-distributed authoring system was still unclear, but one thing
was clear about Forth's virtual machine: It could act as a virtual
machine for any higher level language, especially a language like
Smalltalk. Being a fan of, and having programmed, Seymour Cray's
parsimonious instruction sets and elegantly simple hardware
architectures, I appreciated the design intelligence that Chuck Moore
brought to the Forth virtual machine. Viewed in this light, Forth was
a macro assembly language for a future Forth microprocessor --
entirely capable of executing Smalltalk as one of its higher level
languages.
The trip to Xerox PARC was inevitable. I was among those from Viewdata
who in November of 1981 visited Xerox PARC.
A few things about that trip stand out, but one thing is for certain:
When the subject of NAPLPS came up, I was shown source code written in
a page description language in use by Xerox by a member of the
Smalltalk team. It was definitely not, a postfix notation. I then
spoke on our thoughts of using a tokenized Forth communication
protocol to store and transmit programmable graphics for Viewtron's
electronic newsprint. When I did so, I saw an immediate look of
reflection pass over the face of our presenter. It was my definite
impression that I was seeing the "Aha!" lights turn on at Xerox PARC
right then. But our time was limited and the focus was on Smalltalk
rather than page description languages, so we moved on with the
demonstrations. I honestly don't recall the name of the person who was
showing their PDL, nor who else was present during that
conversation. It seemed a causual exchange between two programmers at
the time -- exchanges in which such "Aha!" events are quite common.
Next year, in 1982, Xerox engineers spec-ed out the "Interpress" page
description language -- purportedly the first postfix page description
language ever. Official accounts vary on whether Interpress was
derived from Xerox's "JaM", from Xerox's "Press Format" PDL, or
both. It is possible I was shown a "Press Format" source file as it
was not a postfix notation. JaM, however, was derived from the "Design
System" postfix language for representation of 3D objects developed at
Evans and Sutherland and folks from the University of Utah. I can
believe that Evans and Sutherland beat the PLATO culture to the punch
on this one, as they had a habit of doing on a number of important 3D
innovations. But the PLATO system had it's own coups over Evans and
Sutherland, including the first ray traced 3D image of a solids model
by Don Lee -- PLATO system programmer -- under a challenge from Ron
Resch, who was from the same University of Iowa computer graphics
facility within which I would later write the first 3D multiuser
virtual reality game. Ron Resch went on to work with Evans and
Sutherland and the University of Utah where he would teach the likes
of Alan Kay and others who eventually ended up at Xerox PARC.
Crucial questions remain:
Why was it that in the most advanced aspect of Xerox PARC -- the
Smalltalk project -- the PDL being demonstrated to representatives of
a major electronic newspaper project was "Press Format" rather than
"JaM"? Was the look of epiphany on the face of the PARC demonstrator
upon being told of the device-independent PDL based on Forth, actually
him recalling that PARC had its own postfix notation PDL in "JaM" and
he simply didn't mention it for fear of a breach of some sort? We were
under nondisclosure agreement at the time, and we were clearly
interested in deploying such technology and we were capable of paying
for it if not contributing to its standardization -- so why not just
spit it out? Was the subsequent specification of Interpress merely a
concidence, merely parallel development or was it perhaps energized by
the realization that a major electronic newspaper project could be on
the verge of introducing a JaM-like standard for page layout to the
international standards committees?
In the final analysis, except for a billion dollars here or there, and
where the profits might have been invested, it hardly matters who
actually invented the first postifix page description language. Given
the densely entangled identities of the University of Iowa, University
of Illinois and University of Utah from which the creation of
"Interpress" emerged, not to mention PLATO, Smalltalk and advanced 3D
rendering technologies, it is clear that the identity of the actual
inventor of the postfix PDL, as well as these other technologies, was
a pioneering culture. That culture was plowing new territory cleared
out by Moore's Shockwave with the same energy that plowed the loam, a
century earlier, around the locations of those same land grant
colleges.
The only real question remaining is whether the capital accumulation
will be used to open up fertile fields for future generations to plow,
or whether it will merely decay as did Xerox?