www.pudn.com > hpbios.rar > AUDIO.AIO


;	[]===========================================================[] 
; 
;	NOTICE: THIS PROGRAM BELONGS TO AWARD SOFTWARE INTERNATIONAL(R) 
;	        INC. IT IS CONSIDERED A TRADE SECRET AND IS NOT TO BE 	 
;	        DIVULGED OR USED BY PARTIES WHO HAVE NOT RECEIVED	 
;	        WRITTEN AUTHORIZATION FROM THE OWNER. 
; 
; 	[]===========================================================[] 
; 
 
IFDEF	VIA686AIO 
 
;---------------------------------------------------------------------------- 
;Rev	Date	 Name	Description 
;---------------------------------------------------------------------------- 
;R04	09/16/99 RIC	Remove NOT_REPORT_PNP_AUDIO_DEVICE_NODE definition 
;			and all node. 
;R03	05/25/99 ADS	Patched Sound Blaster disable ,FM Port enable no use. 
;R02A	05/25/99 RIC	Remove R02 code. 
;R02	04/30/99 RIC	Change IRQ of Legacy Audio to IRQ9 from IRQ5 and 
;			add "SB_IRQ_D4_IRQ5" definition 
;R01	03/05/99 RIC	Support V6.00 
;R00	01/20/99 RIC	Initialization. 
 
;============================================================================ 
;Must define below in BIOS.CFG 
; VIA686AIO		EQU	1 
; AIOCMOS		EQU	xxH (need at least 2 bybt continuous) 
;									    
;============================================================================ 
;Optional Define below in BIOS.CFG					    
;									    
; NOT_REPORT_PNP_AUDIO_DEVICE_NODE	EQU	1	    
;									    
;============================================================================ 
 
;*************************************************************************** 
;******* PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM ******* 
;******* PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM ******* 
;******* PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM ******* 
;******* PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM PNPIO.ASM ******* 
;*************************************************************************** 
ifdef	COMPILE_FOR_PNP_AUDIO 
 
		EVEN 
		Public	AUDIO_NODE_INDEX 
AUDIO_NODE_INDEX	LABEL	BYTE 
 
		DB	0 
 
		Public	AUDIO_NODE_PROC 
AUDIO_NODE_PROC	LABEL	BYTE 
		DB	0FFh 
 
		CHK_ATTR %NODE_NUM 
 
 
endif	;COMPILE_FOR_PNP_AUDIO 
 
 
;*************************************************************************** 
;******* AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM ******* 
;******* AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM ******* 
;******* AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM ******* 
;******* AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM AUDIO.ASM ******* 
;*************************************************************************** 
IFDEF	COMPILE_FOR_AUDIO_ASM 
 
IF	COMPILE_FOR_AUDIO_ASM EQ 1 
		extrn	Audio_Item:near 
		extrn	Sound_Blaster_Item:near 
		extrn	SB_IO_Base_Item:near 
		extrn	SB_IRQ_Item:near 
		extrn	SB_DMA_Item:near 
		extrn	MPU401_Item:near 
		extrn	MPU401_IO_Item:near 
;R03		extrn	FM_Port_Item:near 
		extrn	Game_Port_Item:near 
ENDIF	;COMPILE_FOR_AUDIO_ASM EQ 1 
 
 
IF	COMPILE_FOR_AUDIO_ASM EQ 2 
;[]==============================================================[] 
;[]==============================================================[] 
 
		extrn	_Get_Ct:near 
		extrn	_Set_Ct:near 
		extrn	_Get_Set_Ct:near 
		extrn	_Get_Set_Ct_OR:near 
		extrn	_Get_Set_Ct_AND:near 
		extrn	_Set_Ct_Clear:near 
 
public	Prg_Audio_Chip 
Prg_Audio_Chip: 
Prg_VIA686	Proc	Near 
		mov	si,offset Audio_Item 
		call	E_GetItem_Value 
		or	al, al 
		jnz	Not_Disable_All 
		mov	cx, VT686_AC97 + 42h 
		call	_Set_Ct_Clear 
		jmp	Enable_AC97 
Not_Disable_All: 
		mov	si,offset Sound_Blaster_Item 
		call	E_GetItem_Value 
		or	al, al 
		jz	Enable_MPU401 
		mov	cx, VT686_AC97 + 42h		;Enable Sound Blaster 
		mov	bl, 01h 
		call	_Get_Set_Ct_OR 
		mov	cx, VT686_AC97 + 41h		;Select Sound Blaster 
		mov	bl, 01h 
		call	_Get_Set_Ct_OR 
;R03 - start 
 		mov	cx, VT686_AC97 + 42h		;Enable FM Port (388-38BH) 
 		mov	bl, 04h 
 		call	_Get_Set_Ct_OR 
;R03 - end 
Enable_MPU401: 
		mov	si,offset MPU401_Item 
		call	E_GetItem_Value 
		or	al, al 
