I will gladly furnish telephone contact information
for Dennis Goodrow to anybody who
sends an email requesting varification of the
program's freeware status and authorization
allowing it's online distribution by me from
this folder.
Cheers & Enjoy!
Tom
Einstein Compiler Mini-Manual
by Rubywand
About Einstein
Compiling an Applesoft
BASIC program creates a much faster running program.
Einstein offers an easy to use, yet flexible,
way to compile Applesoft BASIC
programs intended to run under DOS 3.3.
The Einstein compiler
requires an Apple II with at least 48k RAM and Applesoft
in ROM (or available via a RAM card or ROM card).
The DOS used should be
standard DOS 3.3. (Prontodos or EsDOS are faster
and probably okay; but, I do not
know for certain.)
Einstein does permit
creation of global variables for use by several program
modules. At present, this doc does not supply
details for use of global variables.
Disk Contents
EINSTEIN- the compiler
REMARK REMOVER- utility which removes REMs from your source program
REMAKE COMPILER DISK- utility for restoring
compiler disk should power
fail or the user make a destructive error during
compilation
The Einstein disk does not include DOS 3.3 and
is not bootable.
Getting Started
First, boot DOS 3.3 and
start a whole-disk copier such as Disk Muncher or
Copy II Plus. Make a copy of your Einstein disk
and place a write protect tab on
the copy.
Since Einstein uses its
disk for information storage during compilation, your
'working copy' of Einstein should not be write
protected.
Compiling a Program
o- Boot DOS 3.3
o- If you do not have a Save Disk for your
compiled programs,
INIT a diskette and label
it "COMPILED". (You can save a
compiled program on any DOS
3.3 disk; mainly, you want to
be sure to have a disk ready
with enough space.)
o- LOAD the program (called a "source program")
you want to
compile. Suppose the source
program is named "NARFGAME".
o- If you have two drives, insert the Einstein
disk into Drive 2
and enter BRUN EINSTEIN, D2.
If you have one drive, swap
the Einstein disk into Drive
1 and enter BRUN EINSTEIN.
o- After about 10 seconds the compiler
asks if you want to use
the Standard Parameters. Often,
you will enter "Y" for Yes.
o- When the compile is done you should
be at the usual Applesoft
prompt. Insert (or swap in)
your "COMPILED" save disk and
enter SAVE NARFGAME.COMP (or
whatever name you like).
Usually. it is a good idea
to settle on some naming convention
that lets you tell that a
file is a compiled program.
Notes
Stopping a compile: If for some reason you
want to stop and exit the
compilation process, press CONTROL-C.
Warning: Do not turn off power or press Reset
or open the disk drive
door in order to interrupt a compilation.
Doing so could corrupt your
working copy of the compiler disk. (An I/O
ERROR during compilation
could indicate a corrupted compiler disk.)
To fix a corrupted compiler
disk, you can recopy it from your backup or
boot DOS 3.3, insert the
corrupted compiler disk, and BRUN the REMAKE
COMPILER DISK utility.
If you get a PROGRAM TOO LARGE error
during compilation, you may be
able to significantly reduce program size
by removing REM messages in your
source by BRUNing the REMARK REMOVER utility.
The REMs will remain but
the messages following each REM will be removed.
SAVE the reduced size
program. (To to avoid overwriting your REMed
original, SAVE under a new
name.)
In a source program DATA statement,
avoid mixing strings in quotes with
strings not in quotes.
If you include an HGR and/or HGR2
statement in your source program, space
will be reserved for loading in hires pics
at $2000 ... and/or $4000 ...
respectively.
Einstein does not accept a few Applesoft commands
(see below). During
compilation the usual indication will be a
TOKEN
m IGNORED in n error
message, where m= decimal value of the BASIC
token and n= Line number
in the source program.
Applesoft Commands Einstein Ignores
In the listing below,
the BASIC command token value in decimal is shown in
parenthesis.
CONT(187)- Use a CALL to begin execution
of code for a compiled Line. The
address for the desired line can be found
from the listing displayed and/or printed
out during compilation.
DEL(133) and LIST(188)- neither of these is supported.
LOMEM:(164) and HIMEM:(163)- Use parameter changes to set these.
STORE(168) and RECALL(167)- These cassette tape commands are not supported.
&(175)- Einstein interprets this as
a JMP to $3F5. If variable names follow the &
they will not be found by the machine language
routine.
Memory Map using Standard Compiler
Parameters
$0000- $07FF is the same as usual for Applesoft
with DOS 3.3:
Zero page, Stack, Input buffer, User area,
Text display area.
$0800- $12FF holds Einstein Runtime Library routines.
$1300- $95FF (DOS 3.3 default) holds the
program, String Pool, and
Local Variables.
$9600- $FFFF is the same as usual for Applesoft
with DOS 3.3:
DOS 3.3 and buffers, I/O, Applesoft, and
Monitor.
Example
$FFFF ____________________________________________________________
Apple II Monitor Routines
$F800 ____________________________________________________________
Applesoft
$D000 ____________________________________________________________
I/O Area
$C000 ____________________________________________________________
DOS and buffers (default*)
$9600* ____________________________________________________________
Local
Variables
Address
Program: Local Variables
(saved downward starting
at $95FF*)
------------------------------------------------------------
Program: String Pool (Top is set just below Local
Variables. Strings are saved downward. Base starts just
after end of program or after the last reserved area,
whichever is higher.)
String ____________________________________________________________
Pool Base
Address
Program area (continued)
end ------------------------------------------------------------
A reserved area (e.g. $2000- $3FFF for hires page 1
as via an HGR command)
start ------------------------------------------------------------
Program area
$1300 ____________________________________________________________
Program
Address
Einstein Runtime Library routines
$0800 ____________________________________________________________
Library
Address
System routines and Text display area
$03D0 ____________________________________________________________
Available for user routines
$0300 ____________________________________________________________
Reserved for System
$0000 ____________________________________________________________
Some Commonly Changed Compiler Parameters
To modify the setting
for one or more parameters, enter "N" ("No") near the
start of compilation in respose to the question
asking if you want to use the
Standard Parameters.
PRINTER SLOT NUMBER (default is 0)
May change to the Slot number used by your printer
interface (usually 1) in order
to obtain a printout of information displayed
during compilation.
LOCAL VARIABLES (default is $9600)
May change to reduce memory allocated for DOS
buffers to have more space for
your program as follows:
$9853 (and include a MAXFILES = 2 command
near start of source program)
$9AA6 (and include a MAXFILES = 1 command
near start of source program)
May change to effect an implicit or implied HIMEM: command.
May change to leave an area of memory open for
BLOADing machine code
routines just below DOS 3.3 area.
STRING POOL BASE (normally set above end of program and any reserved areas).
This parm is meaningful only if dynamic strings are used. (Almost always they are.)
Since String Pool is linked to Local Variables
area, the base address must change
if Local Variables address is changed to some
place below the end of the program.
May change in order to leave an area of memory
open for BLOADing machine
code routines just above the end of program (or
highest reserved area if higher
than end of program).
ENABLE LINE TRACE (default is YES)
The normal YES setting enables use of TRACE and
NOTRACE commands and lets
CONTROL-C interrupt program execution. It also
enables error reporting and
lets the RESUME command work.
May change to NO after program is completely debugged
to save 7 bytes per line
and slightly speed program execution.
RESERVE MEMORY (default is NO)
May change to YES in order to specify one or more
areas of memory which are to
be kept clear of code generated by the compiler.
(Reserved areas are held free
by the compiler only with respect to the compiled
program and String Pool.)
There is no need to specifically reserve memory
for hi-res screen areas if the
corresponding HGR and/or HGR2 commands are present
in the source.
STRUCTURED FOR LOOPS (default is NO)
May change to YES if all of your FOR-NEXT loops
are properly structured. The
gain is more compact faster executing code.
A properly structured FOR-NEXT has just one NEXT
and the NEXT is located in
the source after the FOR.
DISPLAY ADDRESS (default is YES)
Changing to NO is usually a good idea if compilation
information is being printed out.
A NO setting avoids printing out individual Line
information.
Download
EinsteinCompiler.zip contains ...
EinsteinCmp.sdk
EinsteinCmp.nib
EinsteinDoc.txt (a copy of info in this file)
The .sdk file is a ShrinkIt disk archive.
Use ShrinkIt v3.4 to unshrink it to a
5.25" Apple II 140k disk.
The .nib file is a disk image of the compiler for use with Apple II emulators.
Download
EinsteinCompiler.zip(unzip using WinZIP or similar utility)