----- STINKR INFO ----- 20 April 1977 ----- AS@DM ----- STINKR is a new loader that accepts RELOCATABLE output produced by MIDAS. It does not implement all of the features implemented by STINK (see below). However, it has some features of its own, namely: 1. multiple (up to 16) segments (location counters) 2. automatic segment allocation 3. loads into an inferior, so that there are no loading restrictions 4. can invoke an initialization routine 5. does its own PDUMPing The following STINK features are not implemented: a) fancy FAIL stuff (e.g. fixups) b) global relocation c) global offset d) local symbols (they are ignored) e) load-time conditionals f) load-time operations g) libraries h) COMMON i) 1PASS assembly j) shifted relocation by globals -- JCL Format -- JCL to STINKR is optional. If present, it should consist of a sequence of arguments separated by spaces. An argument can be an option string or a file name. An option string has the form -abc, where a, b, and c are option names. The existing options are: s - print symbol table p - print description of RELOCATABLE files loaded d - print additional STINKR debugging info A file name is either loaded or xfiled, depending upon its format. If no second file name is given, it is assumed to be STINKR. Patterns using * (matches any sequence of characters) and ? (matches any single character) can be given. If no file names are specified, command input is taken from the terminal. -- Command Format -- STINKR takes commands from files or the terminal in a manner similar to STINK. A command consists of a single line, beginning with the command name, optionally followed by arguments. The commands are: s ,,,... define segments (see below) l load file x execute command file i specify initialization routine o specify output file name ; a comment Blank command lines are ignored. The basic operation of STINKR is to read all of the commands, loading specified files and remembering the other information. When the basic command file is finished (or ^@ is typed, if terminal input), STINKR then does the following: a) print list of undefined symbols, if any b) print segment map c) print symbol table, if desired (-s option) d) call initialization routine, if any e) PDUMP to output file, if any -- Segments -- In order to use multiple segments, one must use the macros in the file SYSENG;MULSEG INSERT while assembling. If more than one segment is to be used, the s command must be given, before any files are loaded. The arguments to the s command are a list of OCTAL addresses, which specify the origins of all of the segments, starting with segment 0. Instead of giving a particular origin, one may also specify either N (next location) or P (next page); in order for these to work, the MULSEG macros MUST be used. -- Initialization Routine -- One may specify an initialization routine to be run immediately before PDUMPing. This routine could, for example, purify read-only segments. When invoked, locations 20 to 20+N-1 will contain the FIRST,,LAST locations of the N segments. The initialization routine should return with a .BREAK 16,0 if successful or a .VALUE if unsuccessful.