This is the most expensive compiler by a clear tenner, so it had better be good - or at least different! As the benchmark timings show, it produces fairly pedestrian code, typical 2-10 times faster than normal BASIC - but it is very flexible. You can use FP to speed up almost an ZX BASIC program that doesn't use arrays of more than one dimension, or the VAL and VALPP functions. The compiler also disallows calculations in DATA and GO TOs, but we wouldn't dream of using those, would we?
The documentation is barely adequate - a single large sheet of paper with an introduction, list of compiled statements and brief technical discussion.
The FP compiler displays the current line being processed as it works. When an error is found the compiler stops and shows the line containing the problem, with a question mark to show where the problem was found. You can't go on to detect subsequent errors, but this doesn't matter much since the compiler is very fast. You can compile several programs into different areas of memory by using CLEAR between on compilation and the next.
FP is a well-written program, but it is expensive and may not be useful to many Spectrum users, since it doesn't offer a dramatic speed increase over well-written BASIC. We'll look at it again next monst, when we examine BLAST, a new compiler designed to process 'off the shelf' programs.
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.ZX BASICBM1: 4.9BM2: 9.0BM3: 21.9BM4: 20.7BM5: 25.2BM6: 62.8BM7: 90.0BM8: 25.0MEHMOODBM1: * (0x)BM2: 0.065 (138x)BM3: 9.0 (2.4x)BM4: 4.2 (4.9x)BM5: 4.2 (6.0x)BM6: * (0x)BM7: * (0x)BM8: * (0x)SOFTEK FPBM1: 1.75 (2.8x)BM2: 2.1 (4.3x)BM3: 8.7 (2.5x)BM4: 9.4 (2.2x)BM5: 9.4 (2.7x)BM6: 19.7 (3.2x)BM7: 24.0 (3.8x)BM8: 22.5 (1.1x)SOFTEK ISBM1: 0.058 (84x)BM2: 0.076 (118x)BM3: 0.57 (38x)BM4: 0.98 (21x)BM5: 0.99 (25x)BM6: 1.32 (48x)BM7: * (0x)BM8: * (0x)MCODER2BM1: 0.043 (113x)BM2: 0.097 (93x)BM3: 0.62 (35x)BM4: 0.90 (23x)BM5: 0.92 (27x)BM6: 1.17 (54x)BM7: 1.47 (61x)BM8: * (0x)ZIP 1.5BM1: 0.031 (158x)BM2: 0.064 (141x)BM3: 0.194 (113x)BM4: 0.108 (192x)BM5: 0.115 (219x)BM6: 0.29 (235x)BM7: 0.46 (191x)BM8: * (0x)