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

📄 e0post.asm

📁 <B>Award BIOS(Basic Input/Output System)(电脑启动时所必需)的源码</B>
💻 ASM
📖 第 1 页 / 共 5 页
字号:
ifdef	Graphics_Post
		EXTRN	FULL_HALT_MSG:NEAR
		EXTRN	skip_mem_msg1:NEAR
		EXTRN	TO_ENTER_SETUP1:NEAR
		EXTRN	BTM_LINE_CLR1:NEAR
		EXTRN	CLR_SKIP_MEM_MSG1:NEAR
endif;	Graphics_Post
		EXTRN	HD_INSTALL:NEAR
		EXTRN	Init_Onboard_Io:NEAR
		EXTRN	INT_TBL:WORD
		EXTRN	IRET_VECT:NEAR
		EXTRN	SIGN_ON_CHKSUM:BYTE
		EXTRN	DISP_BYTE_HEX2:NEAR
		extrn	SPD_DEF:byte
		EXTRN	KBD_ERR_MSG:NEAR
		EXTRN	KB_OUT:NEAR
		EXTRN	KEY_LOCK_MSG:NEAR
		EXTRN	MEM_ERROR_MSG:NEAR
		EXTRN	MS_INSTAL:NEAR
		EXTRN	OK_MSG:NEAR
		EXTRN	OUT_8042:NEAR
		EXTRN	OUT_8042_FULL:NEAR
		EXTRN	OVERRIDE_ENABLE_STR:NEAR
		EXTRN	fProc_Prg_Auto:Far
		EXTRN	fProc_Prg_Chipset:Far
		EXTRN	fProc_Prg_Chipset_Default:Far
		EXTRN	REDO:NEAR
		EXTRN	RST_VECT:NEAR
		EXTRN	R_MOD_CK:NEAR
		EXTRN	SEC_HRDWR_INTS:WORD
		EXTRN	SETSPEED:NEAR
		EXTRN	SETTINGS:BYTE
		EXTRN	Setup:NEAR
		EXTRN	SET_CMOS:NEAR
		EXTRN	SIGN_ON_MSG:BYTE
		EXTRN	SIGN_ON_MSG:BYTE
		EXTRN	SIZE_SYS_INITS:ABS
		EXTRN	SKIP_MEM_MSG:NEAR
		EXTRN	SND_SPKR:NEAR
		EXTRN	SYSTEM1_BYTE:BYTE
		EXTRN	SYSTEM4_BYTE:BYTE
		EXTRN	SYSTEM5_BYTE:BYTE
		EXTRN	SYSTEM_BYTE:BYTE
		EXTRN	SYS_INITS:WORD
		EXTRN	TEST_EXT_MSG:NEAR
		EXTRN	TEST_MEM_MSG:NEAR
		EXTRN	TO_ENTER_SETUP:NEAR
		extrn	HDD_Drive0_Err_Str:near
		extrn	HDD_Drive1_Err_Str:near
		extrn	HDD_Drive2_Err_Str:near
		extrn	HDD_Drive3_Err_Str:near
;R267		extrn	Disp_Access_mode:near
		EXTRN	USER_BEGIN:NEAR
		EXTRN	VCRLF:NEAR
		EXTRN	VID_SWITCH_MSG:NEAR
		EXTRN	VNORMAL:NEAR
		EXTRN	VREVERSE:NEAR
		EXTRN	WAIT_REFRESH:NEAR
		EXTRN	WORD_CHECKSUM:BYTE

		extrn	Unlock_Cyrix:near
		extrn	Lock_Cyrix:near

		extrn	Display_String:near
		extrn	Display_Char:near
		extrn	Chk_Intel_S_CPU:near
		extrn	Read_Cmos_To_Stack:near
ifndef	NO_FAST_A20
		extrn	GateA20_Item:near
endif;	NO_FAST_A20
ifndef	Support_1_FDD
		extrn	SwapFloppy_Item:near
endif	;Support_1_FDD
		extrn	Set_High_Speed:near
		extrn	Load_Auto_Cfg_D4:near
		extrn	Ct_Disable_E000_Vga:near
		extrn	Ct_Disable_Onboard_Vga:near
		extrn	Ct_Enable_Onboard_Vga:near
		extrn	Ct_Enable_E000_Vga:near
		extrn	CPU_Type_Clk:near
