Difference between revisions of "Installing ITS on SIMH"

From Computer History Wiki
Jump to: navigation, search
m (Fixed its.primer link)
m (Fix formatting)
Line 7: Line 7:
 
I've verified the following works, but all of the other ITS information on the web from wikipedia is missing... So just in case:
 
I've verified the following works, but all of the other ITS information on the web from wikipedia is missing... So just in case:
  
== Istallation ==
+
==Installation==
  
 
Building an ITS from scratch on the Supnik PDP-10 simulator
 
Building an ITS from scratch on the Supnik PDP-10 simulator
Line 14: Line 14:
  
 
Copyright © 2001,2003 Mirian Crzig Lennox
 
Copyright © 2001,2003 Mirian Crzig Lennox
 +
 
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation.  
 
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation.  
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
  
Getting Started
+
===Getting Started===
 +
 
 
First of all, it is assumed that you have read and understand AI: KSHACK; BUILD DOC. For your convenience, a copy is available here. This file should be considered a companion to that document, not a replacement.
 
First of all, it is assumed that you have read and understand AI: KSHACK; BUILD DOC. For your convenience, a copy is available here. This file should be considered a companion to that document, not a replacement.
ITS supports four different disk types: the RM03, the RM80, the RP06 and the RP07. Although these disk types are very different at the hardware level, from the simulator's point of view they differ only in capacity and geometry. This document uses the RP06 as an example; however, the procedure is similar for any of the other three disk types.
+
 
 +
ITS supports four different disk types: the RM03, the RM80, the [[RP06]] and the RP07. Although these disk types are very different at the hardware level, from the simulator's point of view they differ only in capacity and geometry. This document uses the RP06 as an example; however, the procedure is similar for any of the other three disk types.
  
 
Materials you will need to install ITS:  
 
Materials you will need to install ITS:  
  
A working pdp10 executable from the SIMH simulator. This document assumes that SIMH V3.0 is being used.  
+
* A working pdp10 executable from the SIMH simulator. This document assumes that SIMH V3.0 is being used.  
The RP06-based Salvager boot tape image salv.rp06.tape.  
+
* The RP06-based Salvager boot tape image salv.rp06.tape.  
The RP06-based DSKDMP boot tape image dskdmp.rp06.tape.  
+
* The RP06-based DSKDMP boot tape image dskdmp.rp06.tape.  
A MINSYS tape image. This is a DUMPER tape containing a minimal ITS bootstrap system. The contents of these may vary, however a usable one is available here: minsys.tape.  
+
* A MINSYS tape image. This is a DUMPER tape containing a minimal ITS bootstrap system. The contents of these may vary, however a usable one is available here: minsys.tape.
Conventions used in this document
+
 
 +
===Conventions used in this document===
 +
 
 
Throughout this document, sample output from the simulator is shown in typewriter font. Keyboard input required to be typed by the user is shown in bold typewriter font.
 
Throughout this document, sample output from the simulator is shown in typewriter font. Keyboard input required to be typed by the user is shown in bold typewriter font.
 +
 
The symbol « is used to indicate where a carriage return should be typed; this is necessary because ITS programs are not consistent about requiring a carriage return or not, and in cases where a carriage return is not expected by the program, the carriage return will be taken as input to the following query, which is likely to be incorrect.
 
The symbol « is used to indicate where a carriage return should be typed; this is necessary because ITS programs are not consistent about requiring a carriage return or not, and in cases where a carriage return is not expected by the program, the carriage return will be taken as input to the following query, which is likely to be incorrect.
  
 
The constructs ESC-g and ^C, where g and C represent any letter of the alphabet, have their usual meanings: ESC-g means to type the Escape key and then the letter g and ^C means to hold down the Control key and type the letter C.  
 
The constructs ESC-g and ^C, where g and C represent any letter of the alphabet, have their usual meanings: ESC-g means to type the Escape key and then the letter g and ^C means to hold down the Control key and type the letter C.  
  
Configuring the Simulator
+
===Configuring the Simulator===
Create a file named init containing the following:  
+
 
 +
Create a file named init containing the following:
 +
<pre>
 
set cpu its
 
set cpu its
 
set tim y2k
 
set tim y2k
Line 42: Line 50:
 
set rp0 rp06
 
set rp0 rp06
 
at rp0 rp0.dsk
 
at rp0 rp0.dsk
 +
</pre>
 +
This is the configuration file that the PDP-10 simulator will use; it contains commands which will be executed when pdp10 starts. The various lines are explained below:
 +
 +
''set cpu its''
  
This is the configuration file that the PDP-10 simulator will use; it contains commands which will be executed when pdp10 starts. The various lines are explained below:
 
set cpu its
 
 
This tells SIMH to simulate ITS IO and paging microcode, which differs significantly from the standard DEC microcode.  
 
This tells SIMH to simulate ITS IO and paging microcode, which differs significantly from the standard DEC microcode.  
set tim y2k
+
 
This tells the simulator that you are using a Y2K-aware operating system (which ITS is), so it can report the time correctly for the 21st century.  
+
''set tim y2k''
at tu0 minsys.tape
+
 
