⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chippost.asm

📁 AWARD BIOS源代码,支持的CHIPSET请看文件,有同型号的板子烧上去就可以跑
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;	[]===========================================================[]
;
;	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.
;
; 	[]===========================================================[]
;
;----------------------------------------------------------------------------
;Rev    Date     Name   Description
;----------------------------------------------------------------------------
;R51	05/02/99 ADS	Add "GPO_LOW_IF_VIDEO_OK" and "GPO_LOW_IF_MEMORY_OK"
;			option for customer requset.
;R50	04/29/99 RIC	Add "X_If_693A"	routine and
;			public "X_Measure_SDRAM_Speed" routine.
;R49	04/23/99 RAX	Added code to patch 3COM Lan card can't enter low power
;			state and under Win98 APM mode can't work when reset on
;			"even" times.
;R47B	04/22/99 RIC	"VIA_Y2K_Patch" definition can be used in 596B chip.
;R18A	04/20/99 ADS	Fix that the IRQ of SCI assign fail in 
;			new VIA Super SouthBridge VT686.
;R47A	04/08/99 RIC	Add "VIA_Y2K_Patch" definition for R47 code for
;			temporal because it function have some problem.
;R48A	04/08/99 RCH	Support external IOAPIC for MP platform
;R48	04/02/99 RCH	Added support for Multi-Processor platform
;R47	04/01/99 RIC	Add Patch Y2K CMOS 32h function.
;R46A	03/30/99 RIC	Fixed that compile error in "No_Suggested_SDRAM_CL"
;			definition
;R14A	03/25/99 RIC	Fixed that compile error in no "SMBus_Port" definition.
;R46	03/24/99 RIC	Add show DRAM_Clock_Error_String function
;			and "No_Suggested_DRAM_Clock" definition.
;R45	03/16/99 RIC	Fixed that Resume Item auto-hide fail in 596/686A chip.
;R44A	03/11/99 RAX	Added define removal menuitem.
;R44	03/10/99 RIC	Support 693A DRAM Asynchronous.
;R43	03/04/99 RIC	Don't let the IRQ of Sound Blaster share to other
;			Device because this Sound Blaster is Legacy ISA.
;R42	02/26/98 RIC	Fix that UltraDMA 66 CLK don't be open when UltraDMA
;			66 pluged.
;R41	02/24/99 RIC	Enable AC-Link Variable-Sample-Rate(AC97 Rx41<3>=1)
;R40	02/11/99 RIC	Fix that Hareware RESET cause syetm auto-PowerOff when
;			Power Fail item set 'OFF'.
;			 If you don't want to cover it.
;			    You want to the same as PIIX4, please define:
;			    "PowerFail_As_PIIX4		EQU	1"
;R39 	02/11/99 RIC	Protect RTC 0Dh write for new 686A chip.
;R31A	02/09/99 ADS	Fixe complier error.
;R38	02/05/99 RIC	Latency Time of NorthBridge set to 00h for speeding up
;			UltraDMA 66 performance.
;R37	01/29/99 PAL	Move "SndChip_Cntl_USE_ClkGen" to CLKCNTL.ASM
;R36	01/26/99 RAX	Added PCI slot master control for customer.
;R35	01/19/99 RIC	Fixed that compile fail(out of memory) in pnp.equ of
;			chippost.asm
;R34	01/06/99 RIC	Add "SHOW_ECC_FUNC" definition for ECC status show.
;R33	01/05/99 ADS	Add "Issue_Gemlight_TV_Out_Function" define for customer request. 
;R32	12/28/98 RIC	Modify the CMOS index of the flag of exit form SETUP
;			(F0h => F4h)
;R25A	12/21/98 RIC	Fix that system screen show blank in Win95 shatdown
;			when BIOS Cacheable is enabled.
;R31	12/21/98 RIC	Add "USB2_Separate_Control" define.
;R30	12/21/98 RIC	Support UltraDMA66 HDD in 686/686A SouthBridge.
;			You must define the cable detection Pin of CH1/CH2
;			 UltraDMA66 : 
;			CH1_UltraDMA66_High_In_GPI EQU 1....13
;			CH1_UltraDMA66_Low_In_GPI  EQU 1....13
;			CH2_UltraDMA66_High_In_GPI EQU 1....13
;			CH2_UltraDMA66_Low_In_GPI  EQU 1....13
;	(example)
;	CH1_UltraDMA66_Low_In_GPI EQU 1 ;GPI1 Low mean => CH1 Ultra66
;	CH2_UltraDMA66_Low_In_GPI EQU 3 ;GPI3 Low mean => CH2 Ultra66
;
;R29	12/15/98 RIC	Don't destroy the value of CX in _Set_Ct/X_Set_Ct routine.
;R28	12/11/98 RIC	Add code to control second USB controller On/Off.
;R27A	12/10/98 PAL	Fixed R27 coding error jmp segment call hook method error
;R27 	11/27/98 PAL	Add "SndChip_Cntl_USE_ClkGen" option 
;R26	11/24/98 RIC	Add "HALT_IF_VGA_NOT_FOUND" option. (This option 
;			will be with bug if MONO card plugged only)
;R25	11/19/98 RIC	Add BiosCache_Item feature.
;R24	11/17/98 RIC	Add "GPO_LOW_BEFORE_BOOT"
;			    "GPO_HIGH_BEFORE_BOOT" definition.
;R23	11/16/98 RIC	Fix that exit from setup auto-PowerOff when Power Fail
;			Item set 'Off'.
;R22	11/16/98 RIC	Fix that Trend Anti-Virus replace F0000-F4800 area.
;			So move Get_Set_Ct_OR, Get_Set_Ct_AND to chiprun.
;R21	11/13/98 PAL	Remove E000 shadow control code to PMUPOST.ASM 
;			to avoid Trend code destroy
;R20	11/05/98 RIC	Add "VIA686HM_SUPPORT" definition.
;R19	11/03/98 RIC	Add "GPO_HIGH_BEFORE_BOOT","GPO_LOW_BEFORE_BOOT" define.
;R18	10/26/98 RIC	Fix that the IRQ of SCI assign fail in 
;			new VIA Super SouthBridge VT686.
;R17	10/21/98 RIC	Enable 'Clear DMA Write Flag by IO Write to Port 1F7h/177h'
;			function of IDE of 596 chip.
;			(Fix that OPTI Audio Card have garbage in W95/98)
;R13A	10/19/98 RIC	Fix that R13 code cause system hang at PCI RESET
;			in ITE8671 IO chip.
;R16	10/14/98 RIC	Disable IDE PreFetch when IDE CDROM used.
;R15	10/12/98 RIC	Add "CAS_Latency_Auto" function.
;R04A	10/09/98 RIC	If VT596 is new version , Don't perform 
;			"UltraMode2_No_Set_Mode1" function.
;R14	10/07/98 PAL	Added I2C access code for all SMbus
;R13	10/06/98 RIC	Fix that Garbage IRQ12 of SuperIO cause system can't
;			entry Suspend when no PS2 mouse pluged.
;R12	10/02/98 RIC	Add the function that SDRAM run saft timing when
;			system power on three times fail.
;R11	10/02/98 BAR	Fixed define support " No_Support_4_IDE " 
;			compile error.
;R05A	09/30/98 RIC	Modify "DRAM_Bank_Show_As_SIMM" show algorithm
;R10	09/23/98 RIC	Change ACPI IRQ assign algorithm to Auto-assigned.
;			If you want to use old algorithm, please define:
;			1."No_ACPI_IRQ_Auto_Assign" for disabled new algorithm.
;			2."ACPI_IRQ_Selectable" for enabled old algorithm.
;R09	09/22/98 RIC	Fix that WOL hang in POST 0Dh in some mainboard
;			(with 596 SouthBridge)
;R08	09/15/98 RIC	Change the default of DRAM Timing Item to SDRAM.
;R07A	09/15/98 RIC	Modify algorithm and change definition to 
;			"No_Suggested_SDRAM_CL" from "CAS_Latency_Error_String"
;R07	09/14/98 RIC	Add "CAS_Latency_Error_String" define to show message
;			for SDRAM don't support CAS Latency 2T or not support SPD.
;R06	09/14/98 RIC	Add 'KcMoS' sign for CKCMOS.
;R05	09/11/98 RIC	Add "DRAM_Bank_Show_As_SIMM" define.
;R04	09/08/98 RIC	Re-write E000_IDE_Special_Do.(old file copy to *.908)
;R03	09/04/98 RIC	Fix that new 596 version fail in PCI2.1 Card of HCT7.6.
;R02	09/02/98 RIC	Fix that compile error in no USB case.
;R01	09/01/98 RIC	Add "OEM1_GPO_CNTL" define.
;			    "OEM2_GPO_CNTL"
;			    "OEM3_GPO_CNTL"
;R00    08/24/98 RIC	Initialization.

