File: itsbuild.html

package info (click to toggle)
simh 3.8.1-6.1
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 16,164 kB
  • sloc: ansic: 209,819; makefile: 324
file content (628 lines) | stat: -rw-r--r-- 16,984 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
<html>
<head>
<title>Building an ITS from scratch on the Supnik PDP-10 simulator</title>
<base href="http://www.cosmic.com/u/mirian/its/">
</head>
<body>
<h2>Building an ITS from scratch on the Supnik PDP-10 simulator</h2>
<pre>
     $Revision: 1.8 $
     $Date: 2003/07/20 19:38:11 $
</pre>
Copyright &copy; 2001,2003 Mirian Crzig Lennox<br>
Permission is granted to copy, distribute and/or modify this document
under the terms of the
<a href="http://www.gnu.org/copyleft/fdl.html">
GNU Free Documentation License</a>, Version 1.1
or any later version published by the Free Software Foundation.
<hr>

<h3><a name="start">Getting Started</a></h3>

First of all, it is assumed that you have read and understand
<tt>AI: KSHACK; BUILD DOC</tt>.

For your convenience, a copy is available
<a href="files/build.doc.txt">here</a>.
This file should be considered a companion to that document, not
a replacement.<p>

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

Materials you will need to install ITS:
<ul>
  <li>
      A working <tt>pdp10 </tt> executable from the
      <a href="http://simh.trailing-edge.com/">SIMH simulator</a>.
      This document assumes that SIMH V3.0 is being used.</li>
      
  <li>
      The RP06-based Salvager boot tape image
      <a href="files/salv.rp06.tape"><tt>salv.rp06.tape</tt></a>.</li>

  <li>
      The RP06-based <tt>DSKDMP</tt> boot tape image
      <a href="files/dskdmp.rp06.tape"><tt>dskdmp.rp06.tape</tt></a>.</li>

  <li>
      A <tt>MINSYS</tt> 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:
      <a href="files/minsys.tape"><tt>minsys.tape</tt></a>.</li>
</ul>

<h3><a name="conventions">
Conventions used in this document</a></h3>

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

The symbol <tt><b></b></tt> 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.<p>

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

<h3><a name="config">Configuring the Simulator</a></h3>

Create a file named <tt>init</tt> containing the following:

<pre>
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
</pre>

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

<ul>
  <li><code><b>set cpu its</b></code><br>
      This tells SIMH to simulate ITS IO and paging
      microcode, which differs significantly from the
      standard DEC microcode.</li>
  <li><code><b>set tim y2k</b></code><br>
      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.
  <li><code><b>at tu0 minsys.tape</b></code><br>
      Mount the <tt>MINSYS</tt> tape on tape unit 0.
  <li><code><b>at tu1 salv.rp06.tape</b></code><br>
      Mount the RP06 version of Salvager boot tape on tape unit 1.
  <li><code><b>at tu2 dskdmp.rp06.tape</b></code><br>
      Mount the RP06 version of <tt>DSKDMP</tt> boot tape on tape unit 2.
  <li><code><b>set rp0 rp06</b></code><br>
      Tell disk unit 0 that it will be simulating an RP06.
  <li><code><b>at rp0 rp0.dsk</b></code><br>
      This mounts the simulated disk image <tt>rp0.dsk</tt> on disk
      unit 0.  <em>However</em>, this image does not yet exist; it
      will be created by the simulator.
</ul>

<h3><a name="formatting">Formatting the disk image</a></h3>

Start the simulator with the configuration file you just made:

<pre>
$ <b>pdp10 init</b>

PDP-10 simulator V3.0-0
RP: creating new file
sim&gt;
</pre>

The <code>sim&gt;</code> is the front-end console prompt.  Typing
<code><b>help</b></code> 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&gt; <b>b tu1</b>
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-<tt>DDT</tt>.  In order to
call Salvager functions, you need to use <tt>DDT</tt> to call them.  Note
that <tt>$</tt> is the character printed by <tt>DDT</tt> when the Escape
key is typed, so when you see <tt>$</tt>, type the Escape key, not
a dollar sign.  Also, <tt>DDT</tt> prints a single quote <tt>'</tt>
whenever it recognizes a symbol for the first time; when you see a
<tt>'</tt> in the sample output below, you are not expected to
type this character.<p>

First, you need to &ldquo;mark&rdquo; (format) the disk, so type

<pre>
<b>MARK$G</b>'
Format pack on unit #<b>0</b>
Are you sure you want to format pack on drive # 0 (Y or N) <b>y</b>
Pack no?<b>0</b>
Pack 0., Drive #0 is serial #17.
Begin formatting 815. cylinders....Hardware formatting complete.
Verify pack? (Y or N) <b>n</b>
</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).<p>

You will then be asked for some filesystem parameters:

<pre>
Swapping Alloc? <b>3000</b>
Pack #0.  ID?<b>foobar</b>

DDT
</pre>

<p>
Of course, you can choose any name of six characters or less for the
Pack ID in place of &ldquo;foobar&rdquo; above.


<p>
The disk is now formatted, and the Salvager returns you to
<tt>DDT</tt>.
<p>
<b>Important note:</b> If you are using SIMH V3.0-0 <i>only</i>, you
will need to reboot the Salvager tape at this point.  This is because
of a bug in the &ldquo;read header&rdquo; 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>
<b>^E</b>

Simulation stopped, PC: 773131 (POPJ 1,0)
sim&gt; <b>b tu1</b>
ITS MTBOOT.176
</pre>

<h3><a name="minsys">Loading <tt>MINSYS</tt></a></h3>

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

<pre>
<b>TRAN$G</b>