Mount the MINSYS tape on tape unit 0.  
+
This tells the simulator that you are using a Y2K-aware operating system (which ITS is), so it can report the time correctly for the 21st century.
at tu1 salv.rp06.tape
+
 
Mount the RP06 version of Salvager boot tape on tape unit 1.  
+
''at tu0 minsys.tape''
at tu2 dskdmp.rp06.tape
+
 
 +
Mount the MINSYS tape on tape unit 0.
 +
 
 +
''at tu1 salv.rp06.tape''
 +
 
 +
Mount the RP06 version of Salvager boot tape on tape unit 1.
 +
 +
''at tu2 dskdmp.rp06.tape''
 +
 
 
Mount the RP06 version of DSKDMP boot tape on tape unit 2.  
 
Mount the RP06 version of DSKDMP boot tape on tape unit 2.  
set rp0 rp06
+
 
 +
''set rp0 rp06''
 +
 
 
Tell disk unit 0 that it will be simulating an RP06.  
 
Tell disk unit 0 that it will be simulating an RP06.  
at rp0 rp0.dsk
+
 
 +
''at rp0 rp0.dsk''
 +
 
 
This mounts the simulated disk image rp0.dsk on disk unit 0. However, this image does not yet exist; it will be created by the simulator.  
 
This mounts the simulated disk image rp0.dsk on disk unit 0. However, this image does not yet exist; it will be created by the simulator.  
Formatting the disk image
+
 
Start the simulator with the configuration file you just made:  
+
===Formatting the disk image===
 +
 
 +
Start the simulator with the configuration file you just made:
 +
<pre>
 
$ pdp10 init«
 
$ pdp10 init«
  
Line 65: Line 90:
 
RP: creating new file
 
RP: creating new file
 
sim>
 
sim>
 
+
</pre>
The sim> is the front-end console prompt. Typing help to it gives a list and short description of the commands it understands. To prepare the initial disk image, you need to boot the Salvager tape:  
+
The sim> is the front-end console prompt. Typing help to it gives a list and short description of the commands it understands. To prepare the initial disk image, you need to boot the Salvager tape:
 +
<pre>
 
sim> b tu1«
 
sim> b tu1«
 
ITS MTBOOT.176
 
ITS MTBOOT.176
 
+
</pre>
 
The Salvager doesn't have a prompt or any command-line interface at all; at this point you are talking to Exec-DDT. In order to call Salvager functions, you need to use DDT to call them. Note that $ is the character printed by DDT when the Escape key is typed, so when you see $, type the Escape key, not a dollar sign. Also, DDT prints a single quote ' whenever it recognizes a symbol for the first time; when you see a ' in the sample output below, you are not expected to type this character.
 
The Salvager doesn't have a prompt or any command-line interface at all; at this point you are talking to Exec-DDT. In order to call Salvager functions, you need to use DDT to call them. Note that $ is the character printed by DDT when the Escape key is typed, so when you see $, type the Escape key, not a dollar sign. Also, DDT prints a single quote ' whenever it recognizes a symbol for the first time; when you see a ' in the sample output below, you are not expected to type this character.
First, you need to “mark” (format) the disk, so type
 
  
 +
First, you need to “mark” (format) the disk, so type:
 +
<pre>
 
MARK$G'
 
MARK$G'
 
Format pack on unit #0
 
Format pack on unit #0
Line 80: Line 107:
 
Begin formatting 815. cylinders....Hardware formatting complete.
 
Begin formatting 815. cylinders....Hardware formatting complete.
 
Verify pack? (Y or N) n«
 
Verify pack? (Y or N) n«
 
+
</pre>
 
Be sure you answer in the negative when asked to verify the pack. For technical reasons beyond the scope of this document, verification does not work (and isn't necessary anyway, since our simulated disk won't have any hardware errors).
 
Be sure you answer in the negative when asked to verify the pack. For technical reasons beyond the scope of this document, verification does not work (and isn't necessary anyway, since our simulated disk won't have any hardware errors).
 
You will then be asked for some filesystem parameters:  
 
You will then be asked for some filesystem parameters:  
 
+
<pre>
 
Swapping Alloc? 3000«
 
Swapping Alloc? 3000«
 
Pack #0.  ID?foobar«
 
Pack #0.  ID?foobar«
  
 
DDT
 
DDT
 
+
</pre>
 
Of course, you can choose any name of six characters or less for the Pack ID in place of “foobar” above.  
 
Of course, you can choose any name of six characters or less for the Pack ID in place of “foobar” above.  
  
Line 94: Line 121:
  
 
Important note: If you are using SIMH V3.0-0 only, you will need to reboot the Salvager tape at this point. This is because of a bug in the “read header” function in the RP device. The bug is fixed in V3.0-1 and later, so only users of V3.0-0 need to perform this step:  
 
Important note: If you are using SIMH V3.0-0 only, you will need to reboot the Salvager tape at this point. This is because of a bug in the “read header” function in the RP device. The bug is fixed in V3.0-1 and later, so only users of V3.0-0 need to perform this step:  
 
+
<pre>
 
^E
 
^E
  
Line 100: Line 127:
 
sim> b tu1«
 
