1
0
mirror of https://github.com/PDP-10/its.git synced 2026-04-28 21:08:01 +00:00

Updated info;tips > to include information on how to add an additional disk to ITS.

This commit is contained in:
Eric Swenson
2020-12-31 21:32:04 +00:00
parent 71bc19c1a2
commit 6eaacb8e7f

466
doc/info/tips.2 Normal file
View File

@@ -0,0 +1,466 @@
-*-Text-*-

File: TIPS Node: TOP Up: (DIR) Next: DSKDMP
This is a collection of tips, recipes, and hints, regarding the use of
ITS. It is not intended to provide in-depth information about any
specific subject and may, if details exist elsewhere, refer the reader
to other documentation.
* Menu:
* DSKDMP:: Some useful hints about using DSKDMP
* Debugging JOB Devices:: Instructions on how to debug JOB devices
* Assembling a new ITS:: Instructions on assembling a new ITS
* Adding an additional disk:: Instructions on adding an additional disk to ITS

File: TIPS, Node: DSKDMP, Previous: TOP, Up: TOP, Next: Debugging JOB Devices
This topic describes some hints about how to use DSKDMP to manage
the boot files, ITS, and other programs invoked on the operator
console priot to starting ITS.
* Menu:
* Creating a Bootable ITS Image:: How to create a bootable ITS image

File: TIPS, Node: Debugging JOB Devices, Up: TOP, Next: Assembling a new ITS
ITS supports custom device handlers by using the JOB: device. Links to "virtual"
devices are create in the DEVICE directory, such as:
DEVICE; JOBDEV DB => DEVICE; ATSIGN MLDEV
The program DEVICE; ATSIGN MLDEV is called a BDH (BOJ Device Handler) and is
invoked when attempting to perform i/o on a device whose name appears in the FN2
of a DEVICE; JOBDEV <fn2> entry -- in this case, "DB:". The JOB and BOJ devices
are described in SYSDOC; JOB > and all the information contained in that document
is not duplicated here. Refer to that document for basic information, including
high level instructions on how to debug BDHs. This INFO entry, gives an example
of how to debug the MLDEV BDH. A similar method can be used to debug any BDH.
The scenario is as follows: You discover that a job fails or an attempt to access
a file using MLDEV gets an error. Say, for example, that you attempt the following
command:
:listf no:sys;
where a link exists on your system from DEVICE; JOBDEV NO to DEVICE; ATSIGN MLDEV.
And when you do this, you can an error or a hang in the job and you discover that
there is a dead MLDEV job hanging around (perhaps it did a .VALUE). You in PEEK,
these jobs appears to have a JNAME of JOB.NN. You want to debug why this is
happening.
You need two login sessions to debug this easily -- two HACTRNs. Assume in you
logged into one as EJS. First, create a job:
mldev$j
Then, load in the MLDEV binary:
$L device;atsign mldev
Patch the value of .OPTION to enable the %opojb bit (2000):
*.option/ 30000,,0 32000,,0
Set a breakpoint that will be hit when the BDH is invoked:
go+4$b
Start the BDH going:
$0g
$p
In another HACTRN, say logged in as EJS0, set up a translation so that attempts
to access the NO device will invoke the BDH under debug:
$^t no:,ojb:ejs;ejs mldev
Note: the two EJS instances above refer to the logged in HACTRN where MLDEV is being
debugged. The MLDEV refers to the JNAME of the JOB being debugged.
Now, in this HACTRN, access the NO device in whatever way you want. The easiest
way is to simply reference the device in a LISTF command:
:listf no:sys;
This will appear to hang, but in the debugging HACTRN, your BDH job will have
stopped at the breakpoint.
$1B; GO+4>>.CALL 3316 (RFNAME)
You are now free to debug the BDH to your heart's content.

