/* << MSC V5.1 >> [FM-TOWNS] ************************************************
*
*	環境変数領域の情報取得ﾙｰﾁﾝﾍｯﾀﾞ(MS-DOS汎用)
*	----------------------------------------------------------------------
*	All Rights Reserved, Copyright (C) Y.Hirata 1993.
*	Programmed by Y.Hirata ( NIFTY-ID: NAB03321  パオパオ )
*
*	NOTE: TAB=4
****************************************************************************/

#ifndef _ENVIRON_DEFINED
	#define	_ENVIRON_DEFINED

	#include "lib\define.h"						/*  定数宣言			*/
	#include "lib\typedef.h"					/*  型宣言				*/

	#define	ENV_ROOT		0					/*  ﾙｰﾄの環境ｾｸﾞﾒﾝﾄ取得	*/
	#define	ENV_PRE			1					/*  親の環境ｾｸﾞﾒﾝﾄ取得	*/

	typedef struct _ENV_INF {
		WORD	seg; 		/*  環境ｾｸﾞﾒﾝﾄ			*/
		WORD	size ;		/*  環境変数領域のｻｲｽﾞ	*/
		WORD	res ;		/*  使用可能ｻｲｽﾞ		*/
		WORD	tail ;		/*  使用済末尾位置		*/
	} ENVINFS ;

/*---------------------------------------------------------------------------
*	関数ﾌﾟﾛﾄﾀｲﾌﾟ宣言
---------------------------------------------------------------------------*/
	WORD getMCB( void ) ;
	int chkEnviron( WORD seg,WORD size ) ;
	int getEnviron( ENVINFS *env ) ;
	int getEnvSeg( ENVINFS *env,int sw ) ;
	int getEnvName( ENVINFS *env,BYTE *buf,WORD len,int sw ) ;
	int getEnvOff( ENVINFS *env,char *name,WORD *off ) ;
	int delEnvName( ENVINFS *env,char *name ) ;
	void clrEnvName( ENVINFS *env ) ;
	int chkEnvUpdate( ENVINFS *env,char *name ) ;
	int chkEnvName( char *name ) ;
	int setEnvName( ENVINFS *env,char *name ) ;

#endif

/*	補足説明
-----------------------------------------------------------------------------
*	INT 21h ah=52h (非公開): ES:BX ｼｽﾃﾑﾊﾟﾗﾒﾀﾃｰﾌﾞﾙのｱﾄﾞﾚｽ
*
*	ｼｽﾃﾑﾊﾟﾗﾒﾀﾃｰﾌﾞﾙ(ES:BX)
*	-2	W   最初のMCBｾｸﾞﾒﾝﾄｱﾄﾞﾚｽ
*	+0	DW	最初のDPBｱﾄﾞﾚｽ(ｵﾌｾｯﾄ,ｾｸﾞﾒﾝﾄ)
*	+4	DW	最初のFCBｱﾄﾞﾚｽ(ｵﾌｾｯﾄ,ｾｸﾞﾒﾝﾄ)
*	+8	DW	CLOCKﾃﾞﾊﾞｲｽﾍｯﾀﾞｱﾄﾞﾚｽ
*	+C	DW	IO.SYS固有のﾃﾞﾊﾞｲｽﾍｯﾀﾞｱﾄﾞﾚｽ
-----------------------------------------------------------------------------
*	PSPの構造
*	+0	W	ﾌﾟﾛｸﾞﾗﾑ終了命令(INT 20h)
*	+2	W	使用可能ﾒﾓﾘの最初のｾｸﾞﾒﾝﾄ
*	+4	B	0
*	+5	5	MS-DOSをﾛﾝｸﾞｺｰﾙするための5ﾊﾞｲﾄ(CP/M互換)
*	+A	DW	ﾌﾟﾛｸﾞﾗﾑ終了ｱﾄﾞﾚｽ(INT 22h)のｺﾋﾟｰ
*	+E	DW	ﾌﾟﾛｸﾞﾗﾑ中断ｱﾄﾞﾚｽ(INT 23h)のｺﾋﾟｰ
*	+12	DW	致命的ｴﾗｰ処理ｱﾄﾞﾚｽ(INT 24h)のｺﾋﾟｰ
*	+16	W	親ﾌﾟﾛｾｽのPSPｾｸﾞﾒﾝﾄ
*	+18	20	ﾌｧｲﾙﾊﾝﾄﾞﾗと内部FCBの対応表
*	+2C	W	環境変数領域のｾｸﾞﾒﾝﾄ
*	+2E	W	SP退避領域
*	+30	W	SS退避領域
*	+32	30	ｼｽﾃﾑﾜｰｸ(未使用?)
*	+50	3	INT 21h RETF ( CD 21 CB )
*	+53	9	ｼｽﾃﾑﾜｰｸ(未使用?)
*	+5C	16	FCB1
*	+6C	20	FCB2
*	+80	B	ｺﾏﾝﾄﾞﾗｲﾝ文字数
*	+81	127	ｺﾏﾝﾄﾞﾗｲﾝ
-----------------------------------------------------------------------------
*	MCBの構造
*	+0	B	ﾒﾓﾘ管理ID 'M':次のMCBにﾘﾝｸ, 'Z':最終ﾒﾓﾘﾌﾞﾛｯｸ
*	+1	W	ﾒﾓﾘﾌﾞﾛｯｸを要求したPSPｾｸﾞﾒﾝﾄ
*	+3	W	使用ﾒﾓﾘのﾊﾟﾗｸﾞﾗﾌ数
*	+5	11	未使用
*	+10	?	MCBに管理されているﾒﾓﾘﾌﾞﾛｯｸ
---------------------------------------------------------------------------*/

/*	HISTORY
-----------------------------------------------------------------------------
*	1993.03.21 : CREATE
---------------------------------------------------------------------------*/
