diff --git a/portable/Paradigm/Tern_EE/large_untested/port.c b/portable/Paradigm/Tern_EE/large_untested/port.c
index fdb275f..4ecffe0 100644
--- a/portable/Paradigm/Tern_EE/large_untested/port.c
+++ b/portable/Paradigm/Tern_EE/large_untested/port.c
@@ -28,9 +28,9 @@
 
 
 /*-----------------------------------------------------------
-* Implementation of functions defined in portable.h for the Tern EE 186
-* port.
-*----------------------------------------------------------*/
+ * Implementation of functions defined in portable.h for the Tern EE 186
+ * port.
+ *----------------------------------------------------------*/
 
 /* Library includes. */
 #include <embedded.h>
@@ -42,29 +42,27 @@
 #include "portasm.h"
 
 /* The timer increments every four clocks, hence the divide by 4. */
-#define portTIMER_COMPARE                 ( uint16_t ) ( ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) / ( uint32_t ) 4 )
+#define portTIMER_COMPARE ( uint16_t ) ( ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) / ( uint32_t ) 4 )
 
 /* From the RDC data sheet. */
-#define portENABLE_TIMER_AND_INTERRUPT    ( uint16_t ) 0xe001
+#define portENABLE_TIMER_AND_INTERRUPT ( uint16_t ) 0xe001
 
 /* Interrupt control. */
-#define portEIO_REGISTER                  0xff22
-#define portCLEAR_INTERRUPT               0x0008
+#define portEIO_REGISTER 0xff22
+#define portCLEAR_INTERRUPT 0x0008
 
 /* Setup the hardware to generate the required tick frequency. */
 static void prvSetupTimerInterrupt( void );
 
 /* The ISR used depends on whether the preemptive or cooperative scheduler
- * is being used. */
-#if ( configUSE_PREEMPTION == 1 )
-
-/* Tick service routine used by the scheduler when preemptive scheduling is
- * being used. */
+is being used. */
+#if( configUSE_PREEMPTION == 1 )
+    /* Tick service routine used by the scheduler when preemptive scheduling is
+    being used. */
     static void __interrupt __far prvPreemptiveTick( void );
 #else
-
-/* Tick service routine used by the scheduler when cooperative scheduling is
- * being used. */
+    /* Tick service routine used by the scheduler when cooperative scheduling is
+    being used. */
     static void __interrupt __far prvNonPreemptiveTick( void );
 #endif
 
@@ -72,20 +70,18 @@
 static void __interrupt __far prvYieldProcessor( void );
 
 /* The timer initialisation functions leave interrupts enabled,
- * which is not what we want.  This ISR is installed temporarily in case
- * the timer fires before we get a change to disable interrupts again. */
+which is not what we want.  This ISR is installed temporarily in case
+the timer fires before we get a change to disable interrupts again. */
 static void __interrupt __far prvDummyISR( void );
 
 /*-----------------------------------------------------------*/
 /* See header file for description. */
-StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
-                                     TaskFunction_t pxCode,
-                                     void * pvParameters )
+StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )
 {
-    StackType_t DS_Reg = 0;
+StackType_t DS_Reg = 0;
 
     /* Place a few bytes of known values on the bottom of the stack.
-     * This is just useful for debugging. */
+    This is just useful for debugging. */
 
     *pxTopOfStack = 0x1111;
     pxTopOfStack--;
@@ -95,8 +91,8 @@
     pxTopOfStack--;
 
     /* We are going to start the scheduler using a return from interrupt
-     * instruction to load the program counter, so first there would be the
-     * function call with parameters preamble. */
+    instruction to load the program counter, so first there would be the
+    function call with parameters preamble. */
 
     *pxTopOfStack = FP_SEG( pvParameters );
     pxTopOfStack--;
@@ -116,8 +112,8 @@
     pxTopOfStack--;
 
     /* The remaining registers would be pushed on the stack by our context
-     * switch function.  These are loaded with values simply to make debugging
-     * easier. */
+    switch function.  These are loaded with values simply to make debugging
+    easier. */
     *pxTopOfStack = ( StackType_t ) 0xAAAA; /* AX */
     pxTopOfStack--;
     *pxTopOfStack = ( StackType_t ) 0xBBBB; /* BX */
@@ -130,11 +126,9 @@
     pxTopOfStack--;
 
     /* We need the true data segment. */
-    __asm {
-        MOV DS_Reg, DS
-    };
+    __asm{  MOV DS_Reg, DS };
 
-    *pxTopOfStack = DS_Reg;                 /* DS */
+    *pxTopOfStack = DS_Reg;                     /* DS */
     pxTopOfStack--;
     *pxTopOfStack = ( StackType_t ) 0x0123; /* SI */
     pxTopOfStack--;
@@ -151,7 +145,7 @@
     /* This is called with interrupts already disabled. */
 
     /* Put our manual switch (yield) function on a known
-     * vector. */
+    vector. */
     setvect( portSWITCH_INT_NUMBER, prvYieldProcessor );
 
     /* Setup the tick interrupt. */
@@ -168,15 +162,15 @@
 static void __interrupt __far prvDummyISR( void )
 {
     /* The timer initialisation functions leave interrupts enabled,
-     * which is not what we want.  This ISR is installed temporarily in case
-     * the timer fires before we get a change to disable interrupts again. */
+    which is not what we want.  This ISR is installed temporarily in case
+    the timer fires before we get a change to disable interrupts again. */
     outport( portEIO_REGISTER, portCLEAR_INTERRUPT );
 }
 /*-----------------------------------------------------------*/
 
 /* The ISR used depends on whether the preemptive or cooperative scheduler
- * is being used. */
-#if ( configUSE_PREEMPTION == 1 )
+is being used. */
+#if( configUSE_PREEMPTION == 1 )
     static void __interrupt __far prvPreemptiveTick( void )
     {
         /* Get the scheduler to update the task states following the tick. */
@@ -189,17 +183,17 @@
         /* Reset interrupt. */
         outport( portEIO_REGISTER, portCLEAR_INTERRUPT );
     }
-#else /* if ( configUSE_PREEMPTION == 1 ) */
+#else
     static void __interrupt __far prvNonPreemptiveTick( void )
     {
         /* Same as preemptive tick, but the cooperative scheduler is being used
-         * so we don't have to switch in the context of the next task. */
+        so we don't have to switch in the context of the next task. */
         xTaskIncrementTick();
 
         /* Reset interrupt. */
         outport( portEIO_REGISTER, portCLEAR_INTERRUPT );
     }
-#endif /* if ( configUSE_PREEMPTION == 1 ) */
+#endif
 /*-----------------------------------------------------------*/
 
 static void __interrupt __far prvYieldProcessor( void )
@@ -217,25 +211,23 @@
 
 static void prvSetupTimerInterrupt( void )
 {
-    const uint16_t usTimerACompare = portTIMER_COMPARE, usTimerAMode = portENABLE_TIMER_AND_INTERRUPT;
-    const uint16_t usT2_IRQ = 0x13;
+const uint16_t usTimerACompare = portTIMER_COMPARE, usTimerAMode = portENABLE_TIMER_AND_INTERRUPT;
+const uint16_t usT2_IRQ = 0x13;
 
     /* Configure the timer, the dummy handler is used here as the init
-     * function leaves interrupts enabled. */
+    function leaves interrupts enabled. */
     t2_init( usTimerAMode, usTimerACompare, prvDummyISR );
 
     /* Disable interrupts again before installing the real handlers. */
     portDISABLE_INTERRUPTS();
 
-    #if ( configUSE_PREEMPTION == 1 )
-
+    #if( configUSE_PREEMPTION == 1 )
         /* Tick service routine used by the scheduler when preemptive scheduling is
-         * being used. */
+        being used. */
         setvect( usT2_IRQ, prvPreemptiveTick );
     #else
-
         /* Tick service routine used by the scheduler when cooperative scheduling is
-         * being used. */
+        being used. */
         setvect( usT2_IRQ, prvNonPreemptiveTick );
     #endif
 }
diff --git a/portable/Paradigm/Tern_EE/large_untested/portasm.h b/portable/Paradigm/Tern_EE/large_untested/portasm.h
index e0321a8..c3c7456 100644
--- a/portable/Paradigm/Tern_EE/large_untested/portasm.h
+++ b/portable/Paradigm/Tern_EE/large_untested/portasm.h
@@ -44,32 +44,32 @@
  */
 void portFIRST_CONTEXT( void );
 
-#define portSWITCH_CONTEXT()                                                              \
-    asm { mov ax, seg pxCurrentTCB }                                                      \
-    asm { mov ds, ax }                                                                    \
-    asm { les bx, pxCurrentTCB } /* Save the stack pointer into the TCB. */               \
-    asm { mov es : 0x2[ bx ], ss }                                                        \
-    asm { mov es:[ bx ], sp }                                                                      \
-    asm { call far ptr vTaskSwitchContext } /* Perform the switch. */                     \
-    asm { mov ax, seg pxCurrentTCB }        /* Restore the stack pointer from the TCB. */ \
-    asm { mov ds, ax }                                                                    \
-    asm { les bx, dword ptr pxCurrentTCB }                                                \
-    asm { mov ss, es:[ bx + 2 ] }                                                                      \
-    asm { mov sp, es:[ bx ] }
+#define portSWITCH_CONTEXT()                                         \
+                        asm { mov   ax, seg pxCurrentTCB        } \
+                            asm { mov   ds, ax                      }  \
+                            asm { les   bx, pxCurrentTCB            }   /* Save the stack pointer into the TCB. */    \
+                            asm { mov   es:0x2[ bx ], ss            }   \
+                            asm { mov   es:[ bx ], sp               }   \
+                            asm { call  far ptr vTaskSwitchContext  }   /* Perform the switch. */   \
+                            asm { mov   ax, seg pxCurrentTCB        }   /* Restore the stack pointer from the TCB. */  \
+                            asm { mov   ds, ax                      }   \
+                            asm { les   bx, dword ptr pxCurrentTCB  }   \
+                            asm { mov   ss, es:[ bx + 2 ]           }      \
+                            asm { mov   sp, es:[ bx ]               }
 
-#define portFIRST_CONTEXT()                \
-    asm { mov ax, seg pxCurrentTCB }       \
-    asm { mov ds, ax }                     \
-    asm { les bx, dword ptr pxCurrentTCB } \
-    asm { mov ss, es:[ bx + 2 ] }                       \
-    asm { mov sp, es:[ bx ] }                           \
-    asm { pop bp }                         \
-    asm { pop di }                         \
-    asm { pop si }                         \
-    asm { pop ds }                         \
-    asm { pop es }                         \
-    asm { pop dx }                         \
-    asm { pop cx }                         \
-    asm { pop bx }                         \
-    asm { pop ax }                         \
-    asm { iret }
+#define portFIRST_CONTEXT()                                             \
+                            asm { mov   ax, seg pxCurrentTCB        }   \
+                            asm { mov   ds, ax                      }   \
+                            asm { les   bx, dword ptr pxCurrentTCB  }   \
+                            asm { mov   ss, es:[ bx + 2 ]           }   \
+                            asm { mov   sp, es:[ bx ]               }   \
+                            asm { pop   bp                          }   \
+                            asm { pop   di                          }   \
+                            asm { pop   si                          }   \
+                            asm { pop   ds                          }   \
+                            asm { pop   es                          }   \
+                            asm { pop   dx                          }   \
+                            asm { pop   cx                          }   \
+                            asm { pop   bx                          }   \
+                            asm { pop   ax                          }   \
+                            asm { iret                              }
diff --git a/portable/Paradigm/Tern_EE/large_untested/portmacro.h b/portable/Paradigm/Tern_EE/large_untested/portmacro.h
index 2027213..292c9e2 100644
--- a/portable/Paradigm/Tern_EE/large_untested/portmacro.h
+++ b/portable/Paradigm/Tern_EE/large_untested/portmacro.h
@@ -46,24 +46,24 @@
  */
 
 /* Type definitions. */
-#define portCHAR          char
-#define portFLOAT         float
-#define portDOUBLE        long
-#define portLONG          long
-#define portSHORT         int
-#define portSTACK_TYPE    uint16_t
-#define portBASE_TYPE     short
+#define portCHAR        char
+#define portFLOAT       float
+#define portDOUBLE      long
+#define portLONG        long
+#define portSHORT       int
+#define portSTACK_TYPE  uint16_t
+#define portBASE_TYPE   short
 
-typedef portSTACK_TYPE   StackType_t;
-typedef short            BaseType_t;
-typedef unsigned short   UBaseType_t;
+typedef portSTACK_TYPE StackType_t;
+typedef short BaseType_t;
+typedef unsigned short UBaseType_t;
 
 
-#if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
-    typedef uint16_t     TickType_t;
-    #define portMAX_DELAY    ( TickType_t ) 0xffff
-#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
-    typedef uint32_t     TickType_t;
+#if( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
+    typedef uint16_t TickType_t;
+    #define portMAX_DELAY ( TickType_t ) 0xffff
+#elif ( configTICK_TYPE_WIDTH_IN_BITS  == TICK_TYPE_WIDTH_32_BITS )
+    typedef uint32_t             TickType_t;
     #define portMAX_DELAY    ( TickType_t ) 0xffffffffUL
 #else
     #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
@@ -71,37 +71,36 @@
 /*-----------------------------------------------------------*/
 
 /* Critical section handling. */
-#define portENTER_CRITICAL() \
-    __asm { pushf }          \
-    __asm { cli }            \
+#define portENTER_CRITICAL()            __asm{ pushf }  \
+                                        __asm{ cli   }  \
 
-#define portEXIT_CRITICAL()         __asm { popf }
+#define portEXIT_CRITICAL()             __asm{ popf }
 
-#define portDISABLE_INTERRUPTS()    __asm { cli }
+#define portDISABLE_INTERRUPTS()        __asm{ cli }
 
-#define portENABLE_INTERRUPTS()     __asm { sti }
+#define portENABLE_INTERRUPTS()         __asm{ sti }
 /*-----------------------------------------------------------*/
 
 /* Hardware specifics. */
-#define portNOP()      __asm { nop }
-#define portSTACK_GROWTH         ( -1 )
-#define portSWITCH_INT_NUMBER    0x80
-#define portYIELD()    __asm { int portSWITCH_INT_NUMBER }
-#define portTICK_PERIOD_MS       ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
-#define portBYTE_ALIGNMENT       2
-#define portINITIAL_SW           ( ( portSTACK_TYPE ) 0x0202 )          /* Start the tasks with interrupts enabled. */
+#define portNOP()                       __asm{ nop }
+#define portSTACK_GROWTH                ( -1 )
+#define portSWITCH_INT_NUMBER           0x80
+#define portYIELD()                     __asm{ int portSWITCH_INT_NUMBER }
+#define portTICK_PERIOD_MS              ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
+#define portBYTE_ALIGNMENT              2
+#define portINITIAL_SW                  ( ( portSTACK_TYPE ) 0x0202 )   /* Start the tasks with interrupts enabled. */
 /*-----------------------------------------------------------*/
 
 /* Compiler specifics. */
-#define portINPUT_BYTE( xAddr )              inp( xAddr )
-#define portOUTPUT_BYTE( xAddr, ucValue )    outp( xAddr, ucValue )
-#define portINPUT_WORD( xAddr )              inpw( xAddr )
-#define portOUTPUT_WORD( xAddr, usValue )    outpw( xAddr, usValue )
+#define portINPUT_BYTE( xAddr )             inp( xAddr )
+#define portOUTPUT_BYTE( xAddr, ucValue )   outp( xAddr, ucValue )
+#define portINPUT_WORD( xAddr )             inpw( xAddr )
+#define portOUTPUT_WORD( xAddr, usValue )   outpw( xAddr, usValue )
 /*-----------------------------------------------------------*/
 
 /* Task function macros as described on the FreeRTOS.org WEB site. */
-#define portTASK_FUNCTION_PROTO( vTaskFunction, vParameters )    void vTaskFunction( void * pvParameters )
-#define portTASK_FUNCTION( vTaskFunction, vParameters )          void vTaskFunction( void * pvParameters )
+#define portTASK_FUNCTION_PROTO( vTaskFunction, vParameters ) void vTaskFunction( void *pvParameters )
+#define portTASK_FUNCTION( vTaskFunction, vParameters ) void vTaskFunction( void *pvParameters )
 
 /* *INDENT-OFF* */
 #ifdef __cplusplus
diff --git a/portable/Paradigm/Tern_EE/small/port.c b/portable/Paradigm/Tern_EE/small/port.c
index 6d27ba9..2a1c0d9 100644
--- a/portable/Paradigm/Tern_EE/small/port.c
+++ b/portable/Paradigm/Tern_EE/small/port.c
@@ -28,9 +28,9 @@
 
 
 /*-----------------------------------------------------------
-* Implementation of functions defined in portable.h for the Tern EE 186
-* port.
-*----------------------------------------------------------*/
+ * Implementation of functions defined in portable.h for the Tern EE 186
+ * port.
+ *----------------------------------------------------------*/
 
 /* Library includes. */
 #include <embedded.h>
@@ -42,31 +42,29 @@
 #include "portasm.h"
 
 /* The timer increments every four clocks, hence the divide by 4. */
-#define portPRESCALE_VALUE                ( 16 )
-#define portTIMER_COMPARE                 ( configCPU_CLOCK_HZ / ( configTICK_RATE_HZ * 4UL ) )
+#define portPRESCALE_VALUE ( 16 )
+#define portTIMER_COMPARE ( configCPU_CLOCK_HZ  / ( configTICK_RATE_HZ * 4UL ) )
 
 /* From the RDC data sheet. */
-#define portENABLE_TIMER_AND_INTERRUPT    ( uint16_t ) 0xe00b
-#define portENABLE_TIMER                  ( uint16_t ) 0xC001
+#define portENABLE_TIMER_AND_INTERRUPT  ( uint16_t ) 0xe00b
+#define portENABLE_TIMER                ( uint16_t ) 0xC001
 
 /* Interrupt control. */
-#define portEIO_REGISTER                  0xff22
-#define portCLEAR_INTERRUPT               0x0008
+#define portEIO_REGISTER 0xff22
+#define portCLEAR_INTERRUPT 0x0008
 
 /* Setup the hardware to generate the required tick frequency. */
 static void prvSetupTimerInterrupt( void );
 
 /* The ISR used depends on whether the preemptive or cooperative scheduler
- * is being used. */
-#if ( configUSE_PREEMPTION == 1 )
-
-/* Tick service routine used by the scheduler when preemptive scheduling is
- * being used. */
+is being used. */
+#if( configUSE_PREEMPTION == 1 )
+    /* Tick service routine used by the scheduler when preemptive scheduling is
+    being used. */
     static void __interrupt __far prvPreemptiveTick( void );
 #else
-
-/* Tick service routine used by the scheduler when cooperative scheduling is
- * being used. */
+    /* Tick service routine used by the scheduler when cooperative scheduling is
+    being used. */
     static void __interrupt __far prvNonPreemptiveTick( void );
 #endif
 
@@ -75,19 +73,15 @@
 
 /*-----------------------------------------------------------*/
 /* See header file for description. */
-StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
-                                     TaskFunction_t pxCode,
-                                     void * pvParameters )
+StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )
 {
-    StackType_t DS_Reg = 0;
+StackType_t DS_Reg = 0;
 
     /* We need the true data segment. */
-    __asm {
-        MOV DS_Reg, DS
-    };
+    __asm{  MOV DS_Reg, DS };
 
     /* Place a few bytes of known values on the bottom of the stack.
-     * This is just useful for debugging. */
+    This is just useful for debugging. */
 
     *pxTopOfStack = 0x1111;
     pxTopOfStack--;
@@ -97,8 +91,8 @@
     pxTopOfStack--;
 
     /* We are going to start the scheduler using a return from interrupt
-     * instruction to load the program counter, so first there would be the
-     * function call with parameters preamble. */
+    instruction to load the program counter, so first there would be the
+    function call with parameters preamble. */
 
     *pxTopOfStack = FP_OFF( pvParameters );
     pxTopOfStack--;
@@ -114,8 +108,8 @@
     pxTopOfStack--;
 
     /* The remaining registers would be pushed on the stack by our context
-     * switch function.  These are loaded with values simply to make debugging
-     * easier. */
+    switch function.  These are loaded with values simply to make debugging
+    easier. */
     *pxTopOfStack = ( StackType_t ) 0xAAAA; /* AX */
     pxTopOfStack--;
     *pxTopOfStack = ( StackType_t ) 0xBBBB; /* BX */
@@ -127,7 +121,7 @@
     *pxTopOfStack = ( StackType_t ) 0xEEEE; /* ES */
     pxTopOfStack--;
 
-    *pxTopOfStack = DS_Reg;                 /* DS */
+    *pxTopOfStack = DS_Reg;                     /* DS */
     pxTopOfStack--;
     *pxTopOfStack = ( StackType_t ) 0x0123; /* SI */
     pxTopOfStack--;
@@ -144,7 +138,7 @@
     /* This is called with interrupts already disabled. */
 
     /* Put our manual switch (yield) function on a known
-     * vector. */
+    vector. */
     setvect( portSWITCH_INT_NUMBER, prvYieldProcessor );
 
     /* Setup the tick interrupt. */
@@ -159,8 +153,8 @@
 /*-----------------------------------------------------------*/
 
 /* The ISR used depends on whether the preemptive or cooperative scheduler
- * is being used. */
-#if ( configUSE_PREEMPTION == 1 )
+is being used. */
+#if( configUSE_PREEMPTION == 1 )
     static void __interrupt __far prvPreemptiveTick( void )
     {
         /* Get the scheduler to update the task states following the tick. */
@@ -173,17 +167,17 @@
         /* Reset interrupt. */
         outport( portEIO_REGISTER, portCLEAR_INTERRUPT );
     }
-#else /* if ( configUSE_PREEMPTION == 1 ) */
+#else
     static void __interrupt __far prvNonPreemptiveTick( void )
     {
         /* Same as preemptive tick, but the cooperative scheduler is being used
-         * so we don't have to switch in the context of the next task. */
+        so we don't have to switch in the context of the next task. */
         xTaskIncrementTick();
 
         /* Reset interrupt. */
         outport( portEIO_REGISTER, portCLEAR_INTERRUPT );
     }
-#endif /* if ( configUSE_PREEMPTION == 1 ) */
+#endif
 /*-----------------------------------------------------------*/
 
 static void __interrupt __far prvYieldProcessor( void )
@@ -201,21 +195,19 @@
 
 static void prvSetupTimerInterrupt( void )
 {
-    const uint32_t ulCompareValue = portTIMER_COMPARE;
-    uint16_t usTimerCompare;
+const uint32_t ulCompareValue = portTIMER_COMPARE;
+uint16_t usTimerCompare;
 
     usTimerCompare = ( uint16_t ) ( ulCompareValue >> 4 );
     t2_init( portENABLE_TIMER, portPRESCALE_VALUE, NULL );
 
-    #if ( configUSE_PREEMPTION == 1 )
-
+    #if( configUSE_PREEMPTION == 1 )
         /* Tick service routine used by the scheduler when preemptive scheduling is
-         * being used. */
+        being used. */
         t1_init( portENABLE_TIMER_AND_INTERRUPT, usTimerCompare, usTimerCompare, prvPreemptiveTick );
     #else
-
         /* Tick service routine used by the scheduler when cooperative scheduling is
-         * being used. */
+        being used. */
         t1_init( portENABLE_TIMER_AND_INTERRUPT, usTimerCompare, usTimerCompare, prvNonPreemptiveTick );
     #endif
 }
diff --git a/portable/Paradigm/Tern_EE/small/portasm.h b/portable/Paradigm/Tern_EE/small/portasm.h
index 2acba24..930da20 100644
--- a/portable/Paradigm/Tern_EE/small/portasm.h
+++ b/portable/Paradigm/Tern_EE/small/portasm.h
@@ -47,26 +47,26 @@
  */
 void portFIRST_CONTEXT( void );
 
-#define portEND_SWITCHING_ISR()             \
-    asm { mov bx, [ pxCurrentTCB ] }        \
-    asm { mov word ptr[ bx ], sp }          \
-    asm { call far ptr vTaskSwitchContext } \
-    asm { mov bx, [ pxCurrentTCB ] }        \
-    asm { mov sp, [ bx ] }
+#define portEND_SWITCHING_ISR()                                         \
+                            asm { mov   bx, [pxCurrentTCB]          }   \
+                            asm { mov   word ptr [bx], sp           }   \
+                            asm { call  far ptr vTaskSwitchContext  }   \
+                            asm { mov   bx, [pxCurrentTCB]          }   \
+                            asm { mov   sp, [bx]                    }
 
-#define portFIRST_CONTEXT()          \
-    asm { mov bx, [ pxCurrentTCB ] } \
-    asm { mov sp, [ bx ] }           \
-    asm { pop bp }                   \
-    asm { pop di }                   \
-    asm { pop si }                   \
-    asm { pop ds }                   \
-    asm { pop es }                   \
-    asm { pop dx }                   \
-    asm { pop cx }                   \
-    asm { pop bx }                   \
-    asm { pop ax }                   \
-    asm { iret }
+#define portFIRST_CONTEXT()                                         \
+                            asm { mov   bx, [pxCurrentTCB]          }   \
+                            asm { mov   sp, [bx]                    }   \
+                            asm { pop   bp                          }   \
+                            asm { pop   di                          }   \
+                            asm { pop   si                          }   \
+                            asm { pop   ds                          }   \
+                            asm { pop   es                          }   \
+                            asm { pop   dx                          }   \
+                            asm { pop   cx                          }   \
+                            asm { pop   bx                          }   \
+                            asm { pop   ax                          }   \
+                            asm { iret                              }
 
 
-#endif /* ifndef PORT_ASM_H */
+#endif
diff --git a/portable/Paradigm/Tern_EE/small/portmacro.h b/portable/Paradigm/Tern_EE/small/portmacro.h
index 393e6fa..ff0b34b 100644
--- a/portable/Paradigm/Tern_EE/small/portmacro.h
+++ b/portable/Paradigm/Tern_EE/small/portmacro.h
@@ -46,26 +46,26 @@
  */
 
 /* Type definitions. */
-#define portCHAR          char
-#define portFLOAT         float
-#define portDOUBLE        long
-#define portLONG          long
-#define portSHORT         int
-#define portSTACK_TYPE    uint16_t
-#define portBASE_TYPE     short
+#define portCHAR        char
+#define portFLOAT       float
+#define portDOUBLE      long
+#define portLONG        long
+#define portSHORT       int
+#define portSTACK_TYPE  uint16_t
+#define portBASE_TYPE   short
 
-typedef portSTACK_TYPE   StackType_t;
-typedef short            BaseType_t;
-typedef unsigned short   UBaseType_t;
+typedef portSTACK_TYPE StackType_t;
+typedef short BaseType_t;
+typedef unsigned short UBaseType_t;
 
 
-typedef void ( __interrupt __far * pxISR )();
+typedef void ( __interrupt __far *pxISR )();
 
-#if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
-    typedef uint16_t   TickType_t;
-    #define portMAX_DELAY    ( TickType_t ) 0xffff
-#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
-    typedef uint32_t   TickType_t;
+#if( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
+    typedef uint16_t TickType_t;
+    #define portMAX_DELAY ( TickType_t ) 0xffff
+#elif ( configTICK_TYPE_WIDTH_IN_BITS  == TICK_TYPE_WIDTH_32_BITS )
+    typedef uint32_t             TickType_t;
     #define portMAX_DELAY    ( TickType_t ) 0xffffffffUL
 #else
     #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
@@ -73,37 +73,36 @@
 /*-----------------------------------------------------------*/
 
 /* Critical section handling. */
-#define portENTER_CRITICAL() \
-    __asm { pushf }          \
-    __asm { cli }            \
+#define portENTER_CRITICAL()            __asm{ pushf }  \
+                                        __asm{ cli   }  \
 
-#define portEXIT_CRITICAL()         __asm { popf }
+#define portEXIT_CRITICAL()             __asm{ popf }
 
-#define portDISABLE_INTERRUPTS()    __asm { cli }
+#define portDISABLE_INTERRUPTS()        __asm{ cli }
 
-#define portENABLE_INTERRUPTS()     __asm { sti }
+#define portENABLE_INTERRUPTS()         __asm{ sti }
 /*-----------------------------------------------------------*/
 
 /* Hardware specifics. */
-#define portNOP()      __asm { nop }
-#define portSTACK_GROWTH         ( -1 )
-#define portSWITCH_INT_NUMBER    0x80
-#define portYIELD()    __asm { int portSWITCH_INT_NUMBER }
-#define portTICK_PERIOD_MS       ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
-#define portBYTE_ALIGNMENT       2
-#define portINITIAL_SW           ( ( portSTACK_TYPE ) 0x0202 )          /* Start the tasks with interrupts enabled. */
+#define portNOP()                       __asm{ nop }
+#define portSTACK_GROWTH                ( -1 )
+#define portSWITCH_INT_NUMBER           0x80
+#define portYIELD()                     __asm{ int portSWITCH_INT_NUMBER }
+#define portTICK_PERIOD_MS              ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
+#define portBYTE_ALIGNMENT              2
+#define portINITIAL_SW                  ( ( portSTACK_TYPE ) 0x0202 )   /* Start the tasks with interrupts enabled. */
 /*-----------------------------------------------------------*/
 
 /* Compiler specifics. */
-#define portINPUT_BYTE( xAddr )              inp( xAddr )
-#define portOUTPUT_BYTE( xAddr, ucValue )    outp( xAddr, ucValue )
-#define portINPUT_WORD( xAddr )              inpw( xAddr )
-#define portOUTPUT_WORD( xAddr, usValue )    outpw( xAddr, usValue )
+#define portINPUT_BYTE( xAddr )             inp( xAddr )
+#define portOUTPUT_BYTE( xAddr, ucValue )   outp( xAddr, ucValue )
+#define portINPUT_WORD( xAddr )             inpw( xAddr )
+#define portOUTPUT_WORD( xAddr, usValue )   outpw( xAddr, usValue )
 /*-----------------------------------------------------------*/
 
 /* Task function macros as described on the FreeRTOS.org WEB site. */
-#define portTASK_FUNCTION_PROTO( vTaskFunction, vParameters )    void vTaskFunction( void * pvParameters )
-#define portTASK_FUNCTION( vTaskFunction, vParameters )          void vTaskFunction( void * pvParameters )
+#define portTASK_FUNCTION_PROTO( vTaskFunction, vParameters ) void vTaskFunction( void *pvParameters )
+#define portTASK_FUNCTION( vTaskFunction, vParameters ) void vTaskFunction( void *pvParameters )
 
 /* *INDENT-OFF* */
 #ifdef __cplusplus
