;	私製ライブラリ  パート２
;	(c) MATSUUCHI Ryosuke in Dec,1992
;
;	ginit2.asm : 初期化

		.386p

		public	_ginit, ginit, _egbwork
		public	_callEGB
		public	_egbwork, _scrmod, _wrtpage, _nowscrmod

		assume	cs:cseg, ds:dseg

dseg segment

		align	4
__dmy__		db	4 dup (0)
_egbwork	db	1536 dup (0)	;EGBライブラリ用ワークエリア
_scrmod		dd	0		;ページ0の画面モード
		dd	0		;ページ1の画面モード
		dd	0		;仮想画面０の画面モード
		dd	0		;仮想画面１の画面モード
		dd	0		;仮想画面２の画面モード
		dd	0		;仮想画面３の画面モード
_nowscrmod	dd	0		;現在ページの画面モード
_wrtpage	dd	0

dseg ends



cseg segment

;---------------------------------------------------------------
;	_callEGB : グラフィックBIOSの呼び出し
;		in  AH     機能コード
;		    DS:ESI パラメータ領域のアドレス
;---------------------------------------------------------------

		align	4

_callEGB	proc
		push	edi
		push	ds
		pop	gs
		mov	edi,offset _egbwork
		push	dword ptr 0110h
		pop	fs
		call	pword ptr fs:[20h]
		pop	edi
		ret
_callEGB	endp

;---------------------------------------------------------------
;	_ginit : 私製ライブラリの初期化
;		in  none
;		out none
;
;	void	ginit()
;---------------------------------------------------------------

ginit		proc	near
_ginit:
		push	eax
		push	ecx
		xor	ax,ax
		mov	ecx,1536
		call	_callEGB
		mov	eax,3
		mov	[_nowscrmod],eax
		mov	[_scrmod+0],eax
		mov	[_scrmod+4],eax
		sub	eax,eax
		mov	[_wrtpage],eax
		pop	ecx
		pop	eax
		ret
ginit		endp

;---------------------------------------------------------------
;	__setvadr : VRAM(または仮想VRAM)のポインタの設定
;		    ※（私製ライブラリの内部ルーチン）
;		in  none
;		out none
;---------------------------------------------------------------




cseg ends

end
