www.pudn.com > hpbios.rar > AFLASH.ASM
; []===========================================================[]
;
; 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
;----------------------------------------------------------------------------
;OEM02 03/10/00 BAR Added Utility_Support_GPO_Ctrl swtich
;OEM01 01/24/00 AVN Fixed awdflash.exe fail.
;R00 01/03/00 RIC Initialization.
;===========================================================================
;
;Flash_12V_Enable_By_GPO_Low EQU 0 ; GPO0 Low enable 12V
;Flash_12V_Enable_By_GPO_Low EQU 1 ; GPO1 Low enable 12V
;Flash_12V_Enable_By_GPO_Low EQU 2 ; GPO2 Low enable 12V
;..........
;Flash_12V_Enable_By_GPO_Low EQU 30 ; GPO30 Low enable 12V
;
;Flash_12V_Enable_By_GPO_High EQU 0 ; GPO0 High enable 12V
;Flash_12V_Enable_By_GPO_High EQU 1 ; GPO1 High enable 12V
;Flash_12V_Enable_By_GPO_High EQU 2 ; GPO2 High enable 12V
;..........
;Flash_12V_Enable_By_GPO_High EQU 30 ; GPO30 High enable 12V
;
;===========================================================================
;
;Flash_W_By_GPO_Low EQU 0 ; GPO0 Low Enable Flash Write.
;Flash_W_By_GPO_Low EQU 1 ; GPO1 Low Enable Flash Write.
;Flash_W_By_GPO_Low EQU 2 ; GPO2 Low Enable Flash Write.
;............
;Flash_W_By_GPO_Low EQU 30 ; GPO30 Low Enable Flash Write.
;
;Flash_W_By_GPO_High EQU 0 ; GPO0 High Enable Flash Write.
;Flash_W_By_GPO_High EQU 1 ; GPO1 High Enable Flash Write.
;Flash_W_By_GPO_High EQU 2 ; GPO2 High Enable Flash Write.
;............
;Flash_W_By_GPO_High EQU 30 ; GPO30 High Enable Flash Write.
;
;===========================================================================
.386p
PAGE 56,132
TITLE CHIPSET -- 386/486 EISA ROM/BIOS
INCLUDE BIOS.CFG
INCLUDE COMMON.MAC
INCLUDE POST.EQU
INCLUDE POST.MAC
INCLUDE BTROMSEG.EQU
COMPILE_FOR_APMBIOS = 0
include SMIFLASH.INC
extrn Issue_System_Reset:Near
extrn Get_Ct:Near
extrn Set_Ct:Near
extrn Get_Set_Ct:Near
extrn Get_PMIO:Near
extrn Set_PMIO:Near
extrn Get_Set_PMIO:Near
G_RAM SEGMENT USE16 AT 0
ORG 04H*4
INCLUDE SEG_0.INC
ORG 400H
INCLUDE G_RAM.INC
G_RAM ENDS
DGROUP GROUP FCODE
FCODE SEGMENT USE16 PARA PUBLIC 'CODE'
ASSUME CS:DGROUP,DS:DGROUP
;;=======================================================================*
;; Check BIOS HOOK Function
;; Input : None
;; Output: AX
;; bit 0 = PCI_RESET_Support
;; bit 1 = Switch_USB_SMI
;; bit 2-15 = Reserved must be 0
;;=======================================================================*
Aflash_report_fun = 0
ifdef PCI_RESET_SUPPORT
Aflash_report_fun = Aflash_report_fun + 1
endif; PCI_RESET_SUPPORT
ifdef USB_SUPPORT
Aflash_report_fun = Aflash_report_fun + 2
endif; USB_SUPPORT
ifdef NT_FLASH ;Support Win_NT update Flash ROM
Aflash_report_fun = Aflash_report_fun + 16
endif; NT_FLASH
ALIGN 8
;OEM02 FLASH_ROUTINE_HEAD db '$@AWDFLASH'
;OEM02 start
ifndef OEM_FLASH_ROUTINE_HEAD
OEM_FLASH_ROUTINE_HEAD EQU '$@AWDFLASH'
endif ;OEM_FLASH_ROUTINE_HEAD
FLASH_ROUTINE_HEAD db OEM_FLASH_ROUTINE_HEAD
;OEM02 end
DW Offset DGROUP:KBC_12V_Control
DW Offset DGROUP:Ct_ROM_Write_Enable
DW Offset DGROUP:Ct_ROM_Write_Disable
DW Offset DGROUP:Ct_Enable_ROM_Decode
DW Offset DGROUP:Ct_Init
DW Offset DGROUP:CT_Disable_ROM_Shadow
DW Offset DGROUP:CT_Enable_ROM_Shadow
DW Offset DGROUP:Ct_Special_REG_Save
DW Offset DGROUP:Ct_After_Program
DW Offset DGROUP:CT_Disable_CD_Shadow
DW Offset DGROUP:CT_Enable_CD_Shadow
DW Aflash_Report_Fun
DW Offset DGROUP:Issue_System_Reset
ifdef USB_SUPPORT
DW Offset DGROUP:Switch_USB_SMI
else; USB_SUPPORT
DW ?
endif; USB_SUPPORT
DW ? ;Offset DGROUP:AMP_16_PowerOff_fun
DW ? ;Offset DGROUP:Check_ACPower
DW SMI_IO_Port ;Software SMI IO port
PUBLIC FLASH_ROUTINE_START
FLASH_ROUTINE_START:
;;=======================================================================*
;; KBC_12V_Control:
;; ROM Write Vpp (12V) Control By Keyboard Pin 29/30
;; Input : None
;; Output: BL : Bit 0 Set 1 => Enable Control By Keyboard
;; Bit 1 Set 1 => Pin 29 Active
;; Bit 2 Set 1 => Pin 30 Active
;;=======================================================================*
Public KBC_12V_Control
KBC_12V_Control proc near
xor bl,bl
retf
KBC_12V_Control endp
;;=======================================================================*
;; Ct_ROM_Write_Enable:
;; Input : None
;; Output: None
;; Note : This routine is OEM dependent
;;=======================================================================*
Public Ct_ROM_Write_Enable
Ct_ROM_Write_Enable proc near
pusha
mov cx,VT586 + 40h
call Get_Ct
or al,01h
call Set_Ct
ifNdef Utility_Support_GPO_Ctrl ;OEM02
;-------------------------------;
; Control 12V (Low => Enable) ;
;-------------------------------;
IFDEF Flash_12V_Enable_By_GPO_Low
;***************;
; GPO 0-7 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 7
mov cl,4ch
call Get_PMIO
and al,not (01 shl Flash_12V_Enable_By_GPO_Low)
call Set_PMIO
endif;Flash_12V_Enable_By_GPO_Low LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 15
IF Flash_12V_Enable_By_GPO_Low GE 8
mov cl,4dh
call Get_PMIO
and al,not (01 shl (Flash_12V_Enable_By_GPO_Low-8))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_Low GE 8
endif;Flash_12V_Enable_By_GPO_Low LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 23
IF Flash_12V_Enable_By_GPO_Low GE 16
mov cl,4eh
call Get_PMIO
and al,not (01 shl (Flash_12V_Enable_By_GPO_Low-16))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_Low GE 16
endif;Flash_12V_Enable_By_GPO_Low LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 30
IF Flash_12V_Enable_By_GPO_Low GE 24
mov cl,4fh
call Get_PMIO
and al,not (01 shl (Flash_12V_Enable_By_GPO_Low-24))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_Low GE 24
endif;Flash_12V_Enable_By_GPO_Low LE 30
ENDIF; Flash_12V_Enable_By_GPO_Low
;-------------------------------;
; Control 12V (High => Enable) ;
;-------------------------------;
IFDEF Flash_12V_Enable_By_GPO_High
;***************;
; GPO 0-7 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 7
mov cl,4ch
call Get_PMIO
or al, (01 shl Flash_12V_Enable_By_GPO_High)
call Set_PMIO
endif;Flash_12V_Enable_By_GPO_High LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 15
IF Flash_12V_Enable_By_GPO_High GE 8
mov cl,4dh
call Get_PMIO
or al, (01 shl (Flash_12V_Enable_By_GPO_High-8))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_High GE 8
endif;Flash_12V_Enable_By_GPO_High LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 23
IF Flash_12V_Enable_By_GPO_High GE 16
mov cl,4eh
call Get_PMIO
or al, (01 shl (Flash_12V_Enable_By_GPO_High-16))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_High GE 16
endif;Flash_12V_Enable_By_GPO_High LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 30
IF Flash_12V_Enable_By_GPO_High GE 24
mov cl,4fh
call Get_PMIO
or al, (01 shl (Flash_12V_Enable_By_GPO_High-24))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_High GE 24
endif;Flash_12V_Enable_By_GPO_High LE 30
ENDIF; Flash_12V_Enable_By_GPO_High
;-------------------------------;
; ROM Writable (Low => Enable) ;
;-------------------------------;
IFDEF Flash_W_By_GPO_Low
;***************;
; GPO 0-7 ;
;***************;
if Flash_W_By_GPO_Low LE 7
mov cl,4ch
call Get_PMIO
and al,not (01 shl Flash_W_By_GPO_Low)
call Set_PMIO
endif;Flash_W_By_GPO_Low LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_W_By_GPO_Low LE 15
IF Flash_W_By_GPO_Low GE 8
mov cx,VT686 + 76h ;OEM01
call Get_Ct ;OEM01
mov [si+4],al ;OEM01
or al,02h ;OEM01
call Set_Ct ;OEM01
mov cl,4dh
call Get_PMIO
and al,not (01 shl (Flash_W_By_GPO_Low-8))
call Set_PMIO
ENDIF;Flash_W_By_GPO_Low GE 8
endif;Flash_W_By_GPO_Low LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_W_By_GPO_Low LE 23
IF Flash_W_By_GPO_Low GE 16
mov cl,4eh
call Get_PMIO
and al,not (01 shl (Flash_W_By_GPO_Low-16))
call Set_PMIO
ENDIF;Flash_W_By_GPO_Low GE 16
endif;Flash_W_By_GPO_Low LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_W_By_GPO_Low LE 30
IF Flash_W_By_GPO_Low GE 24
mov cl,4fh
call Get_PMIO
and al,not (01 shl (Flash_W_By_GPO_Low-24))
call Set_PMIO
ENDIF;Flash_W_By_GPO_Low GE 24
endif;Flash_W_By_GPO_Low LE 30
ENDIF; Flash_W_By_GPO_Low
;-------------------------------;
; ROM Writable (High => Enable) ;
;-------------------------------;
IFDEF Flash_W_By_GPO_High
;***************;
; GPO 0-7 ;
;***************;
if Flash_W_By_GPO_High LE 7
mov cl,4ch
call Get_PMIO
or al, (01 shl Flash_W_By_GPO_High)
call Set_PMIO
endif;Flash_W_By_GPO_High LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_W_By_GPO_High LE 15
IF Flash_W_By_GPO_High GE 8
mov cl,4dh
call Get_PMIO
or al, (01 shl (Flash_W_By_GPO_High-8))
call Set_PMIO
ENDIF;Flash_W_By_GPO_High GE 8
endif;Flash_W_By_GPO_High LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_W_By_GPO_High LE 23
IF Flash_W_By_GPO_High GE 16
mov cl,4eh
call Get_PMIO
or al, (01 shl (Flash_W_By_GPO_High-16))
call Set_PMIO
ENDIF;Flash_W_By_GPO_High GE 16
endif;Flash_W_By_GPO_High LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_W_By_GPO_High LE 30
IF Flash_W_By_GPO_High GE 24
mov cl,4fh
call Get_PMIO
or al, (01 shl (Flash_W_By_GPO_High-24))
call Set_PMIO
ENDIF;Flash_W_By_GPO_High GE 24
endif;Flash_W_By_GPO_High LE 30
ENDIF; Flash_W_By_GPO_High
endif; Utility_Support_GPO_Ctrl ;OEM02
popa
retf
Ct_ROM_Write_Enable endp
;;=======================================================================*
;; Ct_ROM_Write_Disable:
;; Input : None
;; Output: None
;; Note : This routine is OEM dependent
;;=======================================================================*
Public Ct_ROM_Write_Disable
Ct_ROM_Write_Disable proc near
pusha
mov cx,VT586 + 40h
call Get_Ct
and al,not 01h
call Set_Ct
ifNdef Utility_Support_GPO_Ctrl ;OEM02
;-------------------------------;
; Control 12V (High => Disable) ;
;-------------------------------;
IFDEF Flash_12V_Enable_By_GPO_Low
;***************;
; GPO 0-7 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 7
mov cl,4ch
call Get_PMIO
or al, (01 shl Flash_12V_Enable_By_GPO_Low)
call Set_PMIO
endif;Flash_12V_Enable_By_GPO_Low LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 15
IF Flash_12V_Enable_By_GPO_Low GE 8
mov cl,4dh
call Get_PMIO
or al, (01 shl (Flash_12V_Enable_By_GPO_Low-8))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_Low GE 8
endif;Flash_12V_Enable_By_GPO_Low LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 23
IF Flash_12V_Enable_By_GPO_Low GE 16
mov cl,4eh
call Get_PMIO
or al, (01 shl (Flash_12V_Enable_By_GPO_Low-16))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_Low GE 16
endif;Flash_12V_Enable_By_GPO_Low LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_12V_Enable_By_GPO_Low LE 30
IF Flash_12V_Enable_By_GPO_Low GE 24
mov cl,4fh
call Get_PMIO
or al, (01 shl (Flash_12V_Enable_By_GPO_Low-24))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_Low GE 24
endif;Flash_12V_Enable_By_GPO_Low LE 30
ENDIF;Flash_12V_Enable_By_GPO_Low
;-------------------------------;
; Control 12V (Low => Disable) ;
;-------------------------------;
IFDEF Flash_12V_Enable_By_GPO_High
;***************;
; GPO 0-7 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 7
mov cl,4ch
call Get_PMIO
and al,not (01 shl Flash_12V_Enable_By_GPO_High)
call Set_PMIO
endif;Flash_12V_Enable_By_GPO_High LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 15
IF Flash_12V_Enable_By_GPO_High GE 8
mov cl,4dh
call Get_PMIO
and al,not (01 shl (Flash_12V_Enable_By_GPO_High-8))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_High GE 8
endif;Flash_12V_Enable_By_GPO_High LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 23
IF Flash_12V_Enable_By_GPO_High GE 16
mov cl,4eh
call Get_PMIO
and al,not (01 shl (Flash_12V_Enable_By_GPO_High-16))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_High GE 16
endif;Flash_12V_Enable_By_GPO_High LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_12V_Enable_By_GPO_High LE 30
IF Flash_12V_Enable_By_GPO_High GE 24
mov cl,4fh
call Get_PMIO
and al,not (01 shl (Flash_12V_Enable_By_GPO_High-24))
call Set_PMIO
ENDIF;Flash_12V_Enable_By_GPO_High GE 24
endif;Flash_12V_Enable_By_GPO_High LE 30
ENDIF;Flash_12V_Enable_By_GPO_High
;-------------------------------;
; ROM Writable (High => Disable);
;-------------------------------;
IFDEF Flash_W_By_GPO_Low
;***************;
; GPO 0-7 ;
;***************;
if Flash_W_By_GPO_Low LE 7
mov cl,4ch
call Get_PMIO
or al, (01 shl Flash_W_By_GPO_Low)
call Set_PMIO
endif;Flash_W_By_GPO_Low LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_W_By_GPO_Low LE 15
IF Flash_W_By_GPO_Low GE 8
mov cl,4dh
call Get_PMIO
or al, (01 shl (Flash_W_By_GPO_Low-8))
call Set_PMIO
ENDIF;Flash_W_By_GPO_Low GE 8
endif;Flash_W_By_GPO_Low LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_W_By_GPO_Low LE 23
IF Flash_W_By_GPO_Low GE 16
mov cl,4eh
call Get_PMIO
or al, (01 shl (Flash_W_By_GPO_Low-16))
call Set_PMIO
ENDIF;Flash_W_By_GPO_Low GE 16
endif;Flash_W_By_GPO_Low LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_W_By_GPO_Low LE 30
IF Flash_W_By_GPO_Low GE 24
mov cl,4fh
call Get_PMIO
or al, (01 shl (Flash_W_By_GPO_Low-24))
call Set_PMIO
ENDIF;Flash_W_By_GPO_Low GE 24
endif;Flash_W_By_GPO_Low LE 30
ENDIF;Flash_W_By_GPO_Low
;-------------------------------;
; ROM Writable (Low => Disable) ;
;-------------------------------;
IFDEF Flash_W_By_GPO_High
;***************;
; GPO 0-7 ;
;***************;
if Flash_W_By_GPO_High LE 7
mov cl,4ch
call Get_PMIO
and al,not (01 shl Flash_W_By_GPO_High)
call Set_PMIO
endif;Flash_W_By_GPO_High LE 7
;***************;
; GPO 8-15 ;
;***************;
if Flash_W_By_GPO_High LE 15
IF Flash_W_By_GPO_High GE 8
mov cl,4dh
call Get_PMIO
and al,not (01 shl (Flash_W_By_GPO_High-8))
call Set_PMIO
ENDIF;Flash_W_By_GPO_High GE 8
endif;Flash_W_By_GPO_High LE 15
;***************;
; GPO 16-23 ;
;***************;
if Flash_W_By_GPO_High LE 23
IF Flash_W_By_GPO_High GE 16
mov cl,4eh
call Get_PMIO
and al,not (01 shl (Flash_W_By_GPO_High-16))
call Set_PMIO
ENDIF;Flash_W_By_GPO_High GE 16
endif;Flash_W_By_GPO_High LE 23
;***************;
; GPO 24-30 ;
;***************;
if Flash_W_By_GPO_High LE 30
IF Flash_W_By_GPO_High GE 24
mov cl,4fh
call Get_PMIO
and al,not (01 shl (Flash_W_By_GPO_High-24))
call Set_PMIO
ENDIF;Flash_W_By_GPO_High GE 24
endif;Flash_W_By_GPO_High LE 30
ENDIF;Flash_W_By_GPO_High
endif; Utility_Support_GPO_Ctrl ;OEM02
popa
retf
Ct_ROM_Write_Disable endp
;;=======================================================================*
;; Enable Flash ROM decode for special motherboard
;; Input : None
;; Output: None
;; Note : This routine is OEM dependent
;;=======================================================================*
Public Ct_Enable_ROM_Decode
Ct_Enable_ROM_Decode proc near
pusha
mov cx,VT586 + 43h
call Get_Ct
or al,0B0h
call Set_Ct
ifdef Enable_Flash_ROM_By_Low_GPIO
;---------------------------------------;
; Set GPIO to Low for Enabled Flash ROM ;
;---------------------------------------;
mov cl,40
call Get_PMIO
or al,(01h shl Enable_Flash_ROM_By_Low_GPIO)
call Set_PMIO
mov cl,42
call Get_PMIO
and al,not (01h shl Enable_Flash_ROM_By_Low_GPIO)
call Set_PMIO
endif; Enable_Flash_ROM_By_Low_GPIO
ifdef Enable_Flash_ROM_By_High_GPIO
;----------------------------------------;
; Set GPIO to High for Enabled Flash ROM ;
;----------------------------------------;
mov cl,40
call Get_PMIO
or al,(01h shl Enable_Flash_ROM_By_High_GPIO)
call Set_PMIO
mov cl,42
call Get_PMIO
or al,(01h shl Enable_Flash_ROM_By_High_GPIO)
call Set_PMIO
endif; Enable_Flash_ROM_By_High_GPIO
popa
retf
Ct_Enable_ROM_Decode endp
;;=======================================================================*
;; Initialize motherboard to desired status
;; Input : None
;; Output: None
;; Note : This routine is OEM dependent
;;=======================================================================*
Public Ct_Init
Ct_Init proc near
pushad
mov cl, 2ch
call Get_PMIO
and al, NOT 01h
call Set_PMIO
ifdef P6_BIOS_ONLY
;disable F-segment cacheability
xor eax, eax ; CPUID level 0
db 0fh, 0a2h ; Op code CPUID
cmp ebx, 'iryC' ;
jz short Cyrix_CPU_ ;
xor eax,eax ;disable F-segment cacheability
xor edx,edx
mov ecx,26EH ;address(26EH) for F0000-F7FFF
WRMSR
mov cx,26FH ;address(26FH) for F8000-FFFFF
WRMSR
Cyrix_CPU_:
endif; P6_BIOS_ONLY
popad
retf
Ct_Init endp
;;=======================================================================*
;; Disable ROM Shadow
;; Input : None
;; Output : None
;;=======================================================================*
Public CT_Disable_ROM_Shadow
CT_Disable_ROM_Shadow proc near
pusha
mov cx,VT8605 + 63h
call Get_Ct
and al,not 0f0h ;Disable E/F Shadow
call Set_Ct
popa
retf
CT_Disable_ROM_Shadow endp
;;=======================================================================*
;; Enable ROM Shadow
;; Input : None
;; Output : None
;;=======================================================================*
Public CT_Enable_ROM_Shadow
CT_Enable_ROM_Shadow proc near
pusha
mov cx,VT8605 + 63h
call Get_Ct
or al, 0f0h ;Enable E/F Shadow
call Set_Ct
popa
retf
CT_Enable_ROM_Shadow endp
;;=======================================================================*
;; Ct_After_Program:
;; Set system into certain state after flash memory fininsh program
;; Normally, enable flash write protect
;; Input : None
;; Output : None
;;=======================================================================*
Public Ct_After_Program
Ct_After_Program proc near
pusha
mov al,[si]
mov cx,VT586 + 43h
call Set_Ct
mov al,[si+3]
mov cx,VT8605 + 63h
call Set_Ct
ifdef VT686
ifndef NO_XDIR
mov cx,VT686 + 76h
mov al, [si+4]
call Set_Ct
endif; NO_XDIR
endif; VT686
popa
retf
Ct_After_Program endp
;;=======================================================================*
;; Ct_Special_REG_Save:
;; For register call by two hook or more, save register value here.
;;
;; Ex: MOV CX,XXXX
;; CALL GET_CT
;; MOV [SI],AX ; save word value
;; MOV CX,XXXX
;; CALL GET_CT
;; MOV [SI+2],AL ; save byte value
;; MOV CX,XXXX
;; CALL GET_CT
;; MOV [SI+3],AL
;; MAX Length => 30 Bytes
;; Input : DS:SI
;; Output: None
;; Save : DS,ES
;;=======================================================================*
Public Ct_Special_REG_Save
Ct_Special_REG_Save proc near
pusha
mov cx,VT586 + 43h
call Get_Ct
mov [si],al
mov cx,VT8605 + 63h
call Get_Ct
mov [si+3],al
ifdef VT686
ifndef NO_XDIR
mov cx,VT686 + 76h
call Get_Ct
mov [si+4],al
and al, not 02h
call Set_Ct
endif; NO_XDIR
endif; VT686
popa
retf
Ct_Special_REG_Save endp
;;=======================================================================*
;; Disable C/D ROM Shadow
;; Input : None
;; Output : None
;;=======================================================================*
Public CT_Disable_ROM_Shadow
CT_Disable_CD_Shadow proc near
retf
CT_Disable_CD_Shadow endp
;;=======================================================================*
;; Enable C/D ROM Shadow
;; Input : None
;; Output : None
;;=======================================================================*
Public CT_Enable_ROM_Shadow
CT_Enable_CD_Shadow proc near
retf
CT_Enable_CD_Shadow endp
;;=======================================================================*
;; Switch_USB_SMI
;; Input : al=0 disable USB SMI
;; =1 Enable USB SMI
;; Output : None
;;=======================================================================*
ifdef USB_SUPPORT
Public Switch_USB_SMI
Switch_USB_SMI proc near
pusha
mov bl,al
mov cx,2ch ;usb address
call Get_PMIO
and al,not 01 ;2C bit [0] : 0 => Disable USB SMI
or al,bl ; 1 => Enaable USB SMI
call Set_PMIO
popa
retf
Switch_USB_SMI endp
endif; USB_SUPPORT
FLASH_ROUTINE_END:
PUBLIC FLASH_ROUTINE_LEN
FLASH_ROUTINE_LEN DW offset FLASH_ROUTINE_END - offset FLASH_ROUTINE_START
FCODE ENDS
END