My Experience with the IBM 7094 and CTSS

Tom Van Vleck

7094 system

An IBM 7094

This note describes my experience at MIT with the IBM 7094 and the CTSS operating system.

My Undergraduate Computer Experience

One reason I wanted to go to MIT was my interest in computers. When I entered MIT as a freshman in 1961, I often passed the glass wall that let passers-by in Building 26 see the Computation Center's 7090, in a computer room about the size of a soccer field. You could see the tape drives spin and the lights blink.

As a freshman, I took course 6.41, Introduction to Automatic Computation, which taught me machine language and FORTRAN. The 6 in the course number mean that it was offered by the Electrical Engineering department. You couldn't major in computers at MIT in 1961 -- or anywhere else either. There were about a dozen computer related courses available in the catalog, in four or five departments, and I wanted to take them all. I was in the Mathematics department, which didn't seem to believe in computers at all: I remember my Numerical Analysis laboratory, with its rows of Marchant calculators.

I took course 6.251, Introduction to System Programming, as soon as I could. When I took the course, there were a few exercises in MAD, and then we were presented with CAP (Classroom Assembly Program), a simple assembler for the 7094, and assigned a series of problems to improve it. The assembler itself was written in FAP, and we submitted batch jobs in the form of update runs that applied alters to the CAP source, reassembled and linked it, and ran a standard test suite. You got so many points for adding the * meaning "the current instruction counter," so many more for putting in a simple expression evaluator, and so on. The textbook was by Corbató, Poduska, and Saltzer.

I had programming jobs back home each summer, where I learned the 1401 and 7070. After I took 6.251, I looked for part-time programming jobs at MIT while I was a student. In 1963-1964 I had part-time work at MIT Project MAC, using CTSS, in Professor Herb Teager's group.

In 1964-1965, I found a different job as a part-time programmer for Prof. Ithiel de Sola Pool in the MIT Political Science department. I wrote event simulation, survey analysis, and statistical code for the 1401, 7094 FMS and CTSS. As part of this activity, I learned as much as I could about CTSS, and started to make user contributions. I worked with another student programmer, Noel Morris. We shared a windowless office in the library stacks: the great thing about the office was the IBM 1050 terminal, which had a golf-ball printing mechanism that could produce high quality output.

The first program we worked on together was a "cross tabulation" system. That is, it read in survey data with one or more cards per response, each having responses punched in one or more columns. Our program counted how many responses picked each answer and printed totals, e.g. marital status versus number of dogs. The program was quite complex, adaptable to many kinds of coding schemes, and supported many ways of specifying tables and statistical calculations. For years after the MIT 7094 was gone, we would get queries from social scientists who wanted to use it. One thing we did was to write a memo describing the program, using RUNOFF, the brand new facility for editing a document online with the time-sharing system and printing it out nicely formatted, with justified right margins.

Noel and I spent many hours learning how FMS and CTSS worked. Part of the Michigan/MAD code was a replacement for the standard FORTRAN output formatter routine, (IOH). (Programs written in FAP (FORTRAN Assembly Program, the 7094 assembler) could use special characters, such as parentheses, in external names. I/O library routines were often given names that FORTRAN and MAD programs could not generate, to avoid name conflicts.) The MIT/Michigan version of (IOH) supported additional format codes used by the MAD language, and had other internal improvements over the IBM version. One change was to use the extra index registers that the 7094 had and the 7090 didn't. And buried deep in the code, there was the line of code


Noel and I made up the Bob Crabtree Society, open to people who knew where that comment was and what it did.

In 1964, Prof. Pool arranged for us to get an office on the fifth floor of the new Tech Square building, right next to a public terminal room. It was great. We could almost always find a free terminal, either next door or upstairs, and more importantly there were other programmers there at all hours. We learned from them, shared code, made friendships, tried to impress. The term "hacker" is now disreputable, but it was not so then, and we learned from some of the greatest hackers in the world.

My CTSS Experience After Graduation

When I graduated in 1965, I was offered a full-time position on the MIT sponsored research staff, working for Prof. Pool. My stating salary was $550/month, working with Noel and a few others. We wrote code in MAD and FAP. I also wrote a few data analysis programs for the Comp Center's IBM 1401, which was used to create input and print output tapes for the 7094, but sat idle a lot.

CTSS was the cutting edge of computing in those days: using the computer on-line instead of running batch jobs was new and controversial. Noel and I contributed programs to CTSS, as interested community members. We wrote a command abbreviation program called ". SAVED" that had an instant messaging feature, and one of the first electronic mail programs, as well as other tools. Eventually we both transitioned over to working for Project MAC instead.

My first MAC assignment was helping to administer CTSS resources. (Thanks to my former boss Dick Mills for the document.) As the Multics project use of CTSS expanded, I helped sign up users from Bell Labs, who would use the MAC CTSS by dialup from New Jersey. I may have set up the CTSS accounts for Ken Thompson and Dennis Ritchie, among others. As time went on, I took on projects for Multics as well as CTSS, initially writing design papers on how to do resource accounting and system administration for Multics. Later, I worked on Multics system boot and other facilities, and then took a job at the Information Processing Services Center managing system programming for CTSS, an IBM 360/67 running CP/CMS, and the features of Multics that IPS would need to be able to run a service on it.

When I left MIT IPSC, I took a job in the Honewyell Multics group.