Skip to content
ksherlock edited this page Jan 12, 2017 · 8 revisions

ExpressLoad data is stored as the first segment. It must have a segment name of (case insensitive) "ExpressLoad" or "~ExpressLoad" (preferred). Previously, it may have checked for a segment kind of dynamic data but that was removed so the linker could generate it as a Skip Segment.

The segment body consists of a single LCONST record.

Header

Offset Size Comment
$0000 4 reserved - used for a linked list
$0004 2 number of entries - 1

Header Entry Table

For each segment: (segments are re-arranged to put static segments first)

Offset Size Comment
$0000 2 relative segment offset
$0002 2 flags - reserved
$0004 4 handle - reserved

Segment Number Conversion Table

For each segment:

Offset Size Comment
$0000 2 actual segment number

Segment Headers

For each segment:

Offset Size Comment
$0000 4 LCONST file mark (absolute offset of LCONST data)
$0004 4 LCONST size
$0008 4 relocation mark (absolute offset of first relocation record)
$000c 4 relocation size
$0010 1 reserved
$0011 1 label length
$0012 1 number length
$0013 1 version
$0014 4 bank size
$0018 2 kind
$001a 2 reserved
$001c 4 org
$0020 4 alignment
$0024 1 number sex
$0025 1 reserved
$0026 2 segment number
$0028 4 segment entry
$002c 2 displacement to names
$002e 2 displacement to data
..... ... reserved
..... ... name

n.b. -- mpw iigs linker does not generate the displacement to data field. dumpobjiigs -d does not expect the displacement to data field. ORCA/Linker and Express generate it. Expressload itself doesn't seem to care -- it uses the name displacement but not the data displacement.

See Also:

Clone this wiki locally