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.
You'll need:
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.
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.
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
.
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:
IFE MCOND XY,[
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
IRPS ITS,,[XY AI MC MD ML]
BODY
TERMIN
TERMIN
] ; 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:
:MIDAS SYSTEM;_ITS
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
; replace by the name of the file that contains the
Salvager
load @.ddt-u
load @.nsalv-260-u
load itsbin.645xy-u
; idem
dump @.its-645xy-u
; ibidem
quit
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 : 192.168.0.51 : XY : PDP-10 : ITS : :
HOST : 10.152.10.15 : FOOBAR : PC : UNIX : :
(Yes, I know 10.152.10.15
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.
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:
SYSEN2; MLDEV >
has a list of hardcoded names
in two places. Add your hostname there, and re-assemble.SYSNET; TELSER >
(search
for PDP-10
to see where to add your hostname and greeting,
then re-assemble it.BUGHST
, DOMGAT
,
and TCPGAT
. At BUGHST
, put the IP of the host
that should get automatic bug-reports (you probably want the ITS machine
to get them, so put its IP); at DOMGAT
, put the IP of the
relay that COMSAT should use to send mail to hosts it cannot resolve. You
probably want to put the Unix host's IP here (unless you don't have an
SMTP that does internet delivery on it, in which case put the SMTP you
use); at TCPGAT
put the address of the host that should
handle external TCP/IP traffic (most probably the Unix host).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:
:DUMP
(Sometimes ITS gives you an RH11 error. In that case, just
retry.)
_reload crdir links sorry
_quit
Then unmount the tape, from the KLH10 console:
KLH10> devunmount mta0
KLH10> continue