REVIEWS COURTESY OF ZXSR

Blast!
Oxford Computer Systems
1985
Crash Issue 20, Sep 1985   page(s) 88,89

MACHINE CODE WITHOUT TEARS PART II

NEW BASIC COMPILERS

Last month we looked at five well-established Spectrum compilers - programs to translate ZX BASIC into fast machine code. We left you excitedly waiting for the results of our tests on two new compilers Colt and BLAST. At the last moment, we received a copy of Mcoder 3, another BASIC compiler scheduled for imminent launch. Do the new programs knock spots off the golden oldies? Read on to find out....

BLAST
£24.95 from Oxford Computer Systems (Software)
Hensington Road, Woodstock, Oxford, OX7 1JR

BLAST is the compiler that everyone has been waiting for, since the first advertisements appeared back in May. Billed as 'the first fully compatible optimising BASIC compiler', capable of compiling 'ANY BASIC PROGRAM, without alteration' into 'super efficient code capable of running at up to forty times the speed of BASIC'. Other advertised goodies included 'many extensions', 'genuine integer variables', 'debugging facilities', and 'a comprehensive toolkit '.

With a billing like that, we couldn't wait to get our hands on 'the complete BASIC programmer's package' . Sadly, the reality was rather different from the hype.

BLAST is supplied in a large Plastic box, about the size of two Betamax video cassettes. Inside the box is a 30 page typeset handbook, of roughly A5 size.

Three sides of corrections, on separate sheets, convey the first disappointment the 'MANY EXTENSIONS' touted on the lid, have not been implemented 'due to lack of memory'. As compensation, some extra features have been added to the toolkit.

The manual's content - once you've made the corrections and crossed out the pages which are now irrelevant - is quite interesting. Unfortunately there are no examples and the organisation is poor; the manual skips back and forth between subjects and contains several irritating forward references. The spelling and grammar are erratic.

The box also contains a 'protection' grid, which you are asked to refer to whenever the compiler is loaded - it contains about a thousand coloured dots. You have to identify four of them to prove that you have good eyesight and a legitimate copy of BLAST. If you make a mistake, the program crashes and you have to reload all 48K from scratch.

CHEAP TOOLS

The other side of the tape contains the BLAST toolkit, which offers all the usual facilities trace, search, copy, renumber, delete, list variables and so on. As with Colt, many BASIC programmers will already own such utilities.

There were signs that the toolkit had been thrown together in rather a rush it was possible to crash the machine by careless use of Search and Replace, for instance. The special 'BLAST save' option, which writes files in small sections so that they can be read piecemeal by the compiler, does not check its parameters until after it has printed the START TAPE prompt, giving a jumbled display. There is no wait for a key press before saving begins.

The BLAST renumber command can't cope with more than 643 lines, unlike other toolkits. Most annoying is the fact that search and replace does not cope with the 'hidden numbers' in all Spectrum programs. ZX BASIC keeps the binary form of numbers stored after the text, though you can't see it when you type LIST. BLASTcan't see it either, so an attempt to replace one number with another changes the text but not the value you see the new value when you type LIST, and the old one when you run your program!

BLAST OFF

BLAST generates two types of code machine code, which is fast but verbose, and p-code symbolic code which is concise but runs more slowly. There is just 2.5K free once the compiler has been loaded, so you can only compile tiny programs without recourse to tape or microdrive. The toolkit is 5K long (the manual says 2K), so you can't load it at the same time as the compiler.

We tested BLAST with the eight standard benchmark programs. The machine code timings obtained are shown in the benchmark table. BLAST code is slightly faster than that from Softek's FP compiler, substantially slower than that from Mcoder 3, the other 'full' compiler, and much slower than the integer-only compilers. These results were a little surprising an 'optimising' compiler ought to be able to make mincemeat out of the benchmarks.

We tried using the p-code instead of machine code, and found that the results were up to twenty percent slower than when machine code output was selected, The big shock came when we specified that some variables were to be treated as integers - it made no difference at all!

