Presentation
The following post is written as a recipe. If you have a system with the gcc compiler, such as GNU/Linux, you will only have to copy and paste what I put in the boxes and in less than 10-15 minutes you will have a working ITS system.
One recommendation is that once you have it, you make a backup, since we will be working on a disk image, and if it gets damaged we will be able to restore from the backup. Another reason is that the image (of which I give a URL) is ‘retired’ from the internet, so if at some point it disappears from where it is, it could be hard to locate it again.
In another post I will describe in more detail the features of this OS and how to carry out different tasks; this post will only cover the installation. We will use klh10, which is a PDP-10 emulator.
Installation
– Creating the directories for the installation:
#export KLH10_HOME=$HOME/ITS
mkdir -p $HOME/ITS
cd $HOME/ITS
– We get the latest version of the klh10 emulator by Ken Harrenstien:
wget http://klh10.trailing-edge.com/klh10-2.0a.tgz
wget http://klh10.trailing-edge.com/klh10-2.0a-aux.tgz
– And we get the disk image of a fully functional ITS system:
wget http://free.babolo.ru/src/PI-ITS-RP06.0-dbd9.bz2
– We unpack the files:
tar xfz klh10-2.0a.tgz
tar xfz klh10-2.0a-aux.tgz
bunzip2 PI-ITS-RP06.0-dbd9.bz2
– Now we are going to compile the emulator. IMPORTANT NOTE: you have to use gcc-3.4, it does not work with the gcc 4 versions. The most normal thing is that if you have a recent GNU/Linux distribution, you have gcc version four installed, so you will have to install version three. To check the gcc version:
gcc --version
gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
– If we do not have 3.4, we will be able to install it without problems since the two versions can coexist and when we finish we will be able to uninstall it; we do this as root if you are on a Debian GNU/Linux distribution or similar:
sudo apt-get install gcc-3.4
– Now we are going to modify the Makefile so that it uses our gcc-3.4 compiler:
mv klh10-2.0a/src/Makefile.mk klh10-2.0a/src/Makefile.mk.orig
cat klh10-2.0a/src/Makefile.mk.orig | sed s/cc/gcc-3.4/g > klh10-2.0a/src/Makefile.mk
– Once we have it modified, we compile it; in our case it is an x86 linux, so we go to the appropriate directory, and run make.
cd klh10-2.0a/bld/lnx86
make base-ks-its
When we finish compiling, we will copy all the executable files to our working directory (without running ‘make install’).
cp dpimp dptm03 dprpxx kn10-ks tapedd udlconv vdkfmt wfconv wxtest $HOME/ITS
##make install
cd $HOME/ITS
cp -p klh10-2.0a/run/ksits/* .
– If we want to use the network, we have to run the emulator as root, or give setuid to the network driver:
sudo chown root dpimp; chmod 4750 dpimp
Execution
– Ready, we are now prepared for the first run. I will intersperse explanations preceded by three dashes (—)
./kn10-ks klh10-pi.ini
KLH10 V2.0A release (MyITS) built May 10 2008 10:40:00
...
...
...
Data: 65470, Symwds: 0, Low: 01, High: 0777266, Startaddress: 0144430
KLH10>
KLH10> ; go 774000 ; to start DDT, else "go" to start ITS
KLH10>
KLH10> [EOF on klh10-pi.ini]
--- we jump to DDT
KLH10> go 774000
--- the first run is a bit complicated
Starting KN10 at loc 0774000...
--- when it stops (the prompt does NOT appear) we type 'its' and press 'enter'
--- it will answer by putting a U after ITS
--- then we press 'esc' and hit G, DDT answers with $G
ITSU $G
Salvager 260
.TEMP. has no files, User File Directory DELETED
[dpimp: Using default interface "eth0"]
[dpimp: ifc "eth0" => ether 0:1d:92:62:cf:6f]
[dpimp: inet 172.24.96.3]
[dpimp: netmask 255.255.255.0]
[dpimp: net 172.24.96.0]
[dpimp: HOST: 199.34.53.51]
[dpimp: gwdef 199.34.53.50]
[dpimp: no native ARP entry, assuming shared ifc]
THE KS-10 CLOCK HAS BEEN RESET, IF THE TIME CANNOT
BE DETERMINED FROM THE NETWORK, YOU MAY HAVE TO :PDSET
PI ITS 1647 IN OPERATION
PI ITS 1647 SYSTEM JOB USING THIS CONSOLE.
LOGIN TARAKA 0
Attention!
Attention!
The time could not be set because:
No host responded.
It will be necessary for someone to set the time
manually by logging in and running :PDSET.
TARAKA NETIME IOTLSR
PI ITS 1647 SYSTEM JOB USING THIS CONSOLE.
--- ready, we can now open a session, to do so press ^Z (control z)
PI ITS.1647. DDT.1545.
TTY 0
You're all alone, Fair share = 0%
(ITS does not know the date, so messages cannot be reviewed right now.)
--- and we are now in the 'shell' of ITS.
--- we can see the contents of the directory with :listf sys
:listf sys
PI SYS
FREE BLOCKS #0=17615
L .FASL DEFS LISP .FASL DEFS
L 2OPS2 OPS SAIL 2OPS2 OPS
0 :MSGS TIMES 4 ! 3/21/102 22:18:38
0 ATSIGN CHAOS 1 ! 1/16/81 16:34:48
0 ATSIGN DDT 40 ! 3/18/90 12:02:11
0 ATSIGN DEVICE 1 ! 12/18/89 19:51:44
L ATSIGN DRAGON CHANNA ATSIGN TARAKA
0 ATSIGN HACTRN 40 ! 8/14/90 02:07:30
L ATSIGN LISP SYS PURQIO >
0 ATSIGN ODDT 40 ! 11/26/88 16:23:57
0 ATSIGN ODEVIC 1 ! 9/19/88 21:13:37
0 ATSIGN OPWORD 28 ! 4/1/87 04:24:35
L ATSIGN PEEK SYS TS PEEK
0 ATSIGN PWORD 28 ! 8/2/89 21:54:13
...
0 TS TTYSWP 1 ! 11/11/76 17:18:17
0 TS TYPE8 1 ! 11/14/83 05:05:13
0 TWXBTS 29 35 ! 3/25/81 13:01:09
0 TWXDFS 8 2 ! 3/24/81 21:52:07
--- We will be able to run :version
*:version
PI ITS.1647. DDT.1545.
TTY 0
--- We will also be able to run :emacs
*:emacs
(Please Log In)
EMACS Editor, version 162 - type Help(^_H) for help.
– To exit the emulator :
---we press ^\ (that is Control-AltGr-\) and type shutdown
KLH10> shutdown
Continuing KN10 at loc 05600...
SWITCH 0 IS UP
PI LEVEL 7 BUGDDT. TYPE <ALTMODE>P TO CONTINUE.
YOU ARE NOW IN DDT.
BUGPC/ CAIA CLQBRT+3 $Q-2/ SKIPE 8SWIT0
[HALTED: FE interrupt]
KLH10>
---we press ^\ again (that is Control-AltGr-\) and type quit
KLH10> quit
Are you sure you want to quit? [Confirm]y
Shutting down...Bye!
– For the following runs, you can directly type go at the KLH10> prompt
KLH10> go
Starting KN10 at loc 0144430...
Salvager 260
.TEMP. has no files, User File Directory DELETED
--- wait for it to normalise and we can now open a session, to do so press ^Z (control z)
Basic configuration:
– For the system to work correctly, we have to configure at least the date/time. The way to do it is through :pdset
, below it is shown how to configure the date 10 May 2008, and 16:40. Seeing how the numbers fit together it is easy to deduce the format.
:pdset
(Please Log In)
___002 PDSET IOTLSR
PDSET.114
Please don't use this program unless you know how.
You are certain to break something if you happen to hit the wrong key.
Type Control-Z to exit, or ? for a reminder of the commands.
20C
080510D
164000T
!.
141427/ 777651,,662253 772754,,224545 ___002
141426/ 3722 3730 ___002 16:40:00
IT IS NOW 4:40:00 PM EDT, SATURDAY, MAY 10,2008
q
NOTES:
This emulator is very complex, you have to read the docs 🙂
Later I will write more about how to do certain things, for example, how to configure the network, or recompile the kernel.
Commands in ITS are preceded by a colon (:) and you can ask for help with 😕 or :info
Links of interest:
Documentation:
http://zane.brouhaha.com/~healyzh/sysdoc/sysdoc.htm
The reference manual :
ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-161A.pdf
DDT manual:
http://victor.se/bjorn/its/ddt.html
Maclisp manual;
http://www.maclisp.info/pitmanual/
Talk by Stallman where he talks about ITS, PDP10, emacs, etc ..