What's new in Turbo51 0.1.3.17
Jun 26, 2013
- Fixed bug: Wrong register optimization in some rare code patterns involving Rn
- Fixed bug: Wrong comparison (= and ) for real values in some cases
- Fixed bug: Compiler crashed in some cases when using function Abs with integer variables
- Fixed bug: Temporary variables used by some procedures in the System unit were not saved during interrupts
- Fixed bug: Error reported in assembler statements with relative jump and bit variable located in bit-addresable byte
New in Turbo51 0.1.3.16 (Oct 15, 2012)
- Fixed bug: Wrong register optimization in some cases involving XDATA variables
- Fixed bug: Wrong optimization in some cases involving multiplication of 16-bit data with 256
- Fixed bug: Wrong variable type of typed constants in the CSV file
New in Turbo51 0.1.3.15 (Jul 16, 2012)
- Fixed bug: Using the -O or -OX switch without the -G switch crashes the compiler
New in Turbo51 0.1.3.14 (Jul 11, 2012)
- Fixed bug: System procedure Val reported error when converting numbers with two digit exponent
- Fixed bug: System procedure Val didn't reported error when mantissa or exponet in real number was missing
- Fixed bug: Wrong register optimization in some cases involving integer comparison
- Fixed bug: Wrong order of optimized PUSH / POP instructions in some rare cases
- Fixed bug: Wrong stack frame initialization in some cases
- Fixed bug: Wrong conversion of character to string in some cases
- Fixed bug: Few bugs in heap management
- New feature: Variable types in map file
- New feature: CSV symbol file (generated with map file)
New in Turbo51 0.1.3.13 (Jul 11, 2012)
- Fixed bug: Wrong register optimization in system function Abs for integers
- Fixed bug: Bug in calculation of unary minus for Real variables
New in Turbo51 0.1.3.12 (Jul 11, 2012)
- Fixed bug: Typed constant pointer declaration in some cases generated Internal error
- Fixed bug: Wrong optimization in some rare cases due to register not marked as live
- Fixed bug: Missed CSE optimization opportunities in main program block
- Fixed bug: Wrong optimization in some rare cases involving SWAP A instruction
New in Turbo51 0.1.3.11 (Jan 6, 2012)
- Fixed bug: Overflow in arithmetic operation reported in some rare occasions
- Fixed bug: Wrong address of indirectly addressed arrays was calculated in some cases
- Change: Added separate report on time spent on compilation and optimization
New in Turbo51 0.1.3.10 (Jul 19, 2011)
- Fixed bug: Internal error in some rare occasions
- Fixed bug: Some peephole optimizations didn't mark newly created live registers
- Change: Improved internal memory management to avoid "Out of memory" error when optimizing huge program blocks
- Change: Extended Linear Address Record is no longer written to the HEX file as it causes problems with some loaders
New in Turbo51 0.1.3.9 (Jan 30, 2011)
- Fixed bug: Wrong comparison of LongInt and Real variables with negative values
- Fixed bug: Wrong result of system function Val for Real parameter
- Fixed bug: Writeln and Readln without parameters ignored DefaultFile set to On
- Fixed bug: Readln stopped reading on CR character
- Fixed bug: BIN/HEX/U51/OMF output directory with spaces generated error
- Fixed bug: Compiler crashes when assigning a value in register B to indirect address (e.g. result of mod operation to var parameter)
- Fixed bug: nternal error when declaring absolute variable at var parameter
- Change: Various improvements in optimization algorithms
- New feature: Added support for interrupts at Interrupt address + CodeStart address
New in Turbo51 0.1.3.8 (Jan 30, 2011)
- Fixed bug: Bug in system function Val
New in Turbo51 0.1.3.7 (Aug 22, 2010)
- Fixed bug: Wrong instruction address generated in some cases when using Word or LongInt variables at absolute addresses
New in Turbo51 0.1.3.6 (Aug 11, 2010)
- Fixed bug: Wrong instruction address generated in some cases when using variables at absolute addresses
New in Turbo51 0.1.3.5 (Dec 4, 2009)
- Fixed bug: Calling virtual methods does not work (bug in system procedure sysCallVirtualMethod)
- Fixed bug: AJMP/ACALL ConstantAddress reported error
- Fixed bug: MOVC @A+PC reports error "Unknown Identifier 'PC'"
- Fixed bug: Internal error on calling procedure at absolute address
- Fixed bug: Internal error in some rare cases
- New feature: Added directives $REGION and $ENDREGION to support collapsible regions in some editors
- New feature: Added directive $MEMORY as longer version of the $M directive
New in Turbo51 0.1.3.4 (Aug 17, 2009)
- Fixed bug: Wrong HEX file (at address $0002) in some rare cases
New in Turbo51 0.1.3.3 (Dec 28, 2008)
- Fixed bug: Compiler crashes while trying to report "Procedure outside of CODE segment" error
- Fixed bug: IDATA memory usage not reported if delcared in unit
- Fixed bug: Wrong IDATA directive processing in some cases
- Fixed bug: Wrong optimization of BitAddress1 := not BitAddress2 in some cases
- Fixed bug: Wrong optimization of RRC A in some rare cases
- Fixed bug: Wrong optimization of Case statement range lower limit comparison in some cases
- Fixed bug: instructions with R4 and R5 before call to the sysLongIntToReal were removed in some cases
- New feature: Improved code for Case statement range lower limit comparison
- New feature: Support for any extension of unit source files
New in Turbo51 0.1.3.2 (Nov 20, 2008)
- Fixed bug: Wrong stack size reported when IDATA memory is not present
- New feature: Program code can start at any address
- Change: Compiler directive $M has now syntax $M , , , ,
New in Turbo51 0.1.2.0 (Aug 17, 2008)
- Fixed bug: Internal error when complementing bit absolute BitAddressableVar.Bit
- Fixed bug: Internal error on record field of type Array of Boolean
- Fixed bug: Asm statement: Internal error accessing BitAddressableVar.Bit
- Fixed bug: Wrong sign extension in some cases
- Fixed bug: Missed some optimization opportunities
- Fixed bug: Internal error for operations on set with non-constant element in IDATA memory
- Fixed bug: In some cases wrong address was generated for BitAddressable variables
- Fixed bug: External variables with unique names were written in assembler file with wrong name
- Fixed bug: Error on recompilation of unit which defined interrupt procedure
- Fixed bug: Memory leak when error was reported
- Fixed bug: Optimization of JNZ to DJNZ or CJNE when A was live
- Fixed bug: Temporary variables placed at wrong address
- Change: Major improvments in source files processing
- Change: Improvments in source line marking relative to generated code
- Change: Minor improvments in error reporting in some cases
- Change: Minor improvments for operations on sets in XDATA memory with non-constant element
- New feature: Removed limitations for include files (now they can be almost anywhere)
- New feature: Support for inline procedures
- New feature: Support for LongInt Case constants
- New feature: System procedure Change (Set, Element)
- New feature: Added command line option /C to report also error column