;	私製ライブラリ・グラフィック篇
;	(c) MATSUUCHI Ryosuke in Dec,1992
;
;	gwrtreg.asm
;
;	1992.12.28(Sun)

		public	_gwrtreg, gwrtreg

		include	grplib.inc
		
		assume	cs:cseg, ds:dseg


dseg segment dword 'DATA'
dseg ends



cseg segment dword 'CODE'

;---------------------------------------------------------------
;	_gwrtreg : 表示機能レジスタへの書き込み
;		in  AX:レジスタ番号
;		    EDX:データ
;
;	void	gwrtreg(int reg,  unsigned int dat)
;---------------------------------------------------------------

;レジスタ番号と実際のレジスタとの対応:
;	(番号) (サイズ)	(機能)
;	0	DWord	パックドピクセルマスクレジスタ


gwrtreg		proc	near
		mov	ax,[esp+4]
		mov	edx,[esp+8]
		call	_gwrtreg
		ret
gwrtreg		endp


_gwrtreg	proc
		push	eax
		push	ebx
		push	ecx
		push	edx
		mov	bx,ax		;BX  = reg#
		mov	ecx,edx		;ECX = data
		cmp	ax,0
		jne	#0
		;			;AX=0 (パックドピクセルマスクレジスタ)
		call	reg_packPixel
		jmp	#1
#0:
#1:		pop	edx
		pop	ecx
		pop	ebx
		pop	eax
		ret
_gwrtreg	endp


;  reg_packPixel : パックドピクセルマスクレジスタへの書き込み
;	in  ECX : data
;	reg eax,ecx,edx

reg_packPixel	proc
		mov	dx,458h		;  (下位ワードの書き込み)
		xor	al,al
		out	dx,al
		add	dx,2
		mov	al,cl
		out	dx,al
		inc	dx
		mov	al,ch
		out	dx,al
		shr	ecx,16		;  (上位ワードの書き込み)
		mov	dx,458h
		mov	al,1
		out	dx,al
		add	dx,2
		mov	al,cl
		out	dx,al
		inc	dx
		mov	al,ch
		out	dx,al
		ret
reg_packPixel	endp


cseg ends

end
