Incompatible Timesharing System
History
ITS was created by hackers dissatisfied with the directions taken by the Multics project. Originally implemented on the PDP-6, it spent much of its working life on the PDP-10.
A central theme of ITS is openness of information: there are no file permissions or really restrictions of any kind. Anyone can (without logging in!) read and modify other users' files, spy on other terminals, update system documentation, patch the kernel, and halt the whole system. Until more and more guests started flooding in from ARPAnet, ITS had no password authentication mechanism. Even after passwords were implemented, they weren't required for users connecting locally.
These conditions resulted in a very particular culture surrounding the system. ITS hackers were fiercely dedicated to exploration and free access to information. Logging in with a username, while entirely unnecessary for most interactions, was seen as polite. To stop people from digging for crash-causing bugs, a command was created to halt the system with no effort.
A number of important applications originated on ITS, among them Zork, info, Emacs, Maclisp, Macsyma, MDL, and Scheme. Emacs is of particular interest, as several of its default keybindings were derived from associated ITS behaviors (e.g., C-g
to quit, C-z
to suspend and return to the console).
MIT shut down their last ITS system in 1990. The operating system survives through the https://github.com/PDP-10/its repository, which will build a complete system from source. There are also a handful of public-access systems, including SV, UP, and SDF.
Emulation
The ITS distribution at https://github.com/PDP-10/its can be built for several simulators:
-
klh10
-
pdp10-ka
-
pdp10-kl
-
pdp10-ks
Operation
As might be expected from its history, ITS is idiosyncratic to say the least. We will adopt the conventional ITS notation for modifier keys:
-
$G
means ESC-G (note that$
is how ESC will print on the terminal) -
^R
means Ctrl-R
Additionally, we will use «
to indicate a carriage return.
Cold start
At the MTBOOT prompt, type the following commands:
-
$G
-
its«
-
$G
DDT
The shell is in fact a version of the DDT debugger. ITS commands come in two flavors: DDT shorthand commands and colon commands. The latter type corresponds more directly with the Unix sense of the word. Several commands have equivalent DDT and colon forms.
Insert a table of common commands (in both forms where applicable), possibly with the nearest Unix equivalents.
Filesystem
The ITS filesystem has one directory level. File paths take the form DEVICE:DIR; FN1 FN2
, where
-
DEVICE
can be a device or system hostname -
DIR
is the directory name -
FN1
is the main file name -
FN2
is the secondary file name, frequently used to store a version number
Each field can be at most six characters. When FN2
contains a version number, the character <
will retrieve the oldest version, and >
references the newest (automatically incrementing on a write). Any fields left empty will default to the most recently used value (e.g., info^F
followed by ^R ddt >
will print info; ddt >
). This is especially important to remember with respect to destructive operations!
To show the contents of the top-level directory, use the command :print m.f.d. (file)
or ^R m.f.d. (file)
(exactly as it appears). A similarly odd incantation is needed to create a directory (:print foo;..new. (udir)
/^R foo;..new. (udir)
)1).
Links
:print
, which is used to display file contents, necessary for these operations?