IF	BIOS_SUPPORT_IBM_CPU
;R267		EXTRN	IBMCPU_Cacheable_Size:Near
endif	;BIOS_SUPPORT_IBM_CPU
		extrn	QuickPost_Item:near
		extrn	CLR_SKIP_MEM_MSG:near
		extrn	Read_Memory:Near
		extrn	Later_cache_Sizing:near
		extrn	A20_Byte:byte
		extrn	Virus_Item:near
ifdef	Support_HDD_Write_Protect
		extrn	Hdd_Wt_Protect_Item:near
endif	;Support_HDD_Write_Protect
		extrn	Enter_Setup_Check:near
		extrn	HaltOn_Item:near
		extrn	Verify_Password:near
		extrn	Save_All_Cmos:near
		extrn	CT_FINAL_INIT:near
		extrn	DayLight_Item:near
		extrn	NumLock_Item:near
		extrn	Get_Item_Setup_D4:near
		extrn	Get_Item_Bios_D4:near
		extrn	GetItem_Value:near
		extrn	Restore_Cyrix_Reg:near
		extrn	Out_8042_Pin:near
		extrn	VGA_Buffer:near
		EXTRN	DRIVE_A_ITEM:Near
		EXTRN	HDDC_ITEM:Near
ifndef	Support_1_FDD
		EXTRN	DRIVE_B_ITEM:Near
endif	;Support_1_FDD
		extrn	Get_HDD_CMOS_Info:near
		EXTRN	Read_Item_Value:Near
		EXTRN	Video_Item:Near
		EXTRN	Show_SIX_DIGIT:Near
		Extrn	Get_Cache_Size:Near
		EXTRN	Transfer_Hdd_Parms:Near
		extrn	Wr_Cpu:near
		extrn	Restore_Speed:near
		extrn	IntCache_Item:near
		extrn	ExtCache_Item:near

		extrn	E000_Shadow_R:near
		extrn	E000_Shadow_W:near
		extrn	C000_Shadow_R:near
		extrn	C000_Shadow_RW:near
		extrn	C800_Shadow:near
		extrn	CC00_Shadow:near
		extrn	D000_Shadow:near
		extrn	D000_Shadow:near
		extrn	D400_Shadow:near
		extrn	D800_Shadow:near
		extrn	DC00_Shadow:near
		extrn	Ct_Shadow_Alone_Check:near
		extrn	Ct_Shadow_Allow:near
;R258		extrn	C000_Item:near
ifndef	No_C8_DF_Shadow_Item
		extrn	C800_Item:near
		extrn	CC00_Item:near
		extrn	D000_Item:near
		extrn	D400_Item:near
		extrn	D800_Item:near
		extrn	DC00_Item:near
endif	;No_C8_DF_Shadow_Item
		extrn	Shadow_Dr:near
		extrn	E000_Move_Codes:near
		extrn	Clear_Parity:near
		extrn	Do_F000_Shadow:Near

		EXTRN	HDDD_ITEM:Near
		EXTRN	Get_VarString_Offset:Near
		EXTRN	AX_To_DEC3:Near
		EXTRN	AX_To_DEC2:Near
		extrn	Mono_Style:near

		extrn	Tran_HDD_User_Type:Near
		extrn	Init_Onboard_Super_IO:near
		extrn	Init_Onboard_AUDIO:near
		extrn	Init_Onboard_Sensor:near
		extrn	Auto_Cfg_SuperIO:near
		extrn	Preint_19:near
		extrn	Cmos_Check_Sum:near

		extrn	F000_SET_CMOS:near
		extrn	F000_BUFFER_8042_FULL:near
		extrn	F000_OUT_8042_FULL:near
		extrn	CHECK_PS2_MOUSE_SUPPORT:near
		extrn	F000_GET_CMOS:near
		extrn	F000_GETITEM_VALUE:near
		extrn	F000_CPU_CACHE:near
		extrn	F000_OUT_8042:near
		extrn	F000_CURSOR_SET:near
		extrn	DISP_STR_IN_BIOS:near
		extrn	DISP_STR_IN_POST:near
		extrn	F000_VCRLF:near
		extrn	Disp_Extra_CPU_Info:Near
		extrn	SYSCFG_CPU_CLOCK1:near
		extrn	TRY_SHADOW:near
		extrn	F000_DISPLAY_CHAR:near
