
/**** LISTING 2 *******/

extern int disp_state();
extern int inc_channel();
extern int dec_channel();

/* State Table */

static S_TABLE s_table[] = 
{
/* State    Event            Next_State               F_list */
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   S_OFF,    E_POWER,        S_POWER,            disp_state,0,0,0,0,
   S_OFF,    E_TAPE_IN,      S_READY,            disp_state,0,0,0,0,
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   S_POWER,  E_POWER,        S_OFF,              disp_state,0,0,0,0,
   S_POWER,  E_CHAN_UP,      S_POWER,            inc_channel,0,0,0,0,
   S_POWER,  E_CHAN_DOWN,    S_POWER,            dec_channel,0,0,0,0,
   S_POWER,  E_TAPE_IN,      S_READY,            disp_state,0,0,0,0,
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   S_READY,  E_POWER,        S_OFF,              disp_state,0,0,0,0,
   S_READY,  E_CHAN_UP,      S_READY,            inc_channel,0,0,0,0,
   S_READY,  E_CHAN_DOWN,    S_READY,            dec_channel,0,0,0,0,
   S_READY,  E_TAPE_EJECT,   S_POWER,            disp_state,0,0,0,0,
   S_READY,  E_PLAY,         S_PLAY,             disp_state,0,0,0,0,
   S_READY,  E_RECORD,       S_RECORD,           disp_state,0,0,0,0,
   S_READY,  E_FAST_F,       S_FAST_F,           disp_state,0,0,0,0,
   S_READY,  E_REWIND,       S_REWIND,           disp_state,0,0,0,0,
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   S_PLAY,   E_STOP,         S_READY,            disp_state,0,0,0,0,
   S_PLAY,   E_CHAN_UP,      S_PLAY,             inc_channel,0,0,0,0,
   S_PLAY,   E_CHAN_DOWN,    S_PLAY,             dec_channel,0,0,0,0,
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   S_FAST_F, E_STOP,         S_READY,            disp_state,0,0,0,0,
   S_FAST_F, E_CHAN_UP,      S_PLAY,             inc_channel,0,0,0,0,
   S_FAST_F, E_CHAN_DOWN,    S_PLAY,             dec_channel,0,0,0,0,
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   S_REWIND, E_STOP,         S_READY,            disp_state,0,0,0,0,
   S_REWIND, E_CHAN_UP,      S_PLAY,             inc_channel,0,0,0,0,
   S_REWIND, E_CHAN_DOWN,    S_PLAY,             dec_channel,0,0,0,0,
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   S_RECORD, E_STOP,         S_READY,            disp_state,0,0,0,0,
   S_RECORD, E_CHAN_UP,      S_PLAY,             inc_channel,0,0,0,0,
   S_RECORD, E_CHAN_DOWN,    S_PLAY,             dec_channel,0,0,0,0,
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
   END,      END,            END,                0,0,0,0,0,
};