File: TIPS, Node: Creating a Bootable ITS Image, Up: TOP
A directly bootable ITS image resides in a file in the "." directory, with
an FN1 of "@". For example, the file ".;@ ITS" might be a directly bootable
ITS image. Such an image usually includes DDT, the Salvager, and ITS itself.
In order to create such an image, you need to have image files for each of
these components:
- DDT (e.g. ".;DDT BIN")
- Salvager (e.g ".;NSALV BIN")
- ITS (e.g. ".;ITS BIN")
Assuming each of the above files exists in the "." directory, in order to
produce a directly bootable ITS image (".;@ ITS"), you invoke the following
commands from DSKDMP:
l$ddt bin
t$its bin
$U
m$nsalv bin
d$its
The "l" command clears memory and loads in a copy of DDT. The "t" command
loads in a copy of ITS, without clearing memory first and including the
symbols for ITS. The resulting memory image includes both DDT and ITS. The
"$U" command restarts DSKDMP so that you can issue the "m" command to merge
in the salvager, NSALV. Finally the "d" command dumps out the memory image
into a file in the "." directory, whose FN1 is "@" and whose FN2 is "its".
At this point, you have a directly bootable ITS image. You can either type:
G$
$g
or
its
$g
The first sequence sets the starting address and then executes the image from
that starting address.
The second sequence loads the image from the file system (".;@ ITS") and then
starts it at the image's starting address.