;R235		extrn	ISA_POST_CODE:ABS
;R235		extrn	ISA_POST_TESTS:near
		extrn	RAM_POST_TESTS:near
;R235		extrn	COMMON_POST_CODE:ABS
;R235		extrn	COMMON_POST_TESTS:near
;R235		extrn	RAM_POST_TESTS:near
		extrn	HALTSYSTEM:near
		extrn	TRY_ACTUAL_CACHE:near
		extrn	F000_VNORMAL:near
		extrn	F000_VREVERSE:near
		extrn	WAIT_REFRESH1:near
		extrn	Try_Other_Shadow:near
ifdef	PCI_BUS
		extrn	CT_C8_TO_DF_RW:near
		extrn	CT_SHADOW_UNIT:near
		extrn	CT_DISABLE_SHADOW:near
		extrn	LMEM_RESOURCE:ABS
		extrn	LMEM_BEFORE_ROM:ABS
		extrn	VGA_BIOS_LENGTH:ABS
endif	;PCI_BUS

		extrn	Get_Cyrix:near
		extrn	Set_Cyrix:near
		extrn	F000_func_end:Near
		extrn	F000_VECT:Near

		extrn	Check_Upd:Near
		extrn	Get_Rtc_Byte:near
		extrn	Set_Rtc_Byte:near
		extrn	Valid_Century:near

ifdef	FLASH_SUPPORT
ifdef	AUTO_DETECT_EEPROM_ID
		extrn	Ct_ROM_Write_Enable:near
		extrn	Ct_ROM_Write_Disable:near
		extrn	CT_Enable_ROM_Shadow:near
		extrn	CT_Disable_ROM_Shadow:near
		extrn	Ct_Init:near
;;		extrn	FLASH_ENTRY_POINT:near
;;		extrn	FLASH_WRITE_ENTRY_POINT:near
		extrn	Ct_Get_Flash:near
		extrn	Ct_Set_Flash:near
		extrn	Erase_Delay:near
		extrn	Write_Delay:near
		extrn	EEPROM_Wait_10ms:near
		extrn	Detect_EEPROM:Near
endif;	AUTO_DETECT_EEPROM_ID
endif;	FLASH_SUPPORT

		extrn	Enable_M1_FarHit:near
		extrn	MEASURE_CPU_SPEED:Near
		extrn	MOV_SHAD_SEG:ABS
		extrn	Set_Cpu_MtRR:Near
	IF	BIOS_SUPPORT_686
		extrn	P6_BiosUpdate:near
	ifdef	MP_SUPPORT
		extrn	Init_Mtrr:near
	endif	;MP_SUPPORT
	ENDIF	;BIOS_SUPPORT_686
	IF	BIOS_SUPPORT_KLAMATH
		extrn	ConfigurePProL2Cache:Near
	ENDIF	;BIOS_SUPPORT_KLAMATH

	IF	BIOS_SUPPORT_586
		extrn	Try_Show_PRating:Near
		extrn	Check_K6_CPU:Near			;R276
	ENDIF	;BIOS_SUPPORT_586

;R276		extrn	Check_K6_CPU:Near
		extrn	Prg_K5_Write_Allocate:Near

ifdef	CMOS_BACKUP_SUPPORT
		extrn	Flash_Write:near
		extrn	Flash_Read:near
		extrn	Check_CMOS_Sum:near
endif	;CMOS_BACKUP_SUPPORT

		extrn	Disp_CS_Language:near			;$ML$
	ifdef	MULTI_LANGUAGE_SUPPORT				;$ML$
		extrn	fProc_Language_Init:near		;$ML$
	endif	;MULTI_LANGUAGE_SUPPORT				;$ML$
	ifdef	DOUBLE_BYTE_LANGUAGE				;$ML$
		extrn	Init_Int10h:near			;$ML$
	endif	;DOUBLE_BYTE_LANGUAGE				;$ML$

