Setting up an ITS system today

I'm going to describe how to set up an ITS system. Most information is applicable whether you are running in an emulator or on a real PDP-10. In the latter case, just skip anything referring to the Unix host (and note that I will give less details; I assume you know how to use the FEP). As far as emulators are concerned, if you are running KLH10, this document can be used as a step-by-step tutorial. Otherwise (if you're running SIMH, for instance), most of it will still be applicable (basically everything that is done in ITS), but you'll have to adapt everything that concerns the emulator. However, setting up in SIMH is close to setting up on a real PDP-10, so you can read that section.

In this document, I assume you have basic knowledge of ITS (that is, you know how to edit files, run programs, etc...). If not, you can read my ITS primer, or the ITS primer in .INFO.; ITS PRIMER on AI's filesystem.

If you have any questions or comments, feel free to contact me, but keep in mind that I am not an ITS wizard.

Running in KLH10

You'll need:

First steps

First of all, read the KLH10 documentation. It will tell you most of what you need to know.
If you are running GNU/Linux, I advise you patch KLH10 with Victor Bjorn's tun patch, in order to have the Unix host be able to communicate with the emulated PDP-10 by network. Then, just create a tun device and if needed, a /dev/tun0 symlink. You can now skip to setting up ITS.

Running an actual PDP-10

First of all, you'll have to make sure your hardware can run ITS. ITS runs on the KA-10 and KS-10, and needs special microcode. I can't help you much on that part.

Then, just read AI: KSHACK; BUILD DOC and follow the instructions. If you are running SIMH, do not verify the disk pack after formatting it. It will not work. It won't have errors either, anyway. You should find the MINSYS, DSKDMP, and Salvager tapes at Mirian's site. Pay attention to what disk you are using, and take the right tapes.

Setting up ITS

By now you should be able to run the PI distribution (I am not describing how to use KLH10, the documentation is good, just read it). Whether you've chosen to first run MD or PI, you may want to change the hostname; if not, I advise you run MD and not PI. Many programs have a list of known hosts hardcoded in them, and won't run on an ITS system whose name is not on the list; this list usually correspond to the MIT hosts from the golden age, and PI is not one of them (MD is, even though the Lisp compiler doesn't have it in its list).
The first you probably want to do, anyway, is set the time and date, using PDSET.

Changing the hostname

First of all, we need to reassemble the ITS monitor (monitor is what kernels used to be called back then), giving it its new name and IP address. It is very important that the IP address that ITS is running on (that is, the one the Unix host accesses it by as defined in KLH10's configuration file, not the Unix host's IP) be defined in the monitor configuration file. In order to do that, edit SYSTEM; CONFIG >. If you are using the AI filesystem from doomsday or the files in the MINSYS tape (that is, not the PI distribution), you need to first get a more recent SYSTEM; directory than the one on the MINSYS tape. Otherwise you're likely to encounter timing bugs that will freeze the system on boot. Take the one from AI's last snapshot.
I will not enter here the details of all configuration options; most definitions have comments to explain them. If you want to keep everything simple and use reasonable defaults, you can simply copy the configuration options of the PI system. Assuming you want to call your machine XY, you should thus have a section containing:

DEFVKS ; Initially use standard virtual KS10 config

DEFOPT IMPUS==51. ; IMP net host number (old-style)
DEFOPT IMPUS3==<IPADDR 192,168,0,51> ; IP address
DEFOPT NM%IMP==<IPADDR 255,255,255,0> ; Subnet mask
;DEFOPT PKTTRC==-1 ;Packet tracing code enabled

DEFINE ITSIRP BODY ; Has some local friends
] ; XY

XY is the name of the machine this configuration is for. You can pick any name that's at most 6 letters, but I strongly recommend the name to be only two letters; some programs somehow depend on that. My system, for instance, is called AI.
IMPUS3 should be set to ITS' IP address.
NM%IMP should be set to ITS' subnet mask.
Finally, the line IRPS ITS,,... tells the monitor what other ITS systems are on the network. You should put the names of the ITS you expect to have on your network. I also advise you keep the canonical ITS on this list.
By now, you should have this entry in SYSTEM; CONFIG >, and all the previous configuration options (you can see that this entry uses the macro DEFVKS that sets correct options to run on a simulated KS-10, so don't remove general options from the file. Well, in fact, SYSTEM; CONFIG > could use some cleaning, but I don't want to enter these details here)
Now that you have a good configuration file, assemble ITS. In HACTRN, type:

You will be prompted for a machine name. Type the machine name you have chosen (here, XY). Then, the monitor will be assembled. You should see output on your terminal, including, towards the end, lots of undefined symbols. This is normal.

Now you have a new monitor in SYSTEM; ITS BIN . To use it, the procedure differs whether you are using a real PDP-10 or SIMH, or KLH10.

If you are using a real PDP-10 or SIMH, you need to run DSKDMP, load the ITS monitor binary into core, load the Salvager into core, merge the two and then dump the core into a file named @ FOO (of course FOO can be any at most 6 letters name). Then you can start ITS by doing FOO$G in DDT. I'll let you look at the documentation of DSKDMP for more details.

If you are using KLH10, the functionality of DSKDMP is included in the emulator. It needs to have the monitor as a file on the Unix host. Therefore, the first thing to do is to get the ITS monitor binary on the Unix host. If you already have a network connection, you can FTP it out, otherwise just dump it on a virtual tape (see my ITS primer if you don't know how to do that.
Now that the binary is on the Unix host, we still need to merge it with the Salvager and dump the resulting core:

./kn10-ks /dev/null
load @.ddt-u
load @.nsalv-260-u
; replace by the name of the file that contains the Salvager
load itsbin.645xy-u ; idem
dump @.its-645xy-u ; ibidem

Now you can just load @.its-645xx-u with KLH10; you may want to update you KLH10 configuration file.

The first thing you probably want to do is add your hostname and IP address, those of the Unix host, and perhaps other you need, to SYSHST; H3TEXT >. The format of host entries is:
HOST : <IP address> : <hostname> : <machine type> : <operating system> : :
Therefore, you'll probably want something like:
HOST : : XY : PDP-10 : ITS : :

(Yes, I know does not exist on the Internet.)
Please note that routing uses old-style net-declaration (see the beginning of SYSHST; H3TEXT > to see what I mean), so you may need to add your provider's net to the list.

Then run H3MAKE BIN to rebuild the host table.

Updating programs and configuration files

As I said, many programs have harcoded lists of known hosts. If your hostname is one of the canonical ones (AI,MC,MD, etc.), you probably won't have much to change. Otherwise, you'll need to do several things:

Complete the filesystem

You should now have a usable ITS system, with networking. However, you may want to add some files and directories from the AI or MC filesystem (at the very least, the LISP directory, since LISP in the PI distribution is broken).
To do that, just grab the archives from Alan's site, put what you want on a tape using itstar:
$ tar xzf ai.tar.gz; cd AI
$ itstar -cf tape lisp/

and load them on the filesystem. In KLH10's console
KLH10> devmount mta0 tape
KLH10> continue

then on ITS:
_reload crdir links sorry
(Sometimes ITS gives you an RH11 error. In that case, just retry.)

Then unmount the tape, from the KLH10 console:
KLH10> devunmount mta0
KLH10> continue

Valid XHTML 1.0! Viewable With Any Browser Powered by GNU Emacs