Closed larsbrinkhoff closed 3 years ago
I found the symbol table format in https://www.saildart.org/LOADER.MAC[LSP,LSP]
Symbol Table Format
Word Description
0 -1 flags new format symbol table
1 BN relative pointer to Block Names
2 BS relative pointer to Block Structure
3 FULLV relative pointer to full word values
4 FREES relative pointer to free space
5 CLASS1 relative pointer to first class 1 symbol
6 CLASS2 relative pointer to first class 2 symbol
7 CLASS3 relative pointer to first class 3 symbol
10 CLASS4 relative pointer to first class 4 symbol
11 LASTV relative pointer to first word beyond
the symbol table
BN table of RADIX50 block and program names
BS table of block and program structure (see below)
FULLV table of full word values pointed to by class 4 symbols
FREES free space for adding symbols. initially zero
CLASS1 Pairs of words for each class 1 symbol.
First word is RADIX50 of symbol name with type flags
Second word: Byte(13)bnum(5)0(18)value
where bnum is an index to BN and BS table.
Class 1 symbols have values in the range 0 to 377777.
CLASS2 Same as CLASS1 space, except class2 symbols have
values in the range of 400000 to 777777.
CLASS3 Same as CLASS1 space, except class3 symbols have
non-zero values with zero right halves. The left
half of the value is stored in the right half of
the value word of the symbol entry.
CLASS4 Pairs of words for each class 4 symbol.
First word is RADIX50 of symbol name with type flags
Second word: Byte(13)bnum(5)14(18)vp.
Bnum is an index to BN and BS table.
Vp is a pointer, relative to beginning of symbol table,
to a word in the FULLV table that contains the value.
Note that the index field is set to 14, so that if 14
contains the address of the symbol table, you may
indirect through this word.
Class 4 values are all values not contained in the
other classes.
Values are sorted by arithmetic order in each class. Class 3 values
are considered as right-half quantities while being sorted.
Block Structure space:
All pointers in BS space are relative to BS space (and may be used
to index BN space). BN (block name) space comes before BS space
in the symbol table.
Words corresponding to program names have left-half links to the next
program name. Zero terminates this list. Right-halves are zero.
Word zero of BS space always corresponds to a program name.
Words corresponding to block names have left-half links to the BS
space word corresponding to the program containing this block. The
right-half links to the block immediately containing this block. The
outermost block's right-half link points to the program name word.
All blocks that are associated with a particular program are entered
immediately following that program name, and before the next program
name.
Attached is SYSTEM.DMP[S,SYS]70 from Saildart.org: waits-jun76.zip
Disassembled with
dis10 -6 -Sall -Woct
, the symbol table looks strange. I.e. FTKL10 and other FT symbols should be 0 or 1.Maybe the oct word format does something wrong, or the dmp file format should be updated.