Contents | < Browse | Browse >

                     The Commodore Postscript Project
  Laurence Vanhelsuwé               

December 1995 (C) Laurence Vanhelsuwé


Hello all you Commodore watchers...  here's a real story you didn't know or
read about so far.

It's about 3 Commodore software engineers, a Postscript laser printer, and
Life's ups and downs.

For myself, one of the engineers (Laurence Vanhelsuwé), it all began one
cold day in January 1991.

A small, insignificant job ad peered back at me from the pages of
"Computing", a British weekly I.T.  industry journal which devotes half its
pages to job advertisements.  The ad mentioned our beloved Amiga, a rare
thing to mention in these types of "serious" magazines.

As if my years of Amiga experience weren't enough inducement to immediately
launch an enticing CV printed on highest quality paper, the ad also
mentioned Postscript, a language I knew and liked a lot.  Clearly the ad
had potential and, sure enough, I didn't have to twiddle my thumbs for too
long before I was invited for an interview...

My eyes expanded to cover half my face when I learned that this mystery
progressive company (who dared using Amigas !) was in fact...  Commodore

Commodore ?!  But I thought Commodore's only U.K.  presence was in the
south of England (with their Maidenhead box-shifting centre).  And this
interview would be in Hull: the antithesis of an attractive city; a city
without an ounce of enviable cultural or architectural heritage.

