History of CRMS APL

My paper has just been published by the IEEE Annals of the History of Computing:

History of CRMS APL

(not behind the IEEE paywall)

It describes a system built in the early 1970s using a pair of Digital Scientific Meta4 computers, one of which ran microcode for an APL virtual machine. The system was used to run multi-person business simulation experiments for economists.

4 Likes

Fascinating! Thanks for the paper, which must represent a lot of work. Thanks also for the bitsaver links.

A dual-cpu system running two instruction sets with a shared memory, that’s quite the thing: and of course it had to do useful work too.

I see you mentioned this time in passing in your intro post:

A few quotes, if I may, from your paper - which I recommend people read in full:

Perhaps to reassure Balderston and Hoggatt, the system programming language for the second machine was named SIMPLE.

The original plan was to use the APL microcode from Zaks’ investigation. My initial assignment was to get it running, but I had problems understanding the design from its source code and limited documentation. I proposed to do a new design based on lexical rather than dynamic name scoping, which would allow parsing at compile time rather than runtime. There would be a virtual machine with a set of instructions for a subset of a dialect of APL. […] Because the control store of the META 4 processor was so small, a subset of the primitives had to be chosen, with the remainder implemented using that subset.

For the floating point arithmetic, Redell introduced me to Prof. William Kahan, already an authority on computer arithmetic. Given that the projected users would not be numerical analysts, his recommendation was to implement decimal floating point. I was concerned that this would occupy too much control store and instead implemented 32-bit, binary floating point. I incorporated correct rounding using a “sticky bit” based on Kahan’s lectures.

when the microcode was installed in the hardware read-only memory (which involved manually peeling little foil squares from printed circuit boards), it worked the first time. [link to panel about four minor bugs]

2 Likes

A question I perhaps should have discussed: given that the Meta4 was originally designed to emulate the IBM 1130 and that IBM had released APL\1130 as a user-supported package, would (say) a pair of IBM 1130s running APL\1130 have been able to support the CRMS workload. An immediate issue would have been providing an appropriate interprocess communication mechanism, so the experimenter’s process could talk to each subject process, and so a “robot” process could be substituted for a subject at his/her terminal. In 1973 IBM released APL.SV with shared variables; likely they could handle this issue, but this was an enhancement for APL\360 rather than APL\1130.

1 Like