Cal TSS Archives

Paul McJones

January 1, 2019

CalTSS Developers at the 1991 reunion

December 14, 1991 reunion. Left to right: Redell, Gray, Vaughan, McDaniel, Lindsay, McJones, Simonyi, Lampson.


  1. TSS design notes, documentation, etc.
    1. "A basic time sharing system"
    2. Designing the ECS system
    3. The ECS system begins to run
    4. Designing the disk system
    5. The disk system begins to run
    6. Development is discontinued
    7. Afterward
  2. Source code
  3. Theses
  4. Papers
  5. Hardware
  6. People

1 TSS design notes, documentation, etc.

1.i "A basic time sharing system"

The first documents, by Howard Sturgis, take up various aspects of a time-sharing system (including process scheduling, a disk-based file system, low-speed terminal i/o, and capabilities), but don't mention subprocesses and (multilevel) operations. Was Howard working alone, or with Butler?
  1. Sturgis. November 15, 1967. "What follows is a description of a basic time sharing system, as seen by a knowledgeable user." 671115-hes
  2. Sturgis. February 20, 1968. "This is the proposed body of a letter from Prof. Graham to myself (HES). He wants approval or comments from Ken Hebert [and] Gene Albright. Phase 1: Design; Phase 2: Limited System; Phase III: Better System." 680220-mhg_to_hes
  3. Sturgis. February 27, 1968. Early disk file system notes. 680227-hes
  4. Sturgis. February 28, 1968. More early disk file system notes. 680228-hes
  5. Sturgis. February 29, 1968. Capabilities, basic objects. 680229a-hes
  6. Sturgis. February 29, 1968. Calculations based on size of 6638 disk. 680229b-hes
  7. Sturgis. March 3, 1968. Notes on disk file representation. 680303-hes
  8. Sturgis. March 4, 1968. More notes on disk file representation. 680304-hes

1.ii Designing the ECS system

In the next series of documents, by Howard Sturgis, Butler Lampson, and Bruce Lindsay, Cal TSS begins to take shape: swapping controlled by a map, errors and interrupts, and more...
  1. Sturgis. July 14, 1968. Map, operation, capability, objects. 680714-hes
  2. Sturgis. July 16, 1968. Process, subprocess. 680716-hes
  3. Lampson. July 18, 1968. Allocate ECS as follows: ... 680718-bwl
  4. Lampson. "Scope compatibility for symbolic file." 1968? Sample code and timing for conversion from eight seven-bit ASCII characters per word to ten six-bit Display Code characters per word. The estimate was nine microseconds per character. scope-compat-bwl
  5. Sturgis. July 18, 1968. "Allocate fixed peripherals by list scheme ..." 680718-hes
  6. Sturgis. August 22, 1968. "For each subprocess ..." 680822-hes
  7. Sturgis. September 3, 1968. "Sensitive code versus interrupt routines ..." 680903-hes
  8. Sturgis. "ECS System structure." September 5, 1968. 680905-hes
  9. Sturgis. "Modification of operation." September 10, 1968. "See 7/14/68." 680910-hes
  10. Lindsay. "Subprocess error handler." September 11, 1968. 680911-bgl
  11. Lampson. "Swapping and charge for ECS." September 11, 1968. 680911-bwl
  12. Sturgis. "Error handling." September 11, 1968. 680911-hes
  13. Sturgis. "Process." September 19, 1968. 680919-hes
  14. Sturgis. October 3, 1968. Event channel algorithms. 681003-hes
I believe there must have been more design memos written by Howard and perhaps others. When did the idea of multilevel operations emerge?
  1. Sturgis. "Disk representation of file." May 1, 1969. 690501-hes
  2. Standiford? "Option bit assignments." August 20, 1969. Table of option bit assignments for the various object types. 690820-opt-bit-assign

1.iii The ECS system begins to run

