ICC12 V6 Make sure you subscribe to the icc-mot mailing list for program update announcements. Refer to http://www.dragonsgate.net/mailman/listinfo for details. NOTE: BIT-FIELD ARE NOW ALLOCATED FROM RIGHT TO LEFT. Change Log for ICC12 V6 01/26/04 - V6.16A Library - an incorrect version of modf() was in the library [ Network dongle version is now the same as the regular version ] [ V3 of the dongle drivers ] IDE - Added Tools->EnvOptions->TerminalFonts for changing fonts Header Files - Complete set of HC12/S12 Header Files (MC9S12*.h) 06/10/03 - V6.16 [ STD and DEMO version can now access up to 64K of expanded code memory. PRO version, as before, has no limit ] IDE - Revamp the Expanded Memory options on the Project->Options->Target page. All known S12 devices now use the device specific expanded memory range. e.g. DP256 now uses 0xC0000.0xFFFFF instead of 0x0.0x3FFFF. This means that in most cases, SrecCvt is needed only to map the 0x4000.0x7FFF page and to reformat the linear S2 records. Therefore in most cases, the -lp switch should be used with SrecCVT. See Help for more details. Compiler - Improved constant folding for exprs: (expr OP const) OP const and where OP is a commutative operator - Bitfield fixes Library - Portable C versions of Floating Point to ASCII (printf %f) and high level math function (math.h sin/cos/exp/log/etc.) are now being used instead of the older asm Gordon Doughman derived version. While this might be slower, it is much more accurate, plus printf now fully supports %f %e %E %g %G with full field width and precision. Plus that now fully paged versions of the sin/cos/exp/log/etc. routines are available, potentially saving valuable unpaged memory. The sin/cos/exp/log/etc. may not be too much slower as they are the "second generation" math routines currently being beta tested. Please let us know how they work. 11/18/02 V6.15A IDE - Better support for the HCS12 CPUs. They now use the default crt12.o as startup file. Augmented help file on using SRecCvt for the S12 Examples - Added uexec_dp256.zip to \icc\examples.12. This is a port of the uexec minimal executive running on Tech Arts (and probably other vendors) DP256 board. [ misc. ] - added Motorola program sreccvt.exe and sreccvtrg.pdf to \icc\bin 09/12/02 - V6.15 The COMPILER CAN NOW BE INSTALLED IN PATH WITH SPACES. You may also use spaces in your source file names, but probably not in header file names. IDE - Code Browser bug fixes - Added support for spaces in Paths - Moved Code Browser options to Tools->EnvironmentOptions Library - Added %s to scanf 07/17/02 - V6.14 IDE - Fixed problem w/ Dx128 "idata must be contiguous" linker problem. - Added support for S12DP256 Compiler - Assignment to a bitfield in the first byte was incorrect - debug information was not generated for variables defined inside abs_address pragma 04/24/02 - V6.13 SUPPORT for the V1.1 of the Debug Format added, including structure information. This is enabled for the PRO version only. IDE - Added Code Browser support - Added option to support CPU/banked S2 records Library - Fixed a bug w/ long compare where sometimes the upper word is ignored Header Files - Added HCS12DP256.H Linker - a bad code merging caused the linker not to obey the MAP 0xC000 to S2 record option (PRO only). - Added option to support CPU/banked S2 records 01/15/02 - V6.12B Compiler - Compiler was incorrectly generating a data statement for function defined inside a "#pragma abs_addrss" 01/14/02 - V6.12A IDE - general improvements: ^tab between opened editor, Find/FindNext work much better etc. - Project files now use relative pathnames for the source files - Added a checkbox in Project->Options->Compiler for "int size enum" for backward compatibility - ASCII Download with "Wait for '*'" protocol works better Compiler - It is now OK to have non-initialized items in the abs_address pragma region - Added a flag for -intenum for int size enum (default char size if possible) - byte sized enum as function parameter was not getting the correct offset adjustment Linker - the linker is now called ilink12. If you are calling the linker directly, you must change to use ilink12 instead of "ilinkw -12..." - the listing file processing was not checking for .area in the .lis file that may be in a comment. e.g. " ; .area..." This only showed up if a) the source file is an asm file, and b) extended code paging is used (PRO only) c) and the commented area line appears after an extended area Library - faster long compare - added crt12ext.s for extended memory mode 11/10/01 - V6.12 ADDED support for dongles. Compiler - small enums can now be signed char type - under rare conditions such as large stack frame (> 9 bits) and others, the compiler might miscounted some instruction sizes and resulted in out of branch error in the assembler. - if ((unsigned char expr) ... ) was generating a signed branch. e.g. unsigned char uc; if ((uc + 2) < 10) // signed branch was generated incorrectly 07/19/01 - V6.11a IDE - You can now add a command to run after a successful build Project->Options->Compiler - New and improved project file pane Compiler - multiply by power of two greater than 8 revert back to using the multiply instruction instead of shifts. - embedded assembly referencing local variables using %<> format generated incorrect offset if long expressions are used. - fixed a rare long branch generation error - new command line compiler licensing Library - better FP<->long conversion functions - (s)printf now accepts * for width and precision (LARGE printf and FLOAT printf options must be ON) 05/18/01 - V6.11 Debugger Spec - Support ImageCraft V1.0 Debug Format (http://www.imagecraft.com/software/ImageCraft_debug_format.html) Compiler - mutliply by power of twos are done with shifts - (PRO) initializing a function pointer global variable was not generating a reference to the procedure label - Better code for function returning assignment IDE & Linker - (PRO) extended paging: added option to map 0xC000.0xFFFF to the last S2 page 04/10/01 - V6.10F Better Licensing dialog boxes. Mostly important for new users. IDE - The "page" checkbox was always default ON for "CUSTOM" device in PRO version. - Backup file is now named ._ to be compatible with floppy drives Debug File Generation - P&E Map File and NoICE/AX-BDM12 CMD file no longer contain directory path - Added "DIR" command in DBG format file for specifying new source directory 03/19/01 - V6.10D IDE - The dependcy generator was not working correctly for Assembler file with .include statements with double quotes Compiler - Enabled the "Word Alignment" IDE Option. If not checked, arrays and structures will be aligned on byte boundary. - Branch on bits were not generating the correct code for long branches inside a paged function. Asm - Added 'c' character constant support in addition to the old syntax 'c - The assembler now complains if there are extra characters on the input line - The assembler now complains about "missing operand" instead of "illegal operand" for missing operand. - Added .ppage - CPU page # of name (1 byte) .poff - CPU offset of name (2 bytes) .paddr - CPU address of name (3 bytes) 02/28/01 - V6.10C IDE - race condition sometimes prevent the Paging option to be enabled for the PRO users V6.10B - C Preprocessor - Russian characters were causing the preprocessor to hang - Added vararg #define when -e flag is on: #define db(a, ...) printf(a, __VA_ARGS__) allows db() to be called with one or more arguments Compiler/Library - switch statement within a paged function was not working properly. - when you take the address of a paged function, the compiler now creates a three byte function address in the text section, and the address of this item is returned as the result. To indirectly call this paged function, you can use the library function _icall: #include ... void foo() { ... } // foo is paged ... void (*p)() = foo; // create function entry _icall(p); // call foo _icall(foo); // call foo Unfortunately, you cannot use this mechanism to call a function with arguments. _icall() is declared in the header file hc12.h - now accepts binary constant (0b....) if the Project->Options->Compiler->AcceptExtension checkbox is on IDE - You can now use UltraEdit32 (purchased separately :-) ), TextPad, or WinEdit "integrated" with the IDE. You can select different editors in Tools->EnvOptions->General->Editors. Future releases may include more editors and even tighter integration. - The Toolbar/buttons/hints were corrupted under some W98 systems 01/25/01 - V6.10a Oops, forgot to add the new paging libraries to the package. 01/23/01 - V6.10 IDE - Enabled Intel HEX file output, the file extension is .hex - Fixed a bug where ASCII download was appear to be hanging (but not really). Compiler - Calling a function returning floating point but ignoring its return value caused the compiler to assert - Added support for Extended Code Paging (PROfessional version only). - converting long to FP was broken if the FP is 1073741824 or larger. Library - Added _FP_SaveContext(_FP_CONTEXT *buf) and _FP_RestoreContext(_FP_CONTEXT *buf) to save and restore FP context (for multitaskers). 05/23/00 - V6.00E Library - a rare bug with FP division is fixed - sqrt() is now written in C, which is more accurate but does use more code and stack space 03/14/00 - V6.00D Compiler - bad code was generated for some bit operations. e.g. int x; if (!(x & 48)) ... 02/16/00 - V6.00C vectors.c was left out of the package 02/09/00 - V6.00B IDE - IDE now saves the editor key assignments and code templates correctly (registered version only). 01/18/00 - V6.00A - Licensing scheme changed to be more compatible with other ICC products. V6.00 users will need to get new licenses. Compiler - 4 byte structures were not copied correctly - no longer generate brclr/brset on volatile word sized references - sometimes short branches were generated when long branches are needed when there is inline asm within the body of the branch 01/04/00 - V6.00 Initial V6 release