sim> b tu1«
 
ITS MTBOOT.176
 
ITS MTBOOT.176
 +
</pre>
  
Loading MINSYS
+
===Loading MINSYS===
Now that you have a formatted disk, you need to load the minimal bootstrap ITS, called MINSYS. This is accomplished with the TRAN utility in Salvager:
 
TRAN$G
 
  
 +
Now that you have a formatted disk, you need to load the minimal bootstrap ITS, called MINSYS. This is accomplished with the TRAN utility in Salvager:
  
 +
: TRAN$G
  
 
onto unit #0
 
onto unit #0
Copy from unit #5 onto unit #0, OK (Y or N) y
 
  
“Unit #5” is just the Salvager's name for the tape drive. It has no real significance. Once you type y, a flood of filenames should scroll by as the MINSYS files are loaded. Each filename should be followed by OK to show that the file loaded without error. (The elipsis (...) indicates where the sample output has been trimmed for brevity.) When all the files have been transferred, EOT will be printed, followed by the DDT prompt:  
+
: Copy from unit #5 onto unit #0, OK (Y or N) y
 +
 
 +
“Unit #5” is just the Salvager's name for the tape drive. It has no real significance. Once you type y, a flood of filenames should scroll by as the MINSYS files are loaded. Each filename should be followed by OK to show that the file loaded without error. (The elipsis (...) indicates where the sample output has been trimmed for brevity.) When all the files have been transferred, EOT will be printed, followed by the DDT prompt:
 +
<pre>
 
Tape #0
 
Tape #0
 
.;@ DDT OK
 
.;@ DDT OK
Line 139: Line 169:
  
 
DDT
 
DDT
 +
</pre>
  
Building the ITS monitor image
+
===Building the ITS monitor image===
Now it is time to halt the system and boot from the other boot tape, DSKDMP. This is a standalone utility that allows us to build an executable image out of pieces and dump the results into a single image. To halt the simulator and return to the front-end console, type ^E (control-E). Then, boot from tape unit 2, and when the MTBOOT prompt comes up, start DSKDMP by typing ESC-g  
+
 
 +
Now it is time to halt the system and boot from the other boot tape, DSKDMP. This is a standalone utility that allows us to build an executable image out of pieces and dump the results into a single image. To halt the simulator and return to the front-end console, type ^E (control-E). Then, boot from tape unit 2, and when the MTBOOT prompt comes up, start DSKDMP by typing ESC-g
 +
<pre>
 
^E
 
^E
  
Line 150: Line 183:
  
 
DSKDMP
 
DSKDMP
 
+
</pre>
 
DSKDMP knows how to read an ITS filesystem and load files into memory (and write files back to disk). By default, filenames are expected to be in the . directory and to have @ as the first filename (the convention for standalone executable files).
 
DSKDMP knows how to read an ITS filesystem and load files into memory (and write files back to disk). By default, filenames are expected to be in the . directory and to have @ as the first filename (the convention for standalone executable files).
 
Load a copy of standalone (Exec) DDT from .; @ DDT like so:  
 
Load a copy of standalone (Exec) DDT from .; @ DDT like so:  
  
l$ddt«
+
: l$ddt«
  
Then load a copy of the ITS binary which is appropriate for the disk type you are using (.; ITS RP06 in our case). We use the T command which gives the file's symbols to DDT, and then starts DDT:  
+
Then load a copy of the ITS binary which is appropriate for the disk type you are using (.; ITS RP06 in our case). We use the T command which gives the file's symbols to DDT, and then starts DDT:
t$its rp06«
 
  
Now you are back in DDT, but you still need to go back to DSKDMP, so type ESC-u.  
+
: t$its rp06«
 +
 
 +
Now you are back in DDT, but you still need to go back to DSKDMP, so type ESC-u.
 +
<pre>
 
$U
 
$U
 
DSKDMP
 
DSKDMP
 +
</pre>
 +
Now merge in a copy of the Salvager binary appropriate for your disk type (RP06):
  
Now merge in a copy of the Salvager binary appropriate for your disk type (RP06):  
+
: m$salv rp06«
m$salv rp06«
 
  
And finally, dump the whole thing out as .; @ ITS as so:  
+
And finally, dump the whole thing out as .; @ ITS as so:
d$its«
 
  
You can list the . directory with the F command:  
+
: d$its«
 +
 
 +
You can list the . directory with the F command:
 +
<pre>
 
f$
 
f$
 
#00 @      ITS   
 
#00 @      ITS   
Line 190: Line 228:
 
#00 ITS    RM03   
 
#00 ITS    RM03   
 
#00 @      DDT   
 
#00 @      DDT   
 +
</pre>
 +
You should notice that the first filename in the listing is now @ ITS which is the file you just built.
 +
 +
===Booting the dumped ITS===
  
You should notice that the first filename in the listing is now @ ITS which is the file you just built.
 
Booting the dumped ITS
 
 
Now the big moment: time to boot that ITS image. First load it by typing its name, and then use ESC-g to start it:  
 
Now the big moment: time to boot that ITS image. First load it by typing its name, and then use ESC-g to start it:  
 +
<pre>
 
its«
 
