/************************************************************************

	Title:  モードの選択

	File :SELECT.C		Ver.1.0	 written on Jan.31,1996 by J.W.
				Ver.1.1		    Feb.6,1996

*************************************************************************/
#include "m9401.h"
#include "mathf.h"

#define TH_EPS PIQ/4.5
#define TIME 7000

extern int wait();
extern int command();
extern int inportu();
extern int escape();
extern void calc_state();
extern void control();

extern float Z;
extern float Th;
extern float Th_ref;
extern int Z_ref;
extern float Xc, Yc;
extern int Tc,Sc;
extern int Ts_d,Ps_d;
extern int Th_e;
extern int Ze;
extern int Posi;
extern int Dist[];
extern int Turn;
extern int mode;
extern int Seg[];
extern int Led2;/* Red Led Data */
extern int flag;
extern int Act; /* 0:go 1:turn_left 2:turn_right 3:back 4:stop */

int select()
{
	if(flag==ON){
		Sc=0;
		/* Th_e=0; */
		Ze=0;
	}

	switch(mode){
		case NOMAL:
			nomal();
			if(Ps_d!=0x00){
				flag=ON;
				mode=PS_MODE;
			}
			else if((Ts_d & 0x80) == 0x80){
				flag=ON;
				mode=ESCAPE;
			}
			else if (Posi!=0 && Act==0 && Turn==0){
				if (Dist[0]<50 || Dist[1]<50){
					flag=ON;
					mode=SS_MODE;
				}
			}
			else if (Posi!=0 && Act==0 && Turn==1){
				if (Dist[0]<50 || Dist[2]<50){
					flag==ON;
					mode=SS_MODE;
				}
			}
		break;
		case PS_MODE:
			ps_mode();
		break;
		case ESCAPE:
			escape();
		break;
		case SS_MODE:
			ss_mode();
		break;
		case INI_MODE:
			ini_m();
		break;
		default:
			Act=4;
			flag=ON;
			mode=NOMAL;
		break;
	}
	/* if(flag==ON)
		Act=4; */
	/* Seg[4]=mode; */
	wait(TIME);
	return(ON);
}