IBM TSS/360

For our first System/360 time-sharing operating system, we'll look at TSS/360, with TSS standing for Time-sharing System. This was not a great success - from a 1972 review by IBM:

Indeed, bringing TSS/360 to the marketplace and making it productive in customer installations has been a very difficult task, both technically and financially.

History

By 1964, IBM had experimented with creating time-sharing systems, such as this one for the 7090, and had helped provide the hardware needed for MIT to produce CTSS, but had never released anything to customers. As MIT was planning for its replacement for CTSS, IBM assumed that they would use the new System/360 as their hardware. But MIT did not like the initial design of the computer, as it lacked many of the hardware support features needed for time-sharing like address translation. They, together with AT&T, decided to go with General Electric, and eventually produced Multics for a modified GE-635 computer.

IBM was not happy about this outcome, perceiving the loss of university and scientific support as detrimental to the long term success of System/360. In August 1965 they announced the System/360 Model 67, which had some of the hardware features missed by MIT, and an operating system called TSS/360 to go with it.

/images/tss/tss-collage.png Details from a TSS brochure. Source: Bitsavers

The hardware was available in 1966, but the planned shipping date for TSS in mid 1967 was missed, despite IBM throwing large numbers of programmers at it. An experimental release came in October of that year, but performance was not great (one attendee of CHM's conference on time-sharing remembered walking out of a demo in disgust when the system had not finished booting up after 30 minutes).

Potential customers drifted away to other operating systems such as VM and MTS, and to other machines, and only a handful of sites stuck with TSS. IBM did continue to improve it, boosting its performance and reliability, replacing the scheduling algorithm and command set, but decided to switch to TSO under MVT/MVS as their preferred implementation of times-sharing in 1971. Support for TSS continued for a while. including a version for newer hardware called TSS/370, but it was pretty much extinct by the mid 1970s.

Architecture

TSS/360 consists of a central memory-resident supervisor that controls tasks: each user can have one interactive task and any number of non-interactive/batch tasks running, and the system time-slices between them; later versions had a dynamic scheduler that could be adjusted by the system owner. It's possible to have more than one CPU in the system.

TSS was designed to run only on System/360 and later models that supported dynamic address translation. The system uses virtual memory, called virtual storage by IBM.

Data is stored in a catalog and is accessed via the concept of data sets which may span multiple files. Data sets can be in different formats, such as sequential, indexed sequential and partitioned, and there is provision for saving older versions of files automatically.

User commands include logon, profile management (settings and synonyms for commands), data set management and editing, language processors like Fortran, debugging and bulk I/O requests such as printing. Users can also write their own commands to extend those provided by the system. It's even possible to replace error and information messages produced by system programs with your own messages.

Users are divided into several classes, such as system managers, operators and regular users, with different commands being available to each group. It's possible to share data sets between users. Memory protection exists between tasks, with the ability for reenterable code to be shared between them.

Dynamic loading is used to start programs, allowing libraries and data sets to be associated with tasks at run time.

Preservation status

Jay Maynard has preserved version 3 of TSS/370 at this website. This includes the installation tape, a set of installed disk images and the system source code (excluding the source of some copyrighted compilers). This is the only known version that is available.

Bitsavers has a nearly complete collection of IBM manuals for TSS, covering both early and later versions.

Emulation status

The above software kit works on Hercules, allowing you to IPL (boot), login and run tasks. There are several bugs, such as user logoff not working properly that are probably underlying issues with TSS, but it is usable. With Hercules running much faster than the original hardware, performance is not an issue today.

Richard Cornwell has written a System/360 and 370 emulator which is available in his sims fork of simh. I've got this booting using Jay Maynard's disk kits but I have not been able to get remote user logins working yet.

On this blog

I plan to cover the following topics as we look closer at TSS/360.

  • A quick tour of running TSS/360 on Hercules.
  • Data sets.
  • Users and security.
  • Tasks and user customisation.
  • Getting data in and out.
  • The file editors.
  • Programming in Fortran.

A note on naming: I will generally call the operating system "TSS/360" in these pages, although IBM also used "TSS/370" and just plain "TSS" in their documentation.

Further reading

Again, Emerson Pugh's book IBM's 360 and early 370 systems is a great source for history. You can read it online at the Internet Archive.

Tom Van Vleck gives an account of TSS/360 and VM from the perspective of a Multics developer at multicians.org.

IBM's IBM Time Sharing System Concepts and Facilities is a good first read on TSS/360's architecture and key concepts. Several versions are available on Bitsavers, with the most recent here.

Questions, corrections, comments

I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.