its«
 
$G
 
$G
  
 
Salvager 255
 
Salvager 255
 
+
</pre>
 
+
If all goes well, you should soon start seeing bootup messages from ITS:
 
+
<pre>
If all goes well, you should soon start seeing bootup messages from ITS:  
 
 
DB ITS 1633 IN OPERATION
 
DB ITS 1633 IN OPERATION
 
DB ITS 1633 SYSTEM JOB USING THIS CONSOLE.
 
DB ITS 1633 SYSTEM JOB USING THIS CONSOLE.
Line 209: Line 249:
 
PLEASE SETLOC APPROPRIATELY.
 
PLEASE SETLOC APPROPRIATELY.
 
LOGIN  TARAKA 0  
 
LOGIN  TARAKA 0  
TOP LEVEL INTERRUPT 40 DETACHED JOB # 2, USR:TARAKA DRAGON  
+
TOP LEVEL INTERRUPT 40 DETACHED JOB # 2, USR:TARAKA DRAGON
 
+
</pre>
 
Now ITS is in full timesharing mode and waiting for you to log in on the console. Type ^Z to get its attention:  
 
Now ITS is in full timesharing mode and waiting for you to log in on the console. Type ^Z to get its attention:  
 +
<pre>
 
^Z
 
^Z
 
DB ITS.1633. DDT.1546.
 
DB ITS.1633. DDT.1546.
Line 229: Line 270:
 
Please don't use this program unless you know how.
 
Please don't use this program unless you know how.
 
You are certain to break something if you happen to hit the wrong key.
 
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.    
+
Type Control-Z to exit, or ? for a reminder of the commands.
 
+
</pre>
 
The “Please Log In” message is a harmless reminder that you haven't told ITS your login name yet. It can be ignored for now.  
 
The “Please Log In” message is a harmless reminder that you haven't told ITS your login name yet. It can be ignored for now.  
 
First tell PDSET the correct century, since it will assume it is in the 1900s by default. Then tell it the date and time in YYMMDD and HHMMSS format. Any line which is messed up can be re-entered. When you are satisfied that it is correct, type !. (exclamation point, and then period).  
 
First tell PDSET the correct century, since it will assume it is in the 1900s by default. Then tell it the date and time in YYMMDD and HHMMSS format. Any line which is messed up can be re-entered. When you are satisfied that it is correct, type !. (exclamation point, and then period).  
  
 
For example, on July 20, 2003 at 3:02PM, you would type:  
 
For example, on July 20, 2003 at 3:02PM, you would type:  
 
+
<pre>
 
20C
 
20C
 
030720D
 
030720D
Line 244: Line 285:
 
113374/ 0      3723    ___002  
 
113374/ 0      3723    ___002  
 
IT IS NOW  3:02:00 PM EDT, SUNDAY, JUL 20,2003
 
IT IS NOW  3:02:00 PM EDT, SUNDAY, JUL 20,2003
 
+
</pre>
Additionally, you may see some lines from TARAKA informing you that it is copying the ITS image.  
+
Additionally, you may see some lines from TARAKA informing you that it is copying the ITS image.
 +
<pre>
 
TARAKA DMPCPY .      _DMPCP OUTPUT WRITE  15:02:02
 
TARAKA DMPCPY .      _DMPCP OUTPUT WRITE  15:02:02
 
TARAKA DMPCPY .      @      ITS    DELRNM 15:02:02
 
TARAKA DMPCPY .      @      ITS    DELRNM 15:02:02
 
+
</pre>
 
This is a normal function which TARAKA performs, and no cause for alarm. In any case, type q to leave the PDSET program.  
 
This is a normal function which TARAKA performs, and no cause for alarm. In any case, type q to leave the PDSET program.  
 +
<pre>
 
Q
 
Q
 
:KILL
 
:KILL
 
*
 
*
 +
</pre>
  
Making the disk bootable, stage 1: KSFEDR
+
===Making the disk bootable, stage 1: KSFEDR===
 
Now it is time to make the disk bootable, so that tape images no longer need to be mounted. This is done with the KSFEDR program:  
 
Now it is time to make the disk bootable, so that tape images no longer need to be mounted. This is done with the KSFEDR program:  
 +
<pre>
 
:ksfedr«
 
:ksfedr«
 
(Please Log In)
 
(Please Log In)
Line 271: Line 316:
 
:KILL
 
:KILL
 
*
 
*
 
+
</pre>
 
The above sequence creats a front-end filesystem on your disk, and write the RP06-specific bootstrap to it from the MINSYS installation. If this were a real KS10, you would also need to write a microcode file, but the simulated KS10 doesn't need it.  
 
The above sequence creats a front-end filesystem on your disk, and write the RP06-specific bootstrap to it from the MINSYS installation. If this were a real KS10, you would also need to write a microcode file, but the simulated KS10 doesn't need it.  
 
Make a note of the number after “Directory address” (6600000004 in the sample above). You will need it in stage 2.  
 
Make a note of the number after “Directory address” (6600000004 in the sample above). You will need it in stage 2.  
Line 278: Line 323:
  
 
Now use the LOCK program to take the system down, as so:  
 
