-- Minor Update

- MacOS port by Harry(See MacOS/)
- Moved GCC files to GCC
   Files flex.cpp and rays.h need some minor edits so they can be used
   for both GCC and MSVC; the problem is some logical conditions were
   accidentally negated in GCC version. TODO: Resolve these, so we can
   go back to using the same files for both.
- games/mastermind/mastermind.c - Demo program converted by Harry 

[bj 13oct2006]


---------------------------------------------------------------------------
-- Source Release of version 2 beta 1.0 (2.1.0 BETA)
---------------------------------------------------------------------------

Finally we're releasing the source for Quetzalcoatl under the GNU Public License.
I had hoped to comment it to textbook level before this release, but it's been a 
year since Harry's changes and I haven't been able to find the time. 
Rather than delay it any longer, better to release it now. 

I backed out of Harry's GCC changes to FLEX.CPP and RAYS.H which were 
incompatible with MSVC. These are support files so apart from GCC-love
there is no functional change to the compiler. The changes were that
some conditionals became logically inverted (ie. if(1) became if(0)).
The changes to Quetzalcoatl proper seem fine, but do keep this in mind if you 
find a conditional apparently misbehaving around a GCC or NEW_CODE #ifdef. 
(The originals are in GCC/)
If you find Harry's NEW_CODE works, by all means merge it into
the mainstream. Likewise GCC requirements like initialising all
variables (not mandatory in MSVC) are nevertheless a good idea.
These days I do that to.                                                         

What separates Quetzacoatl from other compilers is that it's an LL(1) compiler
written by hand, and not an LR(N) automatically generated by e.g. YACC.
To find your way around the compiler, see the Quetzalcoatl Compiler Hacker's Guide:

	http://www.kdef.com/geek/vic/quetz/develop/chg.html

A copy is included in this distribution. See chg.html
This has been much updated for this release.

There's a HTML version of the language guide here. 
Queztalcotal is best described as Tiny-C with a ruthless streak:

	http://www.kdef.com/geek/vic/quetz/upl_pg.html

For general information on Quetzalcoatl see it's home page:

	See www.kdef.com/geek/vic/quetzal.html
	
SEE THE BOTTOM OF THIS README.TXT TO SEE WHAT ALL THE FILES ARE.

If you have any questions, please drop me a line at bj@kdef.com
Unfortunately that e-mail address attracts a lot of spams, 
so please put a receipt on your e-mail so you can be sure I get it.

Brendan Jones [9oct2006]


---------------------------------------------------------------------------
-- Quetzalcoatl version 2 beta 1.0 (2.1.0 BETA)
---------------------------------------------------------------------------

Latest updates:
Successfully compiled under gcc2.95.2 under Solaris 8
Successfully compiled with DJGPP version 2.02
Almost all code changes are inside #ifdef.  These were added:
 GCC		Wouldn't compile without this change
 NO_WARNINGS	Just to make GCC complain less
 DJGPP		Because DJGPP doesn't like COMMON_DOS
 NEW_CODE	Many changes and bug fixes
 NEWCPP		For newer C++ standard

There are also many changes to the runtime library source.  Many of them
are to remove pop/operate/push routines with operating directly on the
data.  There is also a set of changes bypassing the "LDY datastack"
instruction when it is already set.  Added a few useful routines and
bug fixes plus support for the Atari 7800 and the Rockwell AIM-65.

Testing out all the features to see what works and what doesn't and why.

Harry Dodgson [21Jun2005]


-------------------------------------------------------------------------
-- Quetzalcoatl 2.0a4.1 Source Code Distributon 1.1
-------------------------------------------------------------------------
	
This is a minor update; It merely corrects the filename cases (they should
all be lowercase, but GNU unzip's -L flag wasn't working correctly, so 
some people were being told they didn't have all the files they needed,
when infact they were there but with mixed case filenames.)

I stripped out the carriage returns from some of the headers, which was
causing GNU's anal-retentive, whining C++ compiler to spit out its usual
torrent of errors.

I've added the Makefile's for Linux.  I don't know how these got left out,
but some people saw the Borland C PRJ file and assumed this was only the
DOS port.  Not so!  This is the DOS, Windows and Linux versions all 
rolled into one.

To build the compiler:

			make

I'd love to see someone else make some additions for this compiler.
Check out the Compiler Hacker's Guide.  Adding new optimisations
to upl_copt.cpp is a good place to start.

[bj 09jan2001]


Quetzalcoatl 2.0a4 Source Code Distributon 1.0
----------------------------------------------
        THIS IS (WAS [bj 08oct2006]) A LIMITED DISTRIBUTION - DO NOT COPY OR REDISTRIBUTE

+ This is (WAS [bj 08oct2006]) a limited public release.  It isn't open source yet,
  so please don't copy or otherwise distribute this source code.
  See legal.txt for the legal notice.