.386p
		PAGE    56,132
		TITLE   CHIPSET  -- 386/486 EISA ROM/BIOS
	;---------------;
	;   Include	;
	;---------------;
		INCLUDE BIOS.CFG
		INCLUDE POST.EQU
		INCLUDE COMMON.MAC
		INCLUDE POST.MAC
;R48		include CPU.EQU
;R48		include CT_TABLE.EQU
;R35 ifdef	PNP_BIOS
;R35 		include	pnp.equ
;R35 endif;	PNP_BIOS
 	ifdef	PNP_BIOS			;R43
 		include	pnp.equ			;R43
 	endif;	PNP_BIOS			;R43
		INCLUDE CHIPSET.EQU

	;-----------------------;
	;  External Subroutine	;
	;-----------------------;
		;***************;
		;    Kernel	;
		;***************;
		extrn   Get_Cmos:near
		extrn   Set_Cmos:near
		extrn   GetItem_Value:Near
		extrn	F000_Getitem_Value:near
		extrn   X_GetItem_Value:Near
		extrn   GetItem_Cmos:Near
		extrn	XCALL_PROC:near
		extrn	Post_call_proc:near
		extrn	F000_call_proc:near

		extrn	F000_Display_String:near
		extrn	X_Display_String:near
		extrn   Pci_IO_Mem_Init:near
		extrn	F000_Shadow_W:near
		extrn	F000_Shadow_R:near