Now use the LOCK program to take the system down, as so:  
 
+
<pre>
 
:lock«
 
:lock«
 
(Please Log In)
 
(Please Log In)
Line 289: Line 334:
  
 
PLEASE ENTER A BRIEF MESSAGE TO USERS, ENDED BY ^C
 
PLEASE ENTER A BRIEF MESSAGE TO USERS, ENDED BY ^C
 
+
</pre>
Since you're the only one on the system, you can just type ^C. ITS will then complete the shutdown process (it takes about a minute):  
+
Since you're the only one on the system, you can just type ^C. ITS will then complete the shutdown process (it takes about a minute):
 +
<pre>
 
DB ITS going down in 5:00
 
DB ITS going down in 5:00
 
CULPRIT =  ___002 LOCK  15:19:06
 
CULPRIT =  ___002 LOCK  15:19:06
 
 
 
_
 
_
 
DB ITS 1633 NOT IN OPERATION 15:19:06
 
DB ITS 1633 NOT IN OPERATION 15:19:06
Line 304: Line 348:
 
YOU ARE NOW IN DDT.
 
YOU ARE NOW IN DDT.
 
BUGPC/  CAIA COFFI4+1  $Q-2/  JRST COFFI7   
 
BUGPC/  CAIA COFFI4+1  $Q-2/  JRST COFFI7   
 +
</pre>
  
Making the disk bootable, stage 2: FESET
+
===Making the disk bootable, stage 2: FESET===
Now that the system is down, type ^E to get to the simulator's front-end console, and boot from tape unit 1 (the Salvager) again:  
+
Now that the system is down, type ^E to get to the simulator's front-end console, and boot from tape unit 1 (the Salvager) again:
 +
<pre>
 
^E
 
^E
 
Simulation stopped, PC: 773034 (PUSHJ 1,773130)
 
Simulation stopped, PC: 773034 (PUSHJ 1,773130)
 
sim> b tu1«
 
sim> b tu1«
 
ITS MTBOOT.176
 
ITS MTBOOT.176
 
+
</pre>
Use the FESET utility in Salvager to make the disk bootable:  
+
Use the FESET utility in Salvager to make the disk bootable:
 +
<pre>
 
FESET$G'
 
FESET$G'
 
Set the FE filesystem directory pointer on the pack on unit #0
 
Set the FE filesystem directory pointer on the pack on unit #0
Line 318: Line 365:
  
 
DDT
 
DDT
 
+
</pre>
The directory address is the one you got from KSFEDR in stage 1. Now type ^E to get back to the simulator front-end console and type quit to leave the simulator altogether:  
+
The directory address is the one you got from KSFEDR in stage 1. Now type ^E to get back to the simulator front-end console and type quit to leave the simulator altogether:
 +
<pre>
 
^E
 
^E
  
Line 326: Line 374:
 
Goodbye
 
Goodbye
 
$  
 
$  
 
+
</pre>
Now copy the configuration file, init, that you made at the beginning of this procedure, to the new name boot. Edit boot with a text editor and remove the following three lines:  
+
Now copy the configuration file, init, that you made at the beginning of this procedure, to the new name boot. Edit boot with a text editor and remove the following three lines:
 +
<pre>
 
at tu0 minsys.tape
 
at tu0 minsys.tape
 
at tu1 salv.rp06.tape
 
at tu1 salv.rp06.tape
 
at tu2 dskdmp.rp06.tape
 
at tu2 dskdmp.rp06.tape
 +
</pre>
 +
since the tape images aren't needed anymore. Then add this line to the bottom of the file:
 +
 +
: b rp0
 +
 +
This tells the simulator to immediately boot from disk unit 0 when it is started.
  
since the tape images aren't needed anymore. Then add this line to the bottom of the file:
+
===Booting ITS from disk===
b rp0
 
  
This tells the simulator to immediately boot from disk unit 0 when it is started.
+
Now it is time to try out the new bootable disk you just made. Note that this piece of the installation is the normal bootup procedure for ITS and needs to be done every time you want to bring up the system:
Booting ITS from disk
+
<pre>
Now it is time to try out the new bootable disk you just made. Note that this piece of the installation is the normal bootup procedure for ITS and needs to be done every time you want to bring up the system:  
 
 
$ pdp10 boot«
 
$ pdp10 boot«
  
Line 343: Line 396:
  
 
DSKDMP
 
DSKDMP
 
+
</pre>
As before, load the standalone .; @ ITS from disk and start it with ESC-g as so:  
+
As before, load the standalone .; @ ITS from disk and start it with ESC-g as so:
 +
<pre>
 
its«
 
its«
 
$G
 
$G
Line 351: Line 405:
  
 
.TEMP. has no files, User File Directory DELETED
 
.TEMP. has no files, User File Directory DELETED
 
  
 
DB ITS 1633 IN OPERATION
 
DB ITS 1633 IN OPERATION
Line 359: Line 412:
 
LOGIN  TARAKA 0  
 
LOGIN  TARAKA 0  
 
TOP LEVEL INTERRUPT 40 DETACHED JOB # 2, USR:TARAKA DRAGON  
 
