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 IFNBIF 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