## Changes in Release 1.2.1

##### C Compiler

- Better support for >>= on 8-bit types.
- Fixed problem in an indexed function call through a pointer which could corrupt the first parameter to the function.
- Fixed problem introduced late in 1.2.0 where multiple indirection with offsets would lose one of the offsets.
- Fixed problem with SWPB induced by overaggressive load deferment.

##### CrossStudio

- Support added for latest released F14x1, F15x, F16x, F16x1, FW4xx, FE4xx, and FG4xx parts.
- Modified single stepping behaviour to use breakpoints. This makes step over execute quicker and avoids the problem of stepping into interrupt service routines/other threads of execution. The downside is that you need to keep a breakpoint available for stepping.
- Clock control properties are now greyed out if the connected device doesn't support the clock control capabilities.

## Changes in Release 1.2

##### C Compiler

- Added GNU-compatible ?> binary operator to deliver the maximum of its arguments.
- Added GNU-compatible ?< binary operator to deliver the minimum of its arguments.
- Allow @ intexpr after a declaration to define the absolute address of a variable without allocating storage for it, e.g. int x @ 0x9f0.
- Allow @ strcon after a declaration to easily allocate a variable or a function to the section strcon, e.g. int config @ "INFOA" or int config @ "INFOA" = 10, or even void loader(void) @ "BOOTSECT" { ... }.
- Recognise an underlying 16-bit by 16-bit multiply when performing a 32-bit multiply on two sign-extended or zero-extended operands and use a specialised multiply that is smaller and faster. Do the same for 32-bit by 32-bit multiply when performing a 64-bit multiply which benefits double support routines.
- Recoded internal code generation routines for the >> operator which leads to smaller and faster code.
- Extended __interrupt to allow more than one vector to be placed inside the brackets.
- Addresses of global variables and functions are now placed into registers to reduce code size and increase execution speed.
- Modified entry/exit sequences to better support linker's cross jumping optimization.
- Added _DADD16, _DADD32, _DADD64 decimal add intrinsic functions to <in430.h>.
- Added _DSUB16, _DSUB32, _DSUB64 decimal subtract intrinsic functions to <in430.h>.
- Added _DNEG16, _DNEG32, _DNEG64 decimal negate intrinsic functions to <in430.h>.
- Corrected push of unsigned char in the variadic portion of a function call.
- Corrected a corruption problem on return when a dereferenced pointer coincides with the function return registers.
- Corrected pattern for x & ~y to correctly deal with long and long long values.

##### Linker

- Implemented inter-module cross calling optimization which significantly reduces code size at the expense of execution speed.
- Implemented inter-module cross jumping optimization which reduces code size.
- Implemented inter-module common tail merging which reduces code size.
- Implemented inter-module jump threading which increases execution speed and can reduce code size.
- Implemented inter-module code motion that rearranges code to reduce the number of jumps and hence overall code size.

##### C Library

- Recoded a number of assembly code routines so they work better when cross calling.
- Recoded a small number of trigonometric, hyperbolic, and logarithmic routines to increase performance and reduce code size.
- Added runtime support for new ?> and ?< operators.
- Recoded __vfprintf to use less code and data memory.
- Added detection of NaN and INF to __vfprintf and output nan/NAN and inf/INF when appropriate.

##### CrossStudio

- Reorganised the project property groups.
- Added extra property groups for fine control of optimizations performed by the linker.
- New icons for target interface connections.
- Code templates can now be edited and are remembered.
- Assembly code files now have their own indentation settings in the text editor and environment options.
- Added support for Rowley USB CrossConnect and SoftBaugh Replicator connected to a CrossConnect.
- The simulator's cycle counter can be reset and paused by right clicking on the cycle counter pane in the status bar.
- Support for new F15x/F16x parts and water meter parts.
- Added Print Preview capability, now found on the File menu and in the standard tool bar.
- Printing now works for both HTML and text editor documents.
- The Print tool button on the toolbar prints immediately to the default printer, as in Microsoft Office, without bringing up a Print dialog. The default printer is shown in the tool tip of the Print tool button.
- The Project menu has been split into Project and Build menus to reduce the size of a combined menu.
- The Edit | Find menu has been promoted to the menu bar and renamed Search.
- A new environment property (Environment Options | Build | General | Before Debugging | Build before Debug) will automatically build a project when out of date rather than displaying a dialog.
- Added the Clipboard Ring which operates rather like the Office Clipboard in Microsoft Office and identically to the Clipboard Ring in Microsoft Visual Studio .NET.
- Added Auto Step to the Debug menu to animate program stepping.
- The SFR Window has been combined into the Registers Window. There are now four general register windows that can each be configured to display one or more groups of SFR and CPU registers.
- The mouse middle button brings up the Goto Function menu.
- The Goto Function menu now works on assembly language files and displays the list of labels in the source file.
- The way that errors are highlighted in the code editor can be configured as no highlighting, underline error, flag error in the margin, or underline and flag the error.
- For Windows, the IDE now stores its settings in the registry under the current user key rather the local machine key.
- The Build Log and Target Log have been rewritten to display relevant errors, warnings, and notes in a nicer form.
- The Call Stack window can optionally display the calling source file, line number, and call address.
- Added Enable Interrupt Processing and Disable Interrupt Processing tool buttons to the Debug toolbar.
- The properties window dialog doesn't stay focused when other selections are made.
- Fixed problem with the debugger printing arrays of structs that contained padding bytes.
- Fixed problem with the debugger not clearing temporary breakpoints with Step Over.
- Register window now saves the radix when it is changed for a given entry.
- Fixed problem exiting when the session file was read only.
- The debug_putchar function now outputs a single byte.
- Additional assembler/compiler/linker properties are now held as a string list so the property inheritance system applies to them.
- Fixed problem with date check and string list properties.
- Support for file differencing.
- Support for Visual SourceSafe integration.
- Registers window can now display bitfields.

##### Assembler

- Now recognises the EXTERN declaration (in addition to EXTRN) to be compatible with IAR.
- Type checking implemented to ensure that byte and word writes are to items of same widths.

##### Archiver

- -c option fixed to remove old members of an existing archive.

##### Target Interfaces

- Added support for Rowley USB CrossConnect and SoftBaugh Replicator connected to a CrossConnect.
- FET is now supported with a custom designed device driver which enables usage of plug-in parallel port cards, predictable download performance and device serialisation.

## Changes in Release 1.1.1

##### C Compiler

- Added binary constants which are written with a leading 0b, e.g. 0b1010 is 10 decimal. Binary constants are signalled with a warning when the -ansi command line option is given. The C preprocessor also supports binary constants.
- Corrected a problem in the switch statement as in some cases the 1.0.0 compiler would destroy the contents of a register used in the expression.
- The long double type is now treated identically to the double type when Treat 'double' as 'float' is set to Yes.
- Single-bit bitfield manipulation and access now generates much denser code.
- Correctly implemented the __monitor function attribute to support Salvo from Pumpkin, Inc.
- Corrected a corruption problem on return when a multi-register value is allocated to coincide with the function return registers.
- The compiler now fragments the code of a function which enables further size reduction optimizations by the linker.
- Code generation for 0(SP) source address is now always coded using @SP which reduces the size of code.
- for statement generation now recognizes more special forms and codes appropriately.
- Narrowing and widening conversions corrected to ensure that new registers are used when required.
- Corrected a code generation problem compiling x *= y when -mmpy specified.
- Corrected a problem in the spiller which caused incorrect code generation on reload.
- Corrected optimization applied for x & y when y is non-constant.

##### Target Interfaces

- The FET target interface now has a RAM Fill Value property that is used to fill the RAM before a program is downloaded. If this property is empty, the RAM is not filled and is left intact. You can use the RAM Fill Value as a watermark to see how far the stack descends during program execution.
- Added the PRGS430 Serial Programmer target interface to support the Texas Instruments PRGS430 serial programmer.
- Added the SoftBaugh Flash Replicator target interface to support the SoftBaugh flash replicator.
- Added the Gessler Flash Bootloader target interface to support the Gessler flash bootloader.

##### Editor

- Added a setting to allow or disallow Cut and Copy from cutting and copying the current line if there is no selection.
- Added a setting to disable the numeric keypad '–' and '+' keys from being used as Cut and Copy (as they are in Brief).
- Added themes to the Environment Options dialog.
- Made Shift+Insert a synonym for Paste in all contexts.
- Made Ctrl+Insert a synonym for Copy in all contexts.
- Made Shift+Delete a synonym for Cut in all contexts.
- Corrected a crash when editing long lines of plain text without syntax highlighting.
- Corrected syntax highlighting problems with multi-line comments and preprocessor continuations.
- Added a VHDL syntax highlighter.

##### Assembler

- Fixed PC-relative addressing mode offset computations.
- The C compilers preprocessor is now integrated into the assembler.

##### Linker

- Corrected PC-relative addressing mode offset computations.
- User symbols can now replace symbols defined in the library; required to support Salvo from Pumpkin, Inc.
- Added a few micro-optimizations including branch switching.
- The section start and end symbols have been renamed to allow them to be accessed from C.
- The linker now supports section checksum generation using the -H option.

##### Archiver

- The archiver no longer uses PKZIP format for its archives in order to be portable to Linux.

##### C Library

- Added missing __int8_lsl_asgn and __int8_lsr_asgn runtime support routines.
- Corrected__vfprint.c which causes __vfprintf_long not to recognize "%l" format strings correctly.
- Added debug_scanf function.
- The debug_getx functions now take input from the debug I/O console.

##### CrossStudio

- Added new project types for all SoftBaugh, Olimex, and TI boards.
- Added a new project wizard to assist in setting up a project.
- The New Folder dialog is reworked and presents example file filters.
- New projects now have the runtime startup code automatically placed into the project and do not use the standard startup object module.
- Solutions can now be created on drives other than the drive containing CrossStudio.
- Fixed incorrect reporting of file permissions on NTFS and network drives.
- The Evironment Options dialog now displays all properties that are also settable through the Properties Window.
- There is an all-new Build Properties dialog (Alt+Enter) that is much easier to use than the previous dialog.
- The user interface can be switched between the tabbed interface and an MDI-style interface.
- Project files can now be linked into other project files - most of the project dialogs have had to be upgraded to support this.
- Configurations now have a hidden property which causes them to be hidden from the configuration combo box.
- Created a new project type to enable externally built executables can be built/loaded and debugged.
- Solutions are now created using the new project wizard.
- Linker section placement can now be done using a file that is separate to the memory map file.
- Project system can create an additional output file for example S-Record.
- Special function registers window added which displays the registers defined in the memory map file used to link the project.
- Trace window improvements - remembers trace settings.
- Breakpoint dialog rehashed to support MSP430 EEM - can now trace breakpoints and specify register write breakpoints.
- Support for specifying the clock control on MSPF149 and EEM enabled parts.
- Exception support for PC not in FLASH range on EEM enabled parts.
- Register write breakpoints.
- Fixed problem with printing variables from assembly code.
- Fixed problem loading executables that had non contiguous ORG directives.
- Coorected crash when displaying code templates during debugging.

##### Installer

- The installer now installs program shortcuts correctly on international versions of Windows.
- The default destination directory is now correct on international versions of Windows.

## Known Problems

We hope to fix all known problems before the next release of the software.

##### Help System

- The help system content is not yet complete. We are converting our printed matter to XHTML as an ongoing activity.