.PAGE SIZE 66,75 .SKIP 20 .CENTER ;CILUS .SKIP 1 .CENTER ;Core Image Library Update and Save .CENTER ;for RSX-11M .SKIP 25 .CENTER ;Prepared by - Stephen R. Rainier .CENTER ;October 4, 1982 .PAGE .TITLE CILUS for RSX-11M .INDEX CILUS Intro .SKIP 5 .CENTER ;CILUS .SKIP 3 .BREAK;.TEST PAGE 9;.BLANK 3;.INDENT 2 1. Introduction .BLANK 2 .AUTOPARAGRAPH CILUS (Core Image Library Update and Save) is an RSX-11M utility program for manipulating and patching DOS core image libraries (CIL's). A core image library is a single file containing one or more core images and an index, which is used to retrieve them. The main use of CILUS is to build and modify monitors which are core image libraries. The main advantage of a core image library is that modules within it can be directly accessed via the index and then transferred rapidly into memory. CIL's must be contiguous files on disk. Core Image libraries can be distributed as linked core image files (LCL's) on magnetic tape or disk, and processed into CIL's by CILUS. CIL's may be patched allowing changes to be made to any individual modules within the CIL. Under RSX-11M, there are currently size limitations on the size of a CIL file in order to maintain the efficiency of CILUS. Any individual core image module can not exceed 10000(8) bytes. A maximum of 107(10) modules are allowed in one CIL. The functions of CILUS are best described by discussing the components of the command string and the action of the switches in detail. .page .index Command String Format .INDEX Input File Defaults .Index Output File Defaults .index Filename Specifications .index Executing procedures .BREAK;.TEST PAGE 9;.BLANK 3;.INDENT 2 2. Command String Format .BLANK 2 CILUS can be invoked using one of the following forms: .blank .literal RUN $CILUS or, CIL or, CIL or, CIL @ .end literal The command string is in standard form as follows: .LITERAL [,]=/sw[,/sw] .END LITERAL .blank 1 with the following definitions: .break .literal - RSX-11M file specification for a CIL output file. This file must be a contiguous file. The default is SY0:*.CIL;*. If no filename is specified, the primary input file name will be used. - RSX-11M file specification for a LCL output file. This file is a non-contiguous file. The default is SY0:*.LCL;*. This file will not be created, unless it is specifically requested. Note - The primary output file default will be a listing file when a LIst or DUmp switch is used. (SY0:*.LST;*) - RSX-11M file specification for the primary input file. This file may be a CIL, LCL, or a concatenated group of LDA's. The primary input file is mandatory. The default spec is SY0:*.LDA;*. - RSX-11M file specification for the secondary input file. This file may be a CIL, LCL, or a concatenated group of LDA's. The default is SY0:*.LDA;*. /sw - switches are defined in the next section. At least one input switch is required. Note - Under RSX-11M, only 2 input files are allowed. The modules within CIL's, LCL's, or LDA's must be less than 7 characters to be compatable with DOS CILUS. .end literal .page .index Switch Definitions .index Output Switches .index Input Switches .index Unimplemented Switches .BREAK;.TEST PAGE 9;.BLANK 3;.INDENT 2 3. Switch Definitions .BLANK 2 .list 1 .list element;Output Switches .list 2 /SP - Spool listing files to the lineprinter at command completion. The default is /-SP. .end list .list element;Input Switches .list 2 /BU - Builds a CIL and/or LCL from the primary and/or secondary input. The /E switch is required to signal the end of input. .blank /DI - Lists the directory of a CIL, LCL, or concatenated load module. Only one input and output file spec are allowed. .blank /DU - Dumps the named modules, in octal, from a CIL. Only one input and output file specifications are allowed. This switch will force CILUS into indirect command mode. (see Indirect Commands) .blank /E - End of input command line. Required to complete certain command sequences. .blank /LO - Loads an LCL onto disk as a CIL. Only one input and output are allowed, and the input file must be an LCL. .blank /LI - Same as /DI. .blank /PA - Allows modules in a CIL to be patched. Only one module can be patched at a time. Only one input and output specification is allowed. This switch will force CILUS into indirect command mode. (see Indirect Commands) .blank /SI - Allows for large load modules to be put into a .CIL. By default, modules must be less than 10000(8) bytes. By using SI, load modules may be up to 50000(8) bytes in size. .blank 2 .end list .end list Note - The following switches are not implemented: .literal /BO - Boot in a monitor /CT - Add a cassette tape bootstrap /HO - Hook the CIL /MT - Add a magtape bootstrap /TA - Papertape switch .end literal .page .index Indirect Commands .index Patch Commands .index Edit Commands .index Dump Commands .BREAK;.TEST PAGE 9;.BLANK 3;.INDENT 2 4. Indirect Commands .BLANK 2 Change (/PA switch only) .blank .indent 9 C xxx .blank The module with the internal name xxx is to be patched. .BLANK 2 Ident (/PA switch only) .blank .indent 9 I xxx[:yyy] .blank The module specified in a change command is checked to see whether the ident, xxx, is the correct ident. If it is not, the patch will not be permitted. If it is correct, the patch will proceed, and yyy will be the new ident. .BLANK 2 Delete (/ED switch only) .blank .indent 9 D xxx[,yyy...] .blank The module with the internal name xxx will not be copied from the primary input file to the output file. .blank 2 Insert (/ED switch only) .blank .indent 9 I xxx[,yyy...] .blank The first module with the internal name of xxx in the secondary input file will be inserted into the output file after all the modules in the primary input. .blank .indent 9 I xxx:yyy[,zzz:aaa...] .blank The first module with the internal name of yyy in the secondary input file will be inserted into the output file before the module xxx from the primary input. .blank 2 .page Name (/ED switch only) .blank .indent 9 N xxx:yyy[,zzz:aaa...] .blank The module xxx in the primary input file will be renamed, yyy, when copied to the output file. .blank 2 Replace (/ED switch only) .blank .indent 9 R xxx:yyy[,zzz:aaa...] .blank The module xxx in the primary input file will be replaced with the module yyy from the secondary input file when copied to the output file. .blank 2 List (/DU switch only) .blank .indent 9 L xxx[,yyy] .blank The module xxx from the primary input will be dumped in octal to the output file. .blank 2 Purge (all types) .blank .indent 9 P .blank All indirect commands entered up to this point will be deleted. .blank 2 Execute (all types) .blank .indent 9 E .blank All indirect commands will now be processed. Execute must be the last indirect command given! .page .index Patching CIL Modules .index Patch Addressing Commands .BREAK;.TEST PAGE 9;.BLANK 3;.INDENT 2 5. Patching CIL Modules .BLANK 2 When the /PA switch has been used in a CILUS command line, CILUS will enter indirect command mode. Unlike other switches which enter indirect command mode, PAtch does care about the order of the indirect commands. When CILUS enters indirect patch mode, the module to be patched must be specified by using the Change command, first. The name is then checked for existence in the CIL, and CILUS waits for the next indirect patch command. The ident of the module must now be specified. If the ident for the module is all blanks, then "I " is all that is necessary since no actual check will be made in this case. If the ident is not correct, the patch will abort until the correct module and ident are specified. If a new ident is specified, the ident for the module will be updated. The address whose contents are to be changed can now be specified in any of the following ways (underlined char.s are printed by CILUS): .blank .literal ^&CPA>\&
^&CPA>
/:\&[] [/] The new contents can be entered followed by a carriage return. A "/" allows the contents of the next word to be accessed. ^&CPA>\&
: ^&CPA>
/:\& This form forces a change at the address specified. This form is useful when CILUS is executed as part of an indirect command file. ^&CPA>\&
/: [/] ^&CPA>
/:\& or ^&CPA> *** CONTENTS VERIFICATION FAILURE ***\& The actual contents of the address is checked against the , and if they are not the same; the command is not accepted. Notes - .end literal No changes are made until the Execute command has been typed. Patch address commands can be entered in any order. Comments (lines preceeded by a ";") may be entered on any line. Any extra unused space in a logical block can be used for patching. In other words, round the module size up to the nearest 1000(8) byte block, and that value is the upper address range. .DO INDEX CILUS Index