 This program combines inputs 
 Written by Dan Williams jan 15 2006 
Enter a factor name or press enter when done
Enter a factor name or press enter when done
Enter a factor name or press enter when done
Enter a factor name or press enter when done
Enter a factor name or press enter when done
Enter a factor name or press enter when done
Now to get the states for the factors...
Enter a state name for factor Phase1 or press enter for next
Enter a state name for factor Phase1 or press enter for next
Enter a state name for factor Phase1 or press enter for next
Enter a state name for factor Phase2 or press enter for next
Enter a state name for factor Phase2 or press enter for next
Enter a state name for factor Phase2 or press enter for next
Enter a state name for factor Phase3 or press enter for next
Enter a state name for factor Phase3 or press enter for next
Enter a state name for factor Phase3 or press enter for next
Enter a state name for factor Phase4 or press enter for next
Enter a state name for factor Phase4 or press enter for next
Enter a state name for factor Phase4 or press enter for next
Enter a state name for factor Direction or press enter for next
Enter a state name for factor Direction or press enter for next
Enter a state name for factor Direction or press enter for next
// 1 bits for the Phase1 factor
// 1 bits for the Phase2 factor
// 1 bits for the Phase3 factor
// 1 bits for the Phase4 factor
// 1 bits for the Direction factor
// total of 5 bits in the state address
typedef struct FSM_State_s { 
  unsigned Phase1 : 1;
  unsigned Phase2 : 1;
  unsigned Phase3 : 1;
  unsigned Phase4 : 1;
  unsigned Direction : 1;
} FSM_State_t;
 
typedef unsigned int  PTRType; 
    
typedef struct stateEntry_s {  
    PTRType       next;            
    FSM_State_t   state;           
 } stateEntry_t;                   
 
//----------| Phase1 |----------
  #define on 0
  #define off 1
//----------| Phase2 |----------
  #define on 0
  #define off 1
//----------| Phase3 |----------
  #define on 0
  #define off 1
//----------| Phase4 |----------
  #define on 0
  #define off 1
//----------| Direction |----------
  #define Forward 0
  #define Reverse 1
//------------
  //    Phase1  ,  Phase2  ,  Phase3  ,  Phase4  ,  Direction  ,
stateEntry_t stateTable[] = {   
0,  on  , on  , on  , on  , Forward  ,      /*   index: 0   */
0,  off  , on  , on  , on  , Forward  ,      /*   index: 1   */
0,  on  , off  , on  , on  , Forward  ,      /*   index: 2   */
0,  off  , off  , on  , on  , Forward  ,      /*   index: 3   */
0,  on  , on  , off  , on  , Forward  ,      /*   index: 4   */
0,  off  , on  , off  , on  , Forward  ,      /*   index: 5   */
0,  on  , off  , off  , on  , Forward  ,      /*   index: 6   */
0,  off  , off  , off  , on  , Forward  ,      /*   index: 7   */
0,  on  , on  , on  , off  , Forward  ,      /*   index: 8   */
0,  off  , on  , on  , off  , Forward  ,      /*   index: 9   */
0,  on  , off  , on  , off  , Forward  ,      /*   index: 10   */
0,  off  , off  , on  , off  , Forward  ,      /*   index: 11   */
0,  on  , on  , off  , off  , Forward  ,      /*   index: 12   */
0,  off  , on  , off  , off  , Forward  ,      /*   index: 13   */
0,  on  , off  , off  , off  , Forward  ,      /*   index: 14   */
0,  off  , off  , off  , off  , Forward  ,      /*   index: 15   */
0,  on  , on  , on  , on  , Reverse  ,      /*   index: 16   */
0,  off  , on  , on  , on  , Reverse  ,      /*   index: 17   */
0,  on  , off  , on  , on  , Reverse  ,      /*   index: 18   */
0,  off  , off  , on  , on  , Reverse  ,      /*   index: 19   */
0,  on  , on  , off  , on  , Reverse  ,      /*   index: 20   */
0,  off  , on  , off  , on  , Reverse  ,      /*   index: 21   */
0,  on  , off  , off  , on  , Reverse  ,      /*   index: 22   */
0,  off  , off  , off  , on  , Reverse  ,      /*   index: 23   */
0,  on  , on  , on  , off  , Reverse  ,      /*   index: 24   */
0,  off  , on  , on  , off  , Reverse  ,      /*   index: 25   */
0,  on  , off  , on  , off  , Reverse  ,      /*   index: 26   */
0,  off  , off  , on  , off  , Reverse  ,      /*   index: 27   */
0,  on  , on  , off  , off  , Reverse  ,      /*   index: 28   */
0,  off  , on  , off  , off  , Reverse  ,      /*   index: 29   */
0,  on  , off  , off  , off  , Reverse  ,      /*   index: 30   */
0,  off  , off  , off  , off  , Reverse  ,      /*   index: 31   */
};