APPENDIX C ASSEMBLY TOOL REFERENCE <link88>
S5U1C88000C MANUAL II
EPSON
281
WORKBENCH/DEV TOOLS/OLD ASSEMBLER
C.3 Linker <link88>
PROGRAM NAME
link88.exe
SUMMARY
The link88 links multi-section relocatable object files for the S1C88 and creates an absolute object file.
The absolute object file is used to create a program data HEX file that is used for debugging with the
ICE by inputting to the binary/HEX converter hex88. It will also be used to create absolute symbol
information (rel88) after linking the relocatable assembled file.
The basic functions of the link88 process are as follows.
1) The global flag controls the overall link88 process.
2) It defines the new CODE section and DATA section by the addition of a flag and a file.
3) It relocates sections, rearranging them in optional locations of the physical memory and permits
them to be mutually "stacked" (chaining) in appropriate storage boundaries.
4) Each object file input affects the current CODE section and DATA section.
5) The final output starts with the header, thereafter (in the named order) all CODE sections, all
DATA sections, symbolic table and the relocation stream for all CODE sections and all DATA
sections. The respective component elements for these sorts of outputs are controlled through use
of the appropriate global flag which will be described later.
6) Since all the sections are continuous in the linker output, the binary/HEX converter hex88 must be
used for writing the section into the appropriate physical location, in order to execute it in a
special location within the memory.
The S1C88 has a 24-bit wide address space (maximum 16M bytes). It splits that address space into a
32K-byte bank (code section) or a 64K-byte page (data section) by controlling the most significant 8-bit
by registers such as the code bank register (CB) and the expanded page registers (EP, XP and YP) in an
effort to expand the access performance within that range. It is possible to access an optional bank or
page from an optional bank or page by rewriting the content of the register, thus permitting easy
management of such things as large programs and data bases. However, since the register will not be
automatically renewed, even if the bank and the register are crossed, a load module image permitting
the 16M-byte address space to be described linearly cannot be created.
The S1C88 adopts a multi-segment system for linking relocatable objects, in order to create load
images to be laid out in the optional physical addresses of the address spaces managed by it.
This is a technique in which "All the spaces are split into optional sections of 64K-byte (page) or 32K-
byte (bank) units and the address information necessary for the memory layout determines all the
address information in accordance with the assignment to each segment unit."
In this technique, since the creation of continuous data objects whose size exceeds 64K bytes (page)
and 32K bytes (bank) for one section is not permitted, a limitation is imposed whereby the total size
for the CODE sections included in the modules of assembly units cannot exceed 32K bytes and the
total size for the DATA section cannot exceed 64K bytes. This restriction reflects the address restriction
of the CPU itself and even if a diagnosis of a data overflow generated during assembly were over-
looked, it is set up such that it would be rediagnosed during linking.
However, it outputs an error when the size exceeds 64K bytes in default, but does not output when
the size exceeds 32K bytes. Consequently, a flag must be specified for judgment when the size exceeds
32K bytes.