The IBM 7094
Running CTSS under emulation can help us understand the operating system, but it's important to put it into context by looking at the hardware it actually ran on.
The IBM 7094. Source: IBM CE manual
Big, fast, expensive
The IBM 7094 was big, taking up a large room at the MIT computer centre for its CPU and peripherals.
It was one pf the fastest computers available in the early 1960s.
It was also very expensive: a typical system sold for $2.9 million (equivalent to $23 million in 2023) or could be rented for $63,500 a month (equivalent to $501,000 in 2023) (from Wikipedia).
All this meant that very few sites could afford one - mostly universities and large corporations with extensive need for scientific computation facilities.
The 700/7000 range of computers
From 1952 IBM had developed a range of computers, first using vacuum tubes and later transistors. The table below shows how their scientific range evolved - there were also commercial application versions that were not completely compatible with the scientific models.
Year | Model | Logic | Memory | Notes |
---|---|---|---|---|
1952 | 701 | Tubes | 2kw Williams tubes | aka Defence Calculator |
1954 | 704 | Tubes | 4-32kw core | First h/w floating point |
1958 | 709 | Tubes | 32kw core | First indirect addressing |
1959 | 7090 | Transistors | 32kw core | 6x faster than 709, ½ the price |
1962 | 7094 | Transistors | 32kw core | 2x faster than 7090 |
1963 | 7040 | Transistors | 32kw core | Scaled down version of 7090 |
1963 | 7044 | Transistors | 32kw core | Slightly faster version of 7040 |
1964 | 7094II | Transistors | 32kw core | 2x faster than 7094 |
MIT had a 704, then a 709 which was the first machine to get CTSS. They upgraded through 7090 - 7094 - 7094 II and had a second machine to support Project MAC.
CPU and memory
The 7094 had a 36 bit word size and could directly address up to 32kw of core memory (so around 144kB - bytes as a standard measure of memory had not yet been standardised).
It has a single main accumulator and a multiplier/quotient register for multiplication and division. It has four index registers allowing indirect addressing. Numbers were stored in sign/magnitude form, with the top bit the sign and the remaining 35 bits the number.
At the time there was no standard for text encoding like ASCII; the 7094 used 6-bit BCD encoding, allowing only numbers, capital letters and some punctuation symbols.
For CTSS, MIT requested an additional 32kw of memory used in a bank-switched manner, so one bank was for the supervisor and the other bank could be fully utilised by the client program.
Storage
The primary storage mechanism for computers at the time was magnetic tape. This offered fast sequential read/write but due to the linear nature of tape could be slow for random-access. Installations would often have multiple tape drives: for a batch Fortran compile run for example, there could be one tape for the compiler, one for the input program, one for scratch storage and one for the output object, all being used at the same time. CTSS used tapes for user file storage on early versions before the disk was available; after that it was used for bulk file input and backup. Each tape could store around 3MB and could be read at several hundred bytes per second.
Random-access storage was done by what IBM called DASDs (direct access storage devices) and what we'd now call drums and hard disks. The 7320 drum was a cylinder with one head per track that could store 174,000 36 bit words. CTSS used this for swapping and some file storage.
The 1301 hard disk was one of the first commercially available hard disks and could store 28MB of data. It spun at 1800 rpm and could transfer around 90,000 bytes per second. CTSS used this for file storage. If you wanted to buy one, it would cost over $100,000 in 1963 dollars.
Input/output
The console had switches and lights for the operator to toggle in values, view the state of the computer and start operations. There was also a line printer for logging.
User data could be fed into and out of the machine by punched card. Each card holds 80 characters. In practice this was not used for regular user input as it was too costly in CPU cycles; the user would instead punch data to cards using an off-line punch; the cards would be transferred to tape via a smaller computer and finally the tape loaded into the 7094.
What is missing here is interactive input/output. MIT requested IBM to build a data concentrator to handle multiple serial lines and used this to attach teletypwriters like the one below. It was also possible to connect over the telephone wires using an acoustic coupler.
Teletype Model 37. Source: Wikipedia. License: CC BY-SA 4.0
There was also an experimental graphical display connected to the IBM via a PDP-7, but this is not supported by the emulator.
Other peripherals
There were also a number of other items requested from IBM by MIT to support CTSS:
- Trapping I/O operations to interrupts so they could be handled by the supervisor
- Memory protection and relocation
- A real time clock and interval timer
Further reading
Much of the information on this page came from Wikipedia. Another great source is Tom Van Vleck's page on multicians.org about CTSS.