From: eldred@rrunner.jpl.nasa.gov (Dan Eldred)
Subject: MacMETH 3.2 Modula 2 compiler--free
Organization: Jet Propulsion Laboratory
Date: Wed, 23 Dec 1992 02:49:31 GMT

I recently ran across a modula2 compiler called MacMETH 3.2 on
the sumex-aim archive.  It is written by N. Wirth et al for the
Macintosh, and it seems to be a pretty nice self contained package,
once you get used to their abuse of the Macintosh user interface.
I'm surprised to have not seen discussion about it on this newsgroup,
so I'll start it.  Features of MacMETH include:

	Built in editor which displays errors generated by compiler
	Option to use editor of your choice
	Smart shell for edit/compile/run cycles
	Compiler with 68000/68020/68040 options
	Linker for generating stand-alone applications
	Symbolic debugger
	Cross reference utility
	Lots of examples
	Extensive libraries (e.g. CursorMouse, Menu, FileSystem, etc.)
	A detailed and useful manual in Microsoft Word (~200 pages).

The libraries make it much easier to do Macintosh GUI programming than
by using the toolbox routines directly (which are also accessible); the
ease of programming is comparable to Microsoft Quickbasic.  I've run
both the compiler and programs generated with it on a Mac Plus, an SE/30,
and on a Mac Quadra without problems.

The main irritation I have with MacMETH 3.2 is that it doesn't use the
Macintosh interface in the normal way (but you get used to it quickly).
While doing operations such as opening a file, a one-line window opens
up at the bottom of the screen which displays a "best guess" for the
next command.  For example, if you have selected the "Edit" command then
this window displays the name of the file which you have worked on most
recently.  To activate this selection you either have to hit the enter
key or click the mouse on this small window.  To get the standard Macintosh
dialog box for opening a file, you hit the tab key when this small window
opens.  This is really obscure, violates the Macintosh GUI strategy, and
I didn't figure it out until I plowed through the manual.  Error messages
are also displayed in this small window.  Even though the system does
become pretty efficient once you do learn it, it does not come close to
conforming to the Mac interface.

The only other problem I have found so far is that pathname variables
are limited to 63 characters.  This means you can't have source files
for MacMETH buried too deep in a directory tree.

User interface aside, it is a very high quality product.  In particular,
it has the simplicity and well-thought organization which are trademarks
of N. Wirth.  I had never touched a line of Modula code before MacMETH
(I'm a Unix C programmer with experience in Pascal), yet I was up, running
and writing code in Modula almost immediately.  I'm certain there are other
limitations (segment size, number of globals, size of symbol table, etc.)
which are typical of Mac programs, though the manual claims that some very
large projects were compiled with MacMETH.  Also I don't know how to link a
MacMETH program to, say, a Think C or Think Pascal program (any hints?).
Nevertheless, I strongly recommend MacMETH 3.2.  And you can't beat the
price.

	- Dan		eldred@rrunner.jpl.nasa.gov