wampler@unmvax.UUCP (Bruce Wampler) (10/22/86)
Mark Williams C for the Atari ST - A Review Mark Williams has released an EXCELLENT C for the ST. (C for the Atari ST, Version 1.1, Mark Williams, 1-800-MWC-1700, $180). My first reaction upon receiving my compiler was a REAL C working environment at last! It comes with a shell program (the WEAKEST part of the package) that supports a unix like cc compile sequence. It has environment variables that tells cc where the various parts are (cpp, c0, libraries, etc.). It knows all about paths, and is EASY EASY EASY to use, unlike the developers C. Included with the package are a large number of Unix-like utilities: ar-archiver/librarian; as-assembler; cat; cmp-compare files; crashdmp-atari crash analyzer; db-symbolic debugger (looks good, and has usable documentation, unlike sid in developer's); df-disk free space; diff; drtomw-convert dri to mw; egrep-pattern matcher, reasonably fast!; help-almost like man!; ls-lots of directory options; make; me-micro emacs; mf-free ram; nm-prints symbol tables; od-dump utility; pr-print; size-size of a file; sort; strip-remove debugger info from .prg files; tail. The most sorely lacking utility is more. REALLY needed, but if you are fast with ^S.... Their shell is also not as good as you might hope for. The script language is a bit weak. For example, if you don't define one of the parameters ($1, $2, etc., just like Unix), it chokes. There are no if or shift operators to avoid the problem. The history mechanism is also crummy - it work realtive to the current command, so you do '!-3' to re-do the 3rd previous command. Who remembers what they did 3 commands ago, or wants to count lines. Oh well, I hear that Breckmeyer is supposedly working with Mark Williams to settle on a common environment organization, which is essential to smooth operation of cc. Documentation is excellent, although it appears to be a bit behind of the actual code (I have C Version 1.1). A few missing options (which you see in the usual Unix "usage" fashion anyway), some missing error messages. The documentation is a thick (650+ pages), paper back book. There is support for all the Atari libraries - VDI, GEM, TOS, ROM, AES. There is NO RCS support however, which may be a major problem for some developers. You could use the developer's RCS. There is no need to escape to assembly ever, as far as I can tell. There is full support for all the easy calls, as well as a nice LINE A interface - you can use LINE A directly from C. All of this is well documented, although the AES and VDI refer you to the Atari GEM documentation. This is REAL C, folks. No funny stuff. Most of your UNIX code can port directly with probably the only worry handling the CR/LF problem (which MWC does using "rb", "r+b", etc.). Pointers are 32 bit always. The compiler produces very helpful error messages, and detects some lint-like problems (variable unused, questionable pointer stuff, etc.). Library is richer than developer's C, better documented. Mark Williams is even friendly on the phone. I called about an undocumented error message I got, and I got through to the technical staff right away (on the 800 number, no less), and they seemed knowledgeable and eager to help. (Try that with Microsoft!). Too good to be true? Well, not so far. Finally, here are some numbers I gathered on MWC vs. Developer's C on two programs - the sieve benchmark, and my screen editor, TVX, which is several thousand lines long. Compile times are for an atari 20 Mb hard disk. program Compile/link time Code Size Run Time Developer's C sieve 2:01 9225 Bytes 4.8 sec Mark Williams C sieve :36 7366 Bytes 4.8 sec Developer's TVX 20:29 51517 Bytes ---- MWC TVX 8:40 52472 Bytes -- Dr. Bruce E. Wampler University of New Mexico Department of Computer Science Albuquerque, NM 87131 ..{ucbvax | seismo!gatech | ihnp4!lanl}!unmvax!wampler