***         Atari Basic Compiler  v0.3         ***
*** Created by Rafal Chabowski (mgr_inz_rafal) ***

History:
   v0.1 - Initial version

   v0.2 - Using MADS .fl directive to directly create FPNs (thanks Rudla)
        - When FP number is hardcoded it is no longer copied to
          internal buffer. Instead, the direct location is used (ffp)
        - Support for numeric variables
        - Support for FP arrays
        - Support for conditional expressions
        - Support for FOR loops
        - Support for strings
        - Support for comments

   v0.3 - Support for READ/DATA/RESTORE
        - Support for GOSUB/RETURN/POP
        - Support for GRAPHICS
        - Support for PEEK/POKE
        - Support for PLOT/DRAWTO/COLOR/POSITION
        - Support for SETCOLOR
        - Support for SOUND

Usage:
==============

Compiler reads source code from standard input, so:
- Linux users:   "cat source.bas | ./abc"
- Windows users: "type source.bas | abc.exe"
Output is stored in "synth.asm" file which needs to be compiled with MADS.
	
There are currently no command line options available.



Miscellaneous:
==============

The compiler is still in very deep BETA :) Therefore, when compiling keep in mind that:
1. It won't compile large programs, due to lack of size-optimization for result code.
   It is quite easy to get big .xex files for relatively simple BASIC programs
2. Memory layout is not final. It is debug-friendly instead. Therefore, programs containing super large
   arrays or multitude of numbers may not compile correctly
3. Use this version to play with simple programs similar to that provided in \Example directory
4. Due to parse problem, please use additional space for + and - arithmetic. In case of
   problems try to replace "A=A+2" with "A=A + 2"
5. Floating point aritchmetic is used for all numeric calculations
6. Do not use BASIC abbreviations (like G. for GOTO). They are not supported with
   the exception of ? for PRINT
7. Program starts at $a00 (!)
8. If your FOR loop or IF statement won't compile, please add "32767 PRINT 1" at the end
   of listing. Currently there MUST BE at least one additional command after NEXT or
   after IF so jump will compile correctly. I'm too lazy to remove this
   limitation right now.
9. All jumps to OS are *direct*



What is supported:
==================
 1. Having several commands in single line
 2. Numeric arrays
 3. PRINT (via CIO), but only to channel #0 (so, no PRINT #6,"DUPA" is currently possible)
 4. INPUT (via CIO) with the same limitation as above
 5. GOTO/GOSUB with dynamically calculated destination
 6. DIM/COM
 7. IF/THEN (with GOTO shortcut, ex. "IF A>3 THEN 100")
 8. FOR loops with STEP
 9. Strings (including CHR$)
10. String manipulation (assignment, comparison, indexing, etc.)
11. Comments
12. Reading data (with restore support)
13. Graphics modes along with plot, drawto and color
14. Setcolor
15. Position
16. Peek/Poke



==================
Special thanks to all people from atarionline.pl forum, especially:
mono, rudla, XXL, jhusak, BartoszP