# Dartmouth Time-Sharing System

The Dartmouth Time-Sharing System (DTSS) is a discontinued 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.
General Electric developed a similar system based on an interim version of DTSS, which they referred to as Mark II. Mark II and the further developed Mark III were widely used on their GE-600 series mainframe computers and formed the basis for their online services. These were the largest such services in the world for a time, eventually emerging as the consumer-oriented GEnie online service.

## Early history

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, Stephen Garland and Anthony Knapp then evolved into the SCALP (Self Contained ALgol Processor) language between 1962 and 1964. Kemeny and freshman Sidney Marshall collaborated to create DOPE (Dartmouth Oversimplified Programming Experiment), 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. Two students, John McGeachie and Michael Busch, wrote the operating systems for the DATANET-30 and GE-225; Kemeny contributed the BASIC compiler. The system 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.

## GE-Dartmouth relationship

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 Computer History Museum's Corporate Histories Collection describes GE's Mark I history this way:
    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 to 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 April 1, 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 US, 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. Dartmouth students had free, unlimited access to DTSS, but high-school students had quotas of 40 to 72 hours of terminal access each week, and college users paid for computer use. 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 to 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.

## Usage

   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.
As of 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; that students in the Tuck School of Business and social sciences, not mathematics or engineering, were the heaviest users surprised Kemeny. By 1972 90% of students had computer experience; because faculty knew that students were familiar with DTSS, using it became a routine part of many courses. A 1975 survey found that 29% of faculty used the computer in courses and 73% of students were enrolled in them, 43% of faculty used it in research, and 45% of faculty had written a computer program. By that year university administration used 28% of timesharing resources to students' 20%, with the registrar and housing office among users.
27% of DTSS use as of 1971 was for casual use and entertainment, which the university stated "is in no sense regarded as frivolous", as such was an enjoyable way for users to become familiar with and not fear the computer. The library of hundreds of programs included, Kemeny and Kurtz reported, "many games". They were pleased by the widespread faculty use of 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 1972 the football simulation supported simultaneous head-to-head play as a multiplayer video game. Kiewit's location near Dartmouth College Greek organizations made it popular for socializing; students often brought dates to the Computation Center, both to play games and to demonstrate their own programs.
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. Kemeny had a terminal at home, and as president installed one in his office. 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, the United States Merchant Marine Academy, the United States Naval Academy, Bates College, the Dartmouth Club of New York, and a Dartmouth affiliate in Jersey City, New Jersey, sharing DTSS with Dartmouth people. The system allowed email-type messages to be passed between users and real-time chat via a precursor to the Unix talk program.
While several languages were available on DTSS, as of 1972 98% of programs were written in Dartmouth BASIC. 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. 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 – Dartmouth 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

## DTSS today

In 2000, a project to recreate the DTSS system on a simulator was undertaken and as a result DTSS is now available for Microsoft Windows systems and for the Apple Macintosh computer.