The versions of CHAIN and EXECUTE obtained from DECUS are now available on an experimental DOS system; this system is currently dumped on a magnetic tape, JRG4, next to the normal dump tapes in the PDP15 rack. A copy of a DECUS write-up is attached; you will observe that the programs are no different to use but the files that CHAIN produces have different names from the standard version.
Will you test the overlay system(s) that you are responsible for with this experimental system? (I know of FONTS, CAMP, CAMPER and LISTIT). For a test run it is necessary to:-
(1) save the current system on a magnetic tape from the dump cycle and check that magnetic tape can be read;
(2) load the experimental system onto the disc;
(3) CHAIN the new overlay - use the same commands as normal;
(4) EXECUTE the new overlay, and
(5) finally restore the standard system.
When we are satisfied that the new CHAIN/EXECUTE is workable and gives real benefits, we can put them onto our standard system (after which no old overlays will be useable).
Note that to gain the benefits of saved space mentioned in the write-up, you will need to use a BUFFS monitor command before running the overlay.
The performance of DOS-15 Chain and Execute is limited by two factors;
1) The construction of a single execute file (XCU file) containing all the links requires that this file be searched sequentially to retrieve the various links. When frequent, random link accesses are made, the search time becomes significant.
2) The reading of the execute file via .READ was found to occupy substantial processor time, much larger than the time required to relocate the links.
When operating from disk, the performance compares quite unfavorably with the inherent speed of the device; this discrepancy prompted the coding of these modifications. They are:
1) Chain has been modified to output each link as a separate file, with an extension derived from the link number:
MAIN XCT execute table MAIN XCU main link MAIN L01 first overlay MAIN L02 second overlay
2) Execute has been rewritten entirely; the outline of the original code remains, but most details have been altered. Faster algorithms have been used where possible; loops have been carefully tuned.
3) Execute's initialization segment now locates each link via .FSTAT and saves its address for future use. The individual links are read by .TRAN and deblocked by local code in EXECUT.
The advantages of this scheme are twofold; the code fetches an 8K link about 5 times faster than the distributed system, and a net core economy is achieved. That is, while EXECUT is somewhat larger, one fewer DOS buffer is required (since only .TRAN is issued, DKA. does not obtain a buffer). The code has been extensively tested, operating from DECTAPE and RF disk; it will not operate from a non-directoried device or from directoried magnetic tape (MTA.).
The installation of this code is quite simple. The user may assemble the CHAIN and EXECUT modules from DECTAPE. CHAIN module replaces the system program CHAIN via PATCH:
$MICLOG SYS $A DT0 -11/K -13 (DT0 is the input dectape) $MACRO B-CHAIN B-EXECUT $A DK -10, -14 $PATCH >CHAIN >READ CHAIN >EXIT
The EXECUT binary replaces file EXECUT BIN of user PAG. The user may now construct his overlays as before; no operational changes have been made to CHAIN. The revised EXECUT will run them directly, operating several times faster from disk than the original system.