;==============================================================================
;	<< 386ASM V2.0 >>  for  FM TOWNS
;==============================================================================
.386p
		PAGE	60,132
		NAME	RealCall
		TITLE	real call procedure
;==============================================================================
;	リアルモードプログラムの呼出
;
;	< High C からの呼出形式 >
;	RealCall( Address ) ;
;
;	< note > : TABS = 4
;
;	< History >
;	1990.03.14 : CREATE
;	1991.04.13 : 清書
;
;	★ 注意
;		本プログラムを使用する時には、リンク時の最初にREALHEAD.OBJを指定して
;		下さい｡
;
;	Programmed by Y.Hirata
;==============================================================================
;
INCLUDE	hc.inc								;
;
CGROUP	GROUP pmcode, CODE					;
DGROUP	GROUP rmdata, pmdata, DATA			;
;
;--------------------------------------------
		public	RealCall					;
;--------------------------------------------
;
pmcode	SEGMENT								;
		ASSUME	cs:CGROUP					;
;
;********************************************
;	REAL CALL UTILITY
;********************************************
		ALIGN	4							; dword boundary
RealCall	PROC	NEAR					;
			push	ebp						;
			mov		ebp,esp					; ｽﾀｯｸﾌﾚｰﾑ形成
;
			push	esi						;
			push	edi						;
			push	ebx						;
			push	ecx						;
			push	es						;
			mov		bx,8[ebp]				;
			push	bx						; 呼び出すﾘｱﾙﾓｰﾄﾞﾌﾟﾛｼｼﾞｬのｱﾄﾞﾚｽ
;
			push	ds						;
			pop		es						; es = ds
			xor		ebx,ebx					;
			mov		ecx,OFFSET _realend		;
			mov		ax,0250fh				; ﾈｲﾃｨﾌﾞ->ﾘｱﾙ の ｱﾄﾞﾚｽ変換
			int		INT_DOS					;
;
			mov		ebx,ecx					; ｾｸﾞﾒﾝﾄ
			pop		bx						; ｵﾌｾｯﾄ
			mov		ecx,0					;
			mov		ax,0250eh				; ﾘｱﾙﾓｰﾄﾞﾌﾟﾛｼｼﾞｬの呼出
			int		INT_DOS					;
;	
			pop		es						;
			pop		ecx						;
			pop		ebx						;
			pop		edi						;
			pop		esi						;
;
			pop		ebp						; ｽﾀｯｸﾌﾚｰﾑの開放
			ret								;
RealCall	ENDP							;
;
pmcode		ENDS							;
;
		END

