Second Code Module--Slave App ("B")

static int init( void ) 
{ 
unsigned char app_status, app_link; 
int junkit; 
int _far **icblock_ptr; 
int i; 
int error; 
/* register far* table */ 
     m_reg_far( dereftable,50,0); 
     run_status = m_get_run_mode(); 
     app_status = (unsigned char) run_status; 
     app_link = (unsigned char) (run_status >> 8); 
     /* Have we been invoked in background ?  */ 
     if(app_status == TASK_STS_RETURN) 
          { 
          /* Return from launch */ 
          Init_Event.do_event = DO_SWAP; 
          m_action(&Init_Event); 
          /* ic init event */ 
          while (Init_Event.kind != E_IC_INIT) 
               { 
               error = Init_Event.kind; 
               Init_Event.do_event = DO_EVENT; 
               m_event( &Init_Event); 
               } 
     /* copy pointer to local far pointer entry for reference */ 
     /* Store far pointer in local table */ 
     icblock_ptr = Init_Event.e_slave_offset; 
      /* Make sure we can access passed block */ 
     for (i=0;i<0x100;i++) 
          { 
          if( (*icblock_ptr)[i] != i) 
               { 
               error = i; 
               break; 
                    }
               } 
/* We are looking at passed block now change something and return to 
owner */ 
          (*icblock_ptr)[0] = 0x44; 
     /* Return to Owner */ 
          Init_Event.do_event = DO_SWAP; 
          m_action(&Init_Event); 
          error = Init_Event.kind; 
          if( error = E_IC_CLOSE) 
               { 
               Init_Event.do_event = DO_FINI; 
               m_action(&Init_Event); 
               } 
          /* We should never get to here */ 
          error = 34; 
     } /* if appstatus */ 
     return(1); 
}