#define PROGRAM \
"TOWNS-MENU ｺﾝｿｰﾙ･ﾄﾞﾗｲﾊﾞ V0.04 " __DATE__ " by Y.Kurihara (Nif PDC01620)"

/*
	TOMCON  
	TOMCON  <コマンド>
	TOMCON  <Ｘ座標> <Ｙ座標> <桁数> <行数>
	TOMCON  <Ｘ座標> <Ｙ座標> <桁数> <行数>  <コマンド>

	指定範囲をコンソールにして COMMAND.COM を起動する｡
	<コマンド>が指定されている時はコマンドを実行する｡

	＊フォントＣＧの使用方法は ORICON (MIYAZAKI氏作) を参考にしました｡
	＊本プロクラムは LSI C-86 Ver 3.20 試食版 でコンパイルしました｡
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jctype.h>
#include <dos.h>
#include "tomcon.h"

char *getcmd( void )			/* PSPのコマンドラインを取得 */
{
	static char buff[ 128 ];
	char far *ptr,*p = buff;
	int n;

	ptr = MK_FP( _psp,0x80 );
	n = *ptr++;
	while( n-- > 0 )  *p++ = *ptr++;
	*p = 0;
	return( buff );
}

char *getpara( char **cmd )		/* 文字列からパラメータを取得 */
{
	char *p,*s;

	p = s = *cmd;
	if( *p == 0 )  return( p );
	while( *s && !isspace( *s ) )  s++;
	if( *s )  *s++ = 0;
	while( *s &&  isspace( *s ) )  s++;
	*cmd = s;
	return( p );
}

main()
{
	char *cmd;
	int ret;

	cmd = getcmd();
	while( isspace( *cmd ) )  cmd++;
	if( isdigit( *cmd ) ) {
		x0 = atoi( getpara( &cmd ) );
		y0 = atoi( getpara( &cmd ) );
		xl = atoi( getpara( &cmd ) );
		yl = atoi( getpara( &cmd ) );
		if( x0 < 0 || x0 > 78 )  x0 = X0;
		if( xl < 1 || x0 + xl > 80 )  xl = 80 - x0;
		if( y0 < 0 || y0 > 78 )  y0 = Y0;
		if( yl < 1 || y0 + yl > 30 )  yl = 30 - y0;
	}

	set_int29();
	putchar( 0x0c );
	if( *cmd ) {
		ret = system( cmd );
	} else {
		puts( PROGRAM );
		ret = system( "" );
	}

	reset_int29();
	exit( ret );
}

