Scor­pio News


October–December 1987 – Volume 1. Issue 4.

Page 23 of 55

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 editor.

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

Page 23 of 55