vestal (03/31/83)
A few months ago I bought a Z80+CP/M system to do program development
on (because this corresponds to the available market. Someone
told me the largest CP/M user-base, in terms of hardware, was
Apple + CP/M card -- any hard data out there?) Anyway, I chose
Pascal (C fans please communiate to me in private). I chose
Pascal/MT+...
Why did I choose Pascal/MT+ ?
1) Of the compilers I was aware of (Pascal/Z, Whitesmith's
C preprocessor) it alone claimed to implement the full
ISO standard.
2) Even the benchmarks published by the Pascal/Z people
(Ithaca Intersystems) admit that MT+ has faster
floating point, which I thought would matter to me
in my intended application. Two notes here:
A) My intended application was numerical; in fact,
around 50% of real execution time is spend reading
overlays.
B) MT+ allows easy interface to the AMD 9511 Floating
Point chip. For non-overlayed programs which are
intensively computational, this could make a real
difference.
This isn't intended to be a comparison between Pascal compilers,
since I've only used one (on microprocessors). It simply
presents a list of my beefs (which are admittedly colored by
years of mainframe use).
PRO:
1) While I have only run 15,000 lines or so of code through
the compiler, I haven't uncovered a bug in code generation
yet. I have discovered a few in mainframe compilers, so
I commend MT+; on the other hand, I haven't really given
it much of a shakedown yet.
CON:
2) Pascal/MT+ claims to compile to both 8080 and Z80
architectures: there is a "z" compiler option to
generate Z80 code. I've just compiled three modules
(total 1523 source lines, selected from applications to
be pointer/data-structure intensive, numerical intensive,
and part of a recursive-decent parser) where the 8080
code is 11485 bytes and the Z80 code is 11483 bytes.
This is an 8080 compiler! The benchmark data given
in Ithaca Intersystem's "The Facts About Pascal" indicate
their compiler can produce code which averages about 75%
the space of MT+. I gather Pascal/Z was written for Z80's.
3) MT+ comes with an optional Speed Programming Package (SPP).
I got the false impression, after reading the MT+ hype
and working on an early UCSD system, that the two were
remotely related. Well, of course MT+ doesn't have that
kind of support in SPP. Nevertheless, I have some bitches
with SPP in it's own right:
A) It's an in-core editor; files are limited to around
500 lines on a 64K system.
B) SPP can create files it can't read. This seems to
be due to the way it reads/writes files in blocks.
If you "append" text into that last block, SPP will
will do fine and write the file. Unfortunately, it
seems to sense EOF before that last block, and refuse
to edit the file. (Fix: edit a new file and ^Q
Y)ank the old file. Yank seems to read characters,
not blocks.)
C) If you exceed SPP's memory buffer while typing, the
whole thing hangs. Very frustrating after you've
added those last few hours of comments. It all
goes down the tubes. Rule: when near memory buffer
exhaustion, ^Q and check remaining space often.
D) SPP incorporates a syntax checker. MT+ supports
modules and the (*$I *) include option. Due to the
limited editor space, EVERY program includes files.
The syntax checker doesn't know about includes, so
every module using them has syntax errors. MORAL:
Syncheck is useless.
E) SPP incorporates a routine which counts the number
of times a variable reference appears. This is
(claimed) to tell you if a variable is declared
but unused, or used but undeclared, because it's
# of uses is 1. With include files (see D), there
are huge numbers of identifiers which occur only
once. Another useless feature.
4) The linker supports overlays. You must tell the linker
where the overlay areas begin, the starting addresses
of global data, etc. Linking requires two attempts,
a notepad beside the terminal, and a willings to perform
hexadecimal addition by hand.
5) 253 procedure (or program body) too long
Well, what can I say? I haven't said a word about the
fact that it takes 30 minutes to compile 5000 lines,
though I have bitched about not being able to edit
modules 500 lines long. This should be chalked up
as a FLAME -- it IS irritating.
If you've gotten this far, you're interested. There are some
tricks you can pull during overlay definition and linking, and
the usual stunts diddling with dynamic memory allocation at
run-time if you're curious. One final bitch: I got my
software through Discount Software, and it took me over 6
months. I have no complaints about this. I DO complain about
the fact that I got my check back two months before they would
tell me it had been cashed, and every time I called them it
was a different story! (shipped last week... we'll ship it
next week... we don't have your order on file... we'll
have it in stock in a week... sigh!!!!)
Stephen Vestal, Ab.D.
a.k.a. The Acme Computer Company
...decvax!uw-beaver!vestal
VESTAL@WASHINGTON