;==============================================================================
;	<< 386ASM V2.0 >>  for  FM TOWNS
;==============================================================================
.386p
		PAGE		60,132
		NAME		SYS_getinf
		TITLE		GET SYSTEM INFORMATION
;==============================================================================
;	ｼｽﾃﾑ情報の取得
;
;	< High C からの呼出形式 >
;	unsigned char	sysbuf[200] ;
;	int SYS_getinf( unsigned char *sysbuf ) ;
;	-------------------------------------------
;	int DRV_single() ;
;		=0    : ｼﾝｸﾞﾙﾓｰﾄﾞの設定無し
;		=0ffH :                有り
;
;	< note > : TABS = 4
;
;	< History >
;	1990.01.18 : CREATE
;	1991.04.23 : 清書
;
;	Programmed by Y.Hirata ( Nifty-ID : NAB03321 )
;==============================================================================
;
INCLUDE	hc.inc								;
;
CGROUP	GROUP pmcode, CODE					;
DGROUP	GROUP pmdata, DATA					;
;
;--------------------------------------------
		public	SYS_getinf					; ｼｽﾃﾑ情報の取得
		public	DRV_single					; ｼﾝｸﾞﾙﾄﾞﾗｲﾌﾞﾓｰﾄﾞﾁｪｯｸ
;--------------------------------------------
;
INCLUDE	rbios.inc							; ﾈｲﾃｨﾌﾞからﾘｱﾙBIOSを
											; 呼ぶための処理
;
;
;********************************************
;			定数定義
;********************************************
;
SCHK_OFF	EQU			0446H				; SINGLE MODE CHECK
;
;////////////////////////////////////////////
;			ネイティブ部
;////////////////////////////////////////////
;
pmcode	SEGMENT								;
		ASSUME	cs:CGROUP,ds:DGROUP			;
;
		ALIGN	4							;
;
;********************************************
;	GET SETUP INFORMATION
;********************************************
			db	'SYS_getinf'				;
;
;--------------------------------------------
;	ｼｽﾃﾑ情報の取得
;--------------------------------------------
		ALIGN	4							; dword boundary
SYS_getinf	PROC	NEAR					;
;
#datasize	EQU	50							; DATA SIZE (BIOS OUTPUT)
#int_no		EQU	08Eh						; INTERRUPT NUMBER
#function	EQU	00h							; FUNCTION NO.
#outparm1	EQU	SS:[ebp+8]					; DATA ADRESS
;
			push	ebp						;
			mov		ebp,esp					; ｽﾀｯｸﾌﾚｰﾑ形成
;
			cld								;
			push	ds						;
			push	es						;
			push	esi						;
			push	edi						;
			push	ebx						;
			push	ecx						;
			call	Make_bufs				; DOS-Extenderのﾊﾞｯﾌｧ確保
;
			xor		eax,eax
			mov		ah,#function			; FUNCTION NO.
			mov		di,word PTR RBIOS_rmoff	;
			push	dword PTR RBIOS_rmseg	; ES
			push	dword PTR RBIOS_rmseg	; DS
			push	dword PTR #int_no		; INTERRUPT NO.
			call	RBIOS_call				; CALL REAL MODE BIOS
			add		esp,12					;
;
			mov		ecx,#datasize			;
			push	ds						;
			pop		es						;
			mov		edi,#outparm1			;
			mov		esi,dword PTR RBIOS_pmoff
											;
			mov		ds,word PTR RBIOS_pmseg	;
	rep		movsd							;
			movzx	eax,ah					; SET RETURN CODE
;
			pop		ecx						;
			pop		ebx						;
			pop		edi						;
			pop		esi						;
			pop 	es						;
			pop 	ds						;
;
			pop		ebp						; ｽﾀｯｸﾌﾚｰﾑ開放
			ret								;
SYS_getinf	ENDP							;
;
;--------------------------------------------
;	ｼﾝｸﾞﾙﾄﾞﾗｲﾌﾞﾓｰﾄﾞのﾁｪｯｸ
;--------------------------------------------
		ALIGN	4							; dword boundary
DRV_single	PROC	NEAR					;
			push	ebp						;
			mov		ebp,esp					; ｽﾀｯｸﾌﾚｰﾑ形成
;
			push	fs						;
			push	REALSEG					;
			pop		fs						;
			xor		eax,eax					;
			mov		al,byte PTR fs:[SCHK_OFF]
			pop		fs						;
;
			pop		ebp						; ｽﾀｯｸﾌﾚｰﾑ開放
			ret								;
DRV_single	endp							;
;
pmcode		ENDS							;
;
		END