ifdef   PCI_BUS
		extrn   AGet_CfgSpace_Word:near		;PCI1A.ASM
		extrn   AGet_CfgSpace_BYTE:near		;PCI1A.ASM
		extrn   ASet_CfgSpace_BYTE:near		;PCI1A.ASM
		extrn   AGet_CfgSpace_DWord:near	;PCI1A.ASM
		extrn   ASet_CfgSpace_DWord:near	;PCI1A.ASM
;R49 start
		extrn	F000_Get_CfgSpace_Word:near
		extrn	F000_Set_CfgSpace_Word:near
		extrn	F000_Get_CfgSpace_DWord:near
		extrn	F000_Set_CfgSpace_DWord:near
;R49 end
endif;  PCI_BUS
ifdef	VIA686AIO					;R43
		extrn	Sound_Blaster_Item:near		;R43
		extrn	SB_IRQ_Item:near		;R43
endif;	VIA686AIO					;R43

		;***************;
		;    Chipset	;
		;***************;
		extrn   Get_Ct:near
		extrn   Set_Ct:near
		extrn   Get_Set_Ct:near
		extrn	Get_Set_Ct_OR:near		;R22
		extrn	Get_Set_Ct_AND:near		;R22
		extrn	Get_Set_PMU_OR:near		;R22
		extrn	Get_Set_PMU_AND:near		;R22
		extrn	Get_PMIO:near
		extrn	Set_PMIO:near
		extrn	Get_Set_PMIO:near		
		extrn	Get_Set_PMIO_OR:near		
		extrn	Get_Set_PMIO_AND:near		
		extrn	E000_Get_PMIO:near		
		extrn	E000_Set_PMIO:near		
		extrn	E000_Get_Set_PMIO_OR:near	
		extrn	E000_Get_Set_PMIO:near		
		extrn	E000_Get_Set_PMIO_OR:near	
		extrn	E000_Get_Set_PMIO_AND:near	
ifdef	Have_BankInterleave_Item
  IFDEF	Have_Page_Mode_Item
		extrn   Test_DRAM:near
  ENDIF;Have_Page_Mode_Item
endif;	Have_BankInterleave_Item
		extrn	X_If_100MHz_DRAM_Clock:Near
		extrn	E000_GPO_Pin_Low:near		;R19
		extrn	E000_GPO_Pin_High:near		;R19
		extrn	E000_Read_GPI_Pin:Near		;R30

	;-----------------------;
	;  External Item/Label	;
	;-----------------------;
		;***************;
		;    Kernel	;
		;***************;
ifdef	ACPI_Support
ifdef	Special_ACPI_Table_Update		
		include	acpi.inc
		extrn	FACP_Pointer:near