When was the "two-teletype demo"?
  1. Malbrain. "The Bead." Circa Fall 1969. "The Bead is the first subprocess created in every process when the system is initialized. Its function is to act as an interim monitor package to coordinate file activity and naming, elementary utilities, and be a command processor for the user." bead-km
  2. —. TS Interrupt System September 2, 1969. Typewritten documentation. 690902-int-sys
  3. Lampson. An Overview of the CAL Time-Sharing System. October 10, 1969. Reprint of [Lam69], with a progress report (similar to Gray, October 11, 1969) appended. 691010-overview-bwl
  4. Gray. Progress Report on 6400 CAL Time-Sharing System. October 11, 1969. 691011-progress-jng
  5. —. CAL Time-Sharing System Users Guide. November 1969. Actually, this is the programmers guide. 6911-users-guide
  6. —. CAL-TSS Internals Manual. November 1969. 6911-internals
  7. —. Preliminary SCOPE Manual. November 5, 1969. The SCOPE simulator made it possible to run programs designed for CDC's SCOPE batch system. 691105-scope-prelim
  8. —. TSS Printer Driver November 5, 1969. 691105-print-driv
  9. Standiford. "TSS Display Driver." Late 1969? 69-disp-driv-ks
  10. —. "S-device user interface." November 5, 1969. Specification of device interface to be used for tape drives, printers, card readers, card punches, and the console display. 691105-s-dev
  11. —. The BEAD Users Guide. December 18, 1969. 691218-bead-ug
  12. Karl Malbrain and Paul McJones. COOL-AID. 1969? Reference manual for unfinished PL/360-like assembler. 69-COOL-AID-km-prm
  13. —. SCOPE Manual. January 21, 1970. "This document describes the SCOPE simulator under the interim system. A knowledge of the SCOPE 3.1 manual is assumed." 700121-scope
  14. Gray. (Lack of Visible) Progress Report: CAL-6400-TSS. January 15, 1970. 700115-progress-jng
  15. Malbrain. "SCOPE 3.0." 1970? scope-30-km
  16. Malbrain. "Proposal for batch system." Early 1970? Early proposal for simple batch system: no tapes or job queuing; low-level disk system to be implemented below the Bead; SNOBOL program used for ? batch-proposal-km
  17. Vaughan. "Interrupts." 1970? Notes for redesign. 70-interrupt-redesign-vv
  18. Lindsay. 1970? Proposal for interrupt priorities based on magnitude of high-order part of class code. 70-interrupt-proposal-bgl
  19. Vaughan. "September system." 1970. Notes on content of September system: low-level disk system, less swapping, pseudo-close, and space control; directory less subprocess descriptors, ECS goodies, global objects, and accounting; disk dump and load; command processor and subprocess descriptors ("a la bead"), line collector, login, logout, and accounting; Scope simulator; disk recovery. 70-sept-sys-vv
  20. Gray. "[Addendum to] Systext standard." 1970? 70-systext-changes-jng

