A Forth Story...

...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.

Reply to
Mark Wills
Loading thread data ...

On Apr 4, 4:19=A0am, Mark Wills wrote: in

formatting link

What a fascinating backstory! Thank you for sharing.

Mentifex (Arthur)

--

formatting link
formatting link

Reply to
Mentifex

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.