endif;	Special_ACPI_Table_Update		
endif;	ACPI_Support

		;***************;
		;    Chipset	;
		;***************;

		; Chipset FEAT
		extrn	SDRAM_CL_Item:Near
		extrn	Delay_Trans_Item:near
		extrn   Mem_Hole_Item:near
;R25		extrn   VideoCache_Item:near
		extrn	BiosCache_Item:near		;R25
ifdef	Have_BankInterleave_Item
		extrn	SDRAM_BK_Item:Near
endif;	Have_BankInterleave_Item
;R33 - starts
ifdef Issue_Gemlight_TV_Out_Function	     
		extrn	TV_Out_Mode_Item:near
endif; Issue_Gemlight_TV_Out_Function	     
;R33 - ends
ifdef	Have_Page_Mode_Item
		extrn	DRAM_Page_Mode_Item:Near
endif;	Have_Page_Mode_Item
ifdef	Have_AGP_Item
		extrn   AGP_Item:near
endif;	Have_AGP_Item
                extrn   Aperture_Size_Item:near
ifdef VT586_USB					;R02
		extrn	ONBD_USB_Item:Near
endif ;VT586_USB				;R02
;R02ifdef VT586_USB
;R02		extrn	USB_Legacy_Item:near
;R02endif ;VT586_USB		
		extrn	Bank01_Dram_Timing_Val:Near
		extrn	Bank01_Dram_Timing_Val_:Near
		extrn	Bank23_Dram_Timing_Val:Near
		extrn	Bank23_Dram_Timing_Val_:Near
		extrn	Bank45_Dram_Timing_Val:Near
		extrn	Bank45_Dram_Timing_Val_:Near
		extrn	Bank67_Dram_Timing_Val:Near
		extrn	Bank67_Dram_Timing_Val_:Near
		extrn	UltraMode2_Set_Mode1_Status:Near
    ifdef	USB2_Separate_Control	;R31 - starts
		extrn	ONBD_USB_2_Item:Near
    endif;	USB2_Separate_Control	;R31 - ends
ifndef	No_Have_DRAM_Async_Item				;R44A
		extrn	DRAM_Async_Val_:Near		;R44
endif	;No_Have_DRAM_Async_Item			;R44A

		; PNP FEAT
ifdef	ACPI_Support
		extrn	ACPI_option_Item:Near
;R10  IFNDEF	No_ACPI_IRQ_Selectable
  IFDEF	ACPI_IRQ_Selectable			;R10
		extrn	Assign_ACPI_IRQ_Item:Near
;R10  ENDIF;	No_ACPI_IRQ_Selectable
  ENDIF;ACPI_IRQ_Selectable			;R10
endif;	ACPI_Support


		; PCI FEAT
;R36 start
ifdef	PCISLOT_MASTER_CONTROL
		extrn	PCI_CONFIG1_Item:near
		extrn	PCI_CONFIG2_Item:near
		extrn	PCI_CONFIG3_Item:near
endif	;PCISLOT_MASTER_CONTROL
;R36 end

		; PM FEAT
ifndef	No_Auto_Hidden_Resume_Item
  IFNDEF	Always_ATX_Power
    ifdef	Have_Keyboard_PowerOn_Item
		extrn	KB_Item:Near
    endif;	Have_Keyboard_PowerOn_Item
  IFNDEF	VT596					
    ifdef	Wake_On_EXTSMI0_Support
		extrn	WO_Item:Near
    endif;	Wake_On_EXTSMI0_Support
  ENDIF;	VT596					
		extrn	Ring_Item:Near
		extrn	Alarm_Item:Near
		extrn	Alarm_Timer_Date_Item:Near
		extrn	Alarm_Timer_Hour_Item:Near
		extrn	Alarm_Timer_Min_Item:Near
		extrn	Alarm_Timer_Sec_Item:Near
  ENDIF;	Always_ATX_Power
endif;	No_Auto_Hidden_Resume_Item

		; IO FEAT
		extrn	IDE_PF_Item:near
ifdef   PCI_BUS
		extrn   ONBD_1IDE_Item:near
		extrn	ONBD_2IDE_Item:near
endif;  PCI_BUS
ifdef   NEW_IDE_MODE_3
		extrn   IdeA_Mode_Item:near
		extrn   IdeB_Mode_Item:near
  IFNDEF	ONCHIP_2ND_ALWAYS_DISABLE
	ifdef	Support_4_IDE			;R11
		extrn   IdeC_Mode_Item:near
		extrn   IdeD_Mode_Item:near
	endif;	Support_4_IDE			;R11
  ENDIF;	ONCHIP_2ND_ALWAYS_DISABLE
  IFDEF		Have_IDE_Threshold_Item
		extrn	IDE_Threshold_Item:near
  ENDIF;	Have_IDE_Threshold_Item
