Many of our customers developed during the last years
projects that started to reach some of the internal limits
of the original Logitech Modula-2 V3.40 development tools.
The Large and Big Tools Packages are collections of tools
that allow to overcome these limits and to develop and
maintain systems of large or even bvery large size. The
Big Tools Package will also increase your productivity,
as the performance of the Big Linker has been improved
significantly due to the use of extended memory.
Prior to reaching the internal limits of the compiler,
linker, and M2Make utility customers often encounter limitations
with debugging. If you only have these problems
we recommend that you get the Large
System Tools, which in particular provide the means
The Large and Big Tools can either be purchased single
or in the form of two packages. Each one of these packages
also includes the Large
System Tools, as well as the M2V34 Library
Support Release 2.0.
The Large Tools Package consists of
The Big Tools Package consists of
The following text provides extracts of the README files
of the Big Linker and Big M2Make Utility. As these tools
are a collection of independently adapted programs, there
is no consistent naming and the release numbers do not
TERRA Big and Large Versions of the Logitech Modula-2
Please refer to the TERRA
Versions 3.41 of the Logitech Modula-2 Compiler for
a description of the Modula-2 Big and Large Compiler versions.
TERRA Modula-2 Big Linker M2LB
(Version 3.52/big/1 WT-ST, October 1997)
Big Linker General Information
The TERRA Modula-2 Big Linker M2LB is a special version
of the TERRA Modula-2 Large Linker M2LL. It provides the
same enhancements and supports the same options as the
corresponding Large Linker version (V3.51). Please refer
to the Large
System Tools for a description.
In addition, the Big Linker is able to use extended memory
(memory above 1 MB), as far as such memory is available
and not used by anything else (e.g. by a virtual disk).
The use of extended memory prevents the need for "slow"
temporary disk files, and thus results in a significant
performance improvement (typically by a factor of about
4 or 5). It also allows to link much larger programs.
The Big Linker M2LB uses the DOS/16M system (DOS-extender
by Tenberry Software, Inc.) and runs in Proctected Mode.
Therefore, it can only be used on 80286/386/etc. based
machines. The Big Linker may also be used in a DOS box
under Windows 3.1 or Windows95.
Big Linker Special Features and Memory Requirements
The Big Linker is capable of linking a single EXE or
OVL file with a total of up to 1 MB code and data. Programs
larger than 1 MB must be split into layers of up to 1
MB in size. The number of layers and the total program
size is only limited by the free memory available to the
Big Linker. Details with regard to Big Linker memory requirements
are listed below.
The total amount of memory available to the Big Linker
can be inquired by setting the /SE option and running
it without specifying an object file to link. The /SE
option may also be used to understand how much memory
is actually used when linking a program.
For programs with about 150 KB of code or more (depending
on the available memory), the Big Linker is about 25%
- 30% faster than the Large Linker. It is assumed that
the Large Linker needs to dump the internal buffers to
the disk (indicated by the message "dumping data
to disk") for such programs, while the Big Linker
does not, at least as long as enough extended memory above
1 MB is available.
As it can bee seen when using the option /SE, the total
memory available to the Big Linker (listed in the statistics
output under "Total free + used") should be
about 2.5 times larger than the code of the program to
be linked, in order to prevent that a dump of the internal
buffers occurs in the Big Linker. For non-base layers,
this number increases by about 25 % of the code size of
all lower level layers.
The minimal requirement for free memory available to
the Big Linker in order to link a base layer with 1 MB
of code is in the order of 0.7 - 1 MB. The minimal free
memory required by the Big Linker for linking a second
layer with 1 MB of code to such a base layer is in the
order of about 0.9 - 1.3 MB, and 1.2 - 1.5 MB for linking
a third such layer. It increases by about 0.25 MB for
any further 1 MB layer. In each of these cases, an additional
amount of about 1.8 - 2.0 MB should be available, in order
to prevent the use of temporary files, i.e. for maximum
performance. In order to link the top layer of a 3 MB
program (for instance) completely in memory, about 3 -
3.5 MB of memory must be available to the Big Linker.
Note that the Big Linker (unlike the Large Linker) does
not impose any restriction on the total number of symbols
in a program or layer. The Big Linker uses a symbol table
(hash table) of 14000 entries, where each entry can store
a list of symbols. A 1 MB layer is estimated to contain
about 7000 - 9000 symbols. When linking a non-base layer,
only about 75% of the symbols in the base layers are needed.
Therefore, the symbol table will contain about 20000 -
25000 symbols when linking the top layer of a 3 MB program.
TERRA Modula-2 Big M2Make Utility
The enhanced TERRA Big M2Make utility allows to overcome
the memory limitations of the standard 3.40 version. Due
to the use of a DOS-extender it supports processing of
very large programs even with option /E for the extended
cross-reference listing (availability of some extended
Compared to the standard 3.40 version M2Make utility
the enhanced TERRA Big M2Make utility provides the following
- Additional cYcles option /Y:
Using /Y causes M2Make to display the names of the modules
in each import cycle it finds, instead of only listing
a summary of cyclic import frequences at the end.
- Improved sTatistics option /T:
The improved statistics option displays detailed information
about usage of the available heap memory.
- Enlarged internal stack:
When "making" very large programs, the standard
3.40 version M2Make might encounter a stack overflow
in some recursive code, which will usually crash your
PC without giving any hint for the reason. The enhanced
M2Make Big version uses a generously enlarged stack
that should prevent any such problem. In addition, it
includes selective stack test code, that would cause
a corresponding message to be written to your screen
in the case of a stack overflow.
- Enlarged cross-reference capacity:
When using the cross-reference options M2Make needs
a lot of memory. The standard 3.40 version M2Make uses
a fixed string table of about 64K bytes. This small
table, as well as the usually limited availablity of
heap memory under DOS impose rather low limits on the
standard M2Make. The TERRA enhanced M2Make Big version
does not use a fixed size string table.
- Capacity only limited by available (extended) memory:
The TERRA enhanced M2Make Big version uses the DOS/16M
system (DOS extender by Tenberry Software, Inc.) and
runs in Proctected Mode. Therefore, it can only be used
on 80286/386 etc. based machines. The M2Make Big version
capacity is only limited by the available extended memory.
- Windows compatibility:
The M2Make 3.41/Big of March 1998 is the first DOS/16M
based M2Make version that is capable of running in a
Windows 3 or Windows 95 DOS box. Earlier versions M2Make
/Big versions either did not run in these environments
or required special measures to be taken.
Top of Page