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