This paper sets down in written form certain facilities in the DEC Advanced Monitor System, which are not obvious from the DEC manuals and which are at present known chiefly by word of mouth and by experiment. (Brief mention is made in the 'Software Performance Summary' section 'LOADER 41).
Briefly, it is possible to construct a COMBINED FILE on DEC tape or disc made up of several relocatable binary program segments. This combined file may be loaded as a whole simply by typing its name in the command string given to the loader. Individual segments in the combined file can be replaced using UPDATE, the system program for constructing libraries.
These facilities suggest a method of testing which will save time for the person, whose programs are split into a large number of segments. This saving will normally only be significant if the disc monitor is used, since more calls to system programs are necessary.
It will probably be found also that the saving of individual binary programs will become superfluous.
This paper does assume some familiarity with the DEC Advanced Monitor System (1) for the PDP-15. However a number in brackets is a reference to a more detailed comment in the Appendix at the end of the paper with possibly a book reference.
Examples of keyboard sessions show the user's contribution in italics. It should be assumed that all lines typed by the user are terminated by pressing the 'RETURN' key, unless the characters <am> are explicitly shown; these indicate the ALTMODE key.
The device assignments (2) illustrated ignore default assignments. Any or all of the assignments may be unnecessary; check by typing 'ctrl C' and following the computer's $ by 'R' and 'RETURN' key.
Suppose that binary files ASUB, BSUB and CSUB on DEC tape unit 2 are to be combined into a single file BIGFIL BIN on disc unit 1 (DK1). There are two possible methods which are both illustrated below by examples.
(i) Use PIP with the 'combine' switch W. (3)
$PIP PIP Vnnn >T DKI BIGFIL BIN←DT2 ASUB, BSUB, CSUB BIN (W) <am> KM15 Vnn $ (ii) Use UPDATE (4) $A D2 -10 (-10 is the slot for subsidiary input to UPDATE) $A DK1 -15 (no assignment to -14 required if new file being created) $UPDATE UPDATE Vnn >N←BIGFIL<am> (LN... if a directory listing is wanted; information includes the name of each program segment with its size) >I ASUB >I BSUB >I CSUB >C KM15 Vnn $ This file can be loaded and entered under its composite name thus:- $A4 DKC1 -4 (Loader looks for user programs on slot -4) $4 NONE -5 (Suppose no user library file .LIBRS BIN to be scanned (4) ) $A DKCO -1 (Assuming that the file .LIBR BIN. exists on disc unit 0 (DK0)) $ . (assignments to any other positive slots used by the program) . . . $GLOAD LOADER Vnnn >PGC←BIGFIL<am> (P, G and C are all optional and they control listing of the user's core map)
Suppose that the combined file BIGFIL BIN has been created on DK1 using one of the 2 methods illustrated and suppose also that the program segments BSUB and CSUB have been subsequently edited and recompiled, with the binary residing on DK1. The new version of BSUB BIN and CSUB BIN can be inserted in a copy of the combined file instead of the old versions as follows. (Suppose the new copy of BIGFIL BIN is to be written back on to DK1 overwriting the old)
$A DK1 -14,-10,-15 $UPDATE UPDATE Vnn >U←BIGFIL<am> (UL+ ... to obtain a directory listing) >R BSUB >R CSUB (must be replaced in the same order as that in which they were originally stored) >C KM15 Vnn $
The resulting file can be loaded as illustrated in the last section.
A block data subprogram can be included in a combined file. The program size in the UPDATE directory will be misleading, but can be safely ignored.
It can be seen that the method described eliminates the typing of lengthy command strings, except initially when a combined file is being created. This is especially useful when a user program has to be continually reloaded (for instance because of some fatal error that needs to be investigated) and core dump space is not available.
The appendix amplifies the numbered references in the main body of the text and its main purpose is to suggest portions of DEC manuals to read. The manuals mentioned are:-
There is a copy of each of these manuals near the PDP-15.
(1) The DEC Advanced Monitor System consists of an executive-type monitor program, part resident and part non-resident, and a set of non-resident system programs (called CUSPs) which have distinct tasks such as text editing (EDIT) and the loading of user programs (LOAD, GLOAD). The non-resident monitor is reloaded on exit from each system or user program; the monitor then types $ and waits for a user command from the control teletype.
A brief guide to its use can be found in
User's Guide, chapter on ADVANCED MONITOR.
A more detailed description of the commands can be found in
AMSS chapter 4.
(2) Assignments. Whenever a PDP-15 program (user or system) wishes to transfer data to/from a peripheral, it does so via a numbered slot, which can be -15 to 10 (octal) excluding 0. There is a Device Assignment Table (DAT) which links at run-time numbered slots to device names. Assignments can be made before the loading of a system program (format described in AMSS 4.3.2.8). There is a set of default assignments, which can be discovered by typing R (see AMS 1.3.2.7)
(3) PIP is a system program for transferring information from one device to another. Transfer can be to/from a file in the DEC filing system. PIP is described fully in
Utilities chapter 6
and a reference guide appears in
User's Guide - chapter on PIP
(4) The normal use of the system program UPDATE is to construct or amend a user library file (.LIBR5 BIN) or a system library file (.LIBR BIN), which can be scanned by the linking loader after loading specified relocatable binary files. Full description in
Utilities chapter 3.
For a brief reference guide see
User's Guide, chapters on UPDATE and LOAD.
See also
SPROGS paper No 3 pp 2-4
about the PDP-15 F4S compiler for a description of the use of UPDATE and the file name .LIBR5 BIN.