CINXE.COM

The IBM 7094 and CTSS

<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>The IBM 7094 and CTSS</title> <meta name="description" content="The IBM 7094 computer, and MIT Computation Center's CTSS timesharing system."> <meta name="keywords" content="history, computer, programming"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- stdformat.htmi --> <link rel="stylesheet" href="tvvstyle.css"> <style> body {margin: 0px 0px; padding: 0px; text-align: center;} .outer {min-width: 200px; max-width: 800px; width: auto !important; width: 600px; margin: 0px auto; text-align: left; padding: 5px;} .tail {text-align: center; margin: 10px auto;} @media print { .navbar {display: none;} .tail {display: none;} a {text-decoration: none;} a:link {color: black;} } </style> <style> .w180 {width: 180px;} </style> </head> <body> <div class="outer"> <p id="fltdatebox"> 2025-02-07 </p> <h1>The IBM 7094 and CTSS</h1> <p class="author">Tom Van Vleck</p> <div class="rtpicn" style="width: 189px;"><img src="vvimg/7094-sys.gif" width="189" height="144" alt="7094 system" title=""><p class="caption">An IBM 7094</p></div> <p> This note describes <a href="../mgm.html#MIT" title="glossary: Massachusetts Institute of Technology. A private land-grant university, founded...">MIT's</a> IBM 7094 and the Compatible Time-Sharing System (CTSS) operating system, based on my experience at MIT in the 1960s. My personal story is described in <a href="../thvv/tvv7094.html" title="Personal experience with the IBM 7094, and MIT&#39;s CTSS time-sharing system.">"My Experience with the IBM 7094 and CTSS"</a>. </p> <h2>MIT's Mainframe Computers</h2> <p> The MIT Computation Center got its IBM 7090, in the spring of 1962, replacing a 709, and upgraded its 7090 to a 7094 by 1963. In the mid-1960s, IBM's 7094 was one of the biggest, fastest computers available, able to add floating numbers at a speed of about 0.35 MIPS. <a href="http://ed-thelen.org/comp-hist/BRL64-i.html#IBM-7094-II" title="new window: http://ed-thelen.org/comp-hist/BRL64-i.html#IBM-7094-II" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> A standard 7094</span></a> had 32K 36-bit words of memory. Its data channels could access memory and run simple channel programs to do I/O once started by the CPU, and the channels could cause a CPU interrupt when the I/O finished. A 7094 cost about $3.5 million, back when that was a lot of money. </p> <p> IBM had been very generous to MIT in the fifties and sixties, donating or discounting its biggest scientific computers. When a new top of the line 36-bit scientific machine came out, MIT expected to get one. In the early sixties, the deal was that MIT got one 8-hour shift, all the other New England colleges and universities got a shift, and the third shift was available to IBM for its own use. One use IBM made of its share was yacht handicapping: the President of IBM raced big yachts on Long Island Sound, and these boats were assigned handicap points by a complicated formula. There was a special job deck kept at the MIT Computation Center, and if a request came in to run it, operators were to stop whatever was running on the machine and do the yacht handicapping job immediately. </p> <p> The Deputy Director of the MIT Computation Center was the late <a href="../corby.html" title="Homage to our leader, Fernando J. Corbat&oacute;">Prof. Fernando J. Corbat&oacute;</a>, known to everybody as <strong>Corby</strong>. The Director was <a href="https://wayback.archive-it.org/7963/20190701173344/https://libraries.mit.edu/archives/research/collections/collections-mc/mc75.html" title="new window: https://wayback.archive-it.org/7963/20190701173344/https://libraries.mit.edu/archives/research/collections/collections-mc/mc75.html" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Prof. Philip M. Morse</span></a>, who didn't seem to be involved in the day-to-day operations of the Center; Corby ran the whole thing. When you submitted FMS jobs, you specified your problem number and <strong>programmer number</strong>. The lower your number, the longer you had been associated with the Computation Center. Corby's programmer number was 3. </p> <h3>FMS and Batch Processing</h3> <p> The 7090 and 7094 were operated in batch mode, controlled by the tape-based <strong>Fortran Monitor System (FMS)</strong>. Batch jobs on cards were transferred to tape on an auxiliary <a href="../thvv/1401s.html" title="The IBM 1401 computer.">IBM 1401</a> computer system, and the 7094's FMS monitor read one job at a time off the input tape, ran it, and captured the output on another tape for off-line printing and punching by the 1401. Each FMS user job was loaded into 7094 core by the BSS loader along with a small monitor routine that terminated jobs that ran over their time estimates. Library routines for arithmetic and I/O were also loaded and linked with the user's program. Thus, each user's job had complete control of the whole 7094, all 32K words of memory, all the data channels, everything. </p> <h4>MAD Language</h4> <p> MIT and the University of Michigan were both 7094 owners, and their computation center people were colleagues who traded code back and forth. In 1961, the elementary course used FORTRAN, but by 1963, MIT had installed Michigan's <a href="http://www.bitsavers.org/pdf/univOfMichigan/mad/L2-UOI-MAD1-2-RX_MADum_62.pdf" title="new window: http://www.bitsavers.org/pdf/univOfMichigan/mad/L2-UOI-MAD1-2-RX_MADum_62.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> MAD</span></a> (Michigan Algorithm Decoder) language, written by <a href="../multicians.html#GrahamRM" title="Multician: Designer (MIT): call/save/return, languages.">Graham</a>, Arden, and Galler, and was using that in most places that a compiler language was needed, especially computer courses. MAD was descended from ALGOL 58: it had block structure and a very fast compiler, and if your compilation failed, the compiler used to print out a line printer portrait of Alfred E. Neumann, as shown in <a href="http://ljkrakauer.com/LJK/60s/nerdpride.htm" title="new window: http://ljkrakauer.com/LJK/60s/nerdpride.htm" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Larry Krakauer's blog</span></a>. (MIT took that out to save paper.) Mike Alexander says, "MAD was first developed about 1959 or 1960 on a 704, a machine which makes the 7094 look very powerful indeed." At that time MAD ran under UMES, the University of Michigan Executive System, derived from a <a href="http://www.ieeeghn.org/wiki/index.php/First-Hand:Operating_System_Roots" title="new window: http://www.ieeeghn.org/wiki/index.php/First-Hand:Operating_System_Roots" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> 1959 GM Research Center executive for the IBM 704</span></a> that was one of the first operating systems. </p> <h3>Early Time-Sharing at MIT</h3> <p> MIT professors, such as Herb Teager and Marvin Minsky, wanted more access to the machine, like they had had on <strong>Whirlwind</strong> in the fifties and the <strong>TX-0</strong> in the sixties, and quicker return of their results from their FMS jobs. Professor John McCarthy wrote an influential memo titled "A Time Sharing Operator Program for Our Projected IBM 709" dated January 1, 1959, that proposed interactive time-shared debugging. These desires led to time-sharing experiments, such as Teager's "time-stealing system" and "sequence break mode," which allowed an important professor's job to interrupt a running job, roll its core image out to tape, make a quick run, and restore the interrupted job. McCarthy's <a href="http://www-formal.stanford.edu/jmc/history/timesharing/timesharing.html" title="new window: http://www-formal.stanford.edu/jmc/history/timesharing/timesharing.html" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Reminiscences on the History of Time Sharing</span></a> describes his and Teager's role in the beginnings of time-sharing. Teager and McCarthy presented a paper titled "Time-Shared Program Testing" at the ACM meeting in August 1959. </p> <p> <a href="../mgc.html#CTSS" title="glossary: Compatible Time Sharing System. This IBM 7094 time-sharing operating...">CTSS</a> development had started in 1961, led by Corby, Bob Daley, and Marjorie Merwin-Daggett. A version of CTSS that swapped four users to tape was demonstrated on MIT's IBM 709 in November of 1961. This system could support four Friden Flexowriter terminals directly connected to an I/O channel of the computer. CTSS was described in a paper at the 1962 Spring Joint Computer Conference, even though the software wasn't quite working on the IBM 7090. Much of the CTSS research was funded by US National Science Foundation grants to the Computation Center. Development continued through 1962 and 1963, and system capabilities and usage continued to expand. Limited CTSS service to MIT users on the IBM 7090 began in May 1963, supporting the Project MAC Study (see below). </p> <div class="rtpicn" style="width: 106px;"><a href="../corby.html"><img src="../mulimg/corby3.gif" width="106" height="125" alt="" title=""></a><p class="caption">Corby on WGBH</p></div> <h4>CTSS on Television</h4> <p> Corby was interviewed by John Fitch for the <cite>Science Reporter</cite> program on WGBH-TV on May 9, 1963. He <a href="http://www.youtube.com/watch?v=Q07PhW5sCEk" title="new window: http://www.youtube.com/watch?v=Q07PhW5sCEk" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> demonstrated CTSS running on MIT's 7090</span></a>. The program aired on aired on WGBH-TV on May 16, 1963. </p> <h2>CTSS</h2> <p> CTSS was called "compatible" in the sense that FMS could be run in B-core as a "background" user, nearly as efficiently as on a bare machine, and also because programs compiled for FMS batch could be loaded and executed in the "foreground" time-sharing environment (with some limitations). Background jobs could access some tape units and had a full 32K core image. This feature allowed the Computation Center to make the transition from batch to timesharing gradually, and to retain the ability to run "dusty decks" and software from other institutions. The Comp Center got the CTSS RPQs added to the blue machine and began running standard CTSS service in 1965. (RPQ was IBM jargon for <em>Request Price Quotation</em>. IBM, in those days, would engineer and sell features not part of the standard product, for a price.) The configuration for both machines included about a dozen tape drives, a swapping drum, and a 1301 disk file with a capacity of about 36 megabytes, shared among all users of the machine. </p> <p> The CTSS supervisor provided a number of "virtual machines," each of which was an IBM 7094. One of these virtual machines was the background machine, and had access to tape drives. The other virtual machines were foreground users: these virtual machines could run regular 7094 machine language code at 7094 speed, and could also execute one extra instruction, which invoked a large set of supervisor services. These services included terminal I/O and file system I/O. Programs could be written for the foreground environment in any language available for the 7094; libraries were provided to allow compiler languages such as MAD to call on supervisor services. CTSS provided a file system that gave each registered user a separate directory of disk files. </p> <p> The key features of CTSS were virtual machines, hardware isolation of users from the supervisor and from each other, and a per-user disk file system. Because the user virtual machine supported the same architecture and instruction set as the 7094, CTSS was able to support a large body of applications originally developed for the FMS batch environment at MIT and elsewhere. </p> <p> CTSS software included not only the supervisor but also a set of "foreground" command programs and subroutine libraries. Many of these commands read files from the user's file system storage and wrote other files; for example, the MAD compiler read a disk file containing program source and wrote a disk file containing machine instructions in BSS (binary) format. Most of the foreground <span class="cmd">MAD</span> command was identical to the background MAD compiler on the FMS system tape, with the addition of a wrapper to handle command line options, and replacements for the input and output routines to read and write disk files instead of tape, and to write error messages to the user's terminal. IBM FORTRAN II would not run in CTSS foreground, because the FORTRAN compiler was a complex multi-pass monster. The <span class="cmd">MADTRN</span> command was provided on CTSS: it translated FORTRAN programs to MAD and then compiled the resulting program with the <span class="cmd">MAD</span> command. </p> <div style="width: 252px;"><img src="vvimg/7094-con.gif" width="252" height="144" alt="7094 console" title=""><p class="caption">7094 console</p></div> <h2>Project MAC</h2> <p> In 1963, MIT obtained funding from <a href="../mga.html#ARPA" title="glossary: Advanced Research Projects Agency of the US Department of...">ARPA</a> for <a href="../project-mac.html" title="History of MIT Project MAC.">Project MAC</a>, an interdepartmental laboratory to explore development and use of time-sharing. Its first major activity was the <b>1963 Project MAC Summer Study</b>, where computer scientists from many institutions spent time at Project MAC using the brand new idea of a time-shared computer. Project MAC's plans included the development of a next-generation time-sharing system called <a href="../mgm.html#Multics" title="glossary: Multiplexed Information and Computing Service. A proper noun, always...">Multics</a>. CTSS was to be used as the programmers' tool to develop this new system, as well as the tool to support other research projects, such as database and language research. The Director of Project MAC was MIT Professor <a href="../multicians.html#Fano" title="Multician: Administration (MIT): Director, Project MAC.">Robert M. Fano</a>, a well respected electrical engineering professor, one of the authors of the canonical electromagnetic theory textbook. His Assistant Director was <a href="../multicians.html#MillsRG" title="Multician: Administration (MIT): Asst Director Project MAC, Director IPS.">Dick Mills</a>, who had worked on Whirlwind and contributed to early CTSS development. </p> <div class="rtpicn" style="width: 180px;"><a href="../mulimg/fano-tty.jpg"><img src="../mulimg/fano-tty-sm.jpg" width="180" height="134" alt="" title=""></a><p class="caption">Prof. Fano using CTSS</p></div> <p> YouTube has a movie clip from 1964 of Professor Fano <a href="http://www.youtube.com/watch?v=sjnmcKVnLi0" title="new window: http://www.youtube.com/watch?v=sjnmcKVnLi0" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> describing time-sharing and using CTSS</span></a> on a Model 35 Teletype. </p> <p> By the time of the 1963 Summer Study, CTSS was in use as a service on the Computation Center 7090, supported by hardware RPQs. Computer researchers from all over the country, from academia and industry, used CTSS to try interactive computing. </p> <p> Project MAC got its own 7094 in October 1963 (paid for by ARPA) in the new <a href="../tech-square.html" title="Where we worked">Tech Square</a> building behind MIT. The Computation Center machine, upgraded to a 7094, ran CTSS and FMS in the background; it had the standard blue side panels. The Project MAC machine had red side panels, and staff often referred to "the red machine" or "the blue machine." </p> <p> By 1965, many CTSS developers had moved over to Project MAC and was beginning the design of Multics. A final major CTSS enhancement project in 1965 was a new, much better, file system, in order to to ensure that the system would be adequate to support Multics development, and that the Computation Center CTSS service would be robust. </p> <h2>CTSS Features</h2> <h3>Shared Files</h3> <p> The biggest discovery from the CTSS experience was the importance of online file systems and file sharing. The initial 1960 vision timesharing was focused on access to CPU and memory. When that was implemented, feeding input into programs and capturing their results required a way to have rapid access to per-user data; disk storage filled that need. Some early systems stopped there, essentially dividing the disk storage into per-user chunks. As CTSS developed, it provided ways for users to name and share their files on disk, through "common files" and symbolic links, and the collection of on-line shareable data became the seed of a community of information sharers. We are now seeing a shift in computer usage from individual piles of files on individual PCs to storage and sharing "in the cloud" that parallels the discoveries about what is important that we saw with CTSS in the 1960s. It may be that "cloud computing" will encounter again some of the same hard lessons about security and community that we learned at Project MAC. </p> <h3 id="rpq">7094 CPU Modifications</h3> <p> The hardware <strong>RPQs</strong> that made CTSS run on MIT's 7094s added an interval timer (B/M 570220) and memory boundary and relocation registers (RPQ E007291) to the 7094 processor. In addition, the MIT machines had two 32K core memory banks instead of one (RPQ E02120). Core bank A held the CTSS supervisor, and B Core was used for user programs. More importantly, the RPQ made the 7094 a two-mode machine. When the machine was running a program in B-core, many instructions were forbidden: executing them caused the machine to trap and take its next instruction from A-core. In particular, I/O instructions were forbidden, as well as attempts to switch core banks. </p> <p> By CTSS convention, user foreground programs called on supervisor services, such as the file system, by executing a <span class="cmd">TSX ADDR,4</span> where <span class="cmd">ADDR</span> held <span class="cmd">TIA =HWRFLXA</span>. (Where <span class="cmd">WRFLXA</span> was the name of the entrypoint being called.) The <span class="cmd">TIA</span> instruction was illegal in B-core mode, so the 7094 CPU trapped into A-core. The CTSS supervisor running in A-core invoked a module named <span class="cmd">PMTI</span> (Protection Mode Trap Interpreter), which looked up the BCD name of the supervisor entrypoint <span class="cmd">WRFLXA</span>, found its location, and made the transfer. </p> <h4>Memory Boundaries and Swapping</h4> <p> CTSS used the modified 7094's memory boundary register to limit user jobs' access to only part of B-core, so that the supervisor didn't have to swap 32K to drum for every job. An algorithm called the "onion skin" left parts of a big job's core image in memory if a little job ran next, and handled all the complicated space accounting and reassembly of images. If the drums filled up, swapping spilled to disk. </p> <p> (I remember visiting SDC in Santa Monica, in 1967, and seeing their AN/FSQ-32 timesharing system there, which lacked these features. When you issued a command, the swap space was statically allocated, and if there wasn't enough to go around, you might have to keep trying.. the message <span class="cmd">LOAD OK ON 9</span> mean you'd claimed enough drum to run.) </p> <h4>Indirect Addressing</h4> <p> The 7094 didn't recognize the indirect flag in an indirect word, but it had the <span class="cmd">XEC</span> opcode, which executed an instruction out of line, and if you did <span class="cmd">XEC *</span> the CPU would sit there taking I-cycles, uninterruptible, until an operator manually reset the CPU. People were warned not to do this. If they did it while CTSS was running it froze the system, and operations took a core dump and restarted CTSS, causing all active users to lose their work. System programmers would analyze the dump and identify and fuss at the user. </p> <h5 id="passwordfile">Story: The Password File</h5> <p> The one time <span class="cmd">XEC *</span> was used in a good way was the day in 1966 that a certain Computation Center administrator's mistake caused the CTSS password file and the message of the day to be swapped. Everybody's password was displayed in clear to each user that logged in. (The editor in those days created a temporary file with a fixed name.) This was before (and was the origin of) the idea of one-way encrypting passwords. Bill Mathews of Project TIP noticed the passwords coming out, and quickly entered the debugger and crashed the machine by entering an <span class="cmd">XEC *</span> instruction. Naturally this happened at 5 PM on a Friday, and I had to spend several unplanned hours changing people's passwords. (The problem is described and analyzed in Corby's <a href="http://larch-www.lcs.mit.edu:8001/~corbato/turing91/" title="new window: http://larch-www.lcs.mit.edu:8001/~corbato/turing91/" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Turing Award Lecture</span></a>.) </p> <h3>Terminal Access</h3> <p> By 1963, CTSS provided remote terminal service to dial-up <a href="../terminals.html" title="Over 50 years of logging in from home.">terminals</a> connected by modem to a specialized telecommunications computer, the IBM 7750. Model 35 Teletypes were used at first, followed by IBM 1050 terminals and IBM 2741s. The 7750 and the IBM Selectric terminals were designed for other uses, such as stock trading and airline reservations, and CTSS adapted to the design of these devices. CTSS did specify certain RPQs to be added to the 2741: </p> <ul class="sm"> <li>Automatic Address Answerback -- RPQ E46148</li> <li>Red Ribbon Control -- RPQ 868019</li> <li>Print Inhibit Control -- RPQ E46151</li> <li>Transmit Interrupt Control -- RPQ E40681</li> <li>Inhibit Auto EOT: no EOT on CR or ATTN</li> </ul> <p> CTSS users would look at the output of <a href="../multicians.html#MorrisNI" title="Multician: System (MIT, CISL): MRGEDT, 6.36, EPL runtime, File system, FIM, Initialization, BOS, FDUMP, Phase One, ESD, Backup, Printer DIM, Tape DIM, Disk DIM, NSS, MPC loading, EPLBSA, reconfiguration.">Noel Morris's</a> <span class="cmd">WHO</span> command to see where their friends and colleagues were connecting to the system from. Terminal access for Teletype terminals was at 110 baud. The 1050 and 2741 terminals could support 134.5 baud. All of these devices were supported over dial-up Bell 103A modems, accessed via a private phone exchange at MIT. </p> <h2>Notable CTSS Applications</h2> <h3>Electronic Mail</h3> <p> There were a few other significant improvements about that same time, some contributed by the user community. Noel Morris and I wrote a command, suggested by Glenda Schroeder and <a href="../multicians.html#Pouzin" title="Multician: System (MIT): CTSS; User (CNET).">Louis Pouzin</a>, called <a href="../thvv/mail-history.html" title="The history of electronic mail and instant messaging in the 1960s and 1970s."><span class="cmd">MAIL</span></a>, which allowed users to send text messages to each other; this was one of the earliest <strong>electronic mail</strong> facilities. (I am told that the Q-32 system also had a <span class="cmd">MAIL</span> command in 1965.) </p> <h3>RUNCOM and the Shell</h3> <p> Louis Pouzin also invented <span class="cmd">RUNCOM</span> for CTSS. This facility, the direct ancestor of the Unix shell script, allowed users to create a file-system file of commands to be executed, with parameter substitution. Louis also produced a design for the Multics <a href="../shell.html" title="RUNCOM and its progeny.">shell</a>, ancestor of the Unix shell. </p> <h3>Command Abbreviation and Instant Messaging</h3> <p> Noel Morris and I created a replacement command processor, <span class="cmd">. SAVED</span>, partly inspired by the promised Multics shell features. It supported user-defined abbreviations, multiple commands on a line, and inter-user instant messaging. The combination of <span class="cmd">. SAVED</span> and <span class="cmd">RUNCOM</span> allowed CTSS power users to define their own productive command environments. </p> <h3>RUNOFF</h3> <p> <a href="../multicians.html#Saltzer" title="Multician: Designer (MIT): CTSS, RUNOFF, Scheduler, security, clock, Project Guardian.">Jerry Saltzer</a> wrote one of the very first computer word processing programs, <span class="cmd">RUNOFF</span>, for CTSS in 1963 and 1964. This program is the ancestor of Unix <span class="cmd">roff</span>, <span class="cmd">nroff</span>, and similar text formatting facilities for many other systems. Users edited the input files for <span class="cmd">RUNOFF</span> with a special editor, <span class="cmd">TYPSET</span>, that supported upper and lower case letters. </p> <p> Jerry has placed the original CTSS documentation for <span class="cmd">RUNOFF</span> online as <a href="http://mit.edu/saltzer/www/publications/ctss/AH.9.01.html" title="new window: http://mit.edu/saltzer/www/publications/ctss/AH.9.01.html" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Manuscript Typing and Editing</span></a> (from Patricia Crisman, editor, <cite>The Compatible Time-Sharing System, A Programmers Guide.</cite> Second edition. M. I. T. Press, 1965, section AH.9.01, December 1966 revision) and <a href="http://mit.edu/saltzer/www/publications/ctss/CC-244.html" title="new window: http://mit.edu/saltzer/www/publications/ctss/CC-244.html" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> <span class="cmd">TYPSET</span> and <span class="cmd">RUNOFF</span>, memorandum editor and type-out commands</span></a>, M.I.T. Computation Center Memorandum CC-244 / M.I.T. Project MAC Memorandum MAC-M-193. November 6, 1964. The source of <span class="cmd">RUNOFF</span> is included in Jerry Saltzer's source archive. </p> <h3>Graphics</h3> <p> The ESL Display, familiarly known as <b>The Kludge</b>, was an interesting device attached to the Project MAC 7094. It consisted of a PDP-7 computer with a vector display scope and a controller that interfaced directly with channel D. This device could be used for interactive graphics with light pen and mouse input. It is described in <a href="http://www.bitsavers.org/pdf/mit/lcs/tr/MIT-LCS-TR-0056.pdf" title="new window: http://www.bitsavers.org/pdf/mit/lcs/tr/MIT-LCS-TR-0056.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> a report by Dan Thornhill and others</span></a>. </p> <p> A very informative SIGGRAPH 89 panel on <a href="https://dl.acm.org/doi/pdf/10.1145/77276.77280" title="new window: https://dl.acm.org/doi/pdf/10.1145/77276.77280" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> "The Early Years in Computer Graphics at MIT, Lincoln Lab and Harvard"</span></a> has photos of the Kludge and more. </p> <h3>QED Editor</h3> <p> <span class="cmd">QED</span> was a text editor contributed to the CTSS community by <a href="../multicians.html#ThompsonKL" title="Multician: System (BTL): QED, IOS.">Ken Thompson</a>, a Multics programmer at Bell Labs in about 1966. This line-oriented editor was influenced by the character-oriented <span class="cmd">QED</span> editor on the SDS-940; one of QED's major features was regular expression searching and substitution. <span class="cmd">QED</span> was ported to Multics BCPL by Ken and Dennis Ritchie. <span class="cmd">QED</span> was programmable: it supported multiple buffers, and a user could execute the contents of a buffer containing editor commands. Some remarkably arcane editor applications were written using <span class="cmd">QED</span>. </p> <h3>Multics Development Tools</h3> <p> Using CTSS for <a href="../multics.html" title="Multics site home page">Multics development</a> led to additional improvements to CTSS besides those mentioned above. Cross compilers and cross debuggers for Multics <a href="../ge635.html" title="Using the GE-635 in early Multics development.">development runs</a> were created on CTSS, along with inter-computer batch submission tools. The workload represented by about 75 system developers forced the development of CTSS load management and resource sharing schemes. The Multics developers were also members of the CTSS development community, contributing additional software and bug fixes. See <a href="../ge635.html#ctss" title="Using the GE-635 in early Multics development.">The GE-635s at Project MAC and BTL</a> for discusion of CTSS commands used for Multics development. </p> <h2>Leadership</h2> <p> Corby inspired his whole team with the vision of interactive, powerful, personal computing. Timesharing was necessary because powerful computers were so expensive that they had to be shared: hence the "computer utility." Our goal was to empower the individual programmer. Batch processing was still quite young, but its proponents were vicious in putting down any newer idea. </p> <p> Corby also fostered a wonderful set of design and implementation skills in his team. Honesty, peer review, unselfishness, concentration on essentials rather than frills, and rapid production of results were things we learned from him. Tom De Marco wrote much later about "jelled" teams in <cite>Peopleware</cite>: my time working for Corby on CTSS and Multics was when I first enjoyed such a team. </p> <h2 id="transient">Story: Corby's Hardware Transient and the Blackout</h2> <p> During the fall of 1965, the Computation Center was trying to bring up CTSS on the blue machine, and requesting help from the former CTSS developers at Project MAC when they ran into problems they couldn't handle. The blue machine kept crashing in the disk backup software, in a way we'd never seen, and the dumps didn't make sense. Hardware diagnostics showed no problem; the IBM CEs insisted the machine was fine. <a href="../multicians.html#Daley" title="Multician: Designer (MIT): File system, qedx.">Bob Daley</a> and <a href="../multicians.html#Dunten" title="Multician: Designer (MIT): CTSS, TTY DIM, File system, Initialization, BOS.">Stan Dunten</a>, in particular, were called on repeatedly to try to figure out what was going on. Corby involved himself too, and hypothesized a "<strong>hardware transient</strong>" that zapped some registers. Finally the late <a href="../multicians.html#Padlipsky" title="Multician: System (MIT): Documentation, MSPM editor, ARPANet, Graphics.">Mike Padlipsky</a> and <a href="../multicians.html#Garman" title="Multician: System (MIT): 6.36, EPL runtime, Commands.">Charlie Garman</a> took over the blue machine in the middle of the day, and loaded a one-card program with a simple test loop, and left it running. After about ten minutes of execution, the failure count in an index register suddenly began counting up: they had caught the bug! (The bug was something like: the <span class="cmd">TXL</span> and <span class="cmd">TXH</span> opcodes sometimes reversed roles, in only one of the two core banks, if a big enough truck went by on Vassar Street.) The programmers heaved a sigh of relief, turned the machine over to the IBM CEs, and headed over to Tech Square House (the bar on the first floor of Tech Square) to celebrate. Quite a few people came down to the bar for a drink, when suddenly the lights went out. I remember I ran up nine flights of stairs to help crank the tape out of the Model 729 tape drives by hand, because the tapes in the drive could be damaged when power came back on. I needn't have run: it was November 9, 1965, and the lights were out over the entire East Coast, and stayed out until the next morning. This event was written up in <a href="psn-55.pdf">Comp Center Programming Staff Note 55</a> by Mike Padlipsky. </p> <h2>Other Timesharing Systems</h2> <p> There were other time-sharing systems being invented during the same period at other places. (I don't want to get into questions of who was first at what.) Here are a few notable systems: </p> <ul> <li>RAND's JOSS system was operational on JOHNNIAC in 1963 and was later ported to a PDP-6.</li> <li>The BBN Time-sharing system was built in the early 60s by Ed Fredkin with John McCarthy and Shelly Boilen on a DEC PDP-1.</li> <li>The PLATO II system was built by Donald Bitzer at the University of Illinois and demonstrated in 1961.</li> <li>RAND's SDC Time-sharing system on the AN/FSQ-32, led by Ed Coffman, Jules Schwartz and Clark Weissman, was operational in 1963.</li> <li> Andy Kinslow at IBM built a system called the Time-Sharing Monitor System on a modified 7094. A paper describing it was published in 1964. </li> <li>Dave Evans and Harry Huskey at Berkeley built a system called <a href="http://engineering.berkeley.edu/sites/default/files/docs/2007Fall.pdf" title="new window: http://engineering.berkeley.edu/sites/default/files/docs/2007Fall.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Project GENIE</span></a> on a modified SDS 930 in 1964.</li> <li>John Kemeny and Thomas Kurtz built the Dartmouth time-sharing system in 1964 on a GE-255.</li> </ul> <p> I have written <a href="../history.html#tag1.3" title="Narrative history of Multics.">elsewhere</a> about how Project MAC chose the GE-645 as the platform for its next generation system, Multics, instead of IBM's proposal of a System/360 machine. The MIT Computation Center chose a 360 Model 65 for its next generation batch environment, and installed and ran a large 65/40 shop running <strong>OS/360 and ASP</strong> during the time that Multics was being developed at Project MAC. This system added support for OS/360's Time Sharing Option in the 1970s. The MIT Urban Systems Laboratory obtained funding that supported the installation of an IBM <a href="../thvv/360-67.html" title="The IBM 360 model 67 computer, and the CP/CMS operating system.">360/67</a>, running the <strong>CP/CMS</strong> time-sharing system, in 1968. </p> <h2>Old Age</h2> <p> The Multics project began in 1965 and was a big consumer of the MAC CTSS. There was much more demand than one 7094 could provide. People resources were also stretched: Corby concentrated on building and leading Multics and gave up his role as DD of the Comp Center. In 1965 the Comp Center got the RPQ changes necessary to run CTSS and the additional hardware needed, and began to run its own CTSS. Almost all of the original designers moved on from Comp Center to Project MAC, or to other jobs such as IBM Cambridge Scientific Center, where CP/CMS was built. The MAC people who understood CTSS, like Bob Daley, were under pressure to not waste their time tweaking it, just stabilize it and use it as a tool, and provide a copy to Comp Center. In late 1968, the MIT Computation Center returned the "blue" 7094 to IBM. The "red machine" was moved from MAC to the new Information Processing Center, building 39, and Multics developers shared CTSS resources with general MIT time-sharing users until Multics was self-supporting in early 1969. The Comp Center folks assembled a team of interested undergraduate and part-time system programmers to support CTSS, and <a href="../multicians.html#Roach" title="Multician: Administration (MIT IPC): IPC.">Roger Roach</a> was one of the leaders. </p> <p> CTSS continued in use for several more years, with gradually declining usage, as MIT computer users switched to OS/360 batch, CP/CMS timesharing on the 360/67, or Multics. One project, called the <a href="../mgo.html#OverlapProject" title="glossary: MIT social-science project, a continuation of the Cambridge Project,...">Overlap Project</a>, was funded to support 7094 usage until equivalents for some CTSS social-science tools were found or created on other machines. </p> <p> There was one kind of funny problem with this long decline of CTSS: every year, there was a fire drill as we tried to remember what you had to do to create a system for the next year. The <strong>Chronolog</strong> clock attached to tape channel E of the machine provided a date and time in BCD, but without the year; that came from a constant in the supervisor, and each year we had to recompile one small module, and relink the supervisor, the salvager, and a few other standalone utilities. As the original CTSS crew gradually moved on to other jobs, fewer and fewer people knew how to carry out this task, but we always managed to figure out how. And each year, we considered making the constant a configuration item somehow, and decided not to bother, because the system wouldn't last another year. </p> <div class="lfpicn w180" style="width: 180px;"><a href="vvimg/rar-7094.jpg"><img src="vvimg/rar-7094-sm.jpg" width="180" height="180" alt="Roger Roach, MIT 7094, 1973" title=""></a><p class="caption">I was there the day Roger Roach finally shut down the red machine for good, on July 20, 1973.</p></div> <p> The 7094 was a fine machine, but by the time it was over ten years old, it had become expensive to maintain, hard to find expert programmers for, and had been deserted by most users in favor of faster and more modern machines. A group of students proposed that they'd take over the machine and run it for student computing; the floor space, air conditioning, and maintenance costs made this impractical, but some of these students went on to found MIT's <a href="../mgs.html#SIPB" title="glossary: MIT&#39;s Student Information Processing Board. A student organization founded...">Student Information Processing Board</a>, which supported student computing at MIT in many ways, and still exists today. </p> <p> When CTSS shut down, it was time for it to go: the hardware was becoming ancient and flaky. But looking at what it could do, and what people did with it, shows that many subsequent systems were less capable and vastly more wasteful. </p> <p> There was a ceremony held in 1974, the year after we shut CTSS down for good, to honor those who worked on the system and those who supported it. A <a href="../thvv/ctss-list.html" title="List of CTSS developers from 1973.">list of people</a> involved was compiled. </p> <h2 class="clr">Documentation</h2> <ul> <li>The first paper on CTSS: <a href="http://larch-www.lcs.mit.edu:8001/~corbato/sjcc62/" title="new window: http://larch-www.lcs.mit.edu:8001/~corbato/sjcc62/" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> "An Experimental Time-Sharing System,"</span></a> by Fernando J. Corbat&oacute;, Marjorie Merwin Daggett, and Robert C. Daley.</li> <li><a href="7094-refcard.pdf">IBM 7094 reference card</a> .</li> <li><a href="http://www.bitsavers.org/pdf/mit/lcs/tr/MIT-LCS-TR-0012.pdf" title="new window: http://www.bitsavers.org/pdf/mit/lcs/tr/MIT-LCS-TR-0012.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> MAC-TR-12, "The MAC system: a progress report,"</span></a> by Prof. Fano describes the usage of CTSS with examples. </li> <li> The <a href="http://www.bitsavers.org/pdf/mit/ctss/CTSS_ProgrammersGuide.pdf" title="new window: http://www.bitsavers.org/pdf/mit/ctss/CTSS_ProgrammersGuide.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> first edition of the CTSS manual</span></a> (the so-called "candy stripe" book published by MIT Press) describes the system and its commands as of about 1963. (104 pages, 3.7MB PDF) </li> <li><a href="http://www.bitsavers.org/pdf/mit/ctss/Time-Sharing_System_Notes_Nov63.pdf" title="new window: http://www.bitsavers.org/pdf/mit/ctss/Time-Sharing_System_Notes_Nov63.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Time-Sharing System Notes</span></a> dated November 1963 is an update to the first edition manual. (16 pages, 835KB PDF)</li> <li><a href="http://www.bitsavers.org/pdf/mit/lcs/tr/MIT-LCS-TR-0016.pdf" title="new window: http://www.bitsavers.org/pdf/mit/lcs/tr/MIT-LCS-TR-0016.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> MAC-TR-16, "CTSS TECHNICAL NOTES,"</span></a> by Jerry Saltzer describes the internals of CTSS as of 1965. (3.5MB PDF)</li> <li>Professor Fano presented a paper titled <a href="../fano1967.html" title="1967 paper describing the social imact of time-sharing and remote access. IEEE International Convention, 1967.">"The Computer Utility and the Community"</a> in 1969.</li> <li>The <a href="http://www.bitsavers.org/pdf/mit/ctss/CTSS_ProgrammersGuide_Dec69.pdf" title="new window: http://www.bitsavers.org/pdf/mit/ctss/CTSS_ProgrammersGuide_Dec69.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> second edition of the CTSS manual</span></a> describes the system and its commands as of 1969. (587 pages, 25MB PDF)</li> <li> The late Bob Creasy wrote <a href="http://pages.cs.wisc.edu/~stjones/proj/vm_reading/ibmrd2505M.pdf" title="new window: http://pages.cs.wisc.edu/~stjones/proj/vm_reading/ibmrd2505M.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> "The Origin of the VM/370 Time-sharing System"</span></a> in the <cite>IBM Journal of Research and Development</cite>, Vol. 25, No. 5, September 1981. This article describes the roots of CP/CMS in CTSS. </li> <li> In 1988, after the <a href="../lcs25.html" title="1988 Project MAC reunion at MIT.">Project MAC 25th Anniversary Celebration</a>, two groups of participants in the developments of CTSS and Project MAC met to exchange recollections about their activities. Lee, J. A. N., Robert Rosin, F. J. Corbat&oacute;, R. M. Fano, M. Greenberger, J. C. R. Licklider, D. T. Ross, and A. L. Scherr, <a href="https://portal.acm.org/citation.cfm?id=612401.612448&amp;coll=GUIDE&amp;dl=GUIDE&amp;CFID=44919572&amp;CFTOKEN=25059425">The Project MAC Interviews</a>, <cite>IEEE Annals of the History of Computing</cite>, vol. 14, no. 2, pp. 14-35, Apr-Jun, 1992 </li> <li>Mary Brandel wrote a <a href="http://www.cnn.com/TECH/computing/9906/29/1961.idg/index.html" title="new window: http://www.cnn.com/TECH/computing/9906/29/1961.idg/index.html" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> story on CTSS for Computerworld</span></a> in June, 1999. </li> <li> Errol Morris <a href="https://opinionator.blogs.nytimes.com/2011/06/23/did-my-brother-invent-e-mail-with-tom-van-vleck-part-five/" title="new window: https://opinionator.blogs.nytimes.com/2011/06/23/did-my-brother-invent-e-mail-with-tom-van-vleck-part-five/" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> five part blog posting about CTSS history and the creation of <span class="cmd">MAIL</span></span></a> in his New York Times blog, June 2011. <span class="sm">(Part five has links to parts 1 through 4. Use part 5 to find the other parts.)</span> </li> <li>Errol Morris gave an <a href="https://www.wbur.org/2011/06/21/errol-morris" title="new window: https://www.wbur.org/2011/06/21/errol-morris" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> interview on NPR</span></a> about CTSS <span class="cmd">MAIL</span> on June 20, 2011.</li> <li> An article by me on the history of <span class="cmd">MAIL</span> was published as "<a href="anhc-34-1-anec.html">Electronic Mail and Text Messaging in CTSS, 1965-1973</a>," in the <cite>IEEE Annals of the History of Computing</cite> Vol. 34, No. 1: January-March 2012, pp. 4-6. </li> <li> Jerry Saltzer provides a <a href="https://people.csail.mit.edu/saltzer/Multics/CTSS-Documents/CTSS-Documents.html" title="new window: https://people.csail.mit.edu/saltzer/Multics/CTSS-Documents/CTSS-Documents.html" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> comprehensive CTSS bibliography</span></a> at MIT CSAIL's site. </li> </ul> <h3>50 Year Anniversary Brochure</h3> <p> The IEEE Computer Society History Committee published a document in honor of the 50th anniversary of CTSS, titled <cite>The Compatible Time Sharing System (1961-1973) Fiftieth Anniversary Commemorative Overview</cite>, edited by the late Dave Walden and Tom Van Vleck. It contins an extensive bibliography, and interviews with Corby, Marge Daggett, Bob Daley, Peter Denning, David Alan Grier, Dick Mills, Roger Roach, Allan Scherr, and me. (Chapter 2 of the brochure is derived from this web page.) The document was published on 24 June, 2011, and is available at the <a href="https://history.computer.org/pubs/2011-06-ctss.pdf" title="new window: https://history.computer.org/pubs/2011-06-ctss.pdf" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> IEEE Computer Society History Committee site</span></a>. It is mirrored <a href="compatible-time-sharing-system.pdf">at this site</a> with IEEE permission. (48 pages, 3MB PDF) </p> <h2>Source</h2> <p> Listings for the source of CTSS as of about 1972 are online in <a href="http://people.csail.mit.edu/saltzer/Multics/CTSS-Documents/ctss-source-files/ctss-listings.zip" title="new window: http://people.csail.mit.edu/saltzer/Multics/CTSS-Documents/ctss-source-files/ctss-listings.zip" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Jerry Saltzer's files at CSAIL</span></a>. You can download a 5MB ZIP file that contains the compilation listings for the supervisor, salvager, daemon, and commands (including <span class="cmd">MAIL</span> and <span class="cmd">RUNOFF</span>). A few extra files are needed, located in <a href="http://people.csail.mit.edu/saltzer/Multics/CTSS-Documents/ctss-source-files" title="new window: http://people.csail.mit.edu/saltzer/Multics/CTSS-Documents/ctss-source-files" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> Jerry's source directory at CSAIL</span></a>. </p> <h2>CTSS Simulator</h2> <p> (July 2010) Dave Pitts has created a version of <a href="http://www.cozx.com/dpitts/ibm7090.html" title="new window: http://www.cozx.com/dpitts/ibm7090.html" target="_blank" rel="noopener"><span class="nb"><img src="mulimg/tinyglob.gif" alt="" width="12" height="11" style="display: inline;"> CTSS running on a 7094 simulator</span></a> written by Paul Pierce. You can log in, execute commands, and compile and run MAD and FAP programs. </p> <h2>Personal Experience</h2> <p> My personal experience with CTSS is described in <a href="../thvv/tvv7094.html" title="Personal experience with the IBM 7094, and MIT&#39;s CTSS time-sharing system.">"My Experience with the IBM 7094 and CTSS"</a>. </p> <p class="dochist"> Updated 06/22/95. Thanks to Paul McJones, Mike Padlipsky, Frank Belvin, Olin Sibert, and Joe Morris for corrections, and to Mike Alexander for info about MAD and UMES. More updates 12/18/97. Updated 03/30/03 with information about RUNOFF and TYPSET, thanks to Jerry Saltzer. Updated 09/10/04 with pointer to CTSS source. Updated 09/01/09. Updated 07/09/10 with pointer to the 7094 simulator. Updated 11/07/10 with information from Ed Thelen. Reorganized 03/12/11, 04/05/11. Added IEEE-CS brochure 06/30/11. Added Prof. Fano's paper 03/16/15. </p> <p class="copyright">Copyright (c) 1995-2025 by Tom Van Vleck</p> <div class="tail"> <div class="textnav"> <a href="../thvv/tvv-home.html?1" title="Home Page">Home</a> | <a href="../thvv/tvvvita.html?1" title="Vita">Resume</a> | <a href="../multics.html" title="Multics site home page">Multics</a> | <a href="../thvv/7094.html?1" title="The IBM 7094 computer, and MIT Computation Center&#39;s CTSS time-sharing system.">CTSS</a> <br> <a href="../thvv/tvvswe.html?1" title="Stories about software engineering practices and lessons.">SE Stories</a> | <a href="../thvv/mulvaney.html?1" title="Cartoon booklet about bomb disposal from World War II.">Mulvaney</a> | <a href="../thvv/mushrooms.html?1" title="Lessons about hunting mushrooms.">Mushrooms</a> | <a href="../thvv/affinity.html?1" title="How to use Affinity Photo to prepare web graphics.">Photo</a> | <a href="../thvv/borges-animals.html?1" title="Jorge Luis Borges&#39; essay on classification of animals.">Borges</a> </div> <form method="post" action="https://multicians.org/cgi-sys/cgiwrap/thvv/squirnet.cgi" class="mf"><address><input type="hidden" name="formtpt" value="vvmft.txt"><input type="hidden" name="name" value="Tom Van Vleck"><input type="hidden" name="sortkey" value="editor"><input type="text" name="approved" size="9" class="mfx"><input name="send" type="submit" value="mail Tom Van Vleck" title="send mail to Tom Van Vleck" class="mfaddr"></address></form> </div> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10