;$ML$ - start
;ifdef	MULTI_LANGUAGE_SUPPORT
		extrn	Award_PnP_Msg:near
		extrn	Disp_Language:near
;R267		extrn	Post_Detect_Msg:near
;endif	;MULTI_LANGUAGE_SUPPORT
		extrn	F000_Display_String:near
;$ML$ - end
		extrn	CHECK_BOOT_RECORD:near	;R221B
		extrn	Clear_Screen_Str:near	;R232
;R259 - start
ifdef	Date_DEFAULT_IS_BIOS_MAKE_DAY
		extrn	E000_64K_shadow_RW:near
		extrn	E000_64K_shadow_R:near
endif	;Date_DEFAULT_IS_BIOS_MAKE_DAY
;R259 - end
;R281 - start
ifdef	Superio_KBC_KBDMOUSE_SWAP
		extrn	Superio_Swap_KBC:near
endif	;Superio_KBC_KBDMOUSE_SWAP
;R281 - end
;R284 start
ifdef	VBU_SUPPORT
 ifndef	No_VBU_Prompt
	ifdef	Graphics_Post
		extrn	To_enter_VBU_MSG1:near
	endif	;Graphics_Post
		extrn	To_enter_VBU_MSG:near
 endif	;No_VBU_Prompt
endif	;VBU_SUPPORT
;R284 end

		PUBLIC	POST_2S
		PUBLIC	POST_3S
		PUBLIC	POST_4S
		PUBLIC	POST_5S
		PUBLIC	POST_6S
		PUBLIC	POST_7S
		PUBLIC	POST_8S
		PUBLIC	POST_9S
		PUBLIC	POST_10S
		PUBLIC	POST_11S
		PUBLIC	POST_12S
		PUBLIC	POST_13S
		PUBLIC	POST_14S
		PUBLIC	POST_15S
		PUBLIC	POST_16S
		PUBLIC	POST_17S
		PUBLIC	POST_18S
		PUBLIC	POST_19S
		PUBLIC	POST_20S
		PUBLIC	POST_21S
		PUBLIC	POST_22S
		PUBLIC	POST_23S
		PUBLIC	POST_24S
		PUBLIC	POST_25S
		PUBLIC	POST_26S
		PUBLIC	POST_27S
		PUBLIC	POST_28S
		PUBLIC	POST_29S
		PUBLIC	POST_30S
		PUBLIC	POST_31S
		PUBLIC	POST_32S
		PUBLIC	POST_33S
		PUBLIC	POST_34S
		PUBLIC	POST_35S
		PUBLIC	POST_36S
		PUBLIC	POST_37S
		PUBLIC	POST_38S
		PUBLIC	POST_39S
		PUBLIC	POST_40S
		PUBLIC	POST_41S
		PUBLIC	POST_42S
		PUBLIC	POST_43S
		PUBLIC	POST_44S
		PUBLIC	POST_45S
		PUBLIC	POST_46S
		PUBLIC	POST_47S
		PUBLIC	POST_48S
		PUBLIC	POST_49S
		PUBLIC	POST_50S
		PUBLIC	POST_51S
		PUBLIC	POST_52S
		PUBLIC	POST_53S
		PUBLIC	POST_54S
		PUBLIC	POST_55S
		PUBLIC	POST_56S
		PUBLIC	POST_57S
		PUBLIC	POST_58S
		PUBLIC	POST_59S
		PUBLIC	POST_60S
		PUBLIC	POST_61S
		PUBLIC	POST_62S
		PUBLIC	POST_63S
		PUBLIC	POST_64S
		PUBLIC	POST_65S
		PUBLIC	POST_66S
		PUBLIC	POST_67S
		PUBLIC	POST_68S
		PUBLIC	POST_69S
		PUBLIC	POST_70S
		PUBLIC	POST_71S
		PUBLIC	POST_72S
		PUBLIC	POST_73S
		PUBLIC	POST_74S
		PUBLIC	POST_75S
		PUBLIC	POST_76S
		PUBLIC	POST_77S
		PUBLIC	POST_78S