TOP LEVEL INTERRUPT 40 DETACHED JOB # 2, USR:TARAKA DRAGON  
 +
</pre>
 +
Login with ^Z and use PDSET as previously described to set the current time.
  
Login with ^Z and use PDSET as previously described to set the current time.
 
 
At this point, you have a minimal multiuser ITS system.  
 
At this point, you have a minimal multiuser ITS system.  
  
  
--------------------------------------------------------------------------------
+
-------------------------------------------------------------------------------
 
Mirian Crzig Lennox
 
Mirian Crzig Lennox
  
 
 
 
{{stub}}
 
 
[[Category:SIMH Tutorials]]
 
[[Category:SIMH Tutorials]]

Revision as of 20:55, 18 October 2017

For now some links, I have full intentions of installing ITS though.... It's all Zork related.

http://www.cosmic.com/u/mirian/its/

http://www.avanthar.com/~healyzh/_info_/its.primer

I've verified the following works, but all of the other ITS information on the web from wikipedia is missing... So just in case:

Installation

Building an ITS from scratch on the Supnik PDP-10 simulator

    $Revision: 1.8 $
    $Date: 2003/07/20 19:38:11 $

Copyright © 2001,2003 Mirian Crzig Lennox

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation.


Getting Started

First of all, it is assumed that you have read and understand AI: KSHACK; BUILD DOC. For your convenience, a copy is available here. This file should be considered a companion to that document, not a replacement.

ITS supports four different disk types: the RM03, the RM80, the RP06 and the RP07. Although these disk types are very different at the hardware level, from the simulator's point of view they differ only in capacity and geometry. This document uses the RP06 as an example; however, the procedure is similar for any of the other three disk types.

Materials you will need to install ITS:

  • A working pdp10 executable from the SIMH simulator. This document assumes that SIMH V3.0 is being used.
  • The RP06-based Salvager boot tape image salv.rp06.tape.
  • The RP06-based DSKDMP boot tape image dskdmp.rp06.tape.
  • A MINSYS tape image. This is a DUMPER tape containing a minimal ITS bootstrap system. The contents of these may vary, however a usable one is available here: minsys.tape.

Conventions used in this document

Throughout this document, sample output from the simulator is shown in typewriter font. Keyboard input required to be typed by the user is shown in bold typewriter font.

The symbol « is used to indicate where a carriage return should be typed; this is necessary because ITS programs are not consistent about requiring a carriage return or not, and in cases where a carriage return is not expected by the program, the carriage return will be taken as input to the following query, which is likely to be incorrect.

The constructs ESC-g and ^C, where g and C represent any letter of the alphabet, have their usual meanings: ESC-g means to type the Escape key and then the letter g and ^C means to hold down the Control key and type the letter C.

Configuring the Simulator

Create a file named init containing the following:

 
set cpu its
set tim y2k
at tu0 minsys.tape
at tu1 salv.rp06.tape
at tu2 dskdmp.rp06.tape
set rp0 rp06
at rp0 rp0.dsk

This is the configuration file that the PDP-10 simulator will use; it contains commands which will be executed when pdp10 starts. The various lines are explained below:

set cpu its

This tells SIMH to simulate ITS IO and paging microcode, which differs significantly from the standard DEC microcode.

set tim y2k

This tells the simulator that you are using a Y2K-aware operating system (which ITS is), so it can report the time correctly for the 21st century.

at tu0 minsys.tape

Mount the MINSYS tape on tape unit 0.

at tu1 salv.rp06.tape

Mount the RP06 version of Salvager boot tape on tape unit 1.

at tu2 dskdmp.rp06.tape

Mount the RP06 version of DSKDMP boot tape on tape unit 2.

set rp0 rp06

Tell disk unit 0 that it will be simulating an RP06.

at rp0 rp0.dsk

This mounts the simulated disk image rp0.dsk on disk unit 0. However, this image does not yet exist; it will be created by the simulator.

Formatting the disk image

Start the simulator with the configuration file you just made:

 
$ pdp10 init«

PDP-10 simulator V3.0-0
RP: creating new file
sim>

The sim> is the front-end console prompt. Typing help to it gives a list and short description of the commands it understands. To prepare the initial disk image, you need to boot the Salvager tape:

 
sim> b tu1«
ITS MTBOOT.176

The Salvager doesn't have a prompt or any command-line interface at all; at this point you are talking to Exec-DDT. In order to call Salvager functions, you need to use DDT to call them. Note that $ is the character printed by DDT when the Escape key is typed, so when you see $, type the Escape key, not a dollar sign. Also, DDT prints a single quote ' whenever it recognizes a symbol for the first time; when you see a ' in the sample output below, you are not expected to type this character.

First, you need to “mark” (format) the disk, so type:

 
MARK$G'
Format pack on unit #0
Are you sure you want to format pack on drive # 0 (Y or N) y
Pack no?0«
Pack 0., Drive #0 is serial #17.
Begin formatting 815. cylinders....Hardware formatting complete.
Verify pack? (Y or N) n«

Be sure you answer in the negative when asked to verify the pack. For technical reasons beyond the scope of this document, verification does not work (and isn't necessary anyway, since our simulated disk won't have any hardware errors). You will then be asked for some filesystem parameters:

 
Swapping Alloc? 3000«
Pack #0.  ID?foobar«