1.iv Designing the disk system

  1. Vaughan. "User interface, command processor, human engineering." 1970? Sets down requirements for mechanism for user to control time used by subsystem, etc. 70-user-interface-vv
  2. Sturgis. January 22, 1970. "Objects in directories, note on ecs goodie, representation of files, directories, access keys, ecs goodies, directory structure for an entry, directory operations, subprocess descriptor." 700122-hes
  3. Sturgis. "Subprocess descriptor." February 19, 1970. 700219a-hes
  4. Sturgis. "Directory object descriptions." February 19, 1970. "Implementation algorithms another time." 700219b-hes
  5. Sturgis. "Tentative changes to ECS system." March 5, 1970. Design notes for return parameter authorization. 700305a-hes
  6. Sturgis. "[Global] ECS objects implementation." March 5, 1970. Design notes for representing ECS objects in disk system directories. 700305b-hes
  7. Sturgis. "ECS goodie implementation." March 5, 1970. 700305c-hes
  8. Sturgis. "New ECS facility (version 3)." March 12, 1970. Design notes for capability-creating authorizations. 700312a-hes
  9. Sturgis. "New ECS facility." March 12, 1970. More design notes for return parameter authorization and block data and capability parameters. 700312b-hes
  10. Sturgis. "'Disk process' structure." March 19, 1970. 700319-hes
  11. Vaughan. "Evaluation of work yet to be done on the ECS system as of 30 March 70." March 30 and April 13, 1970. 700330-0413-vv
  12. Gray. "Disk meeting." April 1, 1970. 700401-jng
  13. Vaughan. "Interrupts." April 2, 1970. 700402-vv
  14. Gray. CAL Progress Report. April 15, 1970. 700415-progress-jng
  15. Sturgis. "General description of actions with respect to directories." April 17, 1970. 700417a-hes
  16. Sturgis. "Directory structure." April 17, 1970. 700417b-hes
  17. Sturgis. "Specific actions for directories." April 17, 1970. 700417c-hes
  18. Vaughan. April 20, 1970. Notes on various ECS system redesign issues. 700420-vv
  19. Sturgis. April 23, 1970. "Open and close, general; directories; disk files; subprocess descriptors; access keys; global ECS object; ECS goodie." 700423-hes
  20. Richard Brautigan. All Watched Over by Machines of Loving Grace. April 27, 1970. Photocopied and distributed to the staff by Vaughan. 700427-brautigan-vv
  21. Sturgis. "Subprocess descriptors." April 30, 1970. 700430-hes
  22. Vaughan. "Reconstituted list of things to be done on the ECS level of Cal TSS." June 1, 1970. "Stuff needed for the operation of the 'September System'" 700601-vv
  23. Gray. Progress Report - CAL-TSS. June 1, 1970. "I am resigning as director of CAL effective today, Howard Sturgis who, along with Butler Lampson, was the principle architect of TSS i s replacing me. The job i s thankless, draining, mundane, and unpleasant." 700601-progress_report-jng
  24. Sturgis. "Dump-load." June 1, 1970. 700601-dump-load-hes
  25. McJones. "Operations." June 3, 1970. Operation data structure diagram. 700603-operations-prm
  26. McJones. "Directory." June 29, 1970. Preliminary interface specification and internal data structure. 700629-prm
  27. Standiford. "TSS Display Driver - Revision A." July 6, 1970. 700706-disp-driv-rev-a-ks
  28. Morris. "Editor Commands." 1970? Handwritten. ed-cmmds-jhm
  29. Morris. "The Text Editor." July 9, 1970. 700709-ed-jhm
  30. Malbrain? "Batch system." 1970? "It is planned to have a running TSS BATCH system by August 15, 1970, running under the TSS 'September' system." 70mmdd-batch-system
  31. Redell and Lindsay. "Low Level Disk System Actions." July 9, 1970. 700709-low-level-disk-ddr-bgl
  32. Vaughan. "Change to indirect C-list specifications." July 20, 1970. 700720-new-indir-clist-vv
  33. Vaughan. August 10, 1970. Updates for ECS system documentation: capability-creating operations, return with parameters, block data and capability parameters, indirect capability parameters. 700810-vv
  34. Sturgis? "Bead 4.0." 1970? "Differences from Bead 3.1 (those that I can think of)." Document apparently edited on Cal TSS and printed on TTY. bead-40
  35. Sturgis. Interim Disk System: Preliminary Manual. 1970? interim-disk-sys-hes
  36. McDaniel. 1970? "One of the most frequent questions heard around TSS teletypes is 34.64.95 BEAD ERROR! BEAD HERE! What the hell does THAT mean???" Source code of Bead error classes and numbers. bead-errors-gam
  37. —. The Idiot's Guide to TSS. Fall 1970? idiots-guide
  38. Sturgis? "How to make a new system tape for Bead 4.0." 1970? All-caps listing on TTY; edited on the system. make-sys-tape-bead40
  39. Sturgis. "Tentative basic command processor." September 11, 1970. 700911-tent-basic-cmmd-hes
  40. Sturgis? "System and system part of user process initialization." Undated. 700920-sys-init-hes
  41. Redell and Lindsay. "EDITBIN specification file." September 22, 1970. Diagram of file used to control editing of system tape? Also lists of module names. 700922-editbin-spec-ddr
  42. Vaughan. "Observable states of a subprocess." November 18, 1970. Proposal for a redesign of call stack entries? 701118-observable-states-vv
  43. Sturgis. "Actions in the event of a panic." November 24, 1970. "Bead 4.1 stuff. Later (4.2?) errors replaced with 'return with interrupt.'" 701124-bead41-panic-hes
  44. Sturgis. "A proposal for the values of a call stack entry and their manipulation by the return operations." November 30, 1970. 701130-hes
  45. Malbrain. "Peripheral Device Processor: Preliminary Specifications." December 1, 1970. Proposal for a batch system handling card reader, printer, job queues, tape, and operator console. 701201-pdp-km
  46. Sturgis. "Interrupt handling code at the command level in the new system." December 4, 1970. 701204-hes
  47. Sturgis. "Syntax of parameters [for new command processor]." December5, 1970. 701205-param-syntax-hes
  48. Vaughan. "Chapter XXimvldc of the continuing interrupt hassle." December 7, 1970. Last page gives ECS operation timings for file writes. 701207-vv
  49. Sturgis. "Bead naming conventions." December 7, 1970. 701207-hes
  50. McJones. "Name tag system." December 10, 1970. Design for static and dynamic name tag implementation. 701210-prm
  51. Vaughan. "2 CP disaster sheet." Circa 1970? em>Also notes on speed phreaques, scheduling, and compactification of ECS. 2-cp-disaster-vv
  52. Lindsay. "User direct ECS access." 1970? direct-ecs-access-bgl
  53. McDaniel. "The Cal TSS interrupt system." Circa Spring 1971. Vaughan apparently noted "Spring '71" on the cover. But could this have been McDaniel's class project for Computer Science 109, taught by Lampson in Spring 1970? 71-int-sys-gam
  54. Sturgis. "Command processor preliminary document." 1971? Handwritten. cmmd-proc-prelim-doc-hes
  55. Sturgis? "Command processor preliminary document." 1971? Typed, with many correction. cmmd-prelim
  56. Sturgis. "Errors in BEADS." 1971? beads-errors-hes
  57. Vaughan? "BEADS Errors." Year? beads-errors-vv
  58. Vaughan. "Allocation blocks." January 4, 1971. "Proposed User's Manual sections for allocation blocks." 710104-alloc-block-vv
  59. Sturgis. About Cal TSS. January 6, 1971. Sturgis' first status report as project director. 710106-about-hes
  60. Vaughan. "Questions on which you are invited to express opinions in the next few days." February 1, 1971. 710201-vv
  61. Vaughan. "AB's Mark III." February 1971. 7102-ab-mk-iii-vv
  62. Redell and Lindsay. "Proposed actions relating to accounting." February 21, 1971. 710221-disk-actng-ddr-bgl
  63. Vaughan. "New stack logic." February 22, 1971. Call stack manipulation changes; problem with maps and file unique name change; control of CPU time. 710222-vv
  64. Sturgis. "Proposal for proprietary subprocesses." February 24, 1971. 710224a-hes
  65. Sturgis. February 24, 1971. Diagram of proposed subprocess structure (distributed with 710224a-hes?). 710224b-hes
  66. Subcommittee on Time Sharing. "Report to: Chancellor's Advisory Committee on Computing." February 27, 1971. 710227-subcommittee_on_time_sharing

