dos_compilers/Logitech Modula-2 v34/M2DOC/CHANGES.DOC
2024-07-02 07:25:31 -07:00

228 lines
8.1 KiB
Plaintext

Logitech Modula-2 Release 3.40 March, 1990
----------------------------------------------------------------------------
This file documents the major differences in the compiler, linker, and
utilities between Release 3.03 and Release 3.40.
Compiler
========
The Modula-2 Compiler included in Release 3.40 has undergone extensive
work since Release 3.03. This section documents some of the changes
that have been made.
* The compiler now provides 21-28% faster compilation.
* Mixed-language support has been greatly improved. Some of the
changes include:
- Procedures called from C or Pascal will restore registers
DS, DI, and SI.
- Before calling a C or Pascal procedure DS will be loaded
with the segment descriptor of DGROUP.
- The RTS has been updated to allow you to debug programs
that contain C or Pascal procedures, or that have main
programs written in C.
See the examples in the EXAMPLES\MOD-C and EXAMPLES\C-MOD
directories for more information.
* The default options of the compiler have been changed. Tests
are now off by default, and all optimizations are on.
* For debugging, use "/DEBUG". The /DEBUG option now forces the
"/SYM" option.
* The default options for the compiler must now be set with an
environment variable, M2COPT (the M2C.CFG file is no longer
used). For example, to set the tests on by default, use:
SET M2COPT=/T+/R+/S+/F+
* LONGINT constants can now be specified by a trailing "L". For
example,
var := VAL(LONGINT, 1234);
may now be specified as
var := 1234L;
* The compiler now supports non-standard priority levels (levels
greater than 7). See the Priority Levels section at the end
of this document for information about modifying the RTS for
greater priority level support.
* All known bugs in the compiler have been fixed.
Compiler Implementation Notes
-----------------------------
* After installing Release 3.40, you should recompile and relink
your program. Release 3.40 is completely source and library
compatible with Release 3.0 (so no source modifications have
to be made). Note: Release 3.40 is also completely compatible
with Release 3.0 .SYM files, so it is not necessary to recompile
your definition modules.
* In this version of the compiler, two-dimensional arrays are
always allocated on even boundaries.
Linker
======
The M2L linker included in Modula-2 Release 3.40 has undergone extensive
enhancements since Release 3.03. This section documents the changes that
have been made.
* Support for Microsoft languages
The M2L linker can now be used to link Microsoft C and
Microsoft MASM code, as well as Logitech Modula-2. It also
supports the linking of mixed Modula-2 and C programs as
described in Chapter 6 of the User's Manual (as well as
demonstrated in the example programs provided with Release
3.40).
* Other enhancements
* M2L now supports GROUP definitions and references, the
ORG statement, absolute symbols, absolute segments, and
external near self-relative fixups, as well as many
previously unsupported Microsoft record types and object
format extensions.
* M2L can link programs that are up to 40% larger than
than could be linked with the Release 3.03 linker, and
when linking programs it can operate up to 30% faster
than M2L 3.03.
* If M2L terminates with an error, it now sets the DOS
ERRORLEVEL code to 3. In the case of an "insufficient
memory" error it is set to 2.
* M2L options changes and enhancements
* M2L now understands an environment variable, M2LOPT. It
reads and processes this environment variable before it
processes the rest of the command line. This is useful
for setting default link options. For example:
SET M2LOPT=/o/p
will set the default options to optimize and pack the
output executable file.
* Several new options have been introduced, and some defaults
have been changed:
* The output of M2L V3.03 and previous versions was quite
verbose. A new option, /VERBOSE (or /V) has been added
to M2L to enable the output of this linker information.
By default the output is not verbose.
* A new switch, /DEBUG (or /DEB) has been added. This
switch corresponds to the compiler /DEB option. When
linking a program for debugging, specify the /DEBUG
option on the command line (or in the M2LOPT environment
variable).
* MAP files are no longer generated by default. Use the
/MAP (or /DEBUG) option to generate a .MAP file.
Utilities
=========
All of the utilities have undergone extensive user-interface changes
and improvements. The look and operation of these programs may be
somewhat different than that described in the Toolkit manual, but
the overall result of the program's operation is the same.
M2Vers
------
The M2Vers 3.40 version utility now operates 20-30% faster than
M2Vers 3.03. A new option, /I, controls the display of version
change statistics information. If "/I+" is selected, the statistics
information is displayed. The default is "/I-". In addition, line
numbers are displayed for errors and warnings, to allow you to more
easily locate the problem in the source file.
M2Decode
--------
The M2Decode utility now generates mixed source by default, and will
automatically generate a decode backup file (.DBK) instead of prompting
for different output files. The decode output is now combined in one
single .DEC output file. Several enhancements have been made to the
overall look and operation of M2Decode; included is a "percentage of
completion" counter that comes in quite handy when decoding large
object modules.
M2Make
------
M2Make now supports automatic building of overlays with a new command
syntax. To completely build a program that uses overlays, you specify
it with a syntax similar to M2L. For example, if you had a program
"Base", and it contained two overlays, "Ovl1" and "Ovl2", and "Ovl2"
contained an overlay "Ovl3", you could easily "make" the entire program
by using this command:
M2Make Base(Ovl1+Ovl2(Ovl3))
This command generates a CMDFILE.BAT that will automatically compile and
link the files necessary to build the entire application (including the
overlays).
Note: The syntax for generating overlays with M2Make is similiar to but
reversed from the syntax for generating overlays with M2L.
M2Check
-------
M2Check now supports a batch-mode option, "/B". If you want to
execute M2Check from a batch file, specify "/B+" after the file
name argument. For example:
M2Check TEST.MOD/B+
The default setting of the "/B" option is "/B-".
Libraries
=========
All known bugs in each of the libraries have been fixed.
The Debuggers and the POINT Editor
==================================
For information on the changes to the Run-Time and Post-Mortem Debuggers,
refer to the file DEBUGGER.DOC. For information on changes to the POINT
Editor, refer to the file POINT.DOC.
Priority Levels Enhancement
===========================
The compiler now supports the compilation of programs containing priority
levels greater than seven (a maximum of 16 levels are now supported). The
supplied RTS, however, only supports a maximum priority level of seven.
If you wish to use the greater number of priority levels, you must modify
the RTS so that it can properly support the larger priority levels.
Logitech Modula-2 Technical Support can not provide you with any support
regarding any modifications you make to the RTS. For more information,
see the file RTSREAD.ME in the M2LIB\RTS directory.