DDT

Of course, you can choose any name of six characters or less for the Pack ID in place of “foobar” above.

The disk is now formatted, and the Salvager returns you to DDT.

Important note: If you are using SIMH V3.0-0 only, you will need to reboot the Salvager tape at this point. This is because of a bug in the “read header” function in the RP device. The bug is fixed in V3.0-1 and later, so only users of V3.0-0 need to perform this step:

 
^E

Simulation stopped, PC: 773131 (POPJ 1,0)
sim> b tu1«
ITS MTBOOT.176

Loading MINSYS

Now that you have a formatted disk, you need to load the minimal bootstrap ITS, called MINSYS. This is accomplished with the TRAN utility in Salvager:

TRAN$G

onto unit #0

Copy from unit #5 onto unit #0, OK (Y or N) y

“Unit #5” is just the Salvager's name for the tape drive. It has no real significance. Once you type y, a flood of filenames should scroll by as the MINSYS files are loaded. Each filename should be followed by OK to show that the file loaded without error. (The elipsis (...) indicates where the sample output has been trimmed for brevity.) When all the files have been transferred, EOT will be printed, followed by the DDT prompt:

 
Tape #0
.;@ DDT OK

.;ITS RM03 OK

.;ITS RM80 OK

.;ITS RP06 OK

.;ITS RP07 OK

.;SALV RM03 OK

.;SALV RM80 OK

.;SALV RP06 OK

...

SYS2;TS FTP OK

DEVICE;TCP SYN025 OK

SYS;SYSTEM MAIL OK

EOT

DDT

Building the ITS monitor image

Now it is time to halt the system and boot from the other boot tape, DSKDMP. This is a standalone utility that allows us to build an executable image out of pieces and dump the results into a single image. To halt the simulator and return to the front-end console, type ^E (control-E). Then, boot from tape unit 2, and when the MTBOOT prompt comes up, start DSKDMP by typing ESC-g

 
^E

Simulation stopped, PC: 773035 (JRST 0,773034)
sim> b tu2«
ITS MTBOOT.176
$G

DSKDMP

DSKDMP knows how to read an ITS filesystem and load files into memory (and write files back to disk). By default, filenames are expected to be in the . directory and to have @ as the first filename (the convention for standalone executable files). Load a copy of standalone (Exec) DDT from .; @ DDT like so:

l$ddt«

Then load a copy of the ITS binary which is appropriate for the disk type you are using (.; ITS RP06 in our case). We use the T command which gives the file's symbols to DDT, and then starts DDT:

t$its rp06«

Now you are back in DDT, but you still need to go back to DSKDMP, so type ESC-u.

 
$U
DSKDMP

Now merge in a copy of the Salvager binary appropriate for your disk type (RP06):

m$salv rp06«

And finally, dump the whole thing out as .; @ ITS as so:

d$its«

You can list the . directory with the F command:

 
f$
#00 @      ITS   
#00 RAM    RAM   
#00 BT     RP07  
#00 BT     RP06  
#00 BT     RM80  
#00 BT     RM03  
#00 DSKDMP RP07  
#00 DSKDMP RP06  
#00 DSKDMP RM80  
#00 DSKDMP RM03  
#00 SALV   RP07  
#00 SALV   RP06  
#00 SALV   RM80  
#00 SALV   RM03  
#00 ITS    RP07  
#00 ITS    RP06  
#00 ITS    RM80  
#00 ITS    RM03  
#00 @      DDT   

You should notice that the first filename in the listing is now @ ITS which is the file you just built.

Booting the dumped ITS

Now the big moment: time to boot that ITS image. First load it by typing its name, and then use ESC-g to start it:

its«
$G

Salvager 255

If all goes well, you should soon start seeing bootup messages from ITS:

DB ITS 1633 IN OPERATION
DB ITS 1633 SYSTEM JOB USING THIS CONSOLE.
THE KS-10 CLOCK HAS BEEN RESET, IF THE TIME CANNOT
BE DETERMINED FROM THE NETWORK, YOU MAY HAVE TO :PDSET
YEAR, PDTIME OFFSET, NOT ON DISK.
PLEASE SETLOC APPROPRIATELY.
LOGIN  TARAKA 0 
TOP LEVEL INTERRUPT 40 DETACHED JOB # 2, USR:TARAKA DRAGON

Now ITS is in full timesharing mode and waiting for you to log in on the console. Type ^Z to get its attention:

 
^Z
DB ITS.1633. DDT.1546.
TTY 0
You're all alone, Fair share = 99%

(ITS does not know the date, so messages cannot be reviewed right now.)

Setting the correct time with PDSET
The first thing you should do is to tell ITS the correct century, date and time with PDSET: 
: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.

The “Please Log In” message is a harmless reminder that you haven't told ITS your login name yet. It can be ignored for now. First tell PDSET the correct century, since it will assume it is in the 1900s by default. Then tell it the date and time in YYMMDD and HHMMSS format. Any line which is messed up can be re-entered. When you are satisfied that it is correct, type !. (exclamation point, and then period).