1.v The disk system begins to run

  1. Vaughan. "Facilities available." March 15, 1971. Status report on readiness of various subsystems. 710315-facilities-avail-vv
  2. Sturgis. "Immediate mopping up." March 15, 1971. 710315-mopping-up-hes
  3. Sturgis. "Major problems." March 17, 1971. "L/D/R has error on final call; L/D/R opens too many files on dump (can't dump); can't destroy directories." 710317-major-problems-hes
  4. Redell and Lindsay. "Accounting block services." April 22, 1971. Functional specification and implementation notes. 710422-actng-blk-svc-ddr-bgl
  5. [Morris, borrowing from Canady and Ritchie]. BCPL. May 1971. Discusses using BCPL under SCOPE and TSS. 7105-cal-bcpl-jhm
  6. [Bridge]. "BASIC." May 1971. Discusses using BASIC under TSS and SCOPE. 7105-cal-basic
  7. —. Time-Sharing System Users Guide. May 1971. Planned as Part Three of Volume III (The 6400 Computer System) of overall Cal Computer Center Users Guide. 7105-users-guide
  8. Sturgis. "Projects related to command processor." May 5, 1971. "I) Errors will be interpreted and fancy messages printed. ..." 710505b-hes
  9. Sturgis. "SPACE command in CMMD." May 5, 1971. Command for controlling swapped ECS space, fixed ECS space, MOT slots, and temporary disk space. 710505a-space-cmmd-hes
  10. Sturgis. "New version of CMMD." May 17, 1971. 710517-new-cmmd-hes
  11. Sturgis. "New facilities available from command processor." June 6, 1971. New operations available to subsystems. 710606-new-cmmd-facilities-hes
  12. Sturgis. "Preliminary proposal for testing system subprocesses of user processes." June 8, 1971. 710608-hes
  13. Sturgis. "New commands in SERVICES." June 11, 1971. New commands: SHAZAM, CHAIN, UNCHAIN, and SOFTL. 710611-new-services-cmmds-hes
  14. Bridge, McDaniel, and McJones. CAL Lisp. June 1971? Incomplete design for a LISP 1.5 implementation for CAL TSS (class project) 7106-CAL-Lisp-bb-gam-prm
  15. Sturgis. CAL TSS Report. "The purpose of this report is two-fold: first, to make available detailed infocmation concerning the present status of CAL TSS, and second, to provide a basis for management discussion of the future course of development for CAL TSS. Since the TSS staff is small, not all projects can be pursued at once." 710801-cal_tss_report-hes
  16. Vaughan. "Where ECS space is going." July 22, 1971. Measurements. 710722-ecs-usage-vv-hes
  17. McDaniel. July 22, 1971. Cover note from Vaughan and proposal from McDaniel for storing some process state bits in ECS global register (to exploit hardware test-and-set property?). 710722-global-register-gam
  18. Vaughan. August 1, 1971. Measurements of sizes of subprocesses in a "disk process". 710801-disk-proc-vv
  19. Earley and Caizergues. "VERS Manual: Version 4". October 1971. 7110-VERS-Manual-V4-je-pc 7110-VERS-Examples
  20. McJones. October 19, 1971. Instructions for building the directory system. 711019-maintaining-dir-sys-prm
  21. McJones. October 27, 1971. Documentation of directory actions. 711027-dir-actions-prm
  22. Sturgis. "New features in CMMD." October 27, 1971. TEST mode; TTYON, TTYSON, TTYOFF, NEWMASTER, SYSDOWN, FORCEOUT commands. 711027-new-cmmd-features-hes
  23. —. "[System status]." November 1, 1971. "20 OCT 71 CHARGING FOR CAL TSS" 711101-status
  24. Vaughan. "Accounting info." November 1, 1971. Annotated TTY listing showing how to dump accounting information. 711101-actng-info-vv
  25. McJones. "Option bits". November 3, 1971. Directory option bit assignments. 711103-prm
  26. —. "List of privileged [disk system] operations." November 3, 1971. All-caps line printer listing; edited on the system. 711103-priv-ops
  27. Sturgis. "Calls on the TTY line collector." November 8, 1971. 711108-line-coll
  28. Sturgis. "Line collector." 1971? Vaughan: "debeaded" line collector. "This line collector uses code copied from GREYCODE,XTEXT the same as the old Bead. debeaded-line-coll-hes
  29. Redell or Lindsay. "Declare Process Swapped-ECS Cross-Section." 1971? Description of disk file action. decl-proc-swapped-ecs-xsec Development is discontinued.

  1. —. CAL Time-Sharing System Status. November 29, 1971. "CAL TSS has been discontinued pursuant to a decision formulated in the Chancellor's office." 711129-discontinued-vv
  2. Vaughan. "System staff et al." November 30, 1971. 711130-future-vv
  3. Hebert, Kenneth J. "Staff notice." December 8, 1971. "Effective immediately, Vance Vaughan will assume the responsibilities of Chief Programmer. I hope that you all will give him your utmost support in this most trying position." 711208-promotion-kjh
  4. Colman, Richard. "Computer System Cut." Daily Californian, December 10, 1971. 711210-cut-dc
  5. Vaughan. Undated. disk-actions-vv
  6. Standiford. "TSS display driver: Programming considerations—an amendment to previous document of late 1969." Undated. disp-driv-amend-ks
  7. Standiford. TSS Display Driver: Operators Guide. Undated. disp-op-guide-ks
  8. [Vaughan]. Undated. doc-list-vv
  9. [Lindsay and Redell]. Undated. ecs-list
  10. Vaughan? Undated. internal-changes-vv
  11. [Vaughan]. Undated. magic-pseudo-close-vv
  12. [McDaniel]. "Modified scheduler." Undated. modified-sched-gam
  13. [Sturgis]. "WARNING: New syntax for commands." Undated. new-cmmd-syntax-hes
  14. [Vaughan]. Undated. Jump Call, Special Return, Find Nth Son of a given Subprocess, Zero a capability. new-ecs-actions-vv
  15. [Vaughan]. Undated. "SaveDF prior to load." op-notes-vv
  16. [Vaughan]. "Portrait of a subprocess descriptor." 1971? portrait-subproc-desc-vv
  17. Standiford? "TSS PP DUMP and TSS PP DUMP-TAPE SCANNER" Undated. pp-dump
  18. Standiford. "Savetss." Late 1971? "Savetss is a Fortran program for retrieving files from a TSS DISK DUMP TAPE." Written after TSS was cancelled? savetss-ks
  19. Vaughan. "Seed phreaques, scheduling, compactification, ECS code, DAE, & other theological questions made simple." Undated. speed-freaks-vv

