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:
466
doc/info/tips.2
Normal file
466
doc/info/tips.2
Normal 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
|
||||
Reference in New Issue
Block a user