+ This is a rough cut of the source code.  Only a small portion of it
  is commented.  It still has a long way to go before it's ready.
  If you have any questions, contact me at quetzalcoatlbj@kdef.com.
  (Heh; I only just realised some people might have trouble typing
   that address. :)

+ I'm still tidying things up.  I've only included the Borland C PRJ file.
  This obviously won't be much use to many people, but all the source
  files you need are here.  Just whack them into one project or makefile,
  compile them, and that should be it.  If you have any problems, please
  let me know.

+ A Compiler Hacker's Guide is in the file chg.html.  This'll give you
  a good but brief overview of how Quetzalcoatl works and what I've
  been trying to achieve with it.

+ Updates will appear on http://www.kdef.com/geek/vic/quetz/develop

Brendan Jones
Email: quetzalcoatlbj@kdef.com
September 15, 1999.
Moon+2


--------------------------------------------------------------------------
MAINFEST                                  

readme.txt              This file.

copyright.txt           Copyright Notice.
legal.txt               Legal Notice.

chg.html                Compiler Hackers' Guide  *READ THIS*
images/                 Images for chg.html


** SOURCE CODE **

Abend.cpp               Abnormal End Exit Code.
Abend.h                 Abnormal End Exit Code.
Btree.h                 Binary Tree Template.
btreenod.h              Binary Tree Node Template.
Common.h                Common Header.
co_keys.h               Holds table of symbol names, each name with an integer.
CRC.CPP                 Cyclic Redundancy Check.
CRC.H                   Cyclic Redundancy Check.
FILEHEAD.H              File Header Layout.  eg. For object files.
Flex.cpp                Lexical Parser.
Flex.h                  Lexical Parser.
Implemen.h              Determines what compiler, OS we are using.
image/                  Code to read a PCX file.           
Rays.h                  Array Templates.
SECURITY.H              Security type used in File Header Layout.
Upl.h                   Main UPL Header File  *READ THIS*
Upl_as.cpp              Assembler.
UPL_ASM.H               Assembler.        
Upl_comp.cpp            Compiler. Contains eg. statement parsing routines. *WORTH A LOOK*
Upl_cont.cpp            Compiler Context.
UPL_COPT.CPP            On-the-fly Peephole Optimiser. *WORTH A LOOK*
UPL_EXPR.CPP            Expression Results.
Upl_io.cpp              Input/Output for loading/saving eg. object files.
UPL_LINK.CPP            Linker.
UPL_LINK.H              Linker.
Upl_main.cpp            Main Command Line Interface.
UPL_OBJE.CPP            Object Module.
UPL_OPRT.CPP            Print Methods: Object Module.
UPL_PRT.CPP             Print Methods.
UPL_RUNT.CPP            List of Runtime Symbols.
upl_runt.h              List of Runtime Symbols.        
UPL_SEG.CPP             Segments.
Upl_symb.cpp            Symbols and Symbol Table.
UPL_TEM2.CPP            Needed to stop GNU C crying like a baby.
UPL_TEMP.CPP            May not be needed any more.
Upl_util.cpp            General utility routines.
UPL_UTIL.H              General utility routines.
uplrtime.asm		6502 Runtime Library (Current 2.1.0 BETA version)
old-versions/		Directory containing old versions for reference
 ... /uplrtime.asm	For reference: 6502 Runtime Library (Old 2.0.4 ALPHA version)


** CONFIGURATION FILES **

Makefile		Makefile for Linux

stdmake			Supporting makefile for Linux (included by Makefile)

windows/quetzal.vcproj	Microsoft Visual C++ 2003 or later.
			(Alternately, for MSVC (Win32) just whack all the C++ 
			files into the project and click [Build]. There is 
			only one target executable that includes everything,
			so it is easy!)
			
upl.prj                 Borland C++ 3.1 Project File. (Funny to think that
			Turbo C++ on my 20 MHz 80386 is actually a faster
			compiler than Microsoft Visual C++ on a 3GHz Pentium.
			Way to go, Microsoft!)


** PRECOMPILED BINARIES **


To avoid confusion, delete these once you make your own changes!

windows/quetzal.exe	Ready-to-run Windows 2.1.0 BETA version of Queztalcoatl.
			Run quetzal with no arguments to see the help.
			Includes GPL Legal Notice.
			
solaris/quetzal		Pre-release version. For testing only. Delete after testing. 
			NEEDS TO BE RECOMPILED TO SHOW GPL LEGAL NOTICE IN CURRENT SOURCE, 
			SO DO NOT REDISTRIBUTE.
			
msdos/quetzal		Pre-release version. For testing only. Delete after testing.
			NEEDS TO BE RECOMPILED TO SHOW GPL LEGAL NOTICE IN CURRENT SOURCE, 
			SO DO NOT REDISTRIBUTE.
			
linux/quetzal		Pre-release version. For testing only. Delete after testing.
			NEEDS TO BE RECOMPILED TO SHOW GPL LEGAL NOTICE IN CURRENT SOURCE, 
			SO DO NOT REDISTRIBUTE.