But Hull it was.  Life's so strange sometimes :-)
(My apologies to any inhabitants of Hull I've offended, but hey: it's a
real dump isn't it ?!)

More surprises were to follow though.  My interview was to be held at the
premises of the recruiting company that originally advertised the position.
That company had offices - of sorts - in a bland, old, half-deserted
terraced house in a plain old residential area.  Commodore officials would
interview me there, the recruitment company had told me.

As I approached the front door I fully expected an ugly housewife in
slippers to open the door and tell me to go sell my vacuum cleaners
somewhere else (she would have had to be quite drunk since my black attaché
case didn't look anything like a vacuum cleaner).

But no, as the buzzing lock opened the door, I was simply greeted by a
simplistic arrow sign pointing to the first floor.  I had played adventure
games before, but this was ridiculous...

On the first floor I was finally greeted with the recruiting lady I had
exchanged letters and messages with (but no bodily fluids - shame).  She
simply welcomed me and told me she would inform the Commodore interviewer
of my arrival.  Minutes later he materialized out of nowhere and took me
into a small interviewing room.

The usual interviewing exchanges took place: he asked me to summarize my
life - something which had already become embarrassingly complex by that
time - and then proceeded to explain what the job would consist of.  In
this case nothing less than the full implementation of a Postscript
interpreter, from scratch, and for the Amiga.  Other tasty carrots were
dangled in front of my (starving) face; the most interesting one being the
programming of the next generation graphics.library with added support for
the AA graphics chipset.

I must have radiated a lot of enthusiasm as the interviewer, Steve Beats,
wanted to show me the actual premises.  I was about to see Commodore's
secretive R&D inner sanctum.  I prepared myself for a short trip in a car,
or something along those lines...  instead all that happened was a short
walk down the stairs to the ground floor level and going through another
door !

   What ?!

Commodore was located on the floor beneath the recruiting company?

If the "offices" of the recruiting company above our heads were sparse, to
say the least, then "Commodore's" offices were proportionately primitive,
chaotic and dirty to boot.

Yes, the thoroughly uncelebrated "Hull branch" of Commodore International
was in fact one single large room in an old, half-empty terraced house. 
Glitter and glamour.  Not a hint.  I was disappointed.

No secretaries, no managers, no testing department, no hardware people, no
cleaning ladies, no bosses.  Nothing !

When we walked through the door, one young programmer got up and greeted
me.  Yep, "they" were TWO, an Apple- or Microsoft-crushing TWO.  Most
amputees from the world's timber industries could count them: one...  TWO!

..and I was supposed to become number three.

Of course, without a job at the time, and with this very exciting software
project on the table (Postscript from scratch), I effortlessly managed to
blot out the surrealist working environment and eagerly accepted the job.

I moved from Leicester to Hull, and for the first week or so stayed in a
hotel close by, while I sorted out some more permanent accommodation.

Work, on the other hand, was quicker in coming.  The goal was simple:
Postscript on the Amiga.  We had a real Postscript laser printer in the
room and all the official Addison-Wesley Adobe manuals (the red, green and
blue books).  Enough reference material to get going immediately.

Steve Beats, who will go down the Amiga Hall of Fame for his involvement
with the Fast File System and the scsi.device, charged me with leading the
project due to Commodore West Chester's incessant calls on him.  The new
filing system and SCSI code needed bugs ironing out, plus there were at
that time also some difficult decisions to be made regarding (the by now
infamous) Retargetable Graphics (RTG) issue.

After some 6 years of relying on the quickly obsolete becoming Amiga
graphics architecture, everyone agreed that the OS itself had to somehow
pull itself free from this damaging embrace with its underlying hardware
that had once put it so much in the spotlights.

Postscript was put forward by some people (but none of us three) as the
solution.  After all, didn't Steve Jobs' Next's reliance on Postscript give
it some tremendous advantages over lesser machines ?  True, but we weren't
convinced for the Amiga.  My personal view was that we needed to design a
graphics hardware-independent API (an E.G.S.  or a CyberGraphX) so that
third-party graphics cards could be supported, as was standard in the PC
world.  Graphics cards were extremely expensive for the Amiga at that time,
and official software support could bring those prices down, benefitting
everyone involved.

Bill Gates' Windows kludge was gaining popularity at a fierce pace and even
that lowly piece of spaghetti code had card-independence.  For the Amiga to
loose a battle on graphics, its forte for years, was unacceptable !

While the knot (Postscript vs.  an RTG API) hadn't yet been fully cut, we
had to keep ourselves busy with researching Postscript-technology in
preparation for the full, bright, green light, whatever direction it would
launch us in.

About a month after I started.  Steve even went to the States to take part
in an important graphics meeting.  RTG Would be discussed, and Postscript.
But Postscript won over an in-house designed API.

All brakes were released and from then on we were eating, breathing and
dreaming about Postscript.

Steve's FFS and SCSI problems meant he only got involved from time to time
during the initial stages of the project.

The junior team member, Paul Jones, who had joined Steve about a month
before me joining, and I, started the ball rolling.

Paul custom-wrote the syntactical scanner module.  No use of lex/yacc
technology was made...  no doubt because none of us were raised on UNIX
(none of us had any engineering diplomas either, but that didn't stop us).
In retrospect this was just as well, as the performance hit incurred due to
using such generic tools would have slowed down the interpreter even more.

After Paul and I were confident enough about our own understanding of
Postscript (gained through simple self-inflicted crash-courses!) I tasked
myself to categorize all Postscript language operators (analogous to
commands in other languages) so we could draw up an implementing schedule
for each.

Building block operators would have to be implemented first, easy or not. 
Then as many easy operators as possible, since they would give our
subconscious minds some time to chew on the much more complex issues to
tackle later on in the project.

Postscript isn't a collection of operators, of course.  The operators are
the flesh that hangs from a very well designed skeleton of core systems and
data structures.

Anyone who's had a look at Postscript knows it's a stack-based language. 
Postscript in fact uses several programmer-visible stacks: one for
operands, one for "dictionaries", one as the "execution stack" and another
for the graphic contexts.  The way any Postscript interpreter aspiring to
be fully Adobe compatible has to be designed is to rely on these
user-visible stacks internally too.  And heavily so.

All three of us combined minds and quickly figured out the non-trivial
inter-relationships between Postscript's memory management, string and file
handling, stack architecture and a host of other features.  Lots of
detective work on the laser printer gave us the invaluable insights
necessary to start picturing a model of the software structure of any
Postscript engine.

Our initial goal was to have a skeleton system produce, without any
kludges, the answer "4" to the simple input

   PS> 2 2 add =

And sure enough, that goal was quickly reached, within 2 months of starting
the project.  By that time most of the underlying structure was already in
place and this allowed me to start implementing the main language operators
at a furious pace, following my schedule planned weeks earlier.

Paul concentrated on string and file handling since this had some complex
interactions with his syntax scanning module.

In parallel I implemented almost all the attribute, array, control,
boolean, math and operand stack operators.

At this time Steve Beats still hadn't been able to join us full-time due to
his ongoing maintenance jobs.  His presence was again needed in the States.
As he flew off (business class of course) Paul and I could only dream of
the "real" Commodore across the pond, the place where all the real action
was going on...

Maybe we would, in time, also become famous Amiga engineers with our
Postscript, we thought.

Instead, next on my menu were dictionaries: a major feature of Postscript
and a performance critical one.  Since we allocated ourselves on a
first-come-first-serve basis (for subtasks with non-specific needs), I
began work on this since Paul was still busy doing the file operators. 
Soon dictionaries too were part of our Amiga Postscript.

Things were falling into place like perfectly matched jigsaw pieces.

Around that time Steve was finally relieved of all further work on FFS and
his SCSI driver.  He started work on the all-important graphics aspects of

Up till then we had been -quite rightly- concentrating on the non-graphical
aspects of Postscript.  The language core if you wish, since all the
graphics-related stuff builds on and uses the more primitive operators to
achieve its power.

Paul attacked Bezier curves, since he wasn't afraid of some math, and also
took it upon himself to design and implement the 'image' family of

Since the Postscript fonts rely very heavily on Postscript dictionaries, I
was the logical choice to tackle that can of worms.

Soon enough all three would have to start synchronizing our work since to
have one single character rendered "a la Postscript", you need line and
curve segments, rendered using true polygon fills and all this supervised
and managed by a system relying on dictionaries and Postscript procedures.

If by that time we could still have been unsure as to whether Postscript
was the answer for the Amiga's graphics architecture or not, our first
rendered characters gave us the resounding answer: "NO".

Not only was the whole system infinitely too slow (compared to the average
native speed of Text() ), but the characters exhibited graphical
inconsistencies due to the nature of the device independent calculation
pipeline inside Postscript.

In Postscript, graphical entities (curves, paths, images, fonts) are
manipulated in mathematical space until the very last moment when they are
mapped to device coordinates and rendered.  Therefore, interactions between
a device's grid coordinates and the user's floating point world coordinates
often create visually spoiling artifacts.

Adobe Postscript invests a large amount of computing resources to eliminate
these glitches in fonts through the use of "character hints" and other
increasingly obscure and secret technologies (that's how they make a
fortune selling Postscript licenses, which Commodore wanted to avoid

Of course not every character on a Postscript-rendered page is drawn the
hard way.  The font sub-system has a font cache which stores recently drawn
characters for subsequent recall, if needed.  But even with this cache, it
was clear that Text() would never, in its deepest self, use a Postscript
engine to put characters on Amiga screens.  Still, we proceeded as demanded
from us.

With the end in sight for our Level 1 Postscript system, and in the middle
of writing a dot matrix driver (instead of a screen driver), which would
have given all Amiga owners true Postscript-quality output on plain old
matrix printers, Steve relayed us rumours that our project was going to be
cancelled.  Only Steve had full access to internal R&D E-Mail.

This immediately forced a rift down the middle of our 3-man team: Steve
Beats, who had previously been based in West Chester, USA, for a number of
years had always and meticulously maintained his contacts and links with
his U.S.  colleagues.

Ever since day one he had promised Paul and I that he would arrange for us
to have our own E-Mail accounts, like any other Commodore engineer.  This
way, we too could have first-hand access to the life and energy of
Commodore R&D head quarters in West Chester.  And fully participate in the
creative processes which made the Amiga what it is.

As the months went past it slowly became clear that Steve was skillfully
managing to avoid this promise and in so doing, completely and deliberately
isolate us from West Chester HQ.  We were never allowed to phone across the
Atlantic to talk directly with management or senior engineers there.  Yet
he spent thousands of dollars on daytime cross-Atlantic direct dial-ins to
the Commodore VAX mainframe to read his private E-Mail.  Slowly, he would
start to use this planned isolation to his selfish advantage.

No one seemed to know Paul or I even existed except for a handful of
managers who had authorized our hiring.

When the rumours of a project abort persisted, Steve initially tried to
convince Commodore that we should all at least complete the project, as we
were so close to finishing.

Ned McCook, a West Chester manager flew over and had a meeting with Steve
in London.  Steve refused to have us present at that meeting, going flat
against my explicit request.  Yet again he was blocking us from any say or,
at least as importantly, any first-hand information.  I knew what I would
have tried to convince Ned of (the need for all team members to retain
their jobs and even relocation to the States), but was afraid Steve would
have a very different agenda.

On Steve's return from London I knew I had been right: the "surprise"
outcome of the meeting being that Steve would be keeping his job as
engineer while Paul and I would lose ours.

There was something seriously rotten in the Commodore Postscript "team". 
What had previously been a genuinely friendly and open gang of 3, turned
into one hypocritical cast of 2 against 1.  Steve Beats was screwing his
two junior team-members, big time, and we knew it.  Yet we couldn't vent
any anger or opinions.  We were three in a room, 5 days a week, with our
backs towards each other - luckily.

Morale in the project plummeted.  Even Steve's.  Officially we were to
simply "clean up the code", and close down the shop.  The last 2 months
were pretty sad.  We didn't do any work, and I took all my entitled
holidays to go to Nepal for 3 weeks.  Going to the office to do nothing
wasn't my idea of a productive human life.

Months earlier engineers in West Chester had received raises.  They were
fairly liberally distributed and didn't seem very performance related, so
Paul and I were eager to get ours too, before we would be kicked out of the
company.  If anyone was entitled to a raise, we had to be at the head of
the queue: up to the point where the rumours had started, we were doing a
first-class job.

As ever before, we had to try and get these things sorted out _via_ Steve
Beats.  We had no direct contact with any departments in the U.S.  or with
Commodore U.K.  in Maidenhead; the people who, ironically, did pay us our

At this point maybe I should paste one of the letters I managed to find on
Steve's computer all those years ago...  here it is for all you to see:

Hi Ned,

I figured it would be best to give you this list of things via EMail rather
than trying to do it all over the phone since I'd probably forget things.

I've spoken with Lipstone's lawyers (the people we I lease the office from)
and they are not at all interested in trading office furniture for early
lease termination.  The best I've been able to do is get them down to one
years rent.  They initially wanted the remainder of the lease but I don't
believe they really expected to get it.  Anyway, one year of rent works out
to 2860 pounds.  Since I have just paid this quarters rent which starts on
December 1st I can probably get that included as part of the one year
payment (providing I'm out before the next quarter is due in March).  Is
this OK?  I guess we could sic the CBM Maidenhead lawyers on them and try
to get the amount down some more but a friend of mine who's a commercial
lawyer says that I've got "a pretty good deal" as it is.

This now means I've got the furniture, phone/fax etc to deal with too.  I
got the impression when we met in Heathrow that you really didn't want to
deal with it or care about it.  The fact that all expenses had gone down as
"stamps" implied that everything had already been depreciated down to zero
value.  Maybe I read you wrong on this.  What should I do ?  I can sell the
furniture to a second hand dealer (though you won't get much money from
them) or I can get the Maidenhead folks to pick it up along with all the
computers and stuff.  I'm going to steal a couple of hard drives and tapes
etc.  for my own Amiga system but there is going to be a hell of a lot of
240 volt equipment laying around here.  Shall I just call someone in
Maidenhead and tell them to send a truck and pick it all up?  They are
likely to bill you for this of course.  Alternatively, I can sell the
computers through a local computer store (second hand stuff) and let you
guys have the cash.  The folks at the local store would be willing to take
everything and sell it for a "nominal" commision.  This would certainly be
the easiest solution.

Can Laurence and Paul keep the systems they have at home ?  They each have
an A3000 and monitor.

My pay raise came through OK and I should be getting it in my Christmas
paycheck, thanks.  However, I remember that you said Paul and Larry would
still be getting thier pay raises (also backdated to August) and you would
be sending me the forms to do thier reviews.  I suspect it's a bit late to
do this now since they are both going to be leaving next month.  I did tell
them they would be getting thier raises but have started to back-pedal on
that.  I think this will be OK providing they are paid the month-in-hand
that they worked when they started here.  I spoke with Geraldine Meyer
regarding this (and whether it would be paid) and she indicated that
payment of this month in hand is discretionary !?!?  I was really surprised
but it appears that she is told by TPTB whether it should be paid or not. 
Anyway, Geraldine will require instructions from you to terminate Paul and
Larrys employment and I guess you also dictate the terms of termination. 
Larry is taking all of his vacation starting on December 20th (he booked
this several months ago) but Paul is saving his vacation and wants to be
paid for it when he leaves instead.  Is this possible?

I'm afraid the PostScript project isn't going very well at all.  It's
mostly a motivation thing but we are having to fix up some mistakes and
alter some code.  I'm just trying to make sure we have a maintainable
system at the moment (ensuring I can maintain Paul and Larry's stuff that
is) and I keep finding bad bits.  I'll be giving a detailed report on this
to Allen, he can fill you in on this.

                     --stuff snipped--

That's all I can think of for now.  Looking forward to your reply.


Apart from the snipped text, which contained things irrelevant to this
article, this is a byte-perfect copy of his letter he E-Mailed to Ned
McCook, the manager he convinced to let him keep his job but ditch mine and

The datestamp on this file is :

    Ned     5818 ----rwed 12-Dec-91 16:43:04 

The letter clearly shows Steve Beats LIED to everyone under the sun:

 a) his team (Paul and I)
 b) his own manager

He lied to us about the raises we were promised, but never got in the end
(unlike his, our Christmas was a very bitter one).  He lied to us about
some worthless equipment Paul and I had hoped to share among all (if
Commodore would have agreed): a dusty CDTV, dirty 3000s, loose hard disks,
a tape streamer, that kind of stuff.  Instead he grabbed it for himself.

He dirtied our names and lied about our first-rate work we had done.  There
were no problems with the code.  ("fix up some mistakes", "ensuring I can
maintain Paul and Larry's stuff that is" - all lies).

The letter also highlights some other interesting things...  like the
funding for the project under the heading of "stamps".  It would be
hilarious if it wasn't for the fact it's probably the truth.

Regarding equipment, it was standard practice within Commodore that
software engineers received a (top of the range) Amiga "just like that",
very soon after starting.  The Amiga 3000 I'm writing this article on is
that same machine...  (the only Amiga I ever bought is the first A1000 to
enter Belgium in 1986).

Well, as Steve mentioned in the letter, he asked Ned whether Paul and I
"could keep" our machines and monitors.  I never managed to spy the answer
to this letter but anyway: nearly a week before the final day "at work",
Steve told Paul and I to return our home machines because Commodore was
"recalling" them.  By that time Paul and I knew that Steve (and Commodore)
were completely untrustworthy, so we just acted upset but as if we were
going to comply.

Instead, that evening we put a plan into action that was going to reverse
the tables on Steve.  Late at night we entered the office and removed all
expensive machines: the laser printer, the network server and our two
working Amigas.  We stored everything in the basement, so that if things
got out of hand and the police was called in, we could not be accused of
actually stealing anything since nothing was removed from the premises....

The next day Steve came in and we confronted him with his months of secret

Now, anyone who knows Steve Beats knows he's a muscular guy, short but very
muscular.  Since the pecking order between Paul and I meant I had lead the
accusations, Steve suddenly and violently knocked me against a wall and
demanded the equipment back or threatened to knock me out.  I had to be
careful how I would phrase my next sentence.  I didn't want to end up in
hospital.  Afraid but not feeling defeated I demanded in return that he
guarantees that we could keep our home machines.  Furiously he backed off
and reluctantly agreed.  Only then did we tell him, with a sense of
victory, where the equipment was hidden.  Paul and I left the room while
Steve Beats went down to the basement to find all the stuff packed and
hidden.  We never heard anything more from him, from Commodore, or
..Postscript on the Amiga.

Paul and I are still good friends, despite subsequently having gone
different ways.