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 disadvantages. 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 interpreter can not. Each computer has to have its own interpreter. Fortunately the interpreter can be written in a high level language 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 mentioned 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 language. 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 process, I needed and wrote a disassembler to see just what p-codes were being used. And when those were through, I knew the compiler 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 software is meant to be explored and improved upon, and I'd like to think that Augusta is no exception.