;***************************************************************
;*							       *
;*	FORMAT.EXP (メニューバーアイテム実行用ダミーコマンド)  *
;*							       *
;*			1991/04/04  			       *
;*				Programmed by H.Yamashita      *
;*							       *
;***************************************************************

	.386p
	assume cs:CODE,ds:DATA,ss:STACK

CODE	segment

;*
;*        DEFINE CONSTANT
;*
R386DRV	equ	16H		;RUN386.EXEのドライブ名 
TMENDRV	equ	31H		;TMENU.EXPのドライブ名
T_OADRV	equ	3EH		;T_OAK.EXEのドライブ名
REEXEFG	equ	0CCH		;再起動指定フラグオフセット
CRTCFG	equ	0CAH		;CRCT非初期化フラグオフセット
CMDSTR	equ	0D6H		;コマンド文字列オフセット

;*
;*	  PROGRAM AREA
;*
MAIN	proc
	mov	AX,0060H	;
	mov 	ES,AX		;
	mov	AX,0000H	;ES:EBXに共通テーブル上の
	int	0D9H		;再起動指定フラグアドレスを
	mov	EAX,EBX		;取得
	and	EAX,0FFFF0000H	;
	and	EBX,00000FFFFH	;
	shr	EAX,12		;
	add	EBX,EAX		;
	
	mov	word ptr ES:[EBX],0FFFFH	;再起動フラグ設定
	mov	byte ptr ES:[-2+EBX],0FFH	;crtc非初期化フラグ設定
	
	lea	EBX,-REEXEFG[EBX]	;
	mov	DL,ES:[R386DRV+EBX]	;実際に実行するコマンドファイル
	mov	DS:DRV1,DL		;のあるアドレスの指定
	mov	DL,ES:[T_OADRV+EBX]	;
	mov	DS:DRV2,DL		;

	mov	ECX,CMDE-CMDS	;
	lea	EAX,CMDS	;
	lea	EBX,CMDSTR[EBX]	;
LPMOV:	mov	DL,DS:[EAX]	;
	mov	ES:[EBX],DL	;
	inc	EAX		;
	inc	EBX		;
	loop	LPMOV		;コマンド文字列の転送
	
	mov	AX,4C00H
	int	21H			;終了処理

MAIN	endp

CODE	ends	


DATA	segment
CMDS:
DRV1	db	"?"
	db	":\RUN386.EXE "
DRV2	db	"?"
	db	":\T_UTY\FORMAT.EXP "
	dw	0
	db	0
CMDE:
DATA	ends


STACK	segment stack
	dw	64 DUP(?)
STACK	ends

	end	MAIN

