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);
+}