public class order
{
	int    m_type;
	float  m_param;
}

public class exchange
{
	static private order m_fifo[] = null;

	// Put an order into the fifo
	synchronized void put(order a)
	{
		m_fifo[sizeof(m_fifo)] = a;
	}

	// Get an order from the fifo
	synchronized order get()
	{
		if ( sizeof(m_fifo) == 0 )  return null;

		order a = m_fifo[0];
		order copy[] = null;
		for ( int i=1 ; i<sizeof(m_fifo) ; i++ )
		{
			copy[i-1] = m_fifo[i];
		}
		m_fifo = copy;
		return a;
	}
}

extern void object::Slave5( )
{
	exchange list();
	order    todo;

	while ( true )
	{
		while ( true )
		{
			todo = list.get();
			if ( todo != null )  break;
			wait(1);
		}

		if ( todo.m_type == 1 )
		{
			message("move("+todo.m_param+")");
			move(todo.m_param);
		}
		else if ( todo.m_type == 2 )
		{
			message("turn("+todo.m_param+")");
			turn(todo.m_param);
		}
		else
		{
			message("Unknown order");
		}
	}
}
