1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00
PDP-10.its/doc/_info_/stinkr.info
2017-01-27 07:04:51 -08:00

89 lines
3.2 KiB
Plaintext
Executable File

----- 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 <o0>,<o1>,<o2>,... define segments (see below)
l <file> load file <file>
x <file> execute command file <file>
i <name> specify initialization routine
o <file> specify output file name
; <anything> 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.