For example, on July 20, 2003 at 3:02PM, you would type:

 
20C
030720D
150200T
!.
113375/ 0       770201,,513056  ___002 

113374/ 0       3723    ___002 
IT IS NOW  3:02:00 PM EDT, SUNDAY, JUL 20,2003

Additionally, you may see some lines from TARAKA informing you that it is copying the ITS image.

 
TARAKA DMPCPY .      _DMPCP OUTPUT WRITE  15:02:02
TARAKA DMPCPY .      @      ITS    DELRNM 15:02:02

This is a normal function which TARAKA performs, and no cause for alarm. In any case, type q to leave the PDSET program.

 
Q
:KILL
*

Making the disk bootable, stage 1: KSFEDR

Now it is time to make the disk bootable, so that tape images no longer need to be mounted. This is done with the KSFEDR program:

 
:ksfedr«
(Please Log In)
ERROR: File not found:  PK0000: .; .FEFS. PK0000
!create«
___002 KSFEDR .      .FEFS. PK0000 WRITE  15:06:01
FE filesystem DSK: .; .FEFS. PK0000 on pack #0.
Directory address: 6600000004
!write«
Are you sure you want to scribble in the FE filesystem?  yes«
Which file? bt«
Input from (Default DSK: ___004; BT BIN): .;bt rp06«
!quit«

:KILL
*

The above sequence creats a front-end filesystem on your disk, and write the RP06-specific bootstrap to it from the MINSYS installation. If this were a real KS10, you would also need to write a microcode file, but the simulated KS10 doesn't need it. Make a note of the number after “Directory address” (6600000004 in the sample above). You will need it in stage 2.

Note that you must affirm your desire to scribble in the FE filesystem with the full word “yes”; a simple “y” is not sufficient. Note also the .; (dot and semicolon) before bt rp06 in the input filename.

Now use the LOCK program to take the system down, as so:

 
:lock«
(Please Log In)
LOCK.154

_5kill
DO YOU REALLY WANT THE SYSTEM TO GO DOWN?
y
___002 LOCK   SYS    DOWN   MAIL   WRITE  15:18:41

PLEASE ENTER A BRIEF MESSAGE TO USERS, ENDED BY ^C

Since you're the only one on the system, you can just type ^C. ITS will then complete the shutdown process (it takes about a minute):

DB ITS going down in 5:00
CULPRIT =  ___002 LOCK   15:19:06
_
DB ITS 1633 NOT IN OPERATION 15:19:06
PFTHMG DRAGON CHANNA _DRGN_ TIMES  WRITE  15:19:06
PFTHMG DRAGON CHANNA LOGOUT TIMES  DELRNM 15:19:06

SHUTDOWN COMPLETE  
PI LEVEL 7 BUGDDT.  TYPE <ALTMODE>P TO CONTINUE.
YOU ARE NOW IN DDT.
BUGPC/   CAIA COFFI4+1   $Q-2/   JRST COFFI7   

Making the disk bootable, stage 2: FESET

Now that the system is down, type ^E to get to the simulator's front-end console, and boot from tape unit 1 (the Salvager) again:

 
^E
Simulation stopped, PC: 773034 (PUSHJ 1,773130)
sim> b tu1«
ITS MTBOOT.176

Use the FESET utility in Salvager to make the disk bootable:

FESET$G'
Set the FE filesystem directory pointer on the pack on unit #0
Directory address: 6600000004«

DDT

The directory address is the one you got from KSFEDR in stage 1. Now type ^E to get back to the simulator front-end console and type quit to leave the simulator altogether:

 
^E

Simulation stopped, PC: 773130 (SKIPN 5,32)
sim> quit«
Goodbye
$ 

Now copy the configuration file, init, that you made at the beginning of this procedure, to the new name boot. Edit boot with a text editor and remove the following three lines:

 
at tu0 minsys.tape
at tu1 salv.rp06.tape
at tu2 dskdmp.rp06.tape

since the tape images aren't needed anymore. Then add this line to the bottom of the file:

b rp0

This tells the simulator to immediately boot from disk unit 0 when it is started.

Booting ITS from disk

Now it is time to try out the new bootable disk you just made. Note that this piece of the installation is the normal bootup procedure for ITS and needs to be done every time you want to bring up the system:

 
$ pdp10 boot«

PDP-10 simulator V3.0-0

DSKDMP

As before, load the standalone .; @ ITS from disk and start it with ESC-g as so:

 
its«
$G

Salvager 255

.TEMP. has no files, User File Directory DELETED

DB ITS 1633 IN OPERATION
DB ITS 1633 SYSTEM JOB USING THIS CONSOLE.
THE KS-10 CLOCK HAS BEEN RESET, IF THE TIME CANNOT
BE DETERMINED FROM THE NETWORK, YOU MAY HAVE TO :PDSET
LOGIN  TARAKA 0 
TOP LEVEL INTERRUPT 40 DETACHED JOB # 2, USR:TARAKA DRAGON 

Login with ^Z and use PDSET as previously described to set the current time.

At this point, you have a minimal multiuser ITS system.



Mirian Crzig Lennox