;R267- start
		PUBLIC	POST_79S
		PUBLIC	POST_80S

		PUBLIC	POST_81S
		PUBLIC	POST_82S
		PUBLIC	POST_83S
		PUBLIC	POST_84S
		PUBLIC	POST_85S
		PUBLIC	POST_86S
		PUBLIC	POST_87S
		PUBLIC	POST_88S
		PUBLIC	POST_89S
		PUBLIC	POST_90S
		PUBLIC	POST_91S
		PUBLIC	POST_92S
		PUBLIC	POST_93S
		PUBLIC	POST_94S
		PUBLIC	POST_95S
		PUBLIC	POST_96S
		PUBLIC	POST_97S
		PUBLIC	POST_98S
		PUBLIC	POST_99S
		PUBLIC	POST_100S
		PUBLIC	POST_101S
		PUBLIC	POST_102S
		PUBLIC	POST_103S
		PUBLIC	POST_104S
		PUBLIC	POST_105S
		PUBLIC	POST_106S
		PUBLIC	POST_107S
		PUBLIC	POST_108S
		PUBLIC	POST_109S
		PUBLIC	POST_110S
		PUBLIC	POST_111S
		PUBLIC	POST_112S
		PUBLIC	POST_113S
		PUBLIC	POST_114S
		PUBLIC	POST_115S
		PUBLIC	POST_116S
		PUBLIC	POST_117S
		PUBLIC	POST_118S
		PUBLIC	POST_119S
		PUBLIC	POST_120S
		PUBLIC	POST_121S
		PUBLIC	POST_122S
		PUBLIC	POST_123S
		PUBLIC	POST_124S
		PUBLIC	POST_125S
		PUBLIC	POST_126S
		PUBLIC	POST_127S
		PUBLIC	POST_128S
		PUBLIC	POST_129S
;;;- end

.LIST

;Macro for far calling from E-segment and the called routine is in F-segment
F000_call	MACRO	func_addr
		LOCAL	Ret_addr
		push	0e000h
		push	offset cs:Ret_addr
		push	offset F000_func_end
if ((.TYPE func_addr) and 10h)			;func_addr is register?
		push	func_addr		;Yes,direct push
else
		push	offset func_addr
endif
		FAR_JMP <OFFSET F000_VECT>,0F000H
Ret_addr:
		ENDM

;[]---------------------------[]
;
;   Low memory init (1st 64k)
;
;[]---------------------------[]

G_RAM		SEGMENT USE16 AT 0

		ORG	04H*4
		INCLUDE SEG_0.INC

		ORG	400H
		INCLUDE G_RAM.INC

G_RAM		ENDS

		PAGE

EGROUP		GROUP	ECODE
DGROUP		GROUP	FCODE
ECODE		SEGMENT USE16 PARA PUBLIC 'ECODE'
		ASSUME	CS:EGROUP,DS:G_RAM,ES:EGROUP


;---------------------------------------------------------------------------------

		Public	Check_Warm_Boot
Check_Warm_Boot:
		push	ds
		push	ax
		mov	ax,G_RAM
		mov	ds,ax
		assume	ds:G_RAM
		cmp	word ptr [USER_REBOOT],CTRL_ALT_DEL
		pop	ax
		pop	ds
		ret

;---------------------------------------------------------------------------------

;Function : reset keyboard and detect plugged or not
;Input : non
;Output: CMOS_STATUS[bp] - indicate KB present/absent
Reset_Kb	proc	near

		pushf
		cli

;Don't do keyboard selftest if warm boot
		mov	ax,G_RAM
		mov	ds,ax
		cmp	word ptr ds:USER_REBOOT, CTRL_ALT_DEL
		je	Keybord_Init_Exit

		mov	dl,15			; bl = number of retries
p5_4:
;Disable KB interface during KB selftest, otherwise JETKEY failed with
; "kebyard error"
		mov	al,0ADh 			; disable KBD
		call	F000_Out_8042

		mov	cx, 256
@@:
		NEWIODELAY
		loop	short @B

		in	al,DATA8042		; read return garbage byte
		NEWIODELAY

		call	F000_Buffer_8042_Full; wait til command received
		jnz	p5_91_1

		mov	al,KB_RESET		; kbd self test cmd
		out	DATA8042,al
		NEWIODELAY

		call	F000_Buffer_8042_Full	; wait til command received
		jnz	short p5_91_1

⌨️ 快捷键说明

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