The section (osload) describes a loader for the OS world.
The section (p3,pliload) describes a yet more specialized loader for the PL/I world. See too (p3,preamble) about some work in progress.
The factory version of the bootstrap loader has a special domain keeper that is prompt. This domain keeper forces the domain to return the caller with a return code of two if any trap occurs. This makes the bootstrap loader prompt.
BSLOADF (0;SB,M==>c;BSL) uses the space bank SB and the meter M to create a bootstrap loader.
BSLOAD will accept a relocatable load module produced by the CMS LINKEDIT command as transmitted by the CMS-Gnosis transfer mechanism {see (p2,grcv)} and will convert the relocatable load module into an executable segment. The symbols associated with the load module will be placed in another segment for use by symbolic debuggers. BSL is not prompt.
BSLOAD (0,((4,RF),(4,MSL),(4,SSL));RS,MS,SS ==>
c,((4,EP),(4,MSL),(4,SSL));)
will load the code contained in module segment RS into the
memory segment MS and the symbol segment SS. MSL and SSL
represent the maximum lengths of the segments MS and SS
before the call, and the actual length of the segments after
the call. MSL and SSL must not exceed 4 megabytes each.
RF is the relocation factor to be applied in relocating
the program text and EP is the address of the designated
entry point. C will be 0 if the operation is successful,
1 if the program text or symbols would not fit into the
designated window (a 4 byte string is returned which is
the address in the input segment of the control record for
the data that won’t fit), and 2 if something else went wrong.
BSLOAD (kt;==>x'0011';)
BSLOAD (kt+4;==>0;) destroys the bootstrap loader.