Contents of the README.TXT file
Augusta is a subset of the US Department of Defense computer
language Ada. It was devised by Edward Mitchell and published in
Dr. Dobb's Journal. As published, it consists of four files.
AUGUSTA.BAS is the compiler, written in generic Microsoft BASIC.
It reads in keywords, predefined constants and some other stuff
from KEYWORDS.TXT when it is run. The remaining two files are
demonstration programs published with the compiler. SIEVE.AUG is
the popular Eratosthenes Sieve benchmark, while DEMO.AUG is a
simple number guessing game.
The rest of the programs in this set were added by me.
AUGUSTA.PAS is a direct translation of AUGUSTA.BAS into Borland
Turbo Pascal, with minor modifications to put it in procedure
form and make it a little more understandable. DISGUSTA.PAS is a
disassembler for compiled Augusta programs, to translate them
into something readable, similar to assembly language. Finally,
ATERP.PAS is an interpreter for compiled programs. The need for
these last two will be explained.
Augusta is based on an interpreter which implements a stack-
oriented virtual machine. This machine executes special "pseudo-
code", in which each byte represents a simple operation, say "Add
2 Integers", or "Print A String". The interpreter goes through
the compiled p-code, decoding the bytes and carrying out the
appropriate operation. This system has advantages and disadvan
tages. On the good side, the compiled programs can be moved to
another computer without any changes, and will run just the same.
The same could be said of the original source program, but p-code
can be interpreted much faster than the source could be. On the
bad side, p-code interpretation is much slower than a normal
program. The extra layer of software between the program and the
microprocessor has a high cost in speed. Furthermore, even
though the compiled program can be moved unmodified, the inter
preter can not. Each computer has to have its own interpreter.
Fortunately the interpreter can be written in a high level lang
uage and moved over with little trouble.
The published articles introducing Augusta span four issues
of Dr. Dobb's, totalling over fifty pages. They explain the
operation of the compiler, the language syntax, and the details
of the p-code system. I won't try to explain it all here.
Instead, I'll tell you how to get yourself started and let you do
the rest. If you want more info, I refer you to Dr. Dobb's
issues 75, 77, 79, and 81, running every other month from January
to July of 1983. There is a 160 page book about Augusta men
tioned in the article available from Laboratory Microsystems
Inc., 4147 Beethoven Street, Los Angeles, CA, 90066. They also
offer a complete Z80 CP/M interpreter written in assembly lang
I read about Augusta and got interested, but for some reason
no interpreter was provided with the compiler. Wanting to use
the system, I wrote an interpreter for my IBM PC. In the pro
cess, I needed and wrote a disassembler to see just what p-codes
were being used. And when those were through, I knew the com
piler well enough to translate it to Pascal in short order.
If you want to use my programs, you'll need Turbo Pascal. You
can compile the demonstration Augusta programs two ways. Either
you can run AUGUSTA.BAS from BASIC or AUGUSTA.PAS from Turbo.
They both use KEYWORDS.TXT and prompt for what they want. To run
the programs, you must have Turbo. Use ATERP. It takes one
command line parameter, the name of the compiled Augusta file.
If you want to see what p-code nmemonics look like, run DISGUSTA from
Turbo. It will prompt for the filename and go by itself, leaving
the text disassembly on disk. I've tried to make everything non-
MSDOS specific. I think I did it right, but it's untested.
AUGUSTA.PAS and DISGUSTA.PAS should be no problem, but ATERP.PAS has
a variable System_Size, to be defined as 8 or 16 as needed. If
you've set that properly and it still won't work, likely trouble
spots are the free memory calculations or the pointer operations.
If anyone has any comments or bugs to report or maybe an
improved version, I'd like to hear about it. I'll be the first
to admit that my work could use some work. Public domain soft
ware is meant to be explored and improved upon, and I'd like to
think that Augusta is no exception.
12404 Summerport Lane
Windermere, FL, 32786
January 6, 1986