|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 8704 (0x2200)
Types: TextFile
Names: »LINK0110.DOC«
└─⟦8c28152f0⟧ Bits:30005921 Plink-II Version 1.10A
└─⟦this⟧ »LINK0110.DOC«
Plink-II: PSA Object Module Linkage Editor II
Update Notes for Version 1.10 (9/16/81)
Update Notes for Version 1.10
This note lists Plink-II bug fixes and enhancements effective with
version 1.10.
Bugs:
- Some versions of the Digital Research PL/1 compiler generate
invalid .REL files when an empty string is declared: 256 garbage
bytes are written to the .DATA. segment causing the linkage editor
to overwrite the memory assigned to the following segment. This
usually doesn't matter since the next segment is typically from a
module that hasn't been loaded yet, but the problem may surface if
some of Plink-II's commands for moving segments around in the
program are used (e.g. SEGMENT, MODULE, LOCATE). Another PL/1
problem has been fixed: modules having no code in them are now
handled correctly. These would sometimes cause fixup errors or
missing code or data in the output file.
- If more than 2 undefined segments exist (warning #55), Plink-II
would die with diagnostic error #164. Now programs may be linked
with undefined segments: they are ignored. This is useful for
tasks such as the creation of overlay structures that are used in
many programs where not all of the segments mentioned in the
structure are used in each program.
- DEFINE <symbol> = <local variable> would cause a syntax error.
This has been corrected.
- Common blocks would not be handled properly if they had the same
name as a module: each instance of the common was assigned a
different memory area. This situation is now handled properly.
MicroSoft apparently handled this problem in their Fortran by
setting the high order bit in the first character of each common
block name. Unfortunately, this means that MicroSoft Fortran and
Basic modules may not be combined into the same program because the
new Basic compiler does not set the bit. Plink-II can match the
common names properly, but another Basic problem is described
below.
- The overlay loader would be incorrectly linked in a .COM program
when the LOCATE command was used. This has been fixed.
New Features:
- When the LOCATE statement is used in a .PRG program a new section
is created. Since only the main section is loaded by the operating
system when the program is executed, Plink-II includes the overlay
loader into the program to load the other sections before execution
of the program begins. This action may now be inihibited by using
the new PAD option provided with the LOCATE command. For example,
LOCATE 3000, PAD
causes the previous section to be filled out until it reaches
address 3000. In this way, the next section is forced to be
adjascent to the previous one and will be loaded at the same time
Plink-II: PSA Object Module Linkage Editor II 2
Update Notes for Version 1.10 (9/16/81)
from disk: the overlay loader is not required.
- The COMMON command has been added. It may be used to define the
size of a common block to be larger than the definition of the
common provided by any module. It also performs the function of
the SEG command by placing the common block in the current section.
The syntax is COMMON <name1> = <size1>, <name2> = <size2>, ... For
example:
COMMON C1=100, C2 = #1 * 5
The COMMON command may not be used on a .DATA. segment or error #18
will result. Also, the COMMON and CONCATENATE statements should
not be used on the same common or the results will be
unpredictable.
- The various overlay loaders selected via the DEBUG and I8080
commands are now combined into a single library file called
OVERLAY.REL instead of being in separate files. Each has a
different module name: .OVLZ. is the standard loader, .OVLD. is
selected when the DEBUG command is used, and .OVL8. when the I8080
command is used. Older overlay .REL files should be discarded:
they will no longer work.
- Many people have reported problems with linking modules produced by
MicroSoft's new Basic compiler. Plink-II can now handle these. If
the /O switch is used in the Basic compiler (to avoid the use of
the runtime module) some of Plink-II's special commands have to be
used.
The problem is that the initialization code in these Basic programs
attempts to clear the blank common (.BLNK.) and counts on having
the data segment for the module ("BASIC) immediately following
.BLNK. in memory in order to determine its ending address.
Plink-II normally moves .BLNK. to the end of the section so that
Fortran programs can access free memory; therefore, the clearing
routine wipes out the operating system.
The SEGMENT command of Plink-II can be used to specify that the
named segments are to be allocated memory at the current load
address. Older versions of Plink-II always put .BLNK. at the end
of the current section, but version 1.10 will not do this if .BLNK.
is used in the SEGMENT command. Plink-II will move all
uninitialized segments to the end of the section, and .BLNK. and
"BASIC are normally uninitialized, so the NOSORT command must also
be used to inhibit this action. To sum up, entering
SEGMENT .BLNK., "BASIC NOSORT
into the Plink-II command will cause the correct memory structure
to be be generated.
If the /O switch is NOT used in the Basic compiler, the program is
linked so as to use the runtime support module, and no extra
Plink-II commands are required: everything is sorted into the
correct order in memory. A .COM file must be specified for output,
overlays may not be used, and the LOCATE, ACTUAL, and .DATA.
commands should not be used.
Plink-II: PSA Object Module Linkage Editor II 3
Update Notes for Version 1.10 (9/16/81)
Valid Plink input files:
The MicroSoft relocatable file format has become an industry
standard for Z80 - CP/M compiler output. However, several
manufacturers are selling compilers which output files that look like
MicroSoft's, but actually contain subtle differences. Plink can
handle some of these, but others will not work. Also, MicroSoft
periodically makes minor changes to the format in order to support
new language features.
The list below indicates which compilers have been checked out with
Plink 3.28. Usually, lower numbered versions are also handled
correctly. If a compiler you wish to use is not on this list, either
insure that it outputs a format compatible with a listed one, or
contact your software distributor.
MicroSoft:
- Cobol 4.01 (in 4.01, the SECTION statement may not be used).
- Fortran 3.31
- Basic 5.30 (see comments above).
Cromemco:
- Cobol 3.01
Digital Research
- PL/1 1.3 (the indexed .IRL files are not supported: they will
have to be converted to normal form with the LIB program).
MT MicroSystems:
- Pascal MT+ 5.2 (.ERL files designed to be input to the
disassembler are not supported).
Whitesmiths
- C 2.0 (see discussion in update letter for Plink-II 1.08)
Ithaca Intersystems
- Pascal/Z 3.0.
«eof»