[net.micro.pc] Load order with LINK and the assmebler

markz@microsoft.UUCP (Mark Zbikowski) (01/09/84)

The problem with the ordering of segments is due to an ancient bug in the
assembler.  For 'compatability' reasons, IBM has declined to request a fix
for the problem:

	Instead of emitting the segments in the order declared in an
	object module, it emits them in alphabetic order due to a walk of
	the symbol table.

There are several solutions to this problem external to the assembler;  the
most general solution is to create a series of object modules that merely
declare a single segment with the appropriate attributes.  Linking these
files in the appropriate order before your other objects will produce the
desired segment ordering.  I know this is bogus, but it is the user community
that needs to put the pressure on IBM to fix this bogosity.

The linker reads the object modules and perceives them as a stream of segment
definitions.  The ordering rules for the output are as follows:

	Segments with the same name (segment name, class name and public
	attribute) will be combined into a single segment.

	The order of classes on output will be the same as the order of
	initial occurrence of those classes on input.

	The order of segments with in each class will be the same as the order
	of initial occurrence of those segments on input.

Note that use of the GROUP operator does not in any way modify the ordering
of the segments; it is used only for addressing.