Document Actions

Notes on SDC CRISP for IBM 370 Computers

by Jeff Barnett
June 2010

The System Development Corporation (SDC) was one of the prime contractors selected by DARPA in 1970 to pursue research in speech understanding systems. Thus, SDC was a major participant in the DARPA Speech Understanding Research (SUR) program for most of the 1970’s. SDC also had a history of developing and using Lisp systems to support their research agenda. So it was no surprise that SDC Lisp 1.5 for IBM 360 was used to support the early speech research and that a Lisp for the Raytheon 704 Computer was developed along the way. The 704 principally supported low-level signal acquisition and processing.

Speech research would stress control structures, data representation strategies, and memory management in any existing 1970’s Lisp system. This was particularly true since a major part of the research was to determine a system structure adequate to process and understand speech. Therefore, a decision was made to design and build a new Lisp-like programming language system. That language and system was to be known as CRISP, a name derived from the phrase “Crunching Lisp,” and it was to run on the IBM 370 using the VM operating system. CRISP was designed and implemented by Jeffrey A. Barnett and Doug Pintar in the 1973-1974 timeframe.

Lisp 2 was the primary intellectual ancestor of CRISP. See the Lisp 2 for the IBM 360 (SDC TM 3417) document series for many of the design decisions that influenced CRISP. However, the special nature of speech processing and the new availability of virtual memory suggested many advances beyond those anticipated by Lisp 2. Some of the unusual features in CRISP follow:

Control Structures

Spaghetti stack-like control structures

Multiple processes with variable-binding inheritance among the processes

Ability to dynamically change which process variables were inherited from

Multi-clause try-form to control non-local exits and organization of search.

Data Types and Structures

Language was strongly typed

Recursive type definitions were allowed

Incremental compile/assemble allowed new and old definitions to coexist, temporarily, to provide type safety

Multidimensional arrays and structs that could be embedded and repeated within each other

Complex, real, and integer types were supported and the latter two types were managed unboxed.

One should be aware that the entire CRISP system was implemented and used to build many speech understanding and other systems. However, the CRISP language was never implemented. Since the entire intent of CRISP was to support speech research, time and funding were limited, and Doug and Jeff needed some sleep, an unusual decision was made: Implement the world's sexiest assembler. All of the interesting control structures, data types and structures, incremental compile/assemble, memory and address management, and namespaces were delivered through assembler pseudo-operations and pseudo-addresses plus a top-level declaration language and integrated libraries. For examples of CRISP code and more information about this move see The CRISP Programming Language System: an Historical Overview.