;==============================================================================
;	<< 386ASM V2.0 >>  for  FM TOWNS
;==============================================================================
.386p
		PAGE		60,132
		NAME		INOUTP
		TITLE		inp outp function
;==============================================================================
;	ﾎﾟｰﾄ入出力
;
;	< High C からの呼出形式 >
;	-----------------------------------------
;	unsigned short int port ;
;	unsigned short int value ;
;	value = inp( port ) ;
;	-----------------------------------------
;	unsigned short int port ;
;	unsigned short int value ;
;	outp( port, value ) ;
;	-----------------------------------------
;
;	< note > : TABS = 4
;
;	< History >
;	1991.03.06 : CREATE
;	1991.04.13 : 清書
;
;	Programmed by Y.Hirata ( Nifty-ID : NAB03321 )
;==============================================================================
;
INCLUDE	hc.inc								;
;
CGROUP	GROUP pmcode, CODE					;
;
;--------------------------------------------
		public	inp							; ﾎﾟｰﾄ入力
		public	outp						; ﾎﾟｰﾄ出力
;--------------------------------------------
;
;////////////////////////////////////////////
;			ネイティブ部
;////////////////////////////////////////////
;
pmcode	SEGMENT								;
		ASSUME	cs:CGROUP					;
;
;============================================
;	ﾎﾟｰﾄ入力
;
;	< High C からの呼出形式 >
;	-----------------------------------------
;	unsigned short port ;
;	unsigned short value ;
;	value = inp( port ) ;
;	-----------------------------------------
;
;	< History >
;	1991.03.06 : CREATE
;
;	Programed by Y.Hirata
;============================================
		ALIGN	4							; dword boundary
inp			PROC	NEAR					;
;
#inparm1	EQU		SS:[ebp+8]				; 入力ﾎﾟｰﾄ
;
			push	ebp						;
			mov		ebp,esp					; ｽﾀｯｸﾌﾚｰﾑ形成
;
			push	edx						;
;
			mov		dx,#inparm1				;
			xor		eax,eax					;
			cli								; 割り込み禁止
			in		al,dx					; ﾎﾟｰﾄ入力
			sti								; 割り込み許可
;
inp_end:									;
			pop		edx						;
;
			pop		ebp						; ｽﾀｯｸﾌﾚｰﾑ開放
			ret								;
;
inp			ENDP							;
;
;============================================
;	ﾎﾟｰﾄ出力
;
;	< High C からの呼出形式 >
;	-----------------------------------------
;	unsigned short port ;
;	unsigned short value ;
;	outp( port, value ) ;
;	-----------------------------------------
;
;	< History >
;	1991.03.06 : CREATE
;
;	Programed by Y.Hirata
;============================================
		ALIGN	4							; dword boundary
outp		PROC	NEAR					;
;
#inparm1	EQU		SS:[ebp+8]				; 出力ﾎﾟｰﾄ(第一引数)
#inparm2	EQU		SS:[ebp+12]				; 値      (第二引数)
;
			push	ebp						;
			mov		ebp,esp					; ｽﾀｯｸﾌﾚｰﾑ形成
;
			push	edx						;
;
			mov		dx,#inparm1				;
			mov		al,#inparm2				;
			cli								; 割り込み禁止
			out		dx,al					; ﾎﾟｰﾄ出力
			sti								; 割り込み許可
			xor		eax,eax					;
;
outp_end:									;
			pop		edx						;
;
			pop		ebp						; ｽﾀｯｸﾌﾚｰﾑ開放
			ret								;
;
outp		ENDP							;
;
pmcode		ENDS							;
;
		END

