Index of /masterdisc/SS/LAN/0005

      Name                    Last modified       Size  Description

[DIR] Parent Directory 16-Jul-2006 21:25 - [DIR] ARC/ 16-Jul-2006 21:25 - [TXT] ATERP.PAS 05-Jan-1986 16:33 34k [TXT] AUGUSTA.BAS 09-Jun-1986 14:00 25k [TXT] AUGUSTA.PAS 04-Jan-1986 04:09 42k [TXT] COLOR.H 20-Sep-1986 17:47 1k [   ] CSR.DOC 10-Jan-1987 17:14 259k [TXT] CSR102.NWS 10-Jan-1987 18:23 26k [TXT] CSRDOS.H 15-Apr-1986 12:37 1k [TXT] CSRMENU.H 06-Aug-1986 10:09 1k [TXT] CSRMISC.H 05-Dec-1986 09:19 1k [TXT] CSRMODES.H 17-Aug-1986 16:59 1k [TXT] CSRMSC.LIB 10-Jan-1987 16:51 61k [TXT] CSRPROMO.C 10-Jan-1987 16:55 10k [   ] CSRPROMO.EXE 10-Jan-1987 16:56 22k [TXT] CSRSHELL.ASM 10-Sep-1986 13:47 2k [TXT] CSRTIME.H 05-May-1986 15:46 1k [   ] DATEDIFF.EXE 20-Aug-1986 06:50 9k [TXT] DEMO.AUG 06-Jul-1985 15:01 3k [TXT] DISGUSTA.PAS 29-Oct-1985 13:39 9k [TXT] ERRORS.H 05-May-1986 15:51 1k [TXT] KEYWORDS.TXT 06-Jul-1985 15:01 2k [TXT] NIMBUS.TXT 06-Sep-1989 16:58 1k [TXT] SIEVE.AUG 06-Jul-1985 15:01 1k [TXT] SKEY.H 23-Feb-1986 12:24 2k [TXT] SOUND.H 30-Oct-1986 11:29 1k [   ] SOUNDEFF.EXE 27-Aug-1986 09:30 6k [TXT] TIMERS.C 10-Jan-1987 06:00 4k [TXT] TM.C 13-Dec-1986 11:26 1k [   ] TM.EXE 13-Dec-1986 13:35 15k



     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
uage.
     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.

                                   Jim Castleberry
                                   12404 Summerport Lane
                                   Windermere, FL, 32786
                                   January 6, 1986