/*
**	CONTROL.EXE を介して TMENU を通さずに 他の.EXP へ制御を移す。
**
**	CTRL_T1 ←→ CTRL_T2
**
**	< note > : TABS = 4
**
**	注意 : ｶﾚﾝﾄにRUN386.EXEとCTRL_T2.EXPが必要です。また、TownsMENUから起動
**		   することが前提です。
*/

pragma	Off (Floating_point) ;

#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <string.h>
#include <egb.h>
#include <mos.h>
#include <fmc.h>
#include "hc.h"
#include "key.h"

#define	GworkSize	1536					/*  グラフィック作業域のサイズ	*/
char	Gwork[GworkSize] ;					/*  グラフィック作業域			*/
#define	MworkSize	4096					/*  マウス作業域のサイズ		*/
char	Mwork[MworkSize] ;					/*  マウス作業域				*/

struct _ENCODE	encode ;
union _MOJI	moji ;

/*******************************  初期化  ************************************/
void gminit()
{
	TEXT_init( Gwork,GworkSize ) ;		/* EGB 初期化						*/
	GRP_viewport( 0,0,1023,511 ) ;		/* View Port SET					*/
	TEXT_cursor( TRUE ) ;				/* ｶｰｿﾙ表示							*/

	MOS_start( Mwork,MworkSize ) ;
	MOS_disp( FALSE ) ;
}

/*****************************  ★ メイン ★  ********************************/
void main( int ac,char *av[] )
{
	int		c, err=0 ;
	char	s[120] ;
	char	intext[128] ;

	gminit() ;

	TEXT_color( C_HYELLOW ) ;
	TEXT_printf( "\nCTRL_T1.EXP......\n" ) ;
	strcpy( s,"RUN386.exe CTRL_T2 " ) ;
	if ( ac > 1 ) {
		for ( c=1; c<ac; c++ ) {
			TEXT_color( C_LIGHTBLUE ) ;
			TEXT_printf( "引数[%02d] = %s(%d)\n",c,av[c],strlen(av[c]) ) ;
			if ( (strlen(s)+strlen(av[c])) < 120 )
				strcat( s,av[c] ) ;
			else
				break ;
		}
	} else {
		strcat( s,"引数なし" ) ;
	}
	TEXT_color( C_HGREEN ) ;
	TEXT_printf( "s = %s(%d)\n",s,strlen(s) ) ;
	
	TEXT_color( C_HLIGHTBLUE ) ;
	TEXT_printf( "1: →CTRL_T2, 2: →CTRL_T1, 3: EXIT !, " ) ;
	TEXT_printf( "4: POFF, 5: RESET, 他: 終了\n" ) ;
	moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
	TEXT_color( C_HGREEN ) ;
	TEXT_printf( "HIT KEY IS " ) ;
	intext[0] = moji.hl.l ;
	intext[1] = '\0' ;
	TEXT_printf( intext ) ;
	TEXT_cr() ;
	MOS_end() ;

	TEXT_cr() ;
	switch ( moji.hl.l ) {
	case '1' :
		if ( strlen( s ) < 119 ) strcat( s,"1" ) ;
		strcpy( CTRL_cmdline_data,s ) ;
		TEXT_color( C_HWHITE ) ;
		TEXT_printf( "CMD LINE PARAMETER : " ) ;
		TEXT_printf( CTRL_cmdline_data ) ;
		KYB_clrbuf() ;							/*  バッファクリア			*/
		TEXT_color( C_HGREEN ) ;
		TEXT_printf( "\n何かキーを押して下さい｡ " ) ;
		moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
		RealCall( CTRL_cmdline ) ;
		exit( 0 ) ;
		break ;
	case '2' :
		strcpy( CTRL_cmdline_data,"RUN386.exe CTRL_T1 RETRY ..." ) ;
		TEXT_color( C_HWHITE ) ;
		TEXT_printf( "CMD LINE PARAMETER : " ) ;
		TEXT_printf( CTRL_cmdline_data ) ;
		KYB_clrbuf() ;							/*  バッファクリア			*/
		TEXT_color( C_HGREEN ) ;
		TEXT_printf( "\n何かキーを押して下さい｡ " ) ;
		moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
		RealCall( CTRL_cmdline ) ;
		exit( 0 ) ;
		break ;
	case '3' :
		KYB_clrbuf() ;							/*  バッファクリア			*/
		TEXT_color( C_HGREEN ) ;
		TEXT_printf( "\n何かキーを押して下さい｡ " ) ;
		moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
		exit( 0 ) ;
		break ;
	case '4' :
		KYB_clrbuf() ;							/*  バッファクリア			*/
		TEXT_color( C_HGREEN ) ;
		TEXT_printf( "\n何かキーを押して下さい｡ " ) ;
		moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
		poff() ;
		break ;
	case '5' :
		KYB_clrbuf() ;							/*  バッファクリア			*/
		TEXT_color( C_HGREEN ) ;
		TEXT_printf( "\n何かキーを押して下さい｡ " ) ;
		moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
		reboot() ;
		break ;
	default  :
		intext[0] = moji.hl.l ;
		intext[1] = '\0' ;
		TEXT_color( C_HGREEN ) ;
		TEXT_printf( intext ) ;
		TEXT_color( C_HWHITE ) ;
		TEXT_printf( " KEY HITTED : PG. END" ) ;
		break ;
	}
	TEXT_color( C_HWHITE ) ;
	TEXT_printf( "\nOWARI" ) ;

	KYB_clrbuf() ;							/*  バッファクリア			*/
	TEXT_color( C_HGREEN ) ;
	TEXT_printf( "\n何かキーを押して下さい｡ " ) ;
	moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
}

