mirror of
https://github.com/PDP-10/its.git
synced 2026-01-11 23:53:12 +00:00
89 lines
3.2 KiB
Plaintext
Executable File
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.
|