qlwiki:turbo

Turbo

After Supercharge came Turbo, produced by a team including Gerry Jackson, Chas Dillon and Simon Goodwin. A huge effort went into producing this compiler, which produced faster code than either Supercharge or QLiberator.

According to Simon Goodwin, the original version of Turbo (v1.13) was actually a beta version with features missing, never intended for release. In order to meet the pressure from Digital Precision Ltd to release Turbo early (although the eventual release date was only just a couple of months before Simon's planned release date), Gerry Jackson and Chas Dillon were brought on-board and planned features had to be scrapped (Turbotext and an optimiser phase).

Turbo compiles most programs the major exception, for versions before 5.01, being its inability to allow parameters to be passed to machine code routines by reference. This restriction was removed in 2005, in version 5.01.

Turbo uses a dedicated toolkit of BASIC extensions called Turbo Toolkit. Turbo could produce stand-alone QL executables, but needed a runtime version of the Turbo Toolkit if it used toolkit extensions.

Unlike its predecessor Supercharge, Turbo never used the Lenslok system, the software protection was more by means of a large paper manual printed in black ink on red paper, which was difficult to photocopy, although uncomfortable to read. Turbo also did away with the need for software houses to purchase a license or pay any royalties for commercial programs compiled with Turbo, which was a major benefit over Supercharge.

Turbo was probably the biggest selling SuperBASIC compiler and often managed to generate substantial debate between Turbo aficionados and QLiberator users as to which was the best QL compiler! One of the main reasons for this debate was the fact that Q-Liberator was less strict over the SuperBASIC which it could compile, whereas both Supercharge and Turbo complained more about poor programming.

  • PCW Benchmark 1: SuperBASIC 1.7, Turbo (floating point) 0.1, Turbo (Integers) 0.05 seconds
  • PCW Benchmark 2: SuperBASIC 4.8, Turbo (floating point) 0.2, Turbo (Integers) 0.08 seconds
  • PCW Benchmark 3: SuperBASIC 7.9, Turbo (floating point) 0.5, Turbo (Integers) 0.2 seconds
  • PCW Benchmark 4: SuperBASIC 7.7, Turbo (floating point) 0.7, Turbo (Integers) 0.15 seconds
  • PCW Benchmark 5: SuperBASIC 10.0, Turbo (floating point) 0.8, Turbo (Integers) 0.25 seconds
  • PCW Benchmark 6: SuperBASIC 20.2, Turbo(floating point) 1.7, Turbo (Integers) 0.55 seconds
  • PCW Benchmark 7: SuperBASIC 36.5, Turbo (floating point) 2.4, Turbo (Integers) 0.9 seconds
  • PCW Benchmark Integer Math: SuperBASIC 10.4, Turbo (floating point) n/a, Turbo (Integers) 0.6 seconds
  • PCW Benchmark Real Math: SuperBASIC 13.2, Turbo (floating point) 0.6 seconds, Turbo (Integers) n/a

The planned features which were never released were:

  • Turbotext (a subset of Speedscreen which would optimise text display in aligned CSIZE 1,0;
  • An Optimiser which would run between parser and compiler phases (some of which capability ended up in later versions of Turbo through work by Gerry, Chas and George based on Simon's development plans). With this phase, the program would have made more use of the faster templates are rather under-used (for example fast float incrementation - which is now only used in STEP 1 FOR loops). There would have also been a 'peephole window' to identify other times it could be used: by design it was capable of optimising adding or subtraction of powers of two (1, 2, 4 etc) to float values, typically addresses or indices, in common cases which otherwise dominate loop runtime;
  • Constant folding (particular useful with MANIFEST);
  • Trigonometric strength-reduction (similar to what was implemented in Lightning (and implemented more effectively by my Simon's FPUFNs for later 68K systems).

Turbo has continued to be maintained as a public domain program with thanks mainly to George Gwilt. To complement this version, a toolkit (TurboPTR) has also been released which allows you to interface Turbo compiled programs with the Pointer Environment.


Title: Turbo SuperBASIC Compiler
Language: Self-Compiled from BASIC plus some Machine Code
Author: Simon Goodwin, Gerry Jackson and Chas Dillon
Publisher: Digital Precision Ltd
Year of Publication: 1987
Platforms Suitable for: All Sinclair QLs and emulators
Price in July 1987: £99.95
Reviewed: Unknown
Commercial Status: Public Domain
Sources Available from: www.jms1.supanet.com
Latest Version available from: www.jms1.supanet.com

  • qlwiki/turbo.txt
  • Last modified: 2018/04/17 15:06
  • by vezhlys