add support for 3.2 compiler
diff --git a/src/part2/examples/txn/targets/rts430/boot.c b/src/part2/examples/txn/targets/rts430/boot.c
index 72aeee1..44c68aa 100644
--- a/src/part2/examples/txn/targets/rts430/boot.c
+++ b/src/part2/examples/txn/targets/rts430/boot.c
@@ -1,60 +1,5 @@
-/*****************************************************************************/
-/* BOOT.C v2.1.0A07130 - Initialize the MSP430 C runtime environment */
-/* Copyright (c) 2003-2007 Texas Instruments Incorporated */
-/*****************************************************************************/
-#define CINIT ((void*)&__cinit__)
-
-extern int __cinit__;
-extern int _args_main();
-extern void exit(int status);
-extern void _auto_init(const void *cinit);
-extern void __interrupt _c_int00();
-extern int _system_pre_init(void);
-
-/*---------------------------------------------------------------------------*/
-/* Allocate the memory for the system stack. This section will be sized */
-/* by the linker. */
-/*---------------------------------------------------------------------------*/
-__asm("\t.global __STACK_SIZE");
-#pragma DATA_SECTION (_stack, ".stack");
-int _stack;
-
-/*---------------------------------------------------------------------------*/
-/* Initialize reset vector to point at _c_int00 */
-/*---------------------------------------------------------------------------*/
-#pragma DATA_SECTION(_reset_vector,".reset")
-
-#if defined(__LARGE_CODE_MODEL__)
-_Pragma("CODE_SECTION(_c_int00, \".text:_isr\")")
-_Pragma("diag_suppress 1107")
-void * const _reset_vector = (void *) (long) &_c_int00;
+#if __TI_COMPILER_VERSION__ >= 3002000
+#include "boot_3.2.c"
#else
-void (* const _reset_vector)() = &_c_int00;
+#include "boot_2.1.c"
#endif
-
-/*****************************************************************************/
-/* C_INT00() - C ENVIRONMENT ENTRY POINT */
-/*****************************************************************************/
-extern void __interrupt _c_int00()
-{
- /*------------------------------------------------------------------------*/
- /* Initialize stack pointer. Stack grows toward lower memory. */
- /*------------------------------------------------------------------------*/
- __asm("\t MOV.W\t #_stack + __STACK_SIZE,SP");
-
- /*------------------------------------------------------------------------*/
- /* Allow for any application-specific low level initialization prior to */
- /* initializing the C/C++ environment (global variable initialization, */
- /* constructers). If _system_pre_init() returns 0, then bypass C/C++ */
- /* initialization. NOTE: BYPASSING THE CALL TO THE C/C++ INITIALIZATION */
- /* ROUTINE MAY RESULT IN PROGRAM FAILURE. */
- /*------------------------------------------------------------------------*/
- if(_system_pre_init() != 0) _auto_init(CINIT);
-
- /*------------------------------------------------------------------------*/
- /* Handle any argc/argv arguments if supported by an MSP430 loader. */
- /*------------------------------------------------------------------------*/
- _args_main();
-
- exit(1);
-}
diff --git a/src/part2/examples/txn/targets/rts430/boot_2.1.c b/src/part2/examples/txn/targets/rts430/boot_2.1.c
new file mode 100644
index 0000000..e670abd
--- /dev/null
+++ b/src/part2/examples/txn/targets/rts430/boot_2.1.c
@@ -0,0 +1,60 @@
+/*****************************************************************************/
+/* BOOT.C v2.1.0A07130 - Initialize the MSP430 C runtime environment */
+/* Copyright (c) 2003-2007 Texas Instruments Incorporated */
+/*****************************************************************************/
+#define CINIT ((void*)&__cinit__)
+
+extern int __cinit__;
+extern int _args_main();
+extern void exit(int status);
+extern void _auto_init(const void *cinit);
+extern void __interrupt _c_int00();
+extern int _system_pre_init(void);
+
+/*---------------------------------------------------------------------------*/
+/* Allocate the memory for the system stack. This section will be sized */
+/* by the linker. */
+/*---------------------------------------------------------------------------*/
+__asm("\t.global __STACK_SIZE");
+#pragma DATA_SECTION (_stack, ".stack");
+int _stack;
+
+/*---------------------------------------------------------------------------*/
+/* Initialize reset vector to point at _c_int00 */
+/*---------------------------------------------------------------------------*/
+#pragma DATA_SECTION(_reset_vector,".reset")
+
+#if defined(__LARGE_CODE_MODEL__)
+_Pragma("CODE_SECTION(_c_int00, \".text:_isr\")")
+_Pragma("diag_suppress 1107")
+void * const _reset_vector = (void *) (long) &_c_int00;
+#else
+void (* const _reset_vector)() = &_c_int00;
+#endif
+
+/*****************************************************************************/
+/* C_INT00() - C ENVIRONMENT ENTRY POINT */
+/*****************************************************************************/
+extern void __interrupt _c_int00()
+{
+ /*------------------------------------------------------------------------*/
+ /* Initialize stack pointer. Stack grows toward lower memory. */
+ /*------------------------------------------------------------------------*/
+ __asm("\t MOV.W\t #_stack + __STACK_SIZE,SP");
+
+ /*------------------------------------------------------------------------*/
+ /* Allow for any application-specific low level initialization prior to */
+ /* initializing the C/C++ environment (global variable initialization, */
+ /* constructers). If _system_pre_init() returns 0, then bypass C/C++ */
+ /* initialization. NOTE: BYPASSING THE CALL TO THE C/C++ INITIALIZATION */
+ /* ROUTINE MAY RESULT IN PROGRAM FAILURE. */
+ /*------------------------------------------------------------------------*/
+ if(_system_pre_init() != 0) _auto_init(CINIT);
+
+ /*------------------------------------------------------------------------*/
+ /* Handle any argc/argv arguments if supported by an MSP430 loader. */
+ /*------------------------------------------------------------------------*/
+ _args_main();
+
+ exit(1);
+}
diff --git a/src/part2/examples/txn/targets/rts430/boot_3.2.c b/src/part2/examples/txn/targets/rts430/boot_3.2.c
new file mode 100644
index 0000000..e9c3026
--- /dev/null
+++ b/src/part2/examples/txn/targets/rts430/boot_3.2.c
@@ -0,0 +1,83 @@
+/*****************************************************************************/
+/* BOOT.C v3.2.0 - Initialize the MSP430 C runtime environment */
+/* Copyright (c) 2003-2009 Texas Instruments Incorporated */
+/*****************************************************************************/
+#include <stdlib.h>
+#include <_lock.h>
+
+extern int _args_main();
+extern int main(int argc);
+extern void exit(int status);
+extern void _auto_init();
+extern void __interrupt _c_int00();
+extern int _system_pre_init(void);
+
+void (*_cleanup_ptr)(void);
+void _DATA_ACCESS (*_dtors_ptr)(int);
+
+/*---------------------------------------------------------------------------*/
+/* Allocate the memory for the system stack. This section will be sized */
+/* by the linker. */
+/*---------------------------------------------------------------------------*/
+__asm("\t.global __STACK_END");
+#pragma DATA_SECTION (_stack, ".stack");
+#if defined(__LARGE_DATA_MODEL__)
+long _stack;
+#else
+int _stack;
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Initialize reset vector to point at _c_int00 */
+/* _c_int00 must always be located in low-memory on MSP430X devices. */
+/*---------------------------------------------------------------------------*/
+#if defined(__LARGE_CODE_MODEL__)
+_Pragma("CODE_SECTION(_c_int00, \".text:_isr\")")
+#endif
+
+__asm("\t.global _reset_vector");
+__asm("\t.sect \".reset\"");
+__asm("\t.align 2");
+__asm("_reset_vector:\n\t.field _c_int00, 16");
+
+/*---------------------------------------------------------------------------*/
+/* Macro to initialize stack pointer. Stack grows towards lower memory. */
+/*---------------------------------------------------------------------------*/
+#if defined(__LARGE_DATA_MODEL__)
+#define STACK_INIT() __asm("\t MOVX.A\t #__STACK_END,SP")
+#else
+#define STACK_INIT() __asm("\t MOV.W\t #__STACK_END,SP")
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Macros to initialize required global variables. */
+/*---------------------------------------------------------------------------*/
+#define INIT_LOCKS() _lock = _nop; _unlock = _nop
+#define INIT_EXIT_PTRS() _cleanup_ptr = NULL; _dtors_ptr = NULL
+
+/*****************************************************************************/
+/* C_INT00() - C ENVIRONMENT ENTRY POINT */
+/*****************************************************************************/
+extern void __interrupt _c_int00()
+{
+ STACK_INIT();
+
+ INIT_EXIT_PTRS();
+ INIT_LOCKS();
+
+ /*------------------------------------------------------------------------*/
+ /* Allow for any application-specific low level initialization prior to */
+ /* initializing the C/C++ environment (global variable initialization, */
+ /* constructers). If _system_pre_init() returns 0, then bypass C/C++ */
+ /* initialization. NOTE: BYPASSING THE CALL TO THE C/C++ INITIALIZATION */
+ /* ROUTINE MAY RESULT IN PROGRAM FAILURE. */
+ /*------------------------------------------------------------------------*/
+ if(_system_pre_init() != 0) _auto_init();
+
+ /*------------------------------------------------------------------------*/
+ /* Handle any argc/argv arguments if supported by an MSP430 loader. */
+ /*------------------------------------------------------------------------*/
+ _args_main();
+
+ exit(1);
+}