v1.0.30 (05/05/2025) :
- Added verbosity CLI option
v1.0.29 (01/08/2025) :
- FIXME: #error is executed only on active code parts instead of ALWAYS yielding an error
- FIXME: #undef doesn't yield an error when not defined
- Experimental: Optimization on (pointer >> 8) + offset expression
- Optimization: Set condition flags in >> 8 operator
v1.0.28 (01/08/2025) :
- FIXME: Fixed bug of signedness of neg operand
v1.0.27 (12/06/2024) ;
- Optimization: remove LDA followed by CMP oar STA + LDA
v1.0.26 (10/28/2024) ;
- Experimental: Better handling of 16 bits complex expressions
- FIXME: Suscripts were allowed on char and short variables (not just pointers)
- FIXME: Rust panic on assign to void
- Added sizeof support in constant expressions
v1.0.25 (07/22/2024) :
- FIXME: fixed do statement grammar (avoid collision with do_X variables)
- Take into account EXFIX bankswtiching scheme for Atari 7800
- Solved bug in optimizer (LDA removed while it sets the flags)
- Solved bug wrt missing CMP after JSR
- Removed constant time code in order to be comatible with the latest Rust compiler
- Local arrays are allocated in the right bank
- Corrected optimizer bug with DEC and INC instructions
- Added ## support in preprocessor
v1.0.24 (04/20/2024) :
- Corrected a bug wrt carry flags
- Added function pointers into variables hash table
v1.0.23 (04/12/2024) :
- Introduced noholeydma keyword
v1.0.22 (03/22/2024) :
- Bug corrected : bad const propagation in declarations
- Bug corrected wdt to incorrect flags set when saving Y register
- Bug corrected wrt save Y register & deferred plusplus bad order
- Bug corrected wrt save T register in branching
- FIXME: Acccept dereferenced variables as pointers in declarations
v1.0.21 (03/11/2024) :
- Bug corrected (cc2600 couldn't compile anymore)
v1.0.20 (02/29/2024) :
- Optimized away useless loads
- Implemented 16 bits shifting
- Implemented warnings for constants not fitting in 8 bits
- Implemented new "nopagecross" keyword
- Corrected a bug in grammar (>= was forbidden in calc_expr)
v1.0.19 (02/16/2024) :
- Added protection to clseep nops
v1.0.18 (02/16/2024) :
- Bug corrected wrt indexed by X variables increment
- Added line numbers in inserted code (easier debugging)
- Implemented warnings for constants not fitting in 8 bits
v1.0.17 (02/01/2024) :
- Bug correction : 16 bits inc produces incorrect core for ramchip
- Bug correction : panic when statement missing at the end of source code
- Added support for comparison with immediate on left hand side
- Indicate error line when compiler error not implemented
v1.0.16 (01/15/2024) :
- Optimized out JMP followed by JMP
v1.0.15 (01/07/2024) :
- Corrected bug when returning values with inline functions
- Added support for constant address in array of pointers
v1.0.14 (12/18/2023) :
- Corrected bug wrt prototypes declarations with parameters
- Swap CLC/SEC and LDA to optimize out ADC #0
- Optimize out AND #255
- Corrected errors in ASM bytes counting
v1.0.13 (12/02/2023) :
- Added support for bracketed bank declaration
v1.0.12 (11/10/2023) :
- Initialized global data should be const
- Added support for pointer offsets in global array declarations
- Implemented ptr = X << 8
- Added support for (X = 0; X < 10;) { X++ } expression
- Optimized ptr |= 16 * 256
- Optimized ptr = Y | (X << 8)
- Corrected Bug ptr = Y | (X++ << 8)
- Corrected bug with embedded assembly of less than 4 lines
v1.0.11 (10/27/2023) :
- Bug fix: Accepts >> 8 on char**
v1.0.10 (10/17/2023) :
- Bug fix : Already defined local functions in blocks
- Bug fix : Forbid complex 16 bits operations with 8 bits shifts
- Bug fix : corrected (short >> 8) >> 4
- Bug fix : corrected 16 bits +X, +Y
v1.0.9 (10/09/2023) :
- Removed a debug println
v1.0.8 (10/08/2023) :
- Fixed a bug on win32 with CR/LF included asm files
v1.0.7 (10/05/2023) :
- Fixed bankswtiching issue with SuperGames
v1.0.6 (10/02/2023) :
- Added bank header to asm files
v1.0.5 (09/25/2023) :
- Corrected a bug wrt parameter passing (and comma operator)
v1.0.4 (09/18/2023) :
- Corrected a bug wrt whitespace management in grammar (charz = 1 was accepted as a z variable declaration)
v1.0.3 (09/04/2023) :
- Corrected a bug wrt to double use of Y register when assigning to Y while using Y as an index
v1.0.2 (08/28/2023) :
- Corrected a small bug in assemble.rs in optimizer, the sometimes results in a Rust panic during compilation
v1.0.1 (08/14/2023) :
- Corrected bug wrt cc2600 compatibility with v1.0.0
v1.0.0 (07/13/2023) :
- Accept *ptr with ptr not const (allows char* params)
- Generate performance warning for *ptr ("hidden" Y indirect access)
- Added W (warnings) compile flag
- Corrected ptr[0] error
v0.9.2 (07/12/2023) :
- Corrected bug with variables beginning with char or int
v0.9.1 (07/12/2023) :
- Added sizeof(type) support
- Added preliminary support for function parameters
- Added support for bytes hint in asm statment
v0.9.0 (07/09/2023) :
- Added support for local variables
- Corrected a small bug wrt ++/-- in subscript of 16-bits instructions
- Optimized out ORA #0 instructions
- Added support for references (pointers) in arrays of char definition (not just immediate values)
v0.8.1 (06/28/2023) :
- Small bug correction for char * pointers references
- Added optimization : optimized TXA/TAX & TAY/TYA pairs
- Corrected a bug with line numbering with included assembler code
- Added comparison between Acc & Tmp
v0.8.0 (06/19/2023) :
- Better integration of assembler code (with codesize comment)
- Corrected a big bug with assembler code inclusion (preprocessing of strings)
v0.7.4 (06/14/2023) :
- Added recursion in preprocessor
- Changed regex of #define to cope with () expressions (up to 3 levels of depth)
- Corrected a bug in carry propagartion error
- Experimental: now accepts any subscript expression (not only X and Y)
v0.7.3 (06/12/2023) :
- Detect carry propagation errors in 16 bits arithmetics code
- Implmented function return in accumulator
- Added support for & 0xff to extract lower byte of short
v0.7.2 (06/08/2023) :
- Refactoring: Split huge generate.rs file into multiple source files
- Added optimized implementation of 16 bits increment and decrement
- Added optimization : removed first LDA followed by a second LDA
- Added optimization : removed LDA followed by STA with same mnemonic
- Bug correction: avoided panic when inline function is not defined before use
- Bug correction: removed optimization around JSR
v0.7.1 (06/05/2023) :
- Bug correction : big bug in switch/case...
- Bug correction : tmp was sometimes not released during 16-bits compare
- Bug correction : registers out of zeropage are set to ramchip memory (instead of zeropage)
- Corrected a bug: return Y didn't work
v0.7.0 (06/02/2023) :
- Changed interface to actually compute call tree (for linker)
v0.6.0 (05/28/2023) :
- Mark functions actually in use (for linker)
- Implemented 16-bis comparisons (partial)
- Corrected a bug in 16-bits negation
- Added function return values (in cctmp)
- Added NMI interrupt routine support
v0.5.3 (5/25/2023) :
- Moved processing of literal strings to preprocessor, in order to avoid troubles with comments inside strings
v0.5.2 (5/22/2023) :
- Corrected a bug with mutiple string literals
- Added missing cases for conditions on X or Y
v0.5.1 (5/15/2023) :
- Added support for function macros without parameters
- Solved an issue with for statement
- Fixed ++/-- with 16 bits operations
- Fixed -- prefix operator
- Fixed sizeof operator
- Added support for ternary expressions in declarations
- Added quoted character support
- Corrected a bug with carry flag
- Added better support for immediate expression results
- Added int type (short int)
v0.5.0 (4/29/2023) :
- Added -g debug flag
v0.4.1 (4/24/2023) :
- Corrected a bug with splices processing under windows
v0.4.0 (4/24/2023) :
- Changed out.a default output file name to classical a.out
- Added -S option for assembler output only
- Enhanced error reporting in case of syntax error in array definitions
v0.3.5 (4/16/2023) :
- Shortened included C comments
- Even better optimization for branching (added carry_flag_ok flag)
v0.3.4 (4/13/2023) :
- Added better optimization for branching (to be fully tested)
- Added better support for macros with parameters (accepts spaces after comma, substitutes words only)
v0.3.3 (4/6/2023) :
- Removed strange MemoryOnChip flag in compile_var_decl for constants out of zeropage...
- Added SuperGame bankswitching (for Atari 7800)
- Added a default 3 bytes for inline asm (for code size estimation)
v0.3.2 (4/4/2023) :
- Added screencode support for constant strings declarations
- Added support for comma operator
v0.3.1 (4/3/2023) :
- Added function size_bytes() to generated code
- Checked scattering validity for atari 7800 (8 or 16 lines)
v0.3.0 (4/2/2023) :
- Added "atari2600" and "atari7800" cargo features
- Corrected missing acc in use flags
- Corrected bug with respect to definition of multiple arrays on the same line