onto unit #<b>0</b>
Copy from unit #5 onto unit #0, OK (Y or N) <b>y</b>
</pre>

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

<pre>
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
</pre>

<h3><a name="image">Building the ITS monitor image</a></h3>

Now it is time to halt the system and boot from the other boot
tape, <tt>DSKDMP</tt>.  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
<tt><b>^E</b></tt> (control-E).  Then, boot from tape unit 2, and
when the <tt>MTBOOT</tt> prompt comes up, start <tt>DSKDMP</tt> by
typing <tt>ESC-g</tt>

<pre>
<b>^E</b>

Simulation stopped, PC: 773035 (JRST 0,773034)
sim&gt; <b>b tu2</b>
ITS MTBOOT.176
<b>$G</b>

DSKDMP
</pre>

<tt>DSKDMP</tt> 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 <tt>.</tt> directory and to have
<tt>@</tt> as the first filename (the convention for standalone
executable files).<p>

Load a copy of standalone (Exec) <tt>DDT</tt> from <tt>.; @ DDT</tt> like
so:

<pre>
<b>l$ddt</b>
</pre>

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

<pre>
<b>t$its rp06</b>
</pre>

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

<pre>
<b>$U</b>
DSKDMP
</pre>

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

<pre>
<b>m$salv rp06</b>
</pre>

And finally, dump the whole thing out as <tt>.; @ ITS</tt> as
so:

<pre>
<b>d$its</b>
</pre>

You can list the <tt>.</tt> directory with the <tt>F</tt>
command:

<pre>
<b>f$</b>
#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   
</pre>

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

<h3><a name="booting">Booting the dumped ITS</a></h3>

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

<pre>
<b>its</b>
<b>$G</b>

Salvager 255


</pre>

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

<pre>
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 
</pre>

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

<pre>
<b>^Z</b>
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.)
</pre>

<h3><a name="pdset">Setting the correct time with <tt>PDSET</tt></a></h3>

The first thing you should do is to tell ITS the correct century,
date and time with <tt>PDSET</tt>:

<pre>
<b>:pdset</b>
(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.     
</pre>

The &ldquo;Please Log In&rdquo; message is a harmless reminder that you
haven't told ITS your login name yet.  It can be
ignored for now.

<p>First tell <tt>PDSET</tt> 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
<tt>!.</tt> (exclamation point, and then period).

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

<pre>
<b>20C</b>
<b>030720D</b>
<b>150200T</b>
<b>!.</b>
113375/ 0       770201,,513056  ___002 

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

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

<pre>
TARAKA DMPCPY .      _DMPCP OUTPUT WRITE  15:02:02
TARAKA DMPCPY .      @      ITS    DELRNM 15:02:02
</pre>

This is a normal function which <tt>TARAKA</tt> performs, and no cause
for alarm.

In any case, type <tt><b>q</b></tt> to leave the <tt>PDSET</tt> program.

<pre>
<b>Q</b>
:KILL
*
</pre>

<h3><a name="ksfedr">
Making the disk bootable, stage 1: <tt>KSFEDR</tt></a></h3>

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

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

:KILL
*
</pre>

The above sequence creats a front-end filesystem on your disk, and
write the RP06-specific bootstrap to it from the <tt>MINSYS</tt>
installation.  If this were a real KS10, you would also need to
write a microcode file, but the simulated KS10 doesn't need it.

<p>Make a note of the number after &ldquo;Directory address&rdquo;
(<tt>6600000004</tt> in the sample above).  You will need it in stage 2.

<p>Note that you must affirm your desire to scribble in the FE
filesystem with the full word &ldquo;yes&rdquo;; a simple
&ldquo;y&rdquo; is not sufficient.  Note also the <tt>.;</tt> (dot and
semicolon) before <tt>bt rp06</tt> in the input filename.

<p>Now use the <tt>LOCK</tt> program to take the system down, as so:

<pre>
<b>:lock</b>
(Please Log In)
LOCK.154

_<tt>5kill</tt>
DO YOU REALLY WANT THE SYSTEM TO GO DOWN?
<b>y</b>
___002 LOCK   SYS    DOWN   MAIL   WRITE  15:18:41

PLEASE ENTER A BRIEF MESSAGE TO USERS, ENDED BY ^C
</pre>

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

<pre>
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   
</pre>

<h3><a name="feset">
Making the disk bootable, stage 2: <tt>FESET</tt></a></h3>

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

<pre>
<b>^E</b>
Simulation stopped, PC: 773034 (PUSHJ 1,773130)
sim&gt; <b>b tu1</b>
ITS MTBOOT.176
</pre>

Use the <tt>FESET</tt> utility in Salvager to make the disk
bootable:

<pre>
<b>FESET$G</b>'
Set the FE filesystem directory pointer on the pack on unit #<b>0</b>
Directory address: <b>6600000004</b>

DDT
</pre>

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

<pre>
<b>^E</b>

Simulation stopped, PC: 773130 (SKIPN 5,32)
sim&gt; <b>quit</b>
Goodbye
$ 
</pre>

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

<pre>
at tu0 minsys.tape
at tu1 salv.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:

<pre>
b rp0
</pre>

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

<h3><a name="diskboot">Booting ITS from disk</a></h3>

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:

<pre>
$ <b>pdp10 boot</b>

PDP-10 simulator V3.0-0

DSKDMP
</pre>

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

<pre>
<b>its</b>
<b>$G</b>

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 
</pre>

Login with <tt>^Z</tt> and use <tt>PDSET</tt> as previously
described to set the current time.<p>

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

<hr>
Mirian Crzig Lennox<br>
</body>
</html>