History

This Amiga port of {\manual META}{\manual FONT} 2.71 is based in part on the complete TEX and {\manual META}{\manual FONT} system supplied by Edmund Mergl on Fish Library Disks 611–616. Starting with {\manual META}{\manual FONT} 2.7 from this implementation, I introduced a lot of modifications and enhancements. The major difference between the version by Edmund Mergl and my own is that now {\manual META}{\manual FONT} is a complete stand-alone package, relying on self-contained source files and utilities. (See section [*].)

From the beginning I did all my programming on the Amiga with the {\mc SAS/C} development system. The latest version 6.3 of this fine compiler is fully {\mc ANSI} compliant, so it detected a list of omissions in style and speech when recompiling the source code. A major cleanup of the extra files for {\mc C}, i.e., the introduction of prototypes and the correction of casting problems, was necessary.

As soon as version 2.7 was running, it was compared with the famous Amiga port by Stefan Becker from Fish Library Disk 486 and proved to be much slower, so some improvements seemed to be necessary to compete with this system as well. The tightest sections of the ``inner loop'' of {\manual META}{\manual FONT} were recoded in assembly language for 68020 Motorola processors. This resulted in an overall speedup of about twenty to thirty percent compared to the non-optimized version and of about five to eight percent compared to the optimized version by Stefan Becker.

Running the {\mc TRAP} test proved the correctness of the implementation, and this test routine by Donald Knuth was very convenient to find the last nasty bug in my own part (had something to do with a variable `be_careful'). But visual tests both with my own {\manual META}{\manual FONT} and with Stefan Becker's port showed problems with the online display. Neither the implementation by Stefan Becker nor by Edmund Mergl worked in accordance with the `{\manual META}{\manual FONT}book' [4]. Especially the test routine 6test.mf provided for the Computer Modern font family caused some rethinking. (An example of this test can be found on page 192 of [4].) Finally a revised version of amiga.c was up and running, using some advanced functions for drawing on screen, thus requiring version 2 of the Amiga operating system.

Adapting some ideas by David Crooke implemented in his Amiga port of TEX 3.141, I introduced a revised path search algorithm and the possibility to use runtime-definable memory sizes with {\manual META}{\manual FONT}. (See section [*] for details about the memory configuration.)

In September 1993 the first step to version 2.71 was done with the errata sheets provided by Addison-Wesley Publishing Company. All changes concerning the new version were implemented in the change file.

Finally in October 1993 I got hold of the official version 2.714, which replaced the old system completely. It included a new plain.mf base program and a whole new {\mc TRAP} test. The last change made to this implementation was the introduction of a really {\mc BIG} version of {\manual META}{\manual FONT} (and of TEX 3.1415 by the way) by increasing max_quarterword to 32,767 (32 Kilo quarterwords) and max_halfword to 1,073,741,823 (1 Giga memwords), so now nobody will ever exceed the maximum setting for the main memory (you would have to have 8 Giga bytes of free memory!). Everybody seems to think that `262,142' is the maximum value for memmax, although this value holds for 36 bit words only. This {\mc C} implementation works on the basis of ``64 bit words,'' i.e., a halfword is defined as long int, so the very much higher value may be used.