endif;   NEW_IDE_MODE_3
ifndef	VT596
  IFDEF	Control_Onchip_By_GPIO_Low
		extrn	ONBD_Chip_Item:near
  ENDIF;Control_Onchip_By_GPIO_Low
else;	VT596					
  IFDEF	Control_Onchip_By_GPO_Low		
		extrn	ONBD_Chip_Item:near	
  ENDIF;Control_Onchip_By_GPO_Low		
  IFDEF	Control_Onchip_By_GPO_High
		extrn	ONBD_Chip_Item:near	
  ENDIF;Control_Onchip_By_GPO_High		
endif;	VT596					
;R27 - start
;R37ifdef	SndChip_Cntl_USE_ClkGen
;R37		extrn	E000_64K_shadow_R:near
;R37endif;	SndChip_Cntl_USE_ClkGen
;R27 - end

G_RAM		SEGMENT USE16 AT 0

		ORG     04H*4
		INCLUDE SEG_0.INC

		ORG     400H
		INCLUDE G_RAM.INC

ifdef	PNP_BIOS			;R43
		ORG	2000h		;R43
		INCLUDE PNPDATA.INC	;R43
endif	;PNP_BIOS			;R43

G_RAM		ENDS

DGROUP		GROUP   FCODE

DGROUP		GROUP   FCODE
FCODE		SEGMENT USE16 PARA PUBLIC 'CODE'
		ASSUME  CS:DGROUP,DS:DGROUP

ifndef  COMPRESS_CODE
		include chipboot.asm
endif   ;COMPRESS_CODE


;[]==============================================================[]
;
; Enable_Linear_Burst: (POST 09h) (CPUPOST.asm INIT_CYRIX )
;
;	Turn on chipset linear burst function to support Cyrix M1 CPU
;
; Saves: SP
; Entry: None
;  Exit: Cy = 0  Support Linear Burst Function
;	 Cy = 1  No Support Linear Burst Function
; Note : 1. Stack Available
;[]==============================================================[]
		Public  Enable_Linear_Burst
Enable_Linear_Burst     Proc    Near
		stc		; No Linear Burst Support
		ret
Enable_Linear_Burst     Endp

;[]==============================================================[]
;
; Ct_Early_Shadow: (POST 0Bh)
;
;	Shadowing system and video BIOS to speedup booting.
;
;Saves:
;
;	All except ax,dx,es,ds,flag
;Input : None
;Output: None
;
;[Notes]
;
;	1. This routine will shadow system BIOS in early stage
;		of POST.
;	2. Stack available
;[]==============================================================[]
		align 4
		public  Ct_Early_Shadow
Ct_Early_Shadow proc    near
ifdef	PCI_BUS
		call	far ptr E000_Ct_Early_Shadow
			 ;Docket is IDE/AGP/other Device initialize

		call    Pci_IO_Mem_Init
endif;	PCI_BUS
		call	far ptr E000_Ct_Early_Shadow_1
;R51 - start
ifdef	GPO_LOW_IF_VIDEO_OK
		push	es
		mov	ax, 0C000h
		mov	es, ax
		cmp	word ptr es:[0],0AA55h
		jne	short VideoFail

		mov	bl, GPO_LOW_IF_VIDEO_OK
		post_func_call	E000_GPO_Pin_Low	;low for on

	VideoFail:
		pop	es			
endif;	GPO_LOW_IF_VIDEO_OK

ifdef	GPO_LOW_IF_MEMORY_OK
		mov	bl, GPO_LOW_IF_MEMORY_OK
		post_func_call	E000_GPO_Pin_Low	;low for on
endif;	GPO_LOW_IF_MEMORY_OK
;R51 -  end
		ret
Ct_Early_Shadow ENDP

;[]==============================================================[]
;CACHE_INIT: (POST 09h)
;	Cache controller initialization after first testing
;	first 64k memory.
;Saves: ALL but flags
;Input: none
;Output:none
;
;[Notes] 1. Stack is available
;	 2. This function can be used to sizing cache size
;[]==============================================================[]
		align 4
		public  Cache_Init
Cache_Init	proc    near

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -