ICCV7 for CPU12 Readme file Make sure you subscribe to the icc-mot mailing list for program update announcements. Refer to http://www.dragonsgate.net/mailman/listinfo for details. CHANGE LOGS: V7.07A - Aug 19, 2009 Compiler - Fixed a rare incorrect code pattern introduced in 7.07 - Added optimization to do better elimination of unnecessary "tfr D,Y" and other similar code patterns. V7.07 - July 30, 2009 IDE - Much faster startup time for the IDE - IDE now keeps a "Build Number" for each project. This is passed to the linker and emitted to the top of the .mp map file. - Added -D__BUILD for the Build Number. - Changed -D__ICC_VERSION=XXX where XXX is the version in integer form, e.g. 707. This allows easier conditional compilation. - Added %v (version) and %b (build number) to the macro chars for the "Execute Before Build" and "Execute After Successful Build" command box. - Overhauled the expanded memory settings. - Fixed RAM start address for S12XDP512 - Modified the "checking" options, now they are "Strict Checking" (equivalent to -A command line switch). "ANSI C Portability Conformance Checking" (equivalent to -A -A). This does draconian check on conditions that exceed ANSI C minimum limits (e.g. less than 512 variables) and is usually not needed. - Added Tools->EnvOptions->General->BackupPolicy. The choices are == Unlimied (in BACKUP\ directory) == One Only (in BACKUP\ directory) - Under some rare conditions, the compiler sometimes generated bad code (assertion from the assembler) if a function uses floating point expressions in a function call. Compiler - The compiler was miscounting some instruction sizes and was generating short branches when long branches are needed and caused the assembler to assert with error. - Added #pragma warning warning message emits warning message, similar to #warning #pragma ignore_unused_var name1 name2 ... This must appear inside a function and specifies the named arguments are intentionally unused so no warning message should be generated for them. Linker - Overhauled the expanded memory support. The goal is to eliminate needing to use P&E Log2Phy or SrecCVT to convert our output. The following flags are now supported: -s2_s1 Use a mix of S1 and S2 records (CPU12 only) -s2_cpu Use CPU addresses for the S2 records -s2_s12: Use S12 mapping to convert S1 to S2 records. is in K bytes. -s2_s12x Use S12X mapping to convert S1 to S2 records This means that for the CPUS12 and S12X, only S2 records will be generated, either as CPU/Banked addresses, or in the "native" linear / global address format. The .DBG file uses CPU addresses, as before. See Help file for details (not yet done for BETA release). V7.06 - Jan 10th, 2009 Enabled -NC Non-Commercial User license. Header Files - re-added E128 header file V7.05 - June 4th, 2008 [ Removed the rarely if ever used RCS interface. Note: ICC no longer uses any GPL utilities. ] IDE - [ADV only] Added capability to create Library projects. - Added Project->Options->Projecti->"Makefile Options" of two choices "Relative Paths" or "Absolute Paths" - Minor licensing enhancement and x64 compatible dongle driver. - Added File->Compile File->(Preprocess Only) - Terminal support cleanup and minor GUI enhancements. Linker - Now emits S9 record at the end of the S19 file with the __start address. V7.04 - Feb 11th, 2008 IDE - [ADV and PRO only] Added capability to create Library projects. Compiler - 7.03A did not generate calls to "uint2fp" for unsigned to FP conversion - the compiler was trashing 'D' for complicated indirect function call, and thus may overwrite the first argument to the function. e.g. tab[i]->func(0); // D overwritten Header Files - the DP512 header file was incorrect. V7.03A - August 17th, 2007 Compiler - Occsionally the compiler optimizer incorrectly removed an instruction - compiler was incorrectly using int to floating point conversion in the cases where it should be using unsigned to floating point conversion. V7.03 - March 26th 2007 [ Vista compatible licensing engine ] IDE - Added S12XDP512 to device list - Added a "CPU Type" radio group for "Custom" device. - expanded memory uses either "-maps1" or "-maps12x" in linker flags, depending on the CPU type. - Changed names from HC... to MC... Preprocessor - __FILE__ now expands to filename without the path component Assembler - XGate support broke some processing in the CPU12 instruction processing. Fixed. Linker - -maps1 now maps 0x4000.0x7FFF as last_page-1 - Added -maps12x, maps 0x4000.0x7FFF as last_page-2 V7.02 - Dec 21st, 2006 Minor licensing changes IDE - Added tools to allow sending email for licensing, support etc. Compiler - All known bitfield problems fixed. Assembler - Preliminary XGate support in the assembler. Email us for short HOWTO file if needed. Header Files - Some files were missing PORTA, PORTB, DDRA and DDRB definitions V7.01 - Oct 16th, 2006 Compiler - When flipping a branch during the optimization pass, the optimizer was using wrong branch instructions. This may show up as a loop executing one less time than it should. Library - itoa/ltoa/print %d/%ld now print -32768 and -2147483648 (e.g. high bit on) instead of -0 V7.00 - September 28th, 2006 V7 Comparing to ICC12 V6 - X register is no longer preserved by a function call!!! Bitfield code may be broken. C Preprocessor - Complete NEW C99 conformant C preprocessor (VARARGS macros etc.) IDE - Numerous major and minor usability improvements over V6, including full Mouse Wheel support. IDE/Linker - "S2 record only" option emits only S2 records, for better compatibility with SRecCVT (e.g. 0x4000-0x7FFF maps to last flash page-1 extended address) Compiler - Rewritten code generator. Code should be ~5% to 10% better. As this is still in development, please email support@imagecraft.com with any suboptimal code you notice. Libraries - FP lib is now fully reentrant and much faster compared to V6 Header Files - Header files for all HC12, S12 devices in production