CRMS APL pioneered the use of computerized multiterminal, interactive simulation experiments for social science research. The system was conceived by Professor Austin Hoggatt at the Management Science Laboratory of the Center for Research in Management Science at the University of California, Berkeley. It was designed and built by a team led by Mark Greenberg and Charles Grant during 1972–1976. By January 1974 it could support one experimenter developing and running an experiment connected to multiple terminals. By 1976 the system was complete, with an easy-to-use interactive APL subsystem, and a multi-user time-shared operating system. The project was a technical success, making it possible to write experiments, debug them, run them, and analyze the results, and established the Management Science Laboratory as the prototype for experimentation in economics and behavioral science. However the lab failed to jell as an community of experimenters and supporting workers.
I was a member of the project during 1972, and have attempted to reconstruct the project history. Appendix 1 is an archive of scanned copies of the surviving project documents and source code listings.
UC Berkeley professors Frederick Emory Balderston[MyMi2007] and Austin Curwood Hoggatt[Fr2009] were pioneers in the application of computer-based simulation in economics. Hoggatt's thesis[Ho1957] was said to be "the first thesis in the United States that used simulations with a human-to-computer interface." In 1962 the two published a monumental monograph[BaHo1962] on a (noninteractive) simulation of the lumber industry, which included 35 pages of FORTRAN II source code.
In 1964 Balderston and Hoggatt began planning the Management Science Laboratory. In a 1969 paper[HoEsWh1969] demonstrating its use, Hoggatt described it as follows:
"The Management Science Laboratory was conceived by faculty in the Center for Research in Management Science at the University of California at Berkeley as a facility for behavioral research. A facilities grant from the National Science Foundation was awarded to the Center, and an interest group was formed to design and construct a laboratory for experiments with human subjects in situations based on models from the behavioral disciplines.
Our thinking was guided by results from a prototype laboratory and by the emerging literature in experimental gaming. Two principal considerations were that the environment should not detract from the experiments and, whenever possible, automatic control should be substituted for human control over experimental variables. The use of a digital computer as the heart of the experimental control system would achieve the generality which was required. The design of the laboratory was given over to architects who consulted with the faculty, while the computer control system was designed by technicians coordinated by one faculty member."
The prototype Hoggatt mentioned was developed during an appointment as Research Professor in the Miller Institute for Basic Research in Science, 1960 to 1961. The lab as built occupied about 2800 square feet, and much of the space could be reconfigured with wall sections suspended from overhead tracks; it was usually set up with a cubicle for each experimental subject. There were connections for terminals (originally Model 33 Teletypes) and video cameras and monitors.
Hoggatt described the computer system:[HoEsWh1969]
"At the center is a time-shared PDP-5 with DECTAPES, IBM compatible tape, full-duplex teletype multiplexor, analog-digital digital-analog conversion, micro clock, voltage out (one shot) and sense channels and a memory-to-memory link to a PDP-8 computer. The PDP-5 is quiescent responding to a 100 millisecond interrupt to update its clock or to a demand for service from one of the devices which it serves. On demand the PDP-5 slavishly responds or transmits to a peripheral device or stores data. The PDP-8, which has extended arithmetic, operates on a variable quantum break of 10 milliseconds up to 100 milliseconds and can be tuned to match the environmental characteristics of any given experiment. Control over the experiment resides in the PDP-8 which can issue commands to the PDP-5 to send character strings or operate external devices. For example, in creating a log of the experiment the PDP-8 may select characters from the input string of a teletype, add control characters and the real clock time to the string and have the PDP-5 write this information on the DECTAPE."
Hoggatt described in detail a duopoly experiment using the system in [Ho1969]. The computers were programmed using a language ECL/3 (Environmental Control Language, version 3) designed by A. Hoggatt, D. Steingart, J. Schlesinger, and J. Moore.[Mo1971]
Apparently the PDP-8 had been added to the system in 1967.[Ho1977] Even still, the combined PDP-5/8 system was small and slow. By 1970, there was interest in replacing the PDP-5/8 system with a more powerful computer system. Hoggatt had become an advocate of the APL programming language, which IBM had released for the System/360 in 1968.[FaIv1968] APL offered a concise, powerful notation that Hoggatt believed would be appropriate as a publication language for the models underlying the experiments and could be extended to handle files, multiple terminals and other devices within a single experiment program.
Two students who'd contributed to the software for the PDP-5/8 system, David S. Steingart from Computer Science and Jeffrey Moore from Business Administration, joined forces with Computer Science graduate student Rodnay Zaks to explore an APL implementation on a microprogrammable computer.[ZaStMo1971] The section of their paper entitled "A Time-Sharing System for Behavioral Science Experimentation" lays out extensive requirements for a system to be used for experimentation. Work was done on the APL implementation, but the system was not completed.[ZaStMo1971, Za1972]
By winter of 1971–1972 a larger project began to build a new computer system. The project was administered by Balderston, who chaired CRMS, and by the Laboratory Advisory Committee, which was chaired by Hoggatt. A press release by Balderston announcing the project noted:[Ba1972]
"The nucleus of the Staff Group for the computer-systems effort is headed by Mark L. Greenberg (PhD, Electrical Engineering and Computer Science, UC-Berkeley , 1971) and Jeffrey Moore (doctoral student in information science, Graduate School of Business Administration, UC-Berkeley)."
By April 1972, Charles A. Grant (also a 1971 Ph.D. from the Berkeley EECS department) returned from a post-doctoral fellowship and joined Greenberg as co-technical leader; Moore continued for a time as a consultant, and continued to supervise the existing PDP-5/8 system.[CRMS1972] One of the next hires was George Morrow[Ma2003] to work on hardware. Morrow had dropped out of high school, but returned to school in his late 20s, earning bachelor's and master's degrees, and entering the PhD program in mathematics at Berkeley. David Redell and I also joined the staff at this time. Redell was in the Computer Science Ph.D. program and I had just completed my B.S. in Engineering Mathematics; we had worked together on the recently-terminated CAL Timesharing System at Berkeley's Computer Center,[McRe2023]
Zaks' investigation used a Digital Scientific META4 Series 16 processor.[DSC70a, DSC71] This processor was originally designed to emulate an IBM 1130, but the read-only control store could be reprogrammed.[DSC1970b] META4s were also being used on campus in Professor Herbert Baskin's PRIME project,[BaBoRo1972] which Grant and Greenberg were familiar with.
Given the limited size of the control store, it was decided to use two META4s sharing a single main core memory. One processor would be dedicated to APL while the other processor executed a general-purpose instruction set as well as controllers for I/O devices. The general-purpose proceessor would run a timesharing system for program development, supervising the APL processor, etc. (Grant and Greenberg had sketched how a suitable microprocessor could be used to implement a CPU and I/O devices in a 1971 paper.[GraGre1971]) Perhaps to reassure Balderston and Hoggatt, the system programming language for the second machine was named SIMPLE. In addition to the two processors and shared memory, interfaces for serial lines [Mo1972], disks [Gre1972b], and tape drives were built. Computer Science Professor Martin Graham was on the Laboratory Advisory Committee, and consulted on a few electrical problems such as ground loops.[Gra2024]
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 static rather than dynamic name localization, 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. There were a few other changes from standard APL:
My plan was approved, and I started to design. There was a preliminary machine specification by July [Mc1972b]; the microcode was complete, documented, and tested by February 1973.[Mc1973a, Mc1973b, Mc1973c] For the floating-point arithmetic, Redell introduced me to Professor William Kahan, already an authority on computer arithmetic.[Ha2005] 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, so instead implemented 32-bit binary floating-point. I incorporated correct rounding using a “sticky bit” based on Kahan's lectures.[Mc1972a]
Since the SIMPLE machine wasn't running yet, cross-development was done on an SDS 940 computer running the Berkeley Timesharing System.[LaLiPi1966] There was an assembler for the META4 microcode, and also a simulator with debugging features (e.g., single-stepping and examining registers). We may have started out using the original Project Genie[WiCo2023] SDS 940 in Cory Hall, but we soon switched to the the machine belonging to Resource One, which was part of Project One, an intentional community in San Francisco.[WiCo2024]
I left the project after delivering the APL microcode, but I learned that 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. See Appendix 3 for four changes that were made later.
In source code such as [Xx1974a] and [Xx1974b], the two machines were usually referred to as the AIPU and SIPU (IPU = Instruction Processing Unit). Grant designed and implemented the SIPU.
In early discussions, it was decided to build a message-based system, with support in the microcode for basic process scheduling and message sending. Rather than switching between user and supervisor mode, there would be a kernel process with extra privileges that would handle system activities that could not be handled in microcode. I/O devices would appear to software as regular processes, so there would not be an interrupt mechanism. An early working document by Redell described messages as being sent to a (process, port) pair and described fairly complicated mechanisms to be implemented in microcode.[Re1972a] A later working document described a much simpler mechanism for the microcode, but noted that it was sufficient to enable a trusted "kernel" process to implement flexible message channels.[ReMc1972] The microcode actually implemented included a basic process scheduler and a test-and-set instruction.[Gra2024]
APL processes communicated by sending messages to mailboxes, and multiple processes could queue up to wait for messages on a single mailbox.[GeeEtAl1974]). APL processes had no microcode support; multiplexing of the APL processor was performed by APL Runtime Services running on the SIPU, which could perform start and stop commands and access data structures in the shared memory.
The document "Writing Behavioral Experiments in CRMS APL: Programmer's Manual (Preliminary Version)"[GeeEtAl974] explained how an experiment program was organized and described the application programming interfaces. An experiment consisted of a set of cooperating processes: isolated instances of running programs. Each process was started by calling a function from the experiment program; there were no shared global or local variables. Each subject process had an attached terminal. A pair of mailboxes connected the experimenter's process with each subject process. A mailbox allowed one-way transmission of a sequence of APL objects (scalars, vectors, or matrices) between two endpoints. The endpoints could be processes, files, and timers. An experiment could include one or more robot processes. A robot process substituted for a terminal, and thus interacted with the corresponding subject process. The code to implement these facilities included the APL Runtime Supervisor [Xx1974b], which was written in SIMPLE, and also a set of library functions (as described in [GeeEtAl974]) written in APL.
Wiley Greiner wrote math functions for the APL library.[Grei2024] Sheldon Linker wrote runtime library routines to achieve "full APL" based on the subset directly executed by the APL processor. He also worked on the graphics package, assisted in writing experiment programs, and helped run experiments.[Li2024]
A series of documents showed the evolution of the design for what we now call an Integrated Development Environment (IDE): it would combine editing, compiling, and debugging within a single command-line interface:
Appendix 4 lists the commands for the APL and SIMPLE language services.
No source code or documentation for the APL and SIMPLE compilers has been found. A brief document lists the APL syntax.[McJones1972d]
As mentioned previously, design and implementation began in 1972. In a departmental meeting on November 22 of that year, Balderston discussed the new system, saying that sometime in 1973 APL was expected to be running.[Ca1972] He also noted the new system would have the capacity to be used for general time-sharing (e.g., document preparation and general interactive use of APL) in addition to the behavioral experimentation which had been going on for almost a decade.
In July 1973, the CRMS annual report noted:[CRMS1973]
"During the academic year 1972-73, under the direction of Dr. Mark Greenberg and Dr. Charles Grant, the systems group completed the basic design for the APL-language-based Laboratory computer system. Most of the hardware-development work was completed, including a core-memory system, a disk-storage system, and a terminal-input/ output system. There was substantial software program development for the Laboratory design-system implementation language and the APL programming system. APL microcode, as operational, was implemented and tested. At year's end, there was a single-user operating system which supported the execution of programs."
In January 1974, [GraGreRed1974] reported:
"The current system includes 64k 32-bit words of core memory, two 12-million-word disk units, one tape drive, and provisions for the connection of up to 64 terminals. ... As of January 1973, the hardware for the system was operational. Now, January 1974, the APL subsystem is operational and has been used to develop a prototype experiment. The simulated APL primitive functions, including mathematical routines, are mostly completed. The current version of the operating system supports only one experiment at a time. Preliminary versions of the editing and debugging facilities are available. Work in progress includes integration and polishing of an easy-to-use interactive APL subsystem, and design and implementation of a multi-user time-shared operating system."
In July 1974, the CRMS annual report noted:[CRMS1974]
"During the academic year 1973-74, under the direction of Dr. Charles Grant and Dr. Mark Greenberg, the system group continued the hardware and software development of the new Laboratory system. The hardware development included the purchase and integration into the system of eighteen new hard-copy terminals [Diablo 630 "daisy wheel" devices], a magnetic-tape drive, and modem connections for remote use. Plans have been developed for a remote connection to the campus Computer Center's remote-job-entry system and [for] analog-to-digital-conversion interfaces. The selection process for purchase of graphic-display terminals is in advanced stage. Last, the existing hardware has continued to be improved and refined. The major software development was the implementation of a complete APL programming system, including a text editor, a program translator, and an execution and debugging facility. In particular, the APL system includes capability for specification of multiple-process and multiple-terminal experiments. Implementation of the system's programming language system was largely completed. An interim multi-user operating system was developed and successfully used. A major portion of the final time-shared operating system has been designed, coded, and debugged. Since the spring of 1974, the APL-language system has been in use by members of the Laboratory community for development of running of experiments."
That report also mentioned that oligopoly and macroeconomic game programs had been converted from the PDP-5/8 system to the new system in order both to check out the new system and also to support a development effort in classroom use. At this point, the PDP-5/8 system was largely phased out.
In July 1975, the CRMS Annual Report noted:[CRMS1975]
"The Management and Behavioral Sciences Laboratory's new computer-controlled experimentation system continued under development and became available for a number of research uses during 1974-75.
...
Under the direction of Dr. Charles Grant and Dr. Mark Greenberg, the Phase II operating system became operational in the Laboratory, providing multi-programming capability in APL. Numerous experiments and exercises were run in the Laboratory in tandem with the systems development. This was difficult because of frequent system changes, but the experience gained from the year's usage was crucial to the research progress of the faculty members and advanced graduate students and was, at the same time, important for the process of testing and strengthening of the system's software.
The Laboratory's editing system, RUNOFF, was successfully used for program documentation and also for preparation of a number of technical reports under automatic control, fulfilling one of the objectives of our original proposal and providing a very useful facility for a variety of uses.
Equipment acquisition under the grant was completed with the decisions to purchase a RAMTEK visual display terminal controller, twelve monitor units, light pens, and keyboards. With the building of necessary interfaces for these and the incorporation of system software for them into the operating system in summer and fall of 1975, the full range of capabilities of the Laboratory, as planned in the development grant, will be completed."
The final report of the 1971–1976 Laboratory Development grant described the system as:[BaEtAl1977, Appendix C]
“[a] time-sharing system based on two microprogrammable META4 computers, with a shared core memory of 120,000 32-bit words, two disks having storage capacity totaling 24 million words, a magnetic-tape unit for backup and data preparation, a link to the Berkeley Campus CDC 6400 computer; modems for linking users and other systems outside the laboratory; eighteen hard-copy terminals, and a CRT display system consisting of twelve CRT screens with keyboard and light-pen and RAMTEK support unit.”
The report noted: "All original major objectives for the computing system have been accomplished."
In 1977 a new research proposal was submitted to NSF by Balderston and Hoggatt.[BaEtAl1977] In addition to carrying out a series of experiments, there were plans to make some extensions to the interprocess communication mechanisms (including allowing remote access by experimental subjects) and to add some graphics display equipment for monitoring and control. It appears that this proposal was not funded.[Gra2024]
In addition to the game-style experimental research that had been the original motivation for the Laboratory and its computer systems, usage of the APL was extended to simulations, classroom teaching, and general-purpose time-sharing. For example, Hoggatt's activities for the summer of 1974 included:[CRMS1975]
"Development of working groups in the Schools of Business Administration which will utilize the META system in an experimental program to support classes in microeconomics via extensions to oligopoly games, in macroeconomics via extensions to EQUILIBRIA and developing exercises for use in teaching macroeconomics, in quantitative methods by preparing materials for a year-long sequence in quantitative methods for graduate and undergraduate instruction."
Experimental work went on as well. Berkeley Professor Mark Garman built an elaborate simulation of automated securities exchange in order to investigate the impact of automation on trading practices, such as the role of the specialist.[Ga1975] This simulation, constructed between 1971 and 1974 with the help of three research assistants, defined roles for customers, brokers, and specialists. The initial version, called TF/1 (for Trading Floor), ran on the original PDP-5/8 system. In 1974 it was rewritten for the APL system and renamed TF/2. The more powerful computer system allowed various improvements. In particular, the companies being traded could now play an active role: under appropriate circumstances, they could “enter the auctions to float new equity issues at the going market prices.” The 1972-73 CRMS Annual Report noted: "Believing that fully automated securities will become a reality within the next two decades, Professor Garman thinks that this is the time for research into the structural issues surrounding automated exchanges."[CRMS1973]
In a 1977 paper "On the Uses of Computers for Experimental Control and Data Acquisition", Hoggatt provided additional anecdotes of usage.[Ho1977]
In the 1977 NSF research proposal, Balderston described additional work done on the CRMS APL system:[BaEtAl1977]
The system was shut down by the late 1970s. Hoggatt lamented:[ArEtAl1992]
"After spending large sums of NSF money to capitalize this facility, the University of California, Berkeley scrapped it for want of funds to pay for maintenance."
Economists began incorporating experiments with human subjects into their research by the late 1940s. The approach grew in popularity through the 1950s. For example, Hoggatt described a paper-and-pencil version of an oligopoly experiment in [Ho1959]. Hoggatt's experimental work and his familiarity with computers led him much further. As Andrej Svorenčík observed:[Sv2023]
The first computerized laboratory for controlled experimentation in economics was Austin Hoggatt’s Management Science Laboratory at Berkeley in the 1960s. From the beginning, it was trailblazing in its use of computer technology to improve and exercise experimental control at a time when just a few economists worldwide were conducting pen- and-paper-style economics experiments. Although Hoggatt’s overreliance on technology failed to create a lasting community, it made a lasting impression on other early experimental economists and informed their choices on how to organize their laboratories both as a physical space but also as a communal place.
Later laboratories founded in the 1980s by Charles Plott at Caltech, and by future Nobel Prize winners Vernon Smith at the University of Arizona and Reinhard Selten at Bonn (both of whom were familiar with Hoggatt's lab), each managed to establish a community of researchers and others who could sustain a practice of computer-based experimental economics. Nowadays a well-known software package called the Zurich Toolbox for Readymade Economic Experiments (z-Tree) makes it fairly straightforward to develop and carry out economic experiments on a network of Windows laptops.[zT2024]
Morrow went on to found Thinker Toys and Morrow Designs, and was one of the people who standardized the S-100 bus used in many early microcomputers. Grant and Greenberg founded North Star Computers. Zaks founded Sybex, a publisher of books on computer programming. Moore received his PhD in business and spent the rest of his career at Stanford. Redell completed his PhD in computer science and became an assistant professor at MIT. In two years he returned to the Bay Area, working successively at Xerox, DEC Systems Research Center, AgileTV, and Google. I worked at a small software house named Virtual Memory Systems, then IBM San Jose Research, Xerox, Tandem, DEC Systems Research Center, E.piphany, AgileTV, and Adobe.
During the years of development from 1972 through 1975 or 1976, Moore's Law—the doubling of the number of transistors in integrated circuits every two years—was just beginning to have an effect. But there was already a sea change: the small integrated circuits and core memory used in the META4 hardware were being replaced by large integrated circuits: single-chip microprocessors and dynamic RAM chips—the very components that Morrow, Grant, and Greenberg would be using in their subsequent companies. But the CRMS software wasn't written in a portable fashion, so the system quickly became obsolete. In contrast, at about the same time the UNIX operating system was being rewritten in the programming language C, allowing it to be ported to an amazing variety of computers, persisting to the present day.
On a personal level, Balderston and Hoggatt played complementary roles, with Hoggatt focussing on detailed requirements and technical approaches and Balderston securing institutional support. Both believed strongly in the Laboratory and incorporated it into their personal research agendas.
The original CRMS APL system was done as part of a Systems Development effort under National Science Foundation Grant GS-32138. Additional work was done under Grant SOC75 -08177.
Dave Redell shared recollections and supplied copies of a number of documents and the two SIMPLE source code listings. Chuck Grant assisted with research at the Bancroft Library. Sheldon Linker and Wiley Greiner shared recollections. In addition to his publications, Andrej Svorenčík shared photographs of [BaEtAl1977].
These are in addition to people mentioned previously.
Over the life of the system, four changes (noted in pencil on the listing) were made to the AIPU microcode, which I'd debugged on the simulator before leaving the project in January 1973:
The following two tables were extracted from the source code for the SIMPLE Interactive Language System and the APL Runtime Supervisor, respectively.
NP | NEW PROGRAM |
SP | SELECT PROGRAM |
CP | COMPILE PROGRAM |
DP | DELETE PROGRAM |
ET | ENTER TEXT |
MT | MODIFY SINGLE LINE IN TEXT BUFFER |
TT | TYPE CONTENTS OF TEXT BUFFER |
AF | APPEND FUNCTION FROM TEXT BUFFER |
AT | APPEND TEXT |
IT | INSERT TEXT |
DT | DELETE TEXT |
RT | REPLACE TEXT |
LT | LOAD TEXT |
MV | MOVE POINTER |
RF | READ FUNCTIONS |
ST | DUMP SYMBOL-TABLE ENTRY |
SR | SELECT RUNTIME LIBRARY |
RS | RECOVER STATE |
PC | PRINT CODE [and line-table entry] |
SB | SET BREAKPOINT |
CB | CLEAR BREAKPOINT |
PD | PRINT DATA |
SD | STORE DATA |
DS | DISPLAY STACK |
DO | DO FUNCTION [start debuggee process] |
GO | GO COMMAND [start debuggee process] |
PV | PRINT VARIABLE |
IN | IN [set function activation context] |
WH | WHERE [print current location?] |
PS | PRINT SEGMENT |
EX | EXIT FROM LANGUAGE SYSTEM |
SP | SELECT PROGRAM |
SR | SELECT RUNTIME |
SB | SET BREAKPOINT |
CB | CLEAR BREAKPOINT |
DO | DO FUNCTION [start debuggee process] |
GO | GO COMMAND [start debuggee process] |
PC | PRINT CODE [and line-table entry] |
ST | DUMP SYMBOL-TABLE ENTRY |
EX | EXIT FROM LANGUAGE SYSTEM |
PV | PRINT VARIABLE |
DB | DEBUG SPECIFIED PROCESS |
SZ | SET SIZES [array block storage, stack] |