File: TIPS, Node: Assembling a new ITS, Up: TOP, Next: Adding an additional disk
Note: In the following description XX refers to the two-character ITS machine name
you are building -- for example DB.
1. First, examine SYSTEM; CONFIG > for changes you want to make. Look for the text
IFE MCOND XX,[
to find the section for the machine named XX.
KA 10 options you may want to consider:
- DC10P, RP10P: the kind of tape drives
- TM10A or TM10B: the kind of tape drive.
- NUNITS and NEWDTP: number and kind of DECtape drives
- TEN11P to enable the Rubin 10-11 interface. Subordinate options are:
- Knight TV, XGP, Chaos-11
- PDP6P to use an auxiliary PDP-6
- TK10P, DPKPP, MTYP: terminal ports
- CH10P or T11CHP: the kind of Chaosnet interface
KS10 options:
- RM03P, RM80P, RP06P, RP07P: the kind of disk drive
- DZ11P: terminal prots
- CH11P: Chaosnet interface
Common options:
- NQS: the number of disk drives
- IMPP: whether there is an IMP interface
- NCPP, INETP, CHAOSP: network protocols
To change properties for terminals, edit SYSTEM; TTYTYP >. Look for the section
titled MCCONDX XX,{
2. If you changed the disk configuration, you should probably reassemble (N)SALV and
DSKDMP too.
SALV is used on the KA10 to check the disks. It is merged with ITS when you build a
new ITS image. NSALV is the corresponding program for the KS10.
DSKDMP is used for booting the machine or reading a program from disk for standalone
execution, and then starting it.
Look for IFCE MCH,XX,[ in SALV or NSALV. Update parameters appropriately.
For DSKDMP, use one of the default configurations, or use ASK so that you are prompted
for parameters.
- On a KA10, use the HRIFLG switch to make a new DSKDMP paper tape to boot from.
- On a KS10, use the BOOOTSW switch to make a new DSKDMP boot block and save it as
.; BT BIN. THen write it to the front end system:
:KSFEDR
!WRITE
Are you sure you want to scribble in the FE filesystem? YES
Which file? BT
Input from (Default DSK: FOO; BT BIN): .;BT BIN
!QUIT
3. Assemble ITS. It's prudent to store the binary file in the . directory with a new
name. E.g.
:MIDAS .:NITS BIN_SYSTEM; ITS
Answer the question "MACHINE NAME =" with XX.
4. Merge the ITS binary with DDT and (N)SALV.
There are two options for doing this. The normal way is to reboot and do it in
DSKDMP. The other way is to do it in timesharing DDT.
- DSKDMP method. Use this unless you have a good reason not to.
a. Shut down ITS with LOCK. Reboot into DSKDMP. Use the new DSKDMP if you made
one above.
b. Load DDT: l$ddt
c. Give ITS and its symbols to DDT: t$nits bin
d. You're now in DDT. Exit back to DSKDMP: $u
e. Merge in (N)SALV. For KA10: m$salv. For KS10: m$nsalv bin
f. Write the result to disk: dSnits. It is prudent to make sure you write a new
file name here. Use f$ for a file listing.
- Timesharing DDT method
a. Make a new job: its$j
b. Load DDT without symbols: $1l .; @ DDT
c. Merge in (N)SALV without symbols: For KA10: $$1l .; @ SALV. For KS10: $$1l .; NSALV BIN.
d. Merge in ITS with symbols: $$l .; NITS BIN
e. Write the result to disk: $y .; @ NITS
5. If you're in DSKDMP and want to run ITS right away after dumping, it, type G$.
You're now in DDT and you can examine ITS, set breakpoints, etc. Type $g to start ITS.
6. When the new ITS has passed testing, rename the old .; @ ITS to .; @ OITS. Rename the
new ITS to .; @ ITS.

File: TIPS, Node: Adding an additional disk, Next: Build new version of SALV or NSALV, Up: TOP
* Menu:
* Build new version of SALV or NSALV::
* Build new version of ITS::
* Build new version of DSKDMP (optional)::
* Shut down ITS::
* Update emulator configuration for new disks::
* Boot SALV or NSALV::
* Format new disk pack::
* Copy user directories from first disk to new disk(s)::
* Create new bootable ITS::
* Boot new ITS::

File: TIPS, Node: Build new version of SALV or NSALV, Up: Adding an additional disk, Next: Build new version of ITS
1. Edit the file KSHACK;NSALV > or SYSTEM;SALV >.
2. Update NDRIVE to specify the total number of drives desired.
For RP06 and RP07 drives, the number of drives equals the number of packs.
For a 1-pack system (default), NDRIVE==1. If you are adding a second drive, change this to NDRIVE==2.
3. Update NUNITS to specify the total number of pasks desired.
For RP06 and RP07 drives, the number of drives equals the number of packs.
For a 1-pack system (default), NUNITS==1. If you are adding a second pack, change this to NUNITS==2.
4. Update LASTPK to specify the 0-based number of the last pack
For a 1-pack system (default), LASTPK==0. If you are adding a second disk/pack, change this to LASTPK==1.
5. Back up active version of NSALV or SALV:
a. For NSALV:
:RENAME .;nsalv bin,nsalv obin
b. For SALV:
:RENAME .;salv bin,salv obin
5. Assemble a new NSALV or SALV:
a. For NSALV:
:MIDAS dsk0:.;_kshack;nsalv
b. For SALV:
:MIDAS dsk0:.;_system;salv

File: TIPS, Node: Build new version of ITS, Previous: Build new version of SALV or NSALV, Up: Adding an additional disk, Next: Build new version of DSKDMP (optional)
1. Edit the file SYSTEM; CONFIG >.
2. Update the value of NQS to reflect number of packs.
For a 1-pack system (default), NQS==1. If you are adding a second pack, change this to NQS==2.
3. Back up active ITS binary:
:RENAME .;its bin,oits bin
4. Assemble a new ITS:
:MIDAS dsk0:.;_system;its

File: TIPS, Node: Build new version of DSKDMP (optional), Previous: Build new version of ITS, Up: Adding an additional disk, Next: Shut down ITS
This step is optional, however recommended. It is quite possible that you may need to perform operations
from DSKDMP on the new drive. Your existing DSKDMP may only know about your current number of drives,
and therefore not be able to manipulate your new drive. If this is the case you should update DSKDMP
to know about the new drive and reassble it.
1. Edit the file SYSTEM; DSKDMP >.
2. Make sure that the value of NDSK is equal or greater than the total number of disks you have defined in ITS.
3. Back up active DSKDMP binary:
:RENAME .;dskdmp bin,dskdmp obin
3. Reassemble DSKDMP:
:MIDAS DSK0:.;_SYSTEM;DSKDMP

File: TIPS, Node: Shut down ITS, Previous: Build new version of DSKDMP (optional), Up: Adding an additional disk, Next: Update emulator configuration for new disks
1. Logout all users except on system console.
2. On system console, invoke LOCK to shut the system down
LOCK^K
5DOWN
y
^C
3. Wait until ITS has shut down.

File: TIPS, Node: Update emulator configuration for new disks, Previous: Shut down ITS, Up: Adding an additional disk, Next: Boot SALV or NSALV
This procedure is different for the various emulators used to boot ITS. For KLH10, update the dskdmp.ini file to
add a new line similar to this one:
devdef dskN rh0.N rp type=rp06 format=dbd9 path=rpN.dsk iodly=0
where the value N is replaced with the the disk number. For example, the default system contains a single line like this:
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=rp0.dsk iodly=0
If you are adding a single new disk, the resulting lines should look like this:
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=rp0.dsk iodly=0
devdef dsk1 rh0.1 rp type=rp06 format=dbd9 path=rp1.dsk iodly=0

File: TIPS, Node: Boot SALV or NSALV, Previous: Update emulator configuration for new disks, Up: Adding an additional disk, Next: Format new disk pack
1. Boot the old (or new) version of DSKDMP.
2. Invoke NSALV or SALV.
a. For NSALV:
l$ddt
t$nsalv bin
b. For SALV:
l$ddt
t$salv bin

File: TIPS, Node: Format new disk pack, Previous: Boot SALV or NSALV, Up: Adding an additional disk, Next: Copy user directories from first disk to new disk(s)
1. Make sure you are in DDT with NSALV or SALV loaded.
2. Format the new pack:
MARK$SG
Format pack on unit #1
Are you sure you want to format pack on drive # 1 (Y or N) y
Pack no ?1
Pack 1., Drive #1 is serial #2.
Begin formatting 815. cylinders....Hardware formatting complete.
Verify pack? (Y or N) n
Swapping Alloc? 3000
Pack #1. ID?DISK2
DDT
3. Check the drive:
CHKR$G
Salvager 262
Active unit numbers? 01
Unit #1. ID is DISK2, Pack #1 (hardware says 0.)
Unit #0. ID is FOOBAR, Pack #0 (hardware says 58562.)
Use MFD from unit: 0
Directories out of phase.
Unit #0, Pack 0. Ascending dir number is 212
Unit #1, Pack 1. Ascending dir number is 0
Verify that the proper packs are mounted.
If you aren't sure, get help. If they are proper,
and one is just coming on-line after being off for
a while, you will have to UCOP to it.
Read all blocks of all files? (Y or N)
Get user dirs from unit: 0
Write out changes in MFD (y or N) y
DDT

File: TIPS, Node: Copy user directories from first disk to new disk(s), Previous: Format new disk pack, Up: Adding an additional disk, Next: Create new bootable ITS
Make sure are in DDT with NSALV or SALV loaded in memory.
Copy user directories from unit 0 to unit 1.
UCOP$G
Copy directories
From unit #0
only unit #1
Copy from unit #0 onto unit #1, OK (Y or N) y
Note that no DDT prompt is provided at the end of UCOP. Just wait about 10 seconds. You can tell if you are back to DDT
by typing a DDT command. For example:
0/
That should display the contents of location 0.

File: TIPS, Node: Create new bootable ITS, Previous: Copy user directories from first disk to new disk(s), Up: Adding an additional disk
1. Make sure you are in DSKDMP. If you are at DDT, type:
$U
2. Load DDT and ITS into memory:
l$ddt
t$its bin
3. Reenter DSKDMP.
$U
4. Merge in NSALV or SALV
a. For NSALV:
m$nsalv bin
b. For SALV:
m$salv bin
5. Dump out its
d$nits
6. Start ITS
g$
7. If ITS doesn't start, reenter DSKDMP:
$U
8. And load and start the new ITS:
nits
$g

File: TIPS, Node: Boot new ITS, Previous: Create new bootable ITS, Up: Adding an additional disk
1. Make sure you are in DSKDMP. If you are at DDT, type:
$U
2. Load and run ITS.
nits