;R03		jz	Enable_FM_Port 
		jz	Enable_Game_Port		;R03 
		mov	cx, VT686_AC97 + 42h		;Enable MPU401 
		mov	bl, 02h 
		call	_Get_Set_Ct_OR 
;R03 Enable_FM_Port: 
;R03 		mov	si,offset FM_Port_Item 
;R03 		call	E_GetItem_Value 
;R03 		or	al, al 
;R03 		jz	Enable_Game_Port 
;R03 		mov	cx, VT686_AC97 + 42h		;Enable FM Port (388-38BH) 
;R03 		mov	bl, 04h 
;R03 		call	_Get_Set_Ct_OR 
Enable_Game_Port: 
		mov	si,offset Game_Port_Item 
		call	E_GetItem_Value 
		or	al, al 
		jz	Enable_AC97 
		mov	cx, VT686_AC97 + 42h		;Enable Game Port (200-207H) 
		mov	bl, 08h 
		call	_Get_Set_Ct_OR 
Enable_AC97: 
;		mov	cx, VT686_AC97 + 42h 
;	       	call	_Get_Ct 
;	       	test	al, 0Fh			;Enable any legacy resources? 
;	       	jz	Exit_Legacy 
	       	mov	cx, VT686_AC97 + 41h 
		mov	bl, 0C0h		;ENAAC97, ACRST_, SELSB 
		call	_Get_Set_Ct_OR 
Exit_Legacy: 
 
	;;Set sound volume to MAX 
 
; AC97 Codec register can access after POST 52h  
; and this function is called at POST 32h, 
; so we set sound volume to MAX at Ct_Final_init (POST 61h). 
 
 
		ret 
Prg_VIA686	Endp 
 
 
			Public	Suspend_Save_Audio 
Suspend_Save_Audio	Proc	near 
		ret 
Suspend_Save_Audio	endp 
 
			Public	Suspend_Restore_Audio 
Suspend_Restore_Audio	Proc	near 
		ret 
Suspend_Restore_Audio	endp 
 
ENDIF	;COMPILE_FOR_AUDIO_ASM EQ 2 
ENDIF	;COMPILE_FOR_AUDIO_ASM 
 
IFDEF	COMPILE_FOR_AUDIO_MNU 
 
;*************************************************************************** 
;***** Special_Show Special_Show Special_Show Special_Show Special_Show **** 
;***** Special_Show Special_Show Special_Show Special_Show Special_Show **** 
;***** Special_Show Special_Show Special_Show Special_Show Special_Show **** 
;*************************************************************************** 
IF	COMPILE_FOR_AUDIO_MNU	EQ 2 
	dw	Offset Audio_Item,Offset AUDIO_AUTO_SHOW 
ENDIF	;COMPILE_FOR_AUDIO_MNU  
 
;*************************************************************************** 
;******* SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU ******* 
;******* SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU ******* 
;******* SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU ******* 
;******* SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU SUPERIO.MNU ******* 
;*************************************************************************** 
IF	COMPILE_FOR_AUDIO_MNU EQ 1 
 
DEFINE_ITEM	MACRO	MENU_NAME,GAP 
IFNB	 
 IF	Yaxis GT 3		;if Yaxis great than the top row, process gap 
  IFDEF LAST_GAP_POSITION 
   IF	Xaxis+Yaxis NE LAST_GAP_POSITION+1 
	LAST_GAP_POSITION = Xaxis + Yaxis 
	Yaxis = Yaxis + 1 
   ENDIF; 
  ELSE	;LAST_GAP_POSITION 
	LAST_GAP_POSITION = Xaxis + Yaxis 
	Yaxis = Yaxis + 1 
  ENDIF ;LAST_GAP_POSITION 
 ENDIF	; 
	Yaxis = Yaxis + GAP 
ELSE	; 
	Yaxis = Yaxis + 1 
ENDIF	;GAP 
IF	Yaxis GT 23 
	Xaxis = 42 
	Yaxis = 4 
ENDIF	; 
IFNB	 
	PUBLIC	MENU_NAME 
	MENU_NAME: 
ENDIF 
		ENDM 
 
;Yaxis = Yaxis - 1 
 
DEFINE_ITEM     Audio_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM     Audio_Item, GROUP_IO, 0, 10 
menuitem  
 
DEFINE_ITEM	Sound_Blaster_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM	Sound_Blaster_Item, GROUP_IO, 0, 10 
menuitem  
 
DEFINE_ITEM     SB_IO_Base_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM     SB_IO_Base_Item, GROUP_IO, 0, 10 
menuitem  
 
;R02A ifdef	SB_IRQ_D4_IRQ5					;R02 
DEFINE_ITEM     SB_IRQ_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM     SB_IRQ_Item, GROUP_IO, 0, 10 
menuitem  
;R02A else;	SB_IRQ_D4_IRQ5					;R02 - starts 
;R02A DEFINE_ITEM     SB_IRQ_Item 
;R02A DEFINE_MENUITEM     SB_IRQ_Item, GROUP_IO, 0, 10 
;R02A menuitem  
;R02A endif;	SB_IRQ_D4_IRQ5					;R02 - ends 
 
