Marcus Jeffrey compares contenders in the battle of the Spectrum compilers.
SINCE OUR recent review of the Blast Basic compiler for the Spectrum, two new compilers have hit the market.
The first is known as The Colt, from Hisoft, and was written by the author of the two compilers Mcoder I and Mcoder II, which were previously released by PSS. Meanwhile PSS has brought out a different compiler, thought to be a French product, which it has confusingly called Mcoder III.
We decided to put both those new releases up against Blast, which has been receiving some bad publicity of late, to see how they fared.
The Colt is a fast integer only compiler, and speed-wise came out as the best of the three. That is not surprising when you consider that apart from BEEP, CIRCLE and DRAW statements, it can only use integer arithmetic - integer numbers in the range -32768 to 32767. That isn't quite true, because you can still access floating point arithmetic via VAL and STR$ statements, but those can't really be used effectively.
In addition to being integer only, there are quite a few other Spectrum commands which The Colt cannot handle. Those include multi-dimensional arrays - making the use of string arrays particularly difficult, CLEAR to lower RAMTOP for machine code or data, and user-defined functions.
On the other hand, The Colt does include a fair selection of extras, which enhance not only compiled code, but also interpreted Spectrum Basic. Those are all part of a suite of routines known collectively as the Executive which sits at the top of memory until the user needs the space, and removes it.
The Executive allows a whole multitude of new commands, including sprite graphics, windowing with scrolling and colour commands, keyboard scanning, machine code parameter passing, error handling, a trace facility and a multi-line delete.
Moving on, Mcoder III from PSS is more in a line with the Blast compiler, being able to handle most Spectrum Basic, including floating point arithmetic. There are a few commands which Mcoder III can't cope with. Those include redimensioned arrays, or arrays which are dimensioned with a variable, rather than a constant.
It's all very well telling you that one compiler will compile something, whilst another compiler won't, but that doesn't help you decide which to buy. We decided to test them all out using your own programs. In the Program Printout section of this issue are three programs: Body Blow, Power Paint and King Fisher. How did the compilers fare with these?
King Fisher was found to be by far the easiest, and both Blast and Mcoder III were able to compile the program without trouble. Both of the compiled versions were significantly quicker, although nowhere near the speed increases you are likely to see the publishers claiming. The failure in this case, after a valiant effort, was The Colt.
The Colt was also the only failure with Body Blow. This software again showed some improvement in speed with Blast and Mcoder III, but was limited by the high rate of user input necessary in this particular program.
Finally, both The Colt and Mcoder III failed abysmally with the drawing package, Power Paint. The Colt threw up errors - non-compilable code - all over the place, reaching the point where the program needed rewriting to compile it. Mcoder III, on the other hand, completed its syntax check without error, then stopped whilst trying to compile the code, on a line which PEEKed from screen memory.
On a more successful note, Blast handled the compilation perfectly, and significantly improved the program speed, though again, not by as much as Oxford Computer Systems would have you believe.
As well as those three programs, we tested the compilers on a range of additional programs designed to test their speed, rather than Spectrum BASIC compatibility. In those tests, The Colt really came into its own.
The Colt was able to give an average speed increase of approximately 17 times faster than Basic, whilst Mcoder III and Blast gave a factor of around 12 times normal speed.
PPS' Mcoder III was marginally faster than Blast in the trials, but Blast was being used in its default p-code mode. That gives a compact sub-code, which is then interpreted into Z80 machine code. If space was no problem, then setting machine code mode would probably improve the speed factor further.
If you are intending to write your own programs from scratch, fitting into less than 30K, and not needing floating point arithmetic, then The Colt must be highly recommended.
Both Blast and Mcoder III can handle floating point arithmetic, appear to give similar speed increases, and are able to handle the majority of Spectrum Basic. Mcoder III is a lot cheaper, and would be recommended to cassette users.
Finally, Blast, although much dearer than its rivals, emerges as a superior product. Having tried it out on a wide range of programs, it was able to compile them all, including the failure from the previous review.
Publisher: PSS, 452 Stoney Stanton Road, Coventry CV6 5DG.