On my PDP-8 Assembly Language Studio page and in my Conway’s Life Implemented in PDP-8 Assembly Language article I explored the minimalist instruction set and corresponding assembly language for the 1960’s era PDP-8 minicomputer. For about a decade and a half, the PDP-8 was purchased by many scientific and educational laboratories as an affordable and accessible computer. Most of the users of PDP-8 computers were not software programmers by profession; they tended to be scientists and engineers doing research or designing physical products.
Some of these scientists and engineers taught themselves enough assembly language programming to create small applications to run on their PDP-8 to help them collect data from lab instruments or to perform engineering calculations. The very simplicity of the PDP-8 Assembly Language (PAL) meant that programming a non-trivial application was tedious and error prone.
Relatively powerful software applications already existed on mainframe computers of the period. A few large universities and corporate think tanks were funded by grants from the Defense Advanced Research Projects Agency (DARPA) and could afford to purchase, install, and operate these larger, and more expensive, mainframes. One such entity was the Rand Corporation.
J. Clifford Shaw developed an interactive interpreted programming environment known as JOSS that ran in a timesharing mode on a centrally installed PDP-6 computer at the RAND Corporation. Users accessed the program via a set of remote teletypewriter terminals. (See the paper JOSS: INTRODUCTION TO THE SYSTEM IMPLEMENTATION in DECUS Proceedings Fall 1966.)
The PDP-6 installation and terminal network that supported JOSS was not a feasible computing environment for a typical laboratory or engineering design group. In 1966, inspired by a 1964 presentation of JOSS, Dave Waks and Spike Chagnon of Applied Data Research created ESI (originally the “Eight S interpreter”) to run on their PDP-8/S minicomputer. Their approach was to let the user have complete control of a small computer sitting directly next to them, rather than remotely access a shared computer managed by a dedicated staff. (See the paper ESI — CONVERSATIONAL-MODE COMPUTING ON THE PDP-8/S in that same DECUS Proceedings publication.)
In 1967, Bob Supnik extended the ESI program to use 8K 12-bit words of memory and added the transcendental (exponential and trigonometry) functions. This version was christened ESI-X, which apparently could be pronounced “essex”.
In 1968 Digital Equipment Corporation (DEC, the creator of the PDP series of computers) created a similar offshoot of JOSS, known as the FOrmula CALculator (FOCAL), and provided it for free.
At that point Applied Data Research gave the binaries of the ESI-X to DECUS (DEC Users Society).
The ESI-X assembly source code was believed lost, but then found and recovered from an obscure backup tape due to luck and sheer persistence. The story of the creation of ESI-X, its source code discovery and recovery, and a simple user guide are available in my GitHub repository as esix_doc.txt The ESI-X source code can be downloaded from this GitHub folder: ESIX Source
A Sample ESI-X Program
1.1 TYPE "THIS PROGRAM CALCULATES FACTORIALS.". 1.2 TYPE "ENTER A POSITIVE NUMBER:". 1.3 DEMAND N. 1.4 DO PART 2. 1.5 TYPE "RESULT: "N"! = "F. 1.6 TYPE "TYPE GO. TO CONTINUE.". 1.7 STOP. 1.8 TO STEP 1.2. 2.1 SET I=1. 2.2 SET F=1. 2.3 SET F=F*I. 2.4 SET I=I+1. 2.5 IF I LE N, TO STEP 2.3. 3.1 DELETE X. 3.2 DELETE Y. 3.3 FOR N=1(1)30, DO PART 4. 3.4 FOR N=1(1)30, TYPE "N="N": "X[N]"! = "Y[N]. 4.1 SET X[N]=N. 4.2 DO PART 2. 4.3 SET Y[N]=F. DO PART 1. 3 GO. 10 } DO PART 3.
Running ESI-X on Windows
ESI-X requires 8K of 12-bit words, using the extended addressing option of most PDP-8 models, such as the 8/S. Brian Shelburne’s PDP-8 teaching emulator, used in my previous article, only implements a base 4K PDP-8. To run ESI-X we will use the SIMH implementation of a late model PDP-8 with a full complement of 32K memory. See Emulating a DEC PDP-8 with SimH for more information about this emulator.
I have created an “easy kit” with the SIMH PDP-8 emulator, the ESI-X binary paper tape image, and a sample terminal session. You can download it to a Windows workstation as a ZIP file from my GitHub repository as ESIX-EZ.zip (A Git client is not needed. Click the View Raw link on that GitHub user content web page to start the download.)
Expand the ZIP file to any location, navigate to the ESIX-EZ folder, and double click the pdp8.exe file. Open the ESI-X Session.txt file in any text editor for a sample programming session.
We take for granted having a personal computer available for our own use at any time. Rather than the size of a refrigerator or even a microwave oven plugged into the electrical wall outlet, we have battery powered laptops, tablets, and so-called “phones” in our pocket or clipped to our belt.
Back in 1966 it was a very big deal to sit down at a laboratory desk next to a dedicated minicomputer pre-loaded with a tool like ESI-X and proceed to interactively define, refine, and solve a scientific, engineering, or financial forecasting problem involving complex and repetitive calculations.
Applied Data Research’s ESI-X, Digital Equipment’s FOCAL-69, and Dartmouth BASIC were created around the same time to make this experience of interactive end-user computing available to a wide audience. Rather then require the user to learn and write assembly language instructions, the power of an inexpensive computer was harnessed to interpret a simple high-level language and expand the declared intent into low-level operations. The exclusive society of the “data center high priests” was already being challenged in the early and mid 1960’s.