ITS on klh10

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

 

 

 

 

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 ..

http://www.gnu.org/philosophy/stallman-kth.html