1.vii Afterward

  1. Lynn. "CDC 6400 Departure". September 3, 1982. "The CDC 6400 is no more." 820903-cdc-6400-departure-msl
  2. Redell. "Cal-TSS 20th Anniversary Trivia Quiz." December 14, 1991. 911214-trivia-quiz-ddr
  3. Redell. "Answers to Cal-TSS 20th Anniversary Trivia Quiz." September 2015. 201509-trivia-quiz-answers-ddr

2 Source code

See source.

3 Theses

Three of the participants based their Ph.D. theses on aspects of CAL TSS:
  1. Sturgis. A Postmortem for a Time-Sharing System. May 1973. [scanned] [reformatted] [HTML]
  2. Redell. Naming and Protection in Extendible Operating Systems. September 1974. thesis-ddr
  3. Lindsay. Exception Processing in Computer Systems. 1977. thesis-bgl

4 Papers

A report ([GLLS72]) and several papers ([Lam69] and [LS76]) were eventually published.

5 Hardware

CalTSS ran on a standard Control Data Corporation (CDC) 6400 with Extended Core Storage (ECS) and the Central Processor Monitor features (Monitor Address Register, Monitor Flag Bit, and Monitor and Central Exchange Jump instructions). It used CDC controllers and peripherals for disk, tape, card reader, and printers, but used a locally-developed terminal multiplexor.
  1. Control Data Corporation. Control Data 6400/6500/6600 Computer Systems Reference Manual. February 1967. 6400-cdc
  2. Control Data Corporation. Control Data 6400 Systems Central Processor Monitor. 196? cp-mon-cdc
  3. Control Data Corporation. Control Data 6400/6500/6600 Computer Systems reference card. Pub. No. 60164500 CDC 6000 reference card
  4. David Wheeler? "6400 Multiplexor Reference Manual." 1967? Wheeler was on sabbatical from Cambridge in the mid 1960s and designed this multiplexor, originally used with Berkeley's 7094. Martin H. Graham completed the design and implementation. 6400-mux

6 People


[GLLS72] James N. Gray, Butler W. Lampson, Bruce G. Lindsay, and Howard E. Sturgis. The control structure of an operating system. Technical Report RC 3949, IBM Thomas J. Watson Research Center, Yorktown Heights, New York 10598, July 1972. PDF

[Lam69] Butler W. Lampson. On reliable and extendible operating systems. In Proceedings 2nd NATO Conference on Techniques in Software Engineering, Rome, September 1969. Reprinted in The Fourth Generation, State of the Art Report Number 1, pages 421-444. Infotech, 1971. Online at

[LS76] Butler W. Lampson and Howard E. Sturgis. Reflections on an operating system design. Communications of the ACM, 19(5):251-265, January 1976. Online at ACM Digital Library

[Red74] David D. Redell. Naming and protection in extendible operating systems. Technical Report MAC TR-140, Massachusetts Institute of Technology Project MAC, November 1974. PDF

[Stu74] Howard E. Sturgis. A postmortem for a time-sharing system. Technical Report CSL 74-1, Xerox Palo Alto Research Center, Palo Alto, California, January 1974. PDF

[Tho70] J. E. Thornton. Design of a Computer: The Control Data 6600. Scott, Foresman and Company, Glenview, Illinois, 1970. PDF at