DEFINE_ITEM     SB_DMA_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM     SB_DMA_Item, GROUP_IO, 0, 10 
menuitem  
 
DEFINE_ITEM     MPU401_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM     MPU401_Item, GROUP_IO, 0, 10 
menuitem  
 
DEFINE_ITEM     MPU401_IO_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM     MPU401_IO_Item, GROUP_IO, 0, 10 
menuitem  
 
;R03 DEFINE_ITEM     FM_Port_Item 
;R03 ;R01 menuitem <3,\ 
;R03 DEFINE_MENUITEM     FM_Port_Item, GROUP_IO, 0, 10 
;R03 menuitem   
 
DEFINE_ITEM     Game_Port_Item 
;R01 menuitem <3,\ 
DEFINE_MENUITEM     Game_Port_Item, GROUP_IO, 0, 10 
menuitem  
 
ENDIF	;COMPILE_FOR_AUDIO_MNU  
 
IF	COMPILE_FOR_AUDIO_MNU EQ 0 
;*************************************************************************** 
;******* SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR ******* 
;******* SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR ******* 
;******* SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR ******* 
;******* SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR SUPERIO.STR ******* 
;*************************************************************************** 
 
AUDIO_Str		db	'Onboard Legacy Audio' 
			REPT	COLLON_LOC - ($-(offset AUDIO_Str))	 
			DB	' '					 
			ENDM						 
			db	': ',0 
 
Sound_Blaster_Str	db	'Sound Blaster' 
			db	(COLLON_LOC - ($-(offset Sound_Blaster_Str))) dup (" ") 
			db	': ',0 
 
SB_IO_Base_Str		db	'SB I/O Base Address' 
			REPT	COLLON_LOC - ($-(offset SB_IO_Base_Str))	 
			DB	' '					 
			ENDM						 
			db	': ',0 
SB_IO_Base_Val		db	'220H',0 
			db	'240H',0 
			db	'260H',0 
			db	'280H',0 
 
SB_IRQ_Str		db	'SB IRQ Select' 
			REPT	COLLON_LOC - ($-(offset SB_IRQ_Str))	 
			DB	' '					 
			ENDM						 
			db	': ',0 
SB_IRQ_Val		db	'IRQ 5 ',0 
			db	'IRQ 7 ',0 
			db	'IRQ 9 ',0 
			db	'IRQ 10',0 
 
SB_DMA_Str		db	'SB DMA Select' 
			REPT	COLLON_LOC - ($-(offset SB_DMA_Str))	 
			DB	' '					 
			ENDM						 
			db	': ',0 
SB_DMA_Val		db	'DMA 0',0 
			db	'DMA 1',0 
			db	'DMA 2',0 
			db	'DMA 3',0 
 
MPU401_Str		db	'MPU-401' 
			REPT	COLLON_LOC - ($-(offset MPU401_Str))	 
			DB	' '					 
			ENDM						 
			db	': ',0 
 
MPU401_IO_Str		db	'MPU-401 I/O Address' 
			REPT	COLLON_LOC - ($-(offset MPU401_IO_Str))	 
			DB	' '					 
			ENDM						 
			db	': ',0 
MPU401_IO_Val		db	'300-303H',0 
			db	'310-313H',0 
			db	'320-323H',0 
			db	'330-333H',0 
 
;R03 FM_Port_Str		db	'FM Port (388-38BH)' 
;R03 			REPT	COLLON_LOC - ($-(offset FM_Port_Str)) 
;R03 			DB	' '				 
;R03 			ENDM					 
;R03 			db	': ',0 
 
Game_Port_Str		db	'Game Port (200-207H)' 
			REPT	COLLON_LOC - ($-(offset Game_Port_Str))	 
			DB	' '					 
			ENDM						 
			db	': ',0 
 
AUDIO_AUTO_SHOW	PROC	NEAR 
 
		mov	di,offset VIA686_Items 
		xor	cx,cx 
		call	If_CX_Then_Dis 
 
		ret 
 
AUDIO_AUTO_SHOW	ENDP 
 
VIA686_Items: 
		dw	offset Sound_Blaster_Item 
		dw	offset SB_IO_Base_Item 
		dw	offset SB_IRQ_Item 
		dw	offset SB_DMA_Item 
		dw	offset MPU401_Item 
		dw	offset MPU401_IO_Item 
;R03 		dw	offset FM_Port_Item 
		dw	offset Game_Port_Item 
		dw	-1 
 
 
ENDIF	;COMPILE_FOR_AUDIO_MNU  
ENDIF	;COMPILE_FOR_AUDIO_MNU  
 
ENDIF	;VIA686AIO