====== 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: * [[simh]] * 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)'')((Why is '':print'', which is used to display file contents, necessary for these operations?)). ===== Links ===== * [[https://its.victor.se/wiki/start|ITS wiki]] * [[https://gunkies.org/wiki/Incompatible_Timesharing_System|Gunkies ITS page]] * [[http://its.svensson.org/|SV public-access ITS system]] * [[http://up.dfupdate.se/|UP public-access ITS system]] * [[http://hactrn.org/|SDF public-access ITS system]]