Mark Wills
unread,Apr 4, 2012, 7:19:56 AM4/4/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
...but is it the story of Forth?
Enjoy.
---------------------------------------------------------
A Forth Story
Allen Cekorich
Walnut Creek, California
Forth Dimensions, July/August 1995
In 1975, I was fresh out of college with a bachelors degree in physics
and a need to find a job that paid enough to support myself. After a
six-month search, I landed an entry-level position at MDH Industries
in Monrovia, California, where they promised to increase my minimum
wage starting salary once I proved myself useful. I was to work with
the president and owner, Dr. Howard Marshall, Ph.D., on a project to
develop an instrument to measure the real-time sulphur content of a
coal stream by detecting and analysing the prompt gamma ray spectrum
resulting from the absorption of thermal neutrons from a Californium
252 radioactive source. The opportunity sounded exciting to my naive
ears, as it was my first professional job. I was finally in the real
work world of adults and ready to go on to do great things. Remember,
this was twenty years ago and I was only twenty-two years old. I had
no previous experience to guide me in the situation I was in, no
mentor to teach me, no helping hand and no idea of where to begin or
what to do. Like most good engineers, I decided to fake it until I
understood my value.
I spent the first Year or So understanding the design parameters of a
Sulphur meter, which involved creating a computer model on a Tymshare
IBM 370 System accessed with a Teletype terminal at the fantastic rate
of 30 characters Per second. This was a revolution from the punch
cards I had used in college on a CDC 3150 that could be viewed through
a glass window in the foyer of the computer department. MY degree in
physics mandated that the modelling language would be Fortran, and I
naturally enjoyed programming, which was probably related to my
ability and love for mathematics. I had completed the coursework for a
degree in mathematics with a 4.0 average in college. I was proud of
the growing complexity and depth of my simulation, which was now
consuming hours of computer time during the night hours when the cost
was lowest.
It came to pass by the natural events of the development process that
construction of a sulphur meter prototype was to take place. Howard
Marshall had earned his doctorate in physics from the California
Institute of Technology, which is very much in bed with the Jet
Propulsion Laboratory in Pasadena. His contacts encouraged a computer-
based instrument and recommended a strange language called Forth that
was floating around the lab. They convinced him it was possible to
build a small, Z80-based controller that could acquire the spectrum
from the sodium iodide detector and maintain real-time signal
processing rates to compute the actual sulphur content.
Somehow, outside my area of responsibility, an S100-bus system showed
up from the Empirical Research Group. My electrical engineer office
mate had been assigned the task of fooling around with it for
development purposes, but no progress seemed to ever be at hand. After
some time had passed, a fellow named Martin Smith showed up from the
Cal Tech network. He brought with him a Forth running on a Monolithic
280-based multi-bus system, and progress toward a controller began.
I was preoccupied with designing the sulphur meter based on my Fortran
simulation. but the natural need to verify the model from real data
taken from the prototype was growing important. With the help of
Marty, I started playing with the Forth computer. This was the first
time in my life that I had actual, physical contact with a computer.
Those big, eight-inch Shugart floppy drives that held a whopping 120K
bytes, and the awesome 64K of fast RAM, along with the character-based
video display terminal, intoxicated me. What what was more puzzling
was this strange way of talking to the computer, called Forth. I had
taken a computer language survey class in college which included
Fortran, Algol, PWM, Cobol, Trac, Lisp, and APL, but had never heard
of anything called Forth. It was strange and unnatural without program
statements. I could not find the compiler, linker, or listing output.
I could not figure out how it worked, but I realized that I now had
direct contact with the CPU without the need to learn complex system
manuals. I finally had a computer under my control and I went to town.
Over the next few years, I had a good time writing programs on that
small Forth system to do data preprocessing for input to the real,
grown-up IBM Tymshare computer for comparison to my simulation.
I taught myself the Z80 assembler in the Forth, which gave me access
to the computer hardware. I played with serial comms, DMA for the disk
drive, video display controller, interrupts, and, most important of
all, the AMD 9511 floating-point coprocessor. I wrote linear matrix
functions, least squares routines, statistical measures, data filters,
and data stacks for working with the gamma ray spectra. I used that
little 64K computer to its limit to complete the calibration of the
first delivered sulphur meter. I also became an expert in using Forth,
although I still did not fully understand what I was doing.
About this time, around the beginning of the eighties, a recruiter
called me searching for a Forth programmer. I was not a Forth
programmer in my mind. I did not see myself as a Forth programmer. I
was a physicist using a tool to do a job. Anyway, I went on an
interview to Forth, Inc. in Manhattan Beach, California, and met a man
named Edward Conklin. We talked about what I had been doing with
Forth, I showed him some of my listings, toured the offices, and shook
hands upon departing. A few days later, the recruiter called saying I
had been offered a job for more money than I was making and encouraged
me to accept. I was puzzled. I was not a Forth programmer. Why did
they want me? What would it be like? I just did not understand where I
would fit in. I declined the position, Over the years, I have wondered
what direction my career would have taken if I had just said yes.
Looking back, it is easy to see now that I was an exceptional Forth
programmer, as following parts of my story will reveal; but remember,
I was still in my twenties, working on my first job, which limited my
view of my career horizon. My destiny would take me to other places
and back again, to Forth.
My job was winding up with the completion of the first sulphur meter.
Martin Smith had left earlier, going back to a previous job at
Technicolor in Hollywood. I had grown as an engineer, becoming more
than could be supported by the twenty-five person company that was
owned by a single person. The end of my first job had come, so I
resigned and, that weekend, I bought a Victor 9000 personal computer.
I did have the vision to see that what I had done with that small 280
computer spelled the death of my cherished IBM 370 computer running
Fortran over the phone line. The future was in small, personal systems
that clearly exceeded the power of the off-line dinosaurs. I did not
know what I would be doing, but I knew what I would have to do and
that was to learn the basics of the smaller machines. As fate would
have it, Many called me the following Monday, and a week later I was
working for Technicolor. It was now May of 1983.
I had taken the job as a computer programmer who would develop the
control software for a film printer. This was a special kind of
printer to reduce the cost of choosing the RGB color light levels for
a film scene by printing one frame of scene onto the positive, thereby
saving the cost of developing a complete print just to check the
production parameters. I had to learn Intel's version of PL/M and
assembly for the 8086, which was the heart of the Intel 88/40 multi-
bus board computer controller. I was back to compilers, linkers, and
locators, and got to play with in-circuit emulators. I discovered real-
time control that enables computers to interact with the physical
world. I learned multitasking, interrupt response times, and control
inputs and outputs from A/D and D/A chips, counters, and parallel
lines. I got to play with big servo motors. I had a ball. I almost
forgot about Forth.
But not completely. I obtained the fig-Forth listing for the 8086 with
the intention to boot a Forth on my Victor 9000. 1 spent many nights
and weekends typing in the listing as I learned about DOS and just how
the PC worked. I gathered documentation, bought some software, and
joined the Victor 9000 users group. Time passed. Work went well with
the nearing completion of the proof printer. Then Hollywood came into
the picture. Hollywood is not in the real world, they make it up as
they like. The engineering director and the chief engineer got
themselves fired for no apparent reason other than a pompous power
play which I never understood. The upshot was that my project was
cancelled, leaving me in limbo. I chose to resign a month later,
simply because I no longer had a defined job. It was July of 1984.
I spent the next five months working twelve-hour days at home on my
Forth system. I booted the kernel as a DOS executable, and promptly
rewrote it to my liking, including redesigning the inner interpreter.
I was forced, by finally understanding the true nature of Forth, to
add an 8086 assembler of original design, an interface to DOS for
files and display control, floating-point words for an 8087
coprocessor, and many utilities to work with my system. Looking back,
I wonder why I did it. Why would I create a complete Forth development
system for the PC? I had no use for it, nor any future plans for the
system. I believe the answer was just to learn how personal computers
work. Forth gave me direct access to the machine, and freedom to
explore designs that felt right to me. I did not have to depend on a
vendor to show me what I could do. My physics training led me to
explore fundamentals of computer operation much as I explored the
fundamental laws of the physical world. I also began reading Byte
magazine every month to keep up on the technology, and I read books
such as Donald Knuth's Art of Computer Programming. Forth gave me
freedom to explore beyond the limitations of a fixed compiler with a
straight-jacket syntax. I had finally caught the Forth bug.
The realities of living without an income finally caught up with me.
In December of 1984, I found a job with Litton Industries. The fibre
optic department under Mike Suman had a contract with Western
Geophysical to build a demonstration underwater fibre optic microphone
towed array for oil exploration. The job was to complete an Intel
multi-bus computer demodulator for five sensors. The software was
written in PL/M-86 and assembler, and was presented to me as almost
done. I learned quickly that the statement was politically correct but
entirely false from an engineering perspective. I had wandered blindly
into defence engineering for the first time. I redesigned the computer
system to use three single-board computers in a multi-bus backplane,
and wrote the software from scratch to multiplex the three 8086 CPUs
to accomplish the demodulation. Four months later, it was finished,
complete with a real-time video display of the sensor outputs for the
all-important demo. The next day, the contract was cancelled due to
the oil glut of the mid-eighties.
I wondered if I had a job. The major part of the fibre optic
directorate was involved in fibre optic rotation sensor development
for military applications. The program seemed to be headed by a man
named Dr. George Pavlath, who was a Ph.D. in physics from Stanford
University. He had a problem with the testing of the rotation sensors
on the rate tables which used H-P BASIC controllers. He knew from my
resume that I had experience with Forth, and he had heard from his
friends at Stanford that it was a very neat control language. I told
him I had developed my own Forth system for the PC, and we agreed to
try it out for rate table control. I brought in my system and spent a
few months porting it to the IBM PC, adding drivers to read IEEE-488
instruments via a Metrabyte card, and rate table position from a
CTM-05 counter board. I completed a fully automated rate table test
station and began to test fibre optic gyros.
The application of Forth to a flexible test environment was perfect. I
went much further and added online data analysis, and began
constructing my own unique plotting additions to Forth based on
Brodie's MAKE DOER construct. My Forth system grew to maturity as
different problems demanded solutions. I quickly returned to my
physics roots to contribute to the new technology of fibre optic
sensor development.
All was not well, though. I encountered the first resistance to the
Forth way of doing business. The Forth development environment was so
efficient that the H-P BASIC controllers were made obsolete. This led
to resentment by engineers who had invested their time learning H-P
BASIC. I offered to teach them Forth, but remember, this was a system
I had personally written. It was my creation, and no one could
understand it as well as myself. Why should they invest part of their
careers learning a tool that was the personal property of one
engineer? They did have a point. But the fact was that my system was
doing things that nobody thought possible before. It was even worse
than that. It turned out that someone in a different Litton division
was using Forth for production test station control for the same
reason, its efficiency and power. This person was upset that I had
brought in a new dialect. He had his box of tools and would not look
at mine, and we could not share code.
As the years passed, my system became entrenched in the fibre optic
directorate and enabled a lot of progress to be made, even though I
spent most of my time concentrating on the physics of the devices. A
few people finally learned my system, which became quite powerful, but
the lingering resentment remained. Other engineers felt I had cheated
by using Forth, that it was unfair to them. I even published my Forth
system, called AFORTH, through the Victor 9000 users group. I was told
that up to forty people bought copies, and the head of the users group
eventually got a job writing Forth.
Sometime in the eighties, I got it in my head that Forth could be
applied to build fast demodulators, especially since the advent of
Forth chips. I convinced George Pavlath to send me to a company called
Novix to check out a Forth-based CPU. It was on this trip that I met
Charles Moore. He and I talked for half an hour about possibilities. I
had a hard time believing that this was the creator of Forth. I played
with a Novix development system, unaware that the chip was not yet
real, in the sense that one could not buy one. In truth, I felt I was
sticking my neck out by suggesting a Forth design when other engineers
wanted my head for what I had accomplished in the testing area. The
reality was, it did not matter - I ordered a Novix chip which was
never delivered, since the company eventually folded. I felt relieved.
I went on to work with DSP processors such as the TMS320C25, which
were now capable of implementing complex demodulation designs and
provided me with new areas to explore.
Then the Berlin Wall fell. The defence build-up was over in a day, but
it took several years of excruciating pain for many innocent people to
accept the change in their lives. I held out until September of 1991,
when I finally admitted it was time for me to leave. I could no longer
pay the price required to survive. In January of 1989, I had replaced
my ageing Victor 9000 with a Dell 386 computer. I briefly went into
consulting with my Forth system. I worked several months for the
Physical Optics Corporation in Torrance, California, automating their
production holographic testers. I realized again that I was sticking
them with a custom solution that could not be updated without me. It
was just not viable. Even though they were delighted with the results
of my work, I never got called back; probably because the engineering
staff had changed in the interim.
I was out of work until May of 1992, when I got a call from Systron
Donner in Concord, California. A half-dozen Litton refugees had found
jobs there, and they were eager for me to join them. I moved from Los
Angeles to beautiful Contra Costa county, and thought I had found a
wonderful place to work. The CEO was Dick Terrell, who came from
Litton marketing, and was converting the company to quartz sensor
technology. It turned out that I was the last one hired before the
defence downsizing began in earnest at the company. I had to relive
the experience at Litton during the next year and a half.
I was hired to do DSP software for the Quartz Inertial Measurement
Unit, but the military requirements for software quality control were
beyond the resources of the company, so the project was cancelled a
month after I arrived. Instead, I was asked to work on a substitute
IMU for a contract delivery that was not going to happen on the
current schedule. One of the main problems was that the rate table
test station, which was being coded in C, would not be ready in time.
I volunteered my Forth system for the interim station, and completed
the work in several months. Once again, I experienced the wrath of
engineers who said I cheated because they were forced to use the
"correct C approach," while I used this thing called Forth, which
obviously made the work too easy. Go figure. I should have known
better; the truth was, nothing mattered, because the company was being
downsized with a vengeance, and when the CEO was replaced, I soon lost
my job in December of 1993.
Among the people who joined me going out the door was a guy who wanted
to start a company with a product, based on the Systron Donner
rotation sensor, which would measure body movements for medical
purposes. I met with him and agreed to program a prototype piece of
equipment using my Forth system, in exchange for a future piece of the
company. In one month, I had a prototype that displayed real-time
rotation movement and medical parameters for Parkinson's syndrome. It
was demonstrated to the Parkinson's institute and was well received.
However, I told my partner that the final device could not be
programmed in Forth. Why would I say such a thing? Simply because
technology had passed Forth by, in my opinion. It was no longer
possible for one person to develop all the software required in a
graphical environment. I needed to buy the tools I needed to leverage
my time for a professional job. I could no longer play the role of the
maverick programmer, nor did I want to. I need to be part of a
collaborative community in which I can give and receive work. I do not
see Forth as a viable solution as of today.
The start-up company never happened, for financial reasons, so I have
been unemployed since then. I am also forty-two years old, and am
looking at my life from the midway point. I have spent nearly twenty
years doing this Forth thing, and I do not know if I want to continue
with it. A year ago, I bought the Symantec C++ development package for
Windows. I have yet to use it. It does not excite me like Forth did,
because it does not give me the freedom to create those program
constructs which enable my ideas. I guess I am still undecided on the
issue of Forth, so I will renew my subscription to Forth Dimensions
for at least this one last time.