Dartmouth Time Sharing System
|Written in||Dartmouth BASIC, ALGOL 60, FORTRAN, COBOL, APL, DXPL, DYNAMO, GMAP, LISP, MIX, PL/I, SNOBOL|
|Platforms||GE-200 series, GE-635 series, Honeywell 6000 series|
|Default user interface||Command-line interface|
The Dartmouth Time-Sharing System (DTSS) was an operating system first developed at Dartmouth College between 1963 and 1964. It was the first successful large-scale time-sharing system to be implemented, and was also the system for which the BASIC language was developed. DTSS was developed continually over the next decade, reimplemented on several generations of computers, and finally shut down in 1999.
Professors John Kemeny and Thomas Kurtz at Dartmouth College purchased a Royal McBee LGP-30 computer around 1959, which was programmed by undergraduates in assembly language. Kurtz and four students programmed the Dartmouth ALGOL 30 compiler, an implementation of the ALGOL 58 programming language, which two of the students then evolved into the SCALP (Self Contained ALgol Processor) language between 1962-1964. Kemeny and freshman Sidney Marshall collaborated to create the Dartmouth Oversimplified Programming Experiment (DOPE), which was used in large freshman courses.
Kurtz approached Kemeny in either 1961 or 1962, with the following proposal: all Dartmouth students would have access to computing, it should be free and open-access, and this could be accomplished by creating a time-sharing system (which Kurtz had learned about from colleague John McCarthy at MIT, who suggested "why don't you guys do timesharing?"). Although it has been stated that DTSS was inspired by a PDP-1-based time-sharing system at Bolt, Beranek and Newman, there is no evidence that this is true.
In 1962, Kemeny and Kurtz submitted a proposal for the development of a new time-sharing system to NSF (which was ultimately funded in 1964). They had sufficient assurance that both Dartmouth and NSF would support the system that they signed a contract with GE and began preliminary work in 1963, before the proposal was funded. In particular, they evaluated candidate computers from Bendix, GE, and IBM, and settled upon the GE-225 system paired with a DATANET-30 communications processor. This two-processor approach was unorthodox, and Kemeny later recalled: "At that time, many experts at GE and elsewhere, tried to convince us that the route of the two-computer solution was wasteful and inefficient." In essence, the DATANET-30 provided the user-interface and scheduler, while user programs ran in the GE-225.
Its implementation began in 1963, by a student team under the direction of Kemeny and Kurtz with the aim of providing easy access to computing facilities for all members of the college. The GE-225 and DATANET-30 computers arrived in February 1964, became operational in mid March, and on May 1, 1964, at 4:00 a.m., the system began operations. In autumn of 1964, hundreds of freshman students began to use the system via 20 teletypes, with access at Hanover High School via one additional teletype; later that autumn the GE-225 computer was replaced with a faster GE-235 computer with minimal issues. By summer of 1965, the system could support forty simultaneous users.
A Dartmouth document from October 1964, later revised by GE, describes the overall DTSS architecture: the program in the Datanet-30 is divided into two parts, a real-time part and a spare-time part. The real-time part is entered via clock controlled interrupt 110 times per second in order to scan the teletype lines. As characters are completed, the real-time part collects them into messages and, when a "return" character is encountered, interprets the message. If it is a line in the program, nothing is done. If the message is a command, a spare-time task to start carrying out the command is set up and inserted in the spare-time list. If there is not enough time to complete this setting-up, the real-time part will complete the set-up during the next real-time period. The spare-time portion carries out the spare-time tasks, which include mainly disc operations and certain teletype operations. In the GE-235 part there is resident compiler system that acts as a translator, and a resident executive routine to manage the disc input-output operations and to perform other functions. The executive system permits simultaneous use of the card equipment, the tape drives, and the high-speed printer during time-sharing through interrupt processing. Two algebraic languages, BASIC and ALGOL, are available, with FORTRAN planned for September 1965. These one-pass compilers are rather fast, requiring usually 1 to 4 seconds per compilation.
User interface design
Kemeny and Kurtz observed that "any response time which averages more than 10 seconds destroys the illusion of having one's own computer", so DTSS's design emphasized immediate feedback. Many of its users thus believed that their terminal was the computer and that, Kemeny wrote, "the machine is there just to serve him and that he has complete control of the entire system".
Because of the educational aims, ease of use was a priority in DTSS design. It implemented the world's first Integrated Design Environment (IDE). Any line typed in by the user, and beginning with a line number, was added to the program, replacing any previously stored line with the same number; anything else was taken as a command and immediately executed. Lines which consisted solely of a line number weren't stored but did remove any previously stored line with the same number. This method of editing provided a simple and easy to use service that allowed large numbers of teleprinters as the terminal units for the Dartmouth Timesharing system.
IDE commands included
- CATALOG – to list previously named programs in storage
- LIST – to display the current program in memory
- NEW – to name and begin writing a program in memory
- OLD – to copy a previously named program from storage to memory
- RENAME – to change the name of the program in memory
- RUN – to compile and execute the current program in memory
- SAVE – to copy the current program from memory to storage
- SCRATCH – to clear the content of the current program from memory
- UNSAVE – to remove the current program from storage
These commands were often believed to be part of the BASIC language by users, but in fact they were part of the time sharing system and were also used when preparing ALGOL or FORTRAN programs via the DTSS terminals.
Kemeny and Kurtz had originally hoped that GE would enter into a research partnership, and to that end Kurtz and student Anthony Knapp authored a document about their proposed system design, which they presented to GE's Phoenix office in 1962. However, GE rejected the partnership, and its October 1962 proposal to Dartmouth was framed solely as a commercial sale. That said, GE and Dartmouth promoted the operational Dartmouth Time Sharing System in October 1964 at the Fall Joint Computer Conference in San Francisco, with three teletypes connected to the Dartmouth system in Hanover..
From December 1964 into January 1965, two Dartmouth students installed working copies of DTSS and BASIC on GE computers in Phoenix. In early 1965, GE began to advertise timesharing services on its GE-265 system (GE 235 + DATANET 30), including BASIC and Dartmouth Algol, later renaming it the GE Mark I time-sharing system. Over the next few years, GE opened 25 computer centers in the United States and elsewhere, serving over fifty thousand users.
- The precursor of General Electric Information Services began as a business unit within General Electric formed to sell excess computer time on the computers used to give customer demos. In 1965, Warner Sinback recommended that they begin to sell time-sharing services using the time-sharing system (Mark 1) developed at Dartmouth on a General Electric 265 computer. The service was an instant success and by 1968, GEIS had 40% of the $ 70 million time-sharing market. The service continued to grow, and over time migrated to the GE developed Mark II and Mark III operating systems running on large mainframe computers.
Dartmouth Time Sharing System, version 2
From 1966-1968, DTSS was reimplemented on the GE 635, still using the DATANET-30 for terminal control. The GE 635 system was delivered in November 1966. By October 1967, it was providing a service based on Phase I software, jointly developed by Dartmouth and GE, which GE subsequently marketed as the GE Mark II system. In parallel with this work, Dartmouth embarked in 1967 on the development of Phase II under the direction of Professor John Kemeny, with programming carried out by students and faculty. Phase II of the Dartmouth Time-Sharing System replaced Phase I on 1st April 1969 at Dartmouth.
As described in 1969, the new DTSS architecture was influenced by three criteria:
- The experiences with the 265 system.
- The published concepts of the Multics system.
- A realization of the limitations of the capabilities of a part-time staff of Dartmouth students and faculty members.
This new version was completely different internally from the earlier DTSS, but provided a near-identical user interface to enable a smooth transition for users and course materials. The 635 version provided interactive time-sharing to up to nearly 300 simultaneous users in the 1970s, a very large number at the time, and operated at eleven commercial and academic sites in the U.S.A., Canada and Europe. As it evolved in the 1970s, later versions moved to Honeywell 6000 series mainframes (1973) and Honeywell 716 communication processors (1974). In 1976 the GE-635 system was replaced by a Honeywell 66/40A computer. It remained in operation until the end of 1999.
DTSS, version 2, included a novel form of inter-process communication called "communication files". They significantly antedated Unix pipes, as design documents put their conceptual origin sometime in 1967, and were described briefly in a 1969 conference:
- A communications file allows two jobs to interact directly without the use of secondary storage. A communications file has one end in each of two jobs. It is the software analog of a channel-to-channel adaptor. This structure allows job-to-job interactions using the same procedures as for more conventional files. The two ends are labeled master end and slave end. A job at the slave end of a communications file cannot easily distinguish this file from a conventional file. Since a job at the master end of a communications file can control and monitor all data transmitted on that file, a master end job can simulate a data file, thereby providing a useful debugging aid and also providing a convenient mechanism for interfacing running jobs to unexpected data structures.
Communication files supported read, write and close operations, but also synchronous and asynchronous data transfer, random access, status inquiries, out-of-band signaling, error reporting, and access control, with the precise semantics of each operation determined by the master process. As Douglas McIlroy notes: "In this, [communication files were] more akin to Plan 9's 9P protocol than to familiar IO." A notable application of communication files was in support of multi-user conferences, which behaved somewhat like conference phone calls, and were implemented entirely as user-space application programs.
The Kiewit Network
As mentioned above, Hanover High School was connected to DTSS from the system's beginning. Over the next decade, many other high schools and colleges were connected to DTSS via the Kiewit Network, named for Peter Kiewit, donor of funds for the Kiewit Computation Center that housed the DTSS computers and staff. These schools connected to DTSS via one or more teletypes, modems, and dial-up telephone lines. During this time, Dartmouth ran active programs to engage and train high school teachers in using computation within their courses.
By 1967, the following high schools had joined the Kiewit Network: Hanover High School, The Holderness School, Mascoma Valley Regional High School, Kimball Union Academy, Mount Hermon School, Phillips Andover Academy, Phillips Exeter Academy, St. Paul's School, and Vermont Academy.. This group expanded in the Dartmouth Secondary School Project, funded by the NSF during 1967-1968, which added the following New England high schools: Cape Elizabeth High School, Concord High School, Hartford High School (Vermont), Keene High School, Lebanon High School, Loomis School, Manchester Central High School, Rutland High School, St. Johnsbury Academy, South Portland High School, and Timberlane High School.
From 1968-1970, Dartmouth added a number of colleges to the Kiewit Network via its Regional College Consortium. They included: Bates College, Berkshire Community College, Bowdoin College, Colby Junior College, Middlebury College, Mount Holyoke College, New England College, Norwich University, the University of Vermont, and Vermont Technical College.
By 1971, the Kiewit Network connected 30 high schools and 20 colleges in New England, New York, and New Jersey. At that time, DTSS was supporting over 30,000 users, of which only 3,000 were at Dartmouth College. By 1973, the Kiewit Network had expanded to include schools in Illinois, Michigan, upstate New York, Ohio, and Montreal, Canada.
No student at Dartmouth has a fear of the machine. After a brief period at the console, when the student might play a football game or write a few simple programs, he comes away with a much different relationship. The fear and mystery of the computer are suddenly gone.— Kemeny, 1971
57% of DTSS use was for courses and 16% for research. Kemeny and Kurtz intended for students in technical and nontechnical fields to use DTSS. They arranged for the second trimester of the freshman mathematics class to include a requirement for writing and debugging four Dartmouth BASIC programs. By 1968, more than 80% of Dartmouth students had experience in computer programming. 80 classes included "official" computer use, including those in engineering, classics, geography, sociology, and Spanish.
27% of DTSS use was for casual use and entertainment, which the university stated "is in no sense regarded as frivolous", as such activities encouraged users to become familiar with and not fear the computer. The library of about 500 programs as of 1968 included, Kemeny and Kurtz reported, "many games". They were pleased to find that 40% of all faculty members—not just those in technical fields—used DTSS, and that many students continued using the system after no longer being required to. Kemeny—by then the university president—wrote in a 1971 brochure describing the system that just as a student could enter Baker Memorial Library and borrow a book without asking permission or explaining his purpose, "any student may walk into Kiewit Computation Center, sit down at a console, and use the time-sharing system. No one will ask if he is solving a serious research problem, doing his homework the easy way, playing a game of football, or writing a letter to his girlfriend".
By the 1967–68 school year, in addition to 2,600 Dartmouth users, 5,550 people at ten universities and 23 high schools accessed DTSS. By the early 1970s the campus had more than 150 terminals in 25 buildings, including portable units for patients at the campus infirmary. About 2,000 users logged into DTSS each day; 80% of students and 70% of faculty used the system each year. The off-campus Dartmouth Educational Time-Sharing Network included users with 79 terminals at 30 high schools and 20 universities, including Middlebury College, Phillips Andover, Mount Holyoke College, Goddard College, United States Merchant Marine Academy, Bates College, the Dartmouth Club of New York, and a Dartmouth affiliate in Jersey City, New Jersey, sharing DTSS with Dartmouth people. Because BASIC did not change, the system remained compatible with older applications; Kemeny reported in 1974 that programs he had written in 1964 would still run. The system allowed email-type messages to be passed between users and real-time chat via a precursor to the Unix talk program.
By 1980, supported languages and systems included:
- 7MAP – DTSS 716 Macro Assembly Program
- 8MAP – DTSS PDP-8 Macro Assembly Program
- 9MAP – DTSS PDP-9 Macro Assembly Program
- ALGOL – DTSS ALGOL 60
- ALGOL68 – DTSS ALGOL 68
- APL – DTSS APL
- BASIC – BASIC
- CHESS – Chess-playing Program
- COBOL – DTSS COBOL
- COURSE – IBM-compatible COURSEWRITER III author program
- CPS – 'Complete Programming System' developed at Bates College
- CROSREF – Program cross-references
- DDT – Honeywell 600/6000 machine language debugging program
- DMAP – DTSS DATANET-30 Macro Assembly Program
- DTRAC – DTSS Text Reckoning and Compiling Language
- DXPL – DTSS XPL Translator Writing System
- DYNAMO – DYNAMO Simulation language
- FORTRAN – DTSS FORTRAN
- GMAP – Honeywell 600/6000 Macro Assembly Program
- LISP – DTSS LISP
- MIX – DTSS MIX Assembler
- PILOT – DTSS PILOT course writer
- PL/I – DTSS PL/I
- PLOT – Graphics system for use with BASIC or SBASIC
- SBASIC – Structured BASIC
- SIX – FORTRAN 76
- SNOBOL – DTSS SNOBOL4
- Rankin, Joy Lisi (2018), A People's History of Computing in the United States, Cambridge, Massachusetts: Harvard University Press, ISBN 9780674970977
- Application to the National Science Foundation, Kurtz, Rieser, and Meck, cited in Rankin, pages 20-21
- Rankin, pages 22-23
- https://web.archive.org/web/20150425065704/http://www.dartmouth.edu/comp/about/archive/history/timeline/1960s.html | Dartmouth Computing in the 1960s
- Rankin, pages 24-25
- The GE-Dartmouth Computer Partnership, John G. Kemeny, DTSS History Birth 1967-1970 Folder 2, Box 4, Garland Papers, Dartmouth College Library
- Kemeny's Kids
- http://www.bitsavers.org/pdf/dartmouth/DTSS_descr_Oct64.pdf | DTSS user manual October 1964
- Gordon M. Bull, The Dartmouth Time-Sharing System, Ellis Horwood Ltd. and John Wiley & Sons, 1980. http://www.bitsavers.org/pdf/dartmouth/The_Dartmouth_Time-Sharing_System_1980.pdf. A description of DTSS c. 1977
- Rankin, pages 33-34
- Bull, page 13
- "The Dartmouth Time-Sharing System, A Brief Description", October 19, 1964, with revisions by GE staff, 1965
- Kemeny, John G.; Kurtz, Thomas E. (11 October 1968). "Dartmouth Time-Sharing". Science. 162: 223–228.
- "TRANSCRIPTS OF 1974 National Computer Conference Pioneer Day Session". Dartmouth Time Sharing System. Dartmouth College.
- The Kiewit Computation Center & The Dartmouth Time-Sharing System. Dartmouth College. c. 1971.
- John G. Kemeny, "The GE-Dartmouth Computer Partnership," DTSS History Birth 1967-1970 Folder 2, Box 4, Garland Papers, Dartmouth College Library. Cited in Rankin, pages 25-26
- General Electric Computer Department, "A Preliminary Proposal for Dartmouth College, October 15, 1962," Box 1, Kurtz Papers, Dartmouth College Library. Cited in Rankin, page 26
- Kurtz, "Progress Report Course Content Improvement Project of 15 December 1964". Cited in Rankin, page 118
- J.A.N. Lee, "The Rise and Fall of the General Electric Corporation Computer Department", IEEE Annals of the History of Computing 17, no. 4 (Winter 1995): 24-25. Cited in Rankin, page 120.
- Bull, page 14
- General Electric Information Systems Group, "Computer Time-Sharing on Campus: New Learning Power for Students," May 1968, Folder 3 of 6, DA-29 (7841) DTSS Time-Sharing, Rauner Library, Dartmouth College. Cited in Rankin, page 121
- Computer History Museum's Corporate Histories Collection: Company Details - General Electric Information Services (GEIS)
- Bull, page 14
- Bull, page 14
- Robert F. Hargraves, Jr. and Andrew G. Stephenson, "Design considerations for an educational timesharing system", AFIPS Spring Joint Computer Conference 1969, pages 657-664
- Bull, page 9
- Bull, pages 15, 19
- http://dtss.dartmouth.edu/timeline.php |Dartmouth Time-Sharing System (DTSS) timeline.
- M. Douglas McIlroy, "Communication Files: Interprocess IO before Pipes", Dartmouth College, February, 2017
- Hargraves and Stephenson, op. cit.
- McIlroy, page 4
- John McGeachie, "Multiple terminals under user program control in a time-sharing environment", Communications of the ACM 16 (1973) 587-590
- Robert Hargraves and Thomas Kurtz, "The Dartmouth Time Sharing Network", in Computer-Communication Networks, edited by Norman Abramson and Franklin F. Kuo, Prentice-Hall, 1973.
- John G. Kemeny and Thomas E. Kurtz, The Dartmouth Time-Sharing Computing System: Final Report. Cited in Rankin, page 80
- Thomas E. Kurtz, Demonstration and Experimentaion in Computer Training and Use in Secondary Schools: Interim Report, Activities and Accomplishments of the First Year, October 1968. Cited in Rankin, page 83
- Thomas E. Kurz, Interim Report of July 1969 on the Dartmouth College Regional College Consortium. Cited in Rankin, page 92
- Dartmouth College Office of Information Services, April 6, 1971, press release. Cited in Rankin, page 94
- Map of the Dartmouth Educational Time-Sharing Network, 1973. Cited in Rankin, page 63
- McCracken, Harry (2014-04-29). "Fifty Years of BASIC, the Programming Language That Made Computers Personal". TIME. Retrieved 19 March 2016.
- Bull, pages 166-167
- http://dtss.dartmouth.edu/ | DTSS reborn site