Without this option, it is hard to believe that the promised speed up of 40 times could be achieved in real programs. An Oxford employee admitted on the 'phone that the optimisations advertised and documented in the manual were missing. We were promised a succession of upgrades, but none arrived after several weeks and repeated requests.

3BLAST's user-interface is good, with no need of the RAND USR calls of the compilers reviewed last month. To compile a program you type one two-character command; to run it you type another. As programs are compiled, the screen memory is used as a temporary storage area, producing a riot of flashing dots and cascading colours, which helped to pass the time during compilations, which took place at a rate of a couple of lines per second.

As a simple test of BLAST's error-detection, we gave it a program containing a spurious NEXT statement. The error was not detected as the program was compiled; when we ran the code the value sixty million million was mysteriously printed and an 'out of memory' error occurred, with no indication of the type or location of the error. To be fair, we tried the same incorrect program on the other compilers. They coped rather better, either skipping the extra NEXT or rejecting it with a 'NEXT without FOR' message.

We then limbered up our microdrive, and prepared to compile some real programs. Our first attempt came to an end after about a minute and a half, when BLAST spat out the message 'VARS TOO LONG' and crashed as soon as a command was entered. We 'phoned Oxford to ask what this meant, but they wouldn't say. Another upgraded copy of the compiler was promised, but, a fortnight later, it hasn't turned up.

We tried the same thing again, and found a rather silly bug - BLAST crashes if the file which it is asked to write already exists. After re-loading, looking up the colours and so on, we checked that the compiler acted sensibly if the input file was missing. It didn't it crashed, again.

We tried another published BASIC game, which Mcoder 3 had compiled successfully. After 852 seconds (they said BLAST worked in 'seconds') the compiler stopped, complaining 'SYSTEM ERROR 1'.

It was a relief to find a simple Program (Spectrum Autosonics, published by Buttercraft way back in 1982) that BLAST was able to compile. Or at least, BLAST chugged all the way through the code and produced an output file. When we tried to run it, following the instructions to the letter, guess what?

The machine crashed.

We couldn't find a single, non-trivial program that BLAST would compile.

In case you haven't already got the drift, the performance of BLAST is pretty shocking; we wonder what those who have already paid £24.95 for a copy must think. The program seems to have been launched almost totally untested the documentation and the advertising bear little relation to the product.

Not so much a BLAST, more of a Phut.


.

Blurb: The review of BLAST printed here used version 2.0 of the program, borrowed from CRASH Mail order, As we went to press, a review copy of BLAST version 3_0 arrived - and we had a quick look... The bugs that made the compiler we reviewed incapable of coping with non-trivial programs have been fixed, it seems. Some of the benchmark timings have improved, but BLAST 3.0 still produces consistently slower code than Mcoder 3. It appears that the integer option still has no effect, and indeed there are no signs that the other advertised optimisations are taking place. We would warn potential purchasers of BLAST to make sure that the versions they buy are at least 3.0 or above. With Version 3.0 there's only 2K free for compiling in memory. We still can't recommend BLAST to anyone without microdrives: as the manual says, 'if you have large programs to compile and no microdrive we strongly advise that you get one...' If you have already purchased an early copy of BLAST, Oxford Computer Systems will happily exchange your copy for version 3.0, their PR company tells us.

Blurb: BENCHMARK TESTS - Comparing the compilers Eight standard BenchMark programs were used in the comparison: timings for the execution of each benchmark program are given in seconds, with the speedup ratios achieved by each of the compilers printed on a grey background. BM1 ZX BASIC: 4.9 BLAST: 6.3x / 0.78 COLT: 94x / 0.052 MCODER3: 42x / 0.118 BM2 ZX BASIC: 9.0 BLAST: 4.7x / 1.93 COLT: 83x / 0.108 MCODER3: 10.7x / 0.84 BM3 ZX BASIC: 21.9 BLAST: 2.7x / 8.2 COLT: 37x / 0.60 MCODER3: 3.3x / 6.7 BM4 ZX BASIC: 20.7 BLAST: 2.1x / 9.7 COLT: 23x / 0.89 MCODER3: 3.1x / 6.7 BM5 ZX BASIC: 25.2 BLAST: 2.5x / 9.9 COLT: 27x / 0.92 MCODER3: 3.7x / 6.8 BM6 ZX BASIC: 68.2 BLAST: 4.3x / 15.8 COLT: 52x / 1.3 MCODER3: 7.7x / 8.9 BM7 ZX BASIC: 86.7 BLAST: 4.4x / 19.6 COLT: 50x / 1.72 MCODER3: 8.8x / 9.9 BM8 ZX BASIC: 25.1 BLAST: 1.07x / 23.5 COLT: 0x / - MCODER3: 1.13x / 22.2

Transcript by Chris Bourne

Sinclair User Issue 43, Oct 1985   page(s) 37

EXPLODING INTO CODE

Marcus Jeffrey turns the heat on the Blast compiler

Publisher: Oxford Computer Systems, Hensington Road, Woodstock, Oxford OX7 1JR. Tel: 0993 812700
Price: £24.95
Memory: 48K

If you have ever written a Basic program, or if you have ever owned a Basic program, you can probably find a use for the Blast compiler.

When you run a Basic program it is interpreted by the Spectrum, one line at a time. The advantage of compiling the code is that the entire Basic program is converted into machine code before it is run, giving a much faster execution time.

Blast arrives on cassette with a 30-page user manual. You can also backup Blast onto microdrive. Now to speed up those sluggish programs, though you are not likely to be able to do a lot with less than 3K of memory available!

Unfortunately, in order to create such a sophisticated compiler, the programmers have used nearly all of the available memory. So, if you want to compile a program of any reasonable size, you will have to compile from tape-to-tape - or microdrive.

Compiling on the Spectrum can be very prolonged, especially using tapes. In that case, you first have to load in the toolkit and make a special copy of the program to be compiled onto tape. You then start compilation, and the computer constantly prompts you to change the tapes over.

The main selling points of Blast are its speed and Basic compatibility. We put it through its paces. Programs can be compiled into either pure machine code or the more compact 'p-code'. OCS claims a speed increase of up to a factor of 40. Try as we might we could not get even close to that, whatever instructions we included. Nevertheless, you can expect a minimum speed increase of between five and 10 times for most situations.

Blast is said to be able to compile all Basic programs. That includes those which call user-written machine code routines, and even those using Basic extensions.

We tried out a number of programs, and all but one worked correctly. We have still no idea why that one program posed problems. The assumption must be that Blast is pretty clever and will compile most, but not quite all, programs.

Blast was initially to have included a number of highly optimised Basic- extensions, such as WHILE..WEND, REPEAT..UNTIL, IF..THEN..ELSE and multi-line recursive functions. Unfortunately due to space restrictions those were not included - a great loss. Instead, supposedly as compensation, Oxford Computer Systems has programmed a couple of extra - and in comparison useless - additions to the toolkit, included on the reverse of the cassette. These are shown in figure one.

Blast does have its drawbacks, but its flexibility for such a wide range of programming applications makes it a must for the serious programmer.


REVIEW BY: Marcus Jeffrey

Blurb: FIGURE 1. TOOLKIT COMMANDS *E n1 - Edit line n1 *J n1 - Joins line n1 to the subsequent line *C n1,n2 - Copy line n1 to n2 *C ,n - Copy the range of lines to n onwards *D nl - Delete line nl. *D - Delete the line range. *M nl n2 - Move line nl to n2. *M ,n - Move the range of lines to n onwards. *R ,nl,n2 - Renumber the line range, starting at n 1 with step n2. *F ,string - Find and string in the line range. *S ,sl,s2 - Find and replace string s1 with s2 in the line range. *G - Turn on Global find and search. *A - Turn on Accept find and search (prompts user at each match). *V - Lists a number of useful system variables. *L - Lists all currently defined BASIC variables, including their values. *T - Start BASIC trace. halts execution. *U - Stop BASIC trace. *K - Kill REM statements (other than the special command REMS). *W , - SAVE the range of lines to cassette. *B - SAVE the current program to cassette in a form suitable for Blast compilation (tape-to-tape). *Q - Quit the toolkit. Note: The toolkit requires approximately 2K of memory, and cannot be used at the same time as Blast.

Overall5/5
Transcript by Chris Bourne

Sinclair User Issue 45, Dec 1985   page(s) 87

SPEED TRIALS

Marcus Jeffrey compares contenders in the battle of the Spectrum compilers.

BLAST BASIC COMPILER
Publisher: Oxford Computer Systems, Hensington Road, Woodstock, Oxford OX7 1JR.
Tel: 0993-812700
Price: £24.95

MCODER III
Publisher: PSS, 452 Stoney Stanton Road, Coventry CV6 5DG
Tel: 0203-667556
Price: £12.95

THE COLT
Publisher: Hisoft, 180 High Street North, Dunstable, Bedfordshire LU6 1AT
Tel: 0582-696421
Price: £12.95

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.

PSS' 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.


REVIEW BY: Marcus Jeffrey

Overall5/5
Transcript by Chris Bourne

Your Computer Issue 11, Nov 1985   page(s) 39,41

Spectrum 48K
OCS
Utility
£26.95

The idea of writing a game in Basic and then getting some dumb compiler to speed it up for you is enough to make some machine code purists take to the veil. But, for the rest of us, this utility could put an end to long nights hunting for an elusive bug which resets the machine when you shoot the fifth invader from the left on the third screen. There have been several Spectrum compilers before, but none have claimed to be as comprehensive as this.

On loading up, you are greeted with the cheery message that around 2K of the memory is free. So, any program to be compiled must be loaded section by section, compiled, and then saved; Microdrives are a must here. You can either compile into machine code, or p-code. P-code has the advantage of being more compact than machine code, or even sometimes Basic, and, as an undocumented language, may be fairly secure against hacking.

However, it is slower; for this reason, sections of the program can be compiled into machine code. Obviously there are some things which are best done in machine code, and Blast allows users to call machine-code subroutines, and will compile user extensions to Basic. The package is supposed to contain extra Basic commands, but these have been left out due to space; but you do get a useful toolbox of editing commands.

It is difficult to gauge the performance of this program. OCS claim that speed improvements of up to 40 times are possible. This obviously depends on the length of the program, the amount of calculation, and the way the program is written. The manual is currently undergoing revision, but the version with the review copy was hard work. Despite this, it seems that Blast has lived up to expectations, and is by far the best Spectrum compiler on the market. OCS is on 0993 812700.


REVIEW BY: Lee Paddon

Overall4/5
Transcript by Chris Bourne

ZX Computing Issue 22, Dec 1985   page(s) 42

ZAPPING YOUR GRAPHICS

ZX looks at some utilities that can help put some life into your graphics displays.

Although this is not technically or specifically a graphics program, I feel that much of its use will be for speeding up games and so decided to include it here. BLAST has been advertised for some time now and several versions exist.

The advertising seems to be a little optimistic, I was moved to comment in the last issue in the 'All Sinclair Machines' claim and of course it does not work on the QL or ZX81 but on all 48K versions of the Spectrum. It was an ambitious project and very nearly succeeds in their claim to 'compile any BASIC program', the program to do this takes up all but 2K of the Spectrum's memory. So now you have another problem, who wants to compile programs of only 2K or less? The answer that OCS came up with was to provide an extra TOOLKIT program. As a toolkit it is probably the most feeble available, however it allows you to save the program that you want to compile in a special format onto tape or microdrive.

So, you load Toolkit, load your program, save your program in the special form on tape then move on to phase two. This consists of loading BLAST and starting the compiler. This is very easy if time consuming, the program prompts for starting the tape and stopping, compiles each block, and when it is ready tells you to change tapes and save what it has done so far. This sounds complicated but is easy in practice. It is much easier on a twin microdrive system and OCS 'strongly urge' you to get one.

There are two forms of compiled code, p-code which is a sort of half way between machine code and BASIC and has the advantage of using less memory than either m/c or the original BASIC but, though faster than BASIC, is slower than m/c. The second is real machine code, this is usually larger than its Basic original (unusual) but faster than p-code.

A useful feature is AUTO RUN which makes compiled pro grams hard to break and copy. Not so good is the fact that the planned extensions to BASIC had to be abandoned due to lack of room, to make up for it a few more mediocre additions were made to the toolkit program.

Despite some reservations, BLAST is by far the best compiler we have seen (so far), it worked perfectly with all the programs we tried. I'm not too sure I like the over-optimistic advertising claims and one or two of our readers have written to tell us of problems they have had These do seem to be with specialist applications and if you are not intending to use it for general programs but for some with vast amounts of data for example, then it is best to phone or write to get confirmation that will do exactly what you require.

Oxford Computer Systems (Software) Ltd. £24.95.


Transcript by Chris Bourne

Your Spectrum Issue 19, Oct 1985   page(s) 13

BLASTING BASIC

Blast is a compiler: a utility that takes Speccy Basic and turns it into machine code - or that's the theory anyway. A pretty good idea, you're thinking - unfortunately, it isn't quite that simple. Others have tried to write compilers before but nobody seems to have quite got it right yet. The major failing of the packages on the market is their inability to compile certain instructions.

So, what's all the fuss about Blast for? Well, its major selling point is that it claims to compile 100 per cent of Basic programs. So, how, one wonders, does it manage it? Well, you can compile your programs using Blast in two forms. Firstly, it'll compile to machine code but the coding isn't very efficient and it'll use up more memory than the original program. So, its other option is lo compile to a language called P Code that uses up less memory but still has to be interpreted in the same way as Basic. But, it is faster than Basic though slower than machine code, so it's most useful when compiling really lengthy programs where space is at a premium.

Both machine code and P Code require some 5K of Blast to be present when the code is called, so if you're compiling a short Basic program then you'll probably find that the program will grow in size by quite a large amount.

If either the program to be compiled or the compiled code is too large to fit in memory then Blast can be instructed to take its source code from tape or Microdrive rather than RAM. The compiled program can also be written to any of these three. Compiling via tape is not only very slow, but awkward.

Compiling to Microdrive is worthwhile though, as Blast will happily access the drives as it needs to, without any instructions from you.

So, what of this claim that Blast can compile 100 per cent of Basic programs? Well, to test it out, I dug out a selection of four of my old Basic programs - some short, and others long just to see what Blast could do with them. My results were not too promising - two of the programs crashed when executed and the other two, although happily compiled by Blast, didn't seem to show any dramatic increase in speed, and nowhere near the claimed 40 percent speed increase.

On the B side of the tape comes a bonus in the shape of a toolkit. It includes features such as Copy line, Block move, Search and Replace, Trace and so on. Nothing special in other words. Really, until the bugs are ironed out, I'm not convinced that Blast yet justifies its £25 price tag, even with the freebies.


REVIEW BY: Tony Samuels

Transcript by Chris Bourne

Sinclair User Issue 44, Nov 1985   page(s) 41

While a number of companies have brought out Basic compilers during the past three years, Blast knocks out the competition.

Its most notable opponents were the FP Compiler from Softek and MCODER II from PSS. The PSS package would only deal with integer values and could not handle arrays or strings in an easy manner. While the FP Compiler could handle floating point numbers, as well as integers, it produced slow running code and could not handle arrays properly.

Blast can compile all Basic commands and produces an extremely fast object code which can be run from a Basic loader program. It is the only product on the market which can truly bear the stamp of compiler.


Transcript by Chris Bourne

All information in this page is provided by ZXSR instead of ZXDB