In addition to the types described for the Turbo Modula 2 an additional type LONGCARDINAL (32
bit unsigned integer) is available. A slight difference between the two versions is in the range of
REALS, FTL reals are described as about 16 digit accuracy with an exponential range of -105 to +105,
miserly in comparison with Turbo, but better by a long way than any Fortran I have used. As with
Turbo any type can be created from the simple types and BYTE, WORD and ADDRESS are predefined.
A very valuable feature of this version is that all the sources of the modules have been
supplied, a feature that enables you to overcome any shortcomings, real or imaginary in this
package. In addition the editor supplied is one of the most friendly editors I have used. It is
like the Turbo editor in being Wordstar like, but is considerably faster. The Turbo editor often
has to perform disk access to call an overlay, to perform a function such as block moves.
The FTL editor, besides being fast, enables up to three files to be edited at once with the
screen split to three windows This may seem a luxury, but in Modula 2 you will often need to look up
a definition module to find the exact form of the procedure call. (This is particularly true for
Turbo which has very strong typing.) You can copy code between the windows, which if you are a cut
and paste programmer like me, is very useful.
The code for the editor, written in Modula 2, can be obtained, allowing you to customise the
editor. You can already customise to a large extent, as many keys have macros attached to them,
e.g. ESC T is THEN, and you can define your own macros. A minor niggle is that backspace is NON
destructive and Del. deletes backwards instead of forwards. Though I have changed the Del, key
macro definition so that it the same as Turbo’s, I couldn’t change the backspace definition.
The compiler can be run from the editor, ether in Fast check mode which produces no output, or
compiling to relocatable native code. In both cases, when an error is found editor is reinvoked
at the error location, with reasonable explanations of the error. It is possible to force further
compilation ignoring the error. This can not be done with the Turbo compiler, but it also invokes
the editor, and when the error is fixed it starts recompiling from the beginning of the module in
error, instead of the beginning of the source, a vast improvement over Turbo Pascal. Other than
these features it is an unremarkable, very fast compiler
The linker can also be made to run from the editor, but I have failed to do so. This is
probably due to my poor understanding of the MSDOS operating system, in particular the PATH command.
The linker produces .COM files. Again it is unremarkable in its behaviour, just well behaved.
Rather than remove the last comment I have decided to point out it was my misunderstanding of the
path command SET PATH= works, SET PATH = (which is the correct form in RTE) docs not work. The
linker can be invoked as well from the editor and the object program run, all with out leaving the
A surprising part of this package is an 8088 assembler, using the standard small memory model
(64K data, 64k code). It is included so that you can compile the assembly languages library
modules of any assembly languages modules that you write yourself. This assembler is really a tiny
assembler and I would have been happier with the approach adopted by Borland; it would be so much
nicer to be able to link in Microsoft macro assembler and Microsoft Fortran 77 modules.
The librarian is again LU like, not quite as friendly as the Turbo Librarian or LU
Also provided is a debugger, but it would be more exact to describe it as a tracer rather than
a debugger. If the trace option is switched on in the compiler and linker, the modules. when
executed will printout their progress on the screen.
In completion the package contains a sort module and maths module which contain such useful
items, such as matrix inversion (Gauss method, with Partial pivot) – this is restricted to 10 x 10
matrices, but if you want to solve larger matrices, perhaps you should be using a mini anyway.
In conclusion, both of these packages are good value for money, proving a cheap entry into
the world of Modula 2. I hope this review, in addition to showing the strength of these packages,
will also tempt you to try writing programs in this new language