diff --git a/doc/wiki/its_ards b/doc/wiki/its_ards new file mode 100644 index 00000000..9f5fc50e --- /dev/null +++ b/doc/wiki/its_ards @@ -0,0 +1,12 @@ +
+ARDS, or Advanced Remote Display System, was ground breaking storage CRT display terminal technology developed at MIT in the 1960s. A company called Computer Displays Inc. was spun off to commercialize the technology. The terminals were mostly used with CTSS, but the AI lab PDP-6 also had a few. +
+ ++ITS retains some traces of ARDS support. The terminal type was removed in 1976 and replaced by Tektronix. There is a program called ARDPRN for displaying graphics files on a capable display such as Imlacs. The BIG music program can draw scores in ARDS format. +
+ ++ITS console panel functions +
+ ++If you are lucky to run ITS on a +
++You will have some lights and switches. In addition to the normal functions, ITS has some more: +
+ ++The memory indicator lights show which job is running. This can be disabled by setting MIPGDS to -1. To control the lights from a user program, use .IOTLSR to enable IOT user mode and write to the lights register with DATAO PI,AC. +
+ ++Data switch 0 will make ITS go to NTS DDT. This is very useful to set breakpoints etc, for debugging ITS. Switches can be read from a user program with DATAI APR,AC. +
+ ++On the PDP-6, the memory indicator lights are connected to speakers. +
diff --git a/doc/wiki/its_emulators b/doc/wiki/its_emulators new file mode 100644 index 00000000..5165db6e --- /dev/null +++ b/doc/wiki/its_emulators @@ -0,0 +1,51 @@ ++Emulators for ITS +
+ ++ITS can run on the following PDP-10 emulators: +
++Emulators that can be used with ITS: +
++Games found on ITS +
+ ++MacHac VI +
+ +
+Greenblatt's chess program. :GAMES;C displays on the 340, and :GAMES;OCM on the Knight TV.
+
+Spacewar +
+ +
+Spacewar is mainly for the PDP-6, but there is also a timesharing version available. To run out of timesharing, start SPCWAR or WAR from DSKDMP. The latter is an older version. The timesharing version is :GAMES;SPCWAR
+
+There are also versions for Imlac, GT40, and Knight TV. +
+ ++Dazzle Dart +
+ +
+This is a four-player game where teams of two play against each other. A beam of light can be fired and must reflect off a surface to land in the goal to score a point. The original ran on the Logo group PDP-11/45. The PDP-6 version is .;@ DAZDRT, and a timesharing version is :GAMES;DAZDRT.
+
+Adventure +
+ +
+:ADVENT is the original Will Crowther cave exploration game.
+
+Not yet functional games +
+ ++Zork. The problem is that Zork must be compiled to fit in memory, and the compiler is missing. There are also missing libraries such as the assembler. +
+ ++Maze. It expects to find character definitions from a particular location in SSV, which doesn't match the working version of SSV. Also possible display modification problem. +
diff --git a/doc/wiki/its_hosts b/doc/wiki/its_hosts new file mode 100644 index 00000000..4d870e71 --- /dev/null +++ b/doc/wiki/its_hosts @@ -0,0 +1,16 @@ ++ITS was used mostly in the era before DNS, when a hosts.txt file was regularly distributed to all Arpanet hosts. If you want to add a new host and its IP number, you have to update ITS' host table. +
+ +
+ITS' human readable host table is in the file SYSHST; H3TEXT >. You update it with a regular text editor. To add a new host, enter a line like HOST : A.B.C.D : NAME : MACHINE : OS : :. A.B.C.D is the IP number, and NAME is the hostname. MACHINE and OS are free text descriptions.
+
+Having done this, you have to update the binary host table SYSBIN; HOSTS3 > which is what programs actually use to look up host names. To update this from the text file, just run :SYSHST;H3MAKE.
+
+Some ITS machines had Imlac PDS-1 machines attached. Primarily the Dynamic Modeling PDP-10, were the MAZE game was developed into a fast paced multiuser game. The Mathlab PDP-10 also had a few Imlacs, probably used mostly for Macsyma. As far as we can see, there also was one PDS-4. +
+ ++The DM Imlacs ran older software called SSV, or screen saver. MAZE probably assumes some particular versions of SSV, which we may not have now. The preferred text editor with SSV is IMEDIT. The ITS terminal type for SSV is %TVIML, or OIMLAC in TCTYP. There is a newer software called SST which is much better for full screen editors like TECO or EMACS. This terminal type is %TNSFW, but it really is safe for work. The PDS-4 ran a tailored version of SSV called SSV4. There was also an ancient program called SIC, and a alternative program called WIMPY which didn't seem to gain a following. STV seems to be another name for SST. +
+ +
+The Imlacs receive their software by upload from ITS. Start the Imlac bootstrap at location 40, and run the program IMLOAD. At the @ prompt, type OUTPUT_INPUT, where OUTPUT is Tnn: to specify the terminal line, and INPUT is the file to load. As a convenience it's possible to type just nn to load the “normal” program. IMLOAD tries to open, in this order, <user>; .PRGM. Tnn, <user> .PRGM. NORMAL, IMLAC; .PRGM. Tnn, and IMLAC; .PRGM. NORMAL. To reload the Imlac you're currently using, just type enter.
+
+Software development tools for the Imlac consists of the regular MIDAS assembler, a set of MIDAS definitions and macros to generate Imlac code, and the program IMTRAN which translates MIDAS binary output to a format accepted by the Imlac TTY bootstrap. +
+ +
+Josh Dersch has written an Imlac PDS-1 emulator, which can attach to a PDP-10 emulator serial line. ITS as built from the GitHub repository has T50 configured with the “OIMLAC” terminal type, i.e. Imlac running SSV. The PDP-10 emulator has TCP port 10016 connected to T50. The Imlac emulator can be conveniently started and connected to ITS by typing ./start imlac. When first started the Imlac memory is blank, so it must be loaded with IMLOAD.
+
+The TCTYP program used to have a terminal type called IMLAC for Imlacs running SSV. When SSV fell out of favor, the IMLAC terminal type was changed to refer to SST instead. The old SSV type has been added back under the name OIMLAC. If the terminal type is wrong, output will look garbled; just run TCTYP to set the correct type. +
+ ++SSV can display ARDS graphics. To view files in the -PICS- directory, run the IMPRINT program and pass a file name on the command line. +
+ ++PDP-10 Maclisp +
+ ++The ITS Lisp is called Maclisp, or PDP-10 Maclisp if necessary to disambiguate it against Multics Maclisp. Its direct ancestor is PDP-6 LISP. +
+ ++A sample MACLISP session on ITS using LEDIT MODE in EMACS +LEDIT will work on both ITS and TOPS-20 ;tnx1.0e6 to GLS +
++ KA ITS 1648 DDT 1547 TTY 52 ;System herald + + :login smith ;The luser logs in + + :lisp ;MACLISP is started + + LISP 2154 ;MACLISP version + ALLOC? N ;Take the world defaults + + (plus 3.14 2.71) ;Add two numbers + 5.85 + + (car '(simple list)) ;Return the CAR of a LIST + SIMPLE + + (ledit) ;Enters EMACS in LEDIT MODE + + (defun sum-squares (a b) ;Typed into the EMACS buffer + (plus (times a a + (times b b)))) ;META-Z pushes DEFUN to the world + ;CTRL-X Z returns to LISP + + ;READING FROM LEDIT SUN-SQUARES ;Back in LISP + ;EDIT COMPLETED + + (sum-squares 2.0 3.0) ;call SUM-SQUARES + 36.0 ;Returns the wrong number + + (ledit) ;Re-enter EMACS in LEDIT MODE + + CTRL-S (times a a ;Typed into EMACS + ;Search for STRING (times a a + + (defun sum-squares (a b) ;Correct SUM-SQUARES + (plus (times a a) + (times b b))) ;META-Z pushes new DEFUN to world + ;CTRL-X Z returns to LISP + + ;READING FROM LEDIT SUM-SQUARES ;Back in LISP + ;EDIT COMPLETED + + (sum-squares 2.0 3.0) ;Call SUM-SQUARES again + 13.0 ;Correct result+ +
+The LISP … Editor … LISP … loop will no doubt be repeated many times. +
+ ++HELLO WORLD and LOOP examples +
+@maclisp ; start MACLISP at the TOPS-20 EXEC + + LISP 2122 ; MACLISP Version 2122 + Alloc? n ; take the defaults + + + * + (defun HELLO () ; DEFINE FUNCTION "HELLO" + (princ "Hello World!")) ; print characters "Hello World!" + HELLO ; MACLISP reports a definition for the function "HELLO" + (hello)Hello World! ; The function "HELLO" is called and "Hello World!" is printed + T ; MACLISP reports T for a successful function call+
@maclisp + + LISP 2122 + Alloc? n + + + * + (loop for x in '(a b c d e) ; Call the macro "LOOP" for VARIABLE "x" in a list of "a b c d e" + do (print x)) ; DO a PRINT of the value of "x" + ;Loading LOOP 725 ; MACLISP loads LOOP version 725 + ;Loading DEFMAX 98 ; MACLISP loads DEFMAX version 98 + A ; 1. X = A + B ; 2. X = B + C ; 3. X = C + D ; 4. X = D + E ; 5. X = E + NIL ; DO called PRINT X which returned NIL because there was nothing + ; left to PRINT in the list of "a b c d e"+ +
+MATH examples +
+@maclisp + + LISP 2122 + Alloc? n + + + * + (+ 2 2) + 4 + (- 2 2) + 0 + (* 2 2) + 4diff --git a/doc/wiki/its_logo b/doc/wiki/its_logo new file mode 100644 index 00000000..7f360610 --- /dev/null +++ b/doc/wiki/its_logo @@ -0,0 +1,37 @@ +
+ITS and the Logo programming language +
+ ++ITS was host to a lot of Logo development. There are many implementations available: +
++PDP-11 Logo was the reference implementation. It ran on a PDP-11/45 with special display hardware added. There were older vector displays by Tom Knight, and newer raster displays by Ron Lebel (mostly same as the Knight TV hardware). +
+ ++At first PDP-11 Logo ran on the metal, but later a timesharing system was developed. It was called SITS, or Small ITS. The initial design was similar to ITS, but later development took inspiration from MIT's PDP-1X timesharing system. +
+ ++A minimal Little SITS emulator was used to run PDP-11 Logo on the General Turtle LSI-11 processor. +
+ ++Hal Abelson et al wrote an interesting game using the vector displays, called Dazzle Dart. Two teams of two plays against each other, and the objective is to shine a ray of light in the opposing team's goal. The ray must reflect at least once for a goal to be scored, making it possibly the first game with ray tracing. +
diff --git a/doc/wiki/its_machines b/doc/wiki/its_machines new file mode 100644 index 00000000..c123bd94 --- /dev/null +++ b/doc/wiki/its_machines @@ -0,0 +1,28 @@ ++Managing the TV-11. +
+ ++The AI lab PDP-10 had a “10-11” interface with up to eight Unibuses. Each Unibus is mapped into PDP-10 memory and can be used to attach a PDP-11. Or other Unibus processors like the CONS Lisp machine, or the CHEOPS chess accelerator. The TV-11 was a PDP-11/20 attached to 10-11 Unibus number 0, suggesting it was the first to use this facility. It was shortly followed by the XGP-11, an PDP-11/10 driving the XGP printer. The TV-11 has bitmapped framebuffers, a video switch, and a keyboard scanner. It was used for raster display workstations around Tech Square. +
+ ++For the TV-11 to work, it must be running, connected to the 10-11 interface, and loaded with the TV-11 software. On the PDP-10 side, ITS must be assembled with TV11P. The location TT11P controls ITS' view of the TV-11: 0 means off, -1 means running, and 1 means reinitialize. +
+ ++There is a software emulator for the TV-11 and its Knight TV and keyboard hardware, called tv11 and tvcon. The tv11 talks to the PDP-10 emulator through TCP/IP; this provides the 10-11 interface. When ITS has booted, the TV-11 software must be loaded. This is done by running :STUFF TV. If the 10-11 interface works, the software will be written to the PDP-11/20 core memory. Next, ITS must be told to reinitialize its communication with the TV-11. This is done by depositing 1 to ITS location TT11P. STUFF and TT11P are normally automatically handled by the program CHANNA; RAKASH TVFIX. +
+ ++The TV “console” emulator, i.e the display and keyboard, is a separate program called tvcon. It talks to tv11 through TCP/IP. +
diff --git a/doc/wiki/its_music b/doc/wiki/its_music new file mode 100644 index 00000000..5d16e36b --- /dev/null +++ b/doc/wiki/its_music @@ -0,0 +1,25 @@ ++Playing music from ITS +
+ ++To play music, the PDP-6 is required. +
+L.+ITS and PDP-11 machines +
+ ++There is great support for programming PDP-11 machines in ITS. Software tools are: +
++On the hardware side, there is the “Rubin 10-11 Interface” made by Jack Rubin. It's a device which is mapped into PDP-10 memory space on one side, and eight Unibuses on the other. Here's a list of the attached processors: +
++Some other PDP-11s on the MIT campus: +
++PDP-6 LISP +
+ +
+ITS has a copy of PDP-6 LISP, found on a DECtape from Peter Samson. It's located in the . directory. To run it, the computer must be taken out of timesharing. From DSKDMP, just type lisp to start PDP-6 LISP. It has been patched to run on a PDP-10 as well.
+
+Here is a sample session which displays HELLO-WORLD on the 340 display.
+
ALLOC? N + + (ARRAY HELLO T 100) + 36233 + (DISINI (QUOTE HELLO)) + NIL + (SETQ DISLIST (LIST (GET (QUOTE HELLO) (QUOTE SUBR)))) + (#36171) + (DIDAS (QUOTE HELLO) NIL (QUOTE HELLO-WORLD)) + Tdiff --git a/doc/wiki/its_secrets b/doc/wiki/its_secrets new file mode 100644 index 00000000..298eafb1 --- /dev/null +++ b/doc/wiki/its_secrets @@ -0,0 +1,15 @@ +
+Don't read this +
+ +
+To patch ITS while it's running, first type sys$j to get the sysjob. This job has the core image of the ITS monitor, but it's write-protected by default. To unprotect it, type $$^R.
+
+To get a directory listing, type ^R m.f.d. (file). Or run PEEK on the 340 display (type ^Y) and type D.
+
+To make a new directory, say foobar, type ^R foobar; ..new. (udir). Unless on a really old ITS… in which case you must patch the ITS location NUFDTB with the sixbit name of the directory, and then access a file in it.
+
+Starting and stopping ITS +
+ ++Except on KL10, starting ITS goes like this: +
+BT console command to boot into DSKDMP.+On the KL10, there is no DSKDMP. DDT is used to load a core image and start. +
+ ++Stopping ITS goes like this: +
++A transcript of starting ITS, logging in, and stopping. It has been edited for brevity. +
+ +
+ DSKDMP
+
+its
+
+$G
+
+SALVAGER.317
+
+ITS 1649 IN OPERATION
+
+ITS 1649 SYSTEM JOB USING THIS CONSOLE.
+
+^Z
+
+ITS.1649. DDT.1547.
+
+TTY 0
+
+You're all alone, Fair share = 99%
+
+:lock
+
+ LOCK.156
+
+_5down
+
+DO YOU REALLY WANT THE SYSTEM TO GO DOWN?
+
+Y
+
+PLEASE ENTER A BRIEF MESSAGE TO USERS, ENDED BY ^C
+
+Bye.
+
+^C
+
+ITS 1649 NOT IN OPERATION
+
+SHUTDOWN COMPLETE
+
+PI LEVEL 7 BUGDDT. TYPE <ALTMODE>P TO CONTINUE.
+
+YOU ARE NOW IN DDT.
+
+ITS Survival Guide +
+ ++Here a summary of useful commands for ITS in comparison common UNIX commands. +
+ ++Everywhere $ is written, it means typing Escape. +
+| UNIX | DDT | CP | +
|---|---|---|
| login: user | user$u | :login user | +
| logout | $$u | :logout | +
| TERM=vt52 | :tctyp vt52 | +|
| TERM=vt100 | :crtsty vt100 | +|
| ls | CTRL-F | :listf | +
| ls dir | dir CTRL-F | :listf dir | +
| ls / | CTRL-R m.f.d. (file) | :print m.f.d. (file) | +
| ls *.foo | CTRL-R dir: second foo | :print dir: second foo | +
| more file | CTRL-R file | :print file | +
| mkdir dir | CTRL-R dir;..new. (udir) | :print dir;..new. (udir) | +
| cd dir | dir$$CTRL-S | :cwd dir | +
| cp f1 f2 | $CTRL-R f1,f2 | :copy f1,f2 | +
| rm file | CTRL-O file | :delete file | +
| ln f1 f2 | $CTRL-O f1,f2 | :link f1,f2 | +
| mv f1 f2 | $$CTRL-O f1,f2 | :rename f1,f2 | +
| mv file dir | :move file,dir | + |
| emacs | emacsCTRL-K | :emacs | +
| ps | $$v | :listj | +
| kill pid | pid$CTRL-X | :job pid :kill | +
| sudo -u u cmd | u$CTRL-S cmd | + |
| top | peek CTRL-H | :peek | +
| CTRL-U | CTRL-D | + |
| CTRL-C | CTRL-G | + |
| CTRL-Z | CTRL-Z | + |
| CTRL-D | CTRL-C | + |
| fg | $P | :continue | +
| bg | CTRL-P | :proceed | +
+ITS topics +
+ ++ITS, the Incompatible Timesharing System, was written in 1967 at the MIT AI Lab. It was first running on a PDP-6, but was moved to PDP-10 KA10 processors, in 1975 to a KL10 processor, and finally to KS10 processors. ITS was host to a number of influential programs and technologies: Lisp, Zork, MAZE, Scheme, CLU, Macsyma, SHRDLU, Lisp machines, Logo, Emacs, MacHack VI. +
+ ++The museum has a real KS10 and an KA10 emulator running ITS. +
++First of all, for most things ITS will not require a user to be logged in under a name. You can just type ^Z and start working. Some programs do require you to have a user name, and maybe even to have a home directory. However, it is somewhat rude to use ITS anonymously. +
+ +
+To log in and assign a user name, type :LOGIN NAME or NAME$U, where NAME is to be substituted for your user name. Using the winning $U command does have a slight difference: ..CLOBRF and ..MORWARN will be set to 0. Originally, ITS would not ask for a password so there was no protection against logging in as someone else. As more and more Arpanet randoms were seen to hog precious resources, ITS was coerced into adding a password facility.
+
+If you don't have a home directory, DDT will complain. This is harmless, but making your own directory is a good idea. To do that, type ^R NAME; ..NEW. (UDIR). DDT will say “no such file”, but the directory will be created. The NAME directory will now be yours by virtue of having the same name as the user name. This need not be the case for all users though; see below.
+
+Having your own home directory is good enough for almost everything you need, but to really make yourself an official ITS user you should register with the INQUIR user database. To do this, type :INQUIR and answer all questions. Finally end with the DONE command.
+
+When you log in, DDT will check the INQUIR database for the name of your home directory. Using this facility, your home directory can have a name different from your user name. +
+ ++Using the GT40 with ITS. +
+ ++The AI lab had a GT40 attached to terminal line T34. The GT40 is a PDP-11/05 with a VT11 vector display controller, a CRT display, a keyboard, and a light pen. SIMH can emulate a GT40 and attach to a PDP-10 emulator terminal line. +
+ ++When booted, the GT40 will run from the VT11 ROM. The ROM has very minimal terminal functions: it will display characters received from the PDP-10, and send keyboard key presses to the PDP-10. There are also reset and software upload functions. The ROM software by itself does not provide a usable terminal. +
+ ++To use the GT40 with ITS, log in with ^Z and start GTLOAD to upload software. There is a Datapoint emulator called VT07. When the GTLOAD prompt “*” appears, type the filename GT40;VT07 and type enter. The upload will take a long time: one or two minutes. When the terminal emulator starts, it will type out “ITS IN OPERATION” at which point the GT40 can be used much like a Datapoint except it has additional lower case characters. +
+ ++VT07 can also accept graphics commands. This facility can be used by Lisp and SUDS. +
+ ++There is some other GT40 software. To run something else, restart the GT40 (emulator) and run GTLOAD again. +
++Programming the PDP-6 +
+ ++The AI lab PDP-10 shared its memory and I/O buses with a PDP-6. The PDP-6 has 16K of core memory which the PDP-10 can also read and write. The PDP-6 can not see the PDP-10 memory. Both processors can send an interrupt to the other. +
+ ++For ITS to talk to the PDP-6, the system location PDP6UP must first be set to -1. To access the PDP-6 core memory from ITS, create a job named “PDP6” or “PDP10”. (Historical side note. At first the roles were reversed: the PDP-6 was running ITS and the PDP-10 was the subordinate processor.) This job will have a 16K core image and reads and writes will go directly to the PDP-6 memory. DDT can load a program with $L. It's not possible to start, stop, or set breakpoints. These things will have to be done from the PDP-6 console. +