B A S I C C O M P I L E R
for CPC 464, 664, 6128
This is a summary of the German instructions for the BC.COM Locomotive BASIC
compiler for those who don't speak German.
1.0 Introduction
The compiler takes a normal Locomotive BASIC program - even one using the extra
commands of the 664 and 6128 - and turns it into faster-running machine code.
It works with the 464, 664, and 6128, even with the Vortex RAM expansion.
1.1 In case of problems...
The author would be pleased to hear from you if the program does not seem to
work. However, the author is German, and so you'll need to speak German whilst
running up a massive international 'phone bill. Telephone the German number
0241/162 192, or write to Firma, GHE, z.Hd. Herrn Gunker, Julicherstr. 312,
5100 Aachen.
2.0 Hardware required
CPC 464, 664 or 6128 with at least one disc drive.
3.0 Compiler Operation
The compiler is executed from CP/M (either CP/M 2.2 or CP/M Plus). This is
achieved by booting up CP/M (insert a system disc and type ùCPM) and inserting
the disc with your program on. Your program should be a standard BASIC program
file (you don't need to save it as ASCII) with the file extension ".BAS". Then
type
BC <filename>
where <filename> is the name of your program, without extension.
There are two possible options:
L - this will make the compiled program omit line numbers and so save space
E - this is used if you do not want to use interrupts (AFTER, EVERY, ON SQ)
These are used as follows:
BC <filename> /L
BC <filename> /E
BC <filename> /LE
3.1/3.2 Commands supported
All Locomotive BASIC commands are supported, except:
AUTO, CHAIN, CHAIN MERGE, CONT, DELETE, EDIT, LIST, LOAD (BASIC program),
MERGE, RENUM, RESUME NEXT, SAVE (BASIC program), TROFF, TRON
The extra commands of BASIC 1.1 are supported, however, if you wish to maintain
compatibility with the 464, you should not use FILL, MASK, or transparent
graphics paper commands.
4.0 Speed advice
If at all possible, use integer variables. The speed difference is quite
considerable, as this example shows:
Floating point:
10 FOR i=0 TO 10000
20 NEXT i
Uncompiled 11.1s, compiled 8.2s
Integer:
10 FOR i%=0 TO 10000
20 NEXT i%
Uncompiled 5.9s, compiled 1.1s