## Changes in Release 1.3 Build 3

##### MSP430 Compiler

- Fixed right shift by 14 which dropped some bits on the optimized shift.
- Fixed bug in the register allocator which caused incorrect register references in some cases.
- Fixed ?: operator with structured operands.

##### CrossStudio

- Target processor property can now be selected from the context menu in the project explorer.
- Support for the F42x0 devices.
- Updated memory map files with processor specific SFR descriptions.
- Renamed FET (TI Driver) target interface to be generic TI MSP430.dll Interface.
- Default targets now include support for USB interfaces from TI, Elpotronic and Segger.

##### MSP430 Library

- Fixed problem printing values in wrong field width when supporting output widths greater than the natural integer width.
- Added missing intrinsic prototypes in <inmsp.h>.
- Fixed return value of ctl_message_queue_post.

## Changes in Release 1.3 Build 2

##### Compiler

- Fixed rare error when extending an integer to a longer type.
- Fixed ?: operator when the difference between the if and else values is 1.
- Fixed *ptr++ in presence of a cast incrementing ptr by wrong amount.
- Fixed final PUSH.B issue on hardware.

##### CrossStudio

- Better processor type checking which eliminates false reporting of processor incompatibilities.
- Properties window/dialog Use inherited Value now works on Target Processor property.
- Fixed problem with section placement editor - section placements were reversed.
- Added address and size columns to the memory map editor.
- Added cut, copy, paste, undo and redo to the project explorer.
- Added Import Memory Map function to project explorer.

##### MSP430 Library

- Fixed error introduced into __uint64_div.asm which causes 64-bit division to fail in some cases.
- Debug I/O library now has debug_time function.

##### Help system

- Can now view the help pages using an external web browser - use Open in External Browser on the context menu of the editor help page.

## Changes in Release 1.3

##### C Compiler

- Added intrinsics to support <inmsp.h>.
- Added support for __ctl_interrupt functions.
- Added support for __toplevel functions.
- Header file <in430.h> is now a wrapper around <inmsp.h>.
- Header file <__cross_studio_io.h> is now a wrapper around <cross_studio_io.h>.
- Fixed problem "if (x |= 0)..." generating bad code.
- Fixed incorrect type of shift when >> used on long longs.
- Fixed PUSH.B used when PUSH.W required.
- Fixed addresses operand when using <= on global addresses.
- Better code generation for zero-extended values used in wider context.
- Fixed obscure bug with unreferenced structures passed by value.
- Fixed call through @SP.
- Added type-based enumerations.

##### C Library

- Fixed fmod looping when given two value whose relative magnitude is greater than 2^23.
- Fixed tanh using bad polynomial for numbers >= ~0.5.
- Faster 32-bit floating poiint division.
- Faster 16-bit, 32-bit, and 64-bit integer division.
- printf formats 0.0 in %g format as "0" rather than "0e+00".

##### MSP430 Library

- Added header file __debug_stdio.h that enables C stdio functions (e.g. printf) to be used.
- Debug I/O library now has debug_exit function.
- CTL has been extensively (unfortunately not compatible with the previous release) revised and now includes support for integer valued priority semaphores and message queues.

##### Linker

- Added -M- to output linkage map to standard output (equivalent to existing -M)
- Added -M file to output linkage map to file.
- Added -xcp option to set the maximum number of Code Factoring passes.
- Added subroutine flattening optimization activated by -Osf.
- Added block locality improvement optimization activated by -Obl.
- Cross Calling optimization has been renamed to Code Factoring.
- Fixed phantom errors indicating sections will not fit into group.
- Unused section start and end symbols default to zero if not used.

##### Compiler driver

- Added -M- to output linkage map to standard output (equivalent to existing -M)
- Added -M file to output linkage map to file.

##### CrossStudio

- The Symbols Window can be printed.
- If the target processor of the project differs from the processor attached to the target interface, a warning is issued before downloading.
- Added linkage map generation to the Linker property group.
- Added SVF syntax highlighting.
- Many improvements in the watch, registers, locals, and the globals window.
- Selected docking tab restored when moving between edit, debug, and full screen workspaces and saved between runs of CrossStudio.
- Added optimization option to set the maximum number of code factoring passes run by the linker.
- Added "Release JTAG" function to Rowley target interfaces.
- Added JavaScript peripheral simulation capability to the core simulator.
- Added support for SourceOffSite 3.5.1 to source code integration.
- Added new source code control window that displays a filtered list of the project files.
- Fixed problem with memory map editor sorting section placement files.
- Built-in commands (cp, chmod etc) now work relative to the project directory.
- Properties, configurations and system files are now selectable at project creation time.
- DebugI/O no longer stops the processor.
- Fixed problem stepping instructions with PC relative destinations.
- Fixed problem displaying bitfields > 16 bits in size.

## 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.