;	[]===========================================================[]
;
;	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
;----------------------------------------------------------------------------
;R03B	03/30/99 ADS	Add five PCI slots to "PCI_IRQ_SELECTABLE" function.
;R08	03/25/99 RIC	Add "ALWAYS_LEVEL_PCI_IRQ" definition.
;R07	03/16/99 RIC	Add "UMB_AREA_SETUP" definition.
;R06	12/30/98 ADS	Change USB IRQ assign algorithm to Auto-assigned.
;R03A	12/23/98 ADS	Open "PCI_IRQ_SELECTABLE" function CMOS be selectable.
;R05	12/15/98 RAY	Fixed compiler error for 4.6 BIOS
;R04	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.
;R03	09/07/98 ADS	Support "PCI_IRQ_SELECTABLE" function to fixed smoe card
;			can't be assign IRQ in POST.
;R02	09/04/98 RIC	Add "ACPI_IRQ_Item_D4_Use_IRQ9" define.
;R01	08/22/98 RIC	Added declarations of "NO_ISA_PNP" and "ESCD_SUPPORT".
;R00    08/17/98 RIC    Initialization.

ifdef	MASM611
.MODEL  SMALL,BASIC
OPTION	PROC: PRIVATE
endif	;MASM611

		PAGE	56,132
		.286

	;---------------;
	;   Include	;
	;---------------;
		include	bios.cfg
		include	bsetup.inc
		include	setup.ext
                include common.mac		
                include common.equ		

	;-----------------------;
	;  External Subroutine	;
	;-----------------------;
		extrn	Get_Cmos:Near
		extrn	Set_Cmos:Near
		extrn	Self_Dis:near
		extrn	Re_Enable:near
		extrn	Get_VarString_Offset:Near
		extrn	GetItem_Value:Near
		extrn	F000_Shadow_W:Near
		extrn	F000_Shadow_R:Near
		extrn	Read_Item_Value:Near
		extrn	Write_Item_Value:Near
		extrn	Display_Whole_Item:Near
		extrn	Post_call_proc:near
		extrn	F000_call_proc:near

	;-----------------------;
	;  External Item/Label	;
	;-----------------------;
		extrn	Std_Help_Str:near
		extrn	PAGE_NAME_Y:ABS
		Extrn	Common_Startup_Str:Near
		Extrn	Ena_Str:Near
		Extrn	Dis_Str:Near
                Extrn   NullStr:Near
ifdef	ACPI_Support
		extrn	ACPI_option_Item:Near
endif;	ACPI_Support
;R06 - starts
ifdef	USB_IRQ_SELECTABLE
		extrn	ONBD_USB_Item:near
endif;	USB_IRQ_SELECTABLE
;R06 - ends
		DECLARE_MULTI_LANGUAGE	;macro to declare externals

	;---------------;
	;    Public	;
	;---------------;
		Public	PCI_Feature_Special_Do
		Public	PCI_Feature_Special_Show
		Public	PCI_Feature_StartUp_Str
		Public	PCI_Feature_Start
		Public	PCI_Feature_End
		Public	PCI_STAT

		Public	PCI_Auto_Table
		Public	PCI_EndAuto_Table
		Public	PCI_Auto_String


		EGROUP		GROUP	ECODE

DGROUP		GROUP	FCODE
FCODE		SEGMENT	DWORD PUBLIC 'CODE'
		ASSUME	CS:DGROUP,DS:DGROUP

DEFINE_ITEM	MACRO	MENU_NAME,GAP
IFNB	<GAP>
	Yaxis = Yaxis + GAP
ENDIF	;GAP
IF	Yaxis GE 23
	Xaxis = 42
	Yaxis = Y_Start
ELSE	;
	Yaxis = Yaxis + 1
ENDIF	;
IFNB	<MENU_NAME>
	PUBLIC	MENU_NAME
	MENU_NAME:
ENDIF
		ENDM

PCI_CMOS	EQU	5Ah
PNP_CMOS        EQU     50h
		db	'$ML$'		;Signature For Multi-Language
PCI_Feature_Special_Do:
			dw	PCI_Feature_Do_NO
PCI_Feature_Do_NO	EQU	(($ - offset PCI_Feature_Special_Do)-2)/4

PCI_Feature_Special_Show:
	       	dw	PCI_Feature_Show_NO
ifndef	NO_PCI_IDE_CARD
		dw	offset PCI_IDE_IRQ,offset Show_PCI_IDE_IRQ	
endif;	NO_PCI_IDE_CARD
ifdef	NEW_PNP_SETUP
		dw	offset PNP_Control_Item, offset Show_PNP_Auto
ifdef	UMB_AREA_SETUP							;R07
		dw	offset UMB_BASE_ITEM, offset Show_UMB_Base	;R07
endif	;UMB_AREA_SETUP						  	;R07
ifdef	ACPI_Support
;R04  IFNDEF No_ACPI_IRQ_Selectable
  IFDEF	ACPI_IRQ_Selectable			;R04
		dw	offset IRQ9_Item, offset Show_Assign_ACPI_IRQ_Item
		dw	offset IRQ10_Item, offset Show_Assign_ACPI_IRQ_Item
		dw	offset IRQ11_Item, offset Show_Assign_ACPI_IRQ_Item
		dw	offset Assign_ACPI_IRQ_Item,offset Disable_Assign_ACPI_IRQ_Item
;R04  ENDIF;No_ACPI_IRQ_Selectable
  ENDIF;ACPI_IRQ_Selectable			;R04
endif;	ACPI_Support
;R06 - starts
ifdef	USB_IRQ_SELECTABLE
		dw	offset UsbIrq_Item,offset Disable_UsbIrq_Item
endif;	USB_IRQ_SELECTABLE
;R06 - end
endif	;NEW_PNP_SETUP
ifndef	NEW_PNP_SETUP
  IFDEF	PNP_PCI_AUTO
		dw	offset PnP_Auto_Item, offset Show_PnP_Auto
  ENDIF;PNP_PCI_AUTO
endif;	NEW_PNP_SETUP
PCI_Feature_Show_NO	EQU	(($ - offset PCI_Feature_Special_Show)-2)/4

PCI_Feature_StartUp_Str	label	near
		STRSHOW	<,,,offset Common_StartUp_Str>
		POS	<,29,PAGE_NAME_Y>
		public	PCI_FEATURE_STR
PCI_FEATURE_STR:
ifdef	NEW_PNP_SETUP
		db	'PNP/PCI CONFIGURATION'
else;	NEW_PNP_SETUP
		db	'PCI CONFIGURATION SETUP'
endif;	NEW_PNP_SETUP
		db	0

;----------------------------------------------------------------------------

		ALIGN	4
		db	0
PCI_Auto_Table	label	near
PCI_EndAuto_Table	label	near

ifdef	SCSI_ITEM_IN_PCIFEAT
SCSI_ITEM	=	0
  IFDEF	ONBOARD_AHA7850
SCSI_ITEM	=	1
  ENDIF;ONBOARD_AHA7850
  IFDEF	ONBOARD_AHA7860
SCSI_ITEM	=	1
  ENDIF;ONBOARD_AHA7860
  IFDEF	ONBOARD_AHA7870
SCSI_ITEM	=	1
  ENDIF;ONBOARD_AHA7870
  IFDEF	ONBOARD_AHA7880
SCSI_ITEM	=	1
  ENDIF;ONBOARD_AHA7880
  IFDEF	ONBOARD_ScsiChip
SCSI_ITEM	=	1
  ENDIF;ONBOARD_ScsiChip
endif;	SCSI_ITEM_IN_PCIFEAT

;[]======================================================================[]
;
;			Menuitems
;
;[]======================================================================[]
PCI_Feature_START	Label	Near

Xaxis   =       2
Yaxis   =       3

ifdef	NEW_PNP_SETUP

ifndef	NO_ISA_PNP					;R01
  IFDEF	PNP_OS_SELECTABLE
    ifdef PNP_OS_Default_Enable
DEFINE_ITEM	OS_Setup_Item
	menuitem <0,\
		offset OS_Setup_Str,NOCT,01h,PNP_CMOS,04h,\
		offset OS_Setup_Val,0,1,Xaxis,Yaxis,1,4,offset OS_Setup_Item_Lang_Tbl>
    else;  PNP_OS_Default_Enable
DEFINE_ITEM	OS_Setup_Item
	menuitem <0,\
		offset OS_Setup_Str,NOCT,01h,PNP_CMOS,04h,\
		offset OS_Setup_Val,0,1,Xaxis,Yaxis,0,0,offset OS_Setup_Item_Lang_Tbl>
    endif; PNP_OS_Default_Enable
  ENDIF;	PNP_OS_SELECTABLE		
endif	;NO_ISA_PNP					;R01

DEFINE_ITEM	PnP_Control_Item
	menuitem <0,\
		offset PnP_Control_Str,NOCT,01h,PNP_CMOS,01h,\
		offset PnPCtrl_Val,0,1,Xaxis,Yaxis,0h,0h,offset PnP_Control_Item_Lang_Tbl>

ifdef	ESCD_SUPPORT					;R01
DEFINE_ITEM	Reset_Escd_Item
	menuitem <0,\
		offset Reset_Escd_Str,NOCT,02h,PNP_CMOS,02h,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0h,0,offset Reset_Escd_Item_Lang_Tbl>
endif	;ESCD_SUPPORT					;R01

	Yaxis = Yaxis + 1
  IFDEF Have_ACPI_IO_Node_Item
	Yaxis = Yaxis - 1
DEFINE_ITEM	ACPI_IO_Node_Item
	menuitem <0,\
	  offset ACPI_IO_Node_Str,NOCT,01h,PCI_CMOS+1,04h,\
	  offset Dis_Str,0,1,Xaxis,Yaxis,01h,04h,offset ACPI_IO_Node_Item_Lang_Tbl>
  ENDIF;Have_ACPI_IO_Node_Item

DEFINE_ITEM	Irq3_Item
	menuitem <0,\
		offset IRQ3_Str,NOCT,01h,PNP_CMOS+1,01h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq3_Item_Lang_Tbl>

DEFINE_ITEM	Irq4_Item
	menuitem <0,\
		offset IRQ4_Str,NOCT,02h,PNP_CMOS+1,02h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq4_Item_Lang_Tbl>

DEFINE_ITEM	Irq5_Item
	menuitem <0,\
		offset IRQ5_Str,NOCT,04h,PNP_CMOS+1,04h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq5_Item_Lang_Tbl>

DEFINE_ITEM	Irq7_Item
	menuitem <0,\
		offset IRQ7_Str,NOCT,08h,PNP_CMOS+1,08h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq7_Item_Lang_Tbl>

DEFINE_ITEM	Irq9_Item
	menuitem <0,\
		offset IRQ9_Str,NOCT,10h,PNP_CMOS+1,10h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq9_Item_Lang_Tbl>

DEFINE_ITEM	Irq10_Item
	menuitem <0,\
		offset IRQ10_Str,NOCT,20h,PNP_CMOS+1,20h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq10_Item_Lang_Tbl>

DEFINE_ITEM	Irq11_Item
	menuitem <0,\
		offset IRQ11_Str,NOCT,40h,PNP_CMOS+1,40h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq11_Item_Lang_Tbl>

DEFINE_ITEM	Irq12_Item
	menuitem <0,\
		offset IRQ12_Str,NOCT,80h,PNP_CMOS+1,80h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq12_Item_Lang_Tbl>

DEFINE_ITEM	Irq14_Item
	menuitem <0,\
		offset IRQ14_Str,NOCT,01h,PNP_CMOS+2,01h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq14_Item_Lang_Tbl>

DEFINE_ITEM	Irq15_Item
	menuitem <0,\
		offset IRQ15_Str,NOCT,02h,PNP_CMOS+2,02h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Irq15_Item_Lang_Tbl>

DEFINE_ITEM	Dma0_Item
	menuitem <0,\
		offset DMA0_Str,NOCT,04h,PNP_CMOS+2,04h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Dma0_Item_Lang_Tbl>

DEFINE_ITEM	Dma1_Item
	menuitem <0,\
		offset DMA1_Str,NOCT,08h,PNP_CMOS+2,08h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Dma1_Item_Lang_Tbl>

DEFINE_ITEM	Dma3_Item
	menuitem <0,\
		offset DMA3_Str,NOCT,10h,PNP_CMOS+2,10h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Dma3_Item_Lang_Tbl>

DEFINE_ITEM	Dma5_Item
	menuitem <0,\
		offset DMA5_Str,NOCT,20h,PNP_CMOS+2,20h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Dma5_Item_Lang_Tbl>

DEFINE_ITEM	Dma6_Item
	menuitem <0,\
		offset DMA6_Str,NOCT,40h,PNP_CMOS+2,40h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Dma6_Item_Lang_Tbl>

DEFINE_ITEM	Dma7_Item
	menuitem <0,\
		offset DMA7_Str,NOCT,80h,PNP_CMOS+2,80h,\
		offset Bus_Var,0,1,Xaxis,Yaxis,0h,0,offset Dma7_Item_Lang_Tbl>

else		;NEW_PNP_SETUP

  IFDEF	PNP_PCI_AUTO
	DEFINE_ITEM	PnP_Auto_Item
		menuitem <0,\
		  offset PnP_Auto_Str,NOCT,01h,PCI_CMOS,01h,\
		  offset Dis_Str,0,1,Xaxis,Yaxis,0h,0h,offset PnP_Auto_Item_Lang_Tbl>
	Yaxis = Yaxis + 1
  ENDIF;PNP_PCI_AUTO

		public	PCI_IRQ1
		public	PCI_IRQ2
		public	PCI_IRQ3
		public	PCI_IRQ4
  IFDEF	NCR_IRQ_FIXED
SLOT1_IRQ	EQU	0aH SHL 4
SLOT2_IRQ	EQU	0bH
SLOT3_IRQ	EQU	0cH SHL 4
SLOT4_IRQ	EQU	05H
  ELSE;	NCR_IRQ_FIXED
SLOT1_IRQ	EQU	0aH SHL 4		
SLOT2_IRQ	EQU	0bH			
SLOT3_IRQ	EQU	09H SHL 4		
SLOT4_IRQ	EQU	05H
  ENDIF;NCR_IRQ_FIXED

DEFINE_ITEM	PCI_IRQ1
	menuitem <0,\
	  offset PCI_Irq1_Str,NOCT,0fh,PCI_CMOS+3,0fh,\
	  offset Irq_Val,0,15,Xaxis,Yaxis,SLOT1_IRQ,SLOT1_IRQ,offset PCI_IRQ1_Lang_Tbl>

DEFINE_ITEM	PCI_IRQ2
	menuitem <0,\
	  offset PCI_Irq2_Str,NOCT,0f0h,PCI_CMOS+3,0f0h,\
	  offset Irq_Val,0,15,Xaxis,Yaxis,SLOT2_IRQ,SLOT2_IRQ,offset PCI_IRQ2_Lang_Tbl>

DEFINE_ITEM	PCI_IRQ3
	menuitem <0,\
	  offset PCI_Irq3_Str,NOCT,0fh,PCI_CMOS+4,0fh,\
	  offset Irq_Val,0,15,Xaxis,Yaxis,SLOT3_IRQ,SLOT3_IRQ,offset PCI_IRQ3_Lang_Tbl>

DEFINE_ITEM	PCI_IRQ4
	menuitem <0,\
	  offset PCI_Irq4_Str,NOCT,0f0h,PCI_CMOS+4,0f0h,\
	  offset Irq_Val,0,15,Xaxis,Yaxis,SLOT4_IRQ,SLOT4_IRQ,offset PCI_IRQ4_Lang_Tbl>

endif;	NEW_PNP_SETUP		


;============================================================================
Xaxis   =       42
Yaxis   =       3
;============================================================================

DEFINE_ITEM	PCI_C2P_WB_Item
        menuitem <2,\
          offset PCI_C2P_WB_Str,VT692 + 70h,10000000b,PCI_CMOS,10000000b,\
          offset Dis_Str,0,1,Xaxis,Yaxis,80h,80h,offset PCI_C2P_WB_Item_Lang_Tbl>

DEFINE_ITEM	PCI_DyBrst_Item
        menuitem <2,\
          offset PCI_DyBrst_Str,VT692 + 71h,10000000b,PCI_CMOS+1,00010000b,\
          offset Dis_Str,0,1,Xaxis,Yaxis,10h,10h,offset PCI_DyBrst_Item_Lang_Tbl>

DEFINE_ITEM	PCI_1WS_Item
        menuitem <2,\
          offset PCI_1WS_Str,VT692 + 73h,01000000b,PCI_CMOS+2,00000001b,\
          offset Ena_Str,0,1,Xaxis,Yaxis,0h,0h,offset PCI_1WS_Item_Lang_Tbl>

DEFINE_ITEM 	Delay_Trans_Item
        menuitem <2,\
          offset Delay_Trans_Str,NOCT,01000000b,PCI_CMOS+2,000000010b,\
          offset Dis_Str,0,1,Xaxis,Yaxis,0h,02h,offset Delay_Trans_Item_Lang_Tbl>

ifdef	Have_Delay_Transaction_Item
DEFINE_ITEM	Delay_Transaction_Item
	menuitem <0,\
		offset Delay_Transaction_Str,VT692 + 70h, 02h,PCI_CMOS+2,04h,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0,0h,offset Std_Help_Str>
endif;	Have_Delay_Transaction_Item

ifdef	Have_PCI_Master_Read_Caching_Item
DEFINE_ITEM	PCI_Master_Read_Caching_Item
menuitem <0,\
	offset PCI_Master_Read_Caching_Str,VT692 + 70h, 04h,PCI_CMOS+1,08h,\
	offset Dis_Str,0,1,Xaxis,Yaxis,0,0h,offset Std_Help_Str>
endif;	Have_PCI_Master_Read_Caching_Item

ifndef	VT596
DEFINE_ITEM     PCI_Master_Read_Item
                menuitem <2,\
                          offset PCI_Master_Read_Str,VT692+74H,080h,PCI_CMOS+1,80h,\
                          offset Dis_Str,0,1,Xaxis,Yaxis,00h,080h,offset PCI_Master_Read_Item_Lang_Tbl>
endif;	VT596

ifdef	Have_PCI_Master_Broken_Timer_Item
DEFINE_ITEM     PCI_Master_Broken_Timer_Item
                menuitem <2,\
                          offset PCI_Master_Broken_Timer_Str,VT692+73H,01h,PCI_CMOS+1,08h,\
                          offset Dis_Str,0,1,Xaxis,Yaxis,00h,000h,offset PCI_Master_Broken_Timer_Item_Lang_Tbl>
endif;	Have_PCI_Master_Broken_Timer_Item

DEFINE_ITEM     PCI2_Master_PCI1_Retry_Item
                menuitem <2,\
                          offset PCI2_Master_PCI1_Retry_Str,VT692+76H,080h,PCI_CMOS+1,40h,\
                          offset Dis_Str,0,1,Xaxis,Yaxis,00h,00h,offset PCI2_Master_PCI1_Retry_Item_Lang_Tbl>
DEFINE_ITEM     PCI_Master_Wait_Write_Item
                menuitem <2,\
                          offset PCI_Master_Wait_Write_Str,VT692_PP+42H,040h,PCI_CMOS+1,20h,\
                          offset Dis_Str,0,1,Xaxis,Yaxis,00h,20h,offset PCI_Master_Wait_Write_Item_Lang_Tbl>
DEFINE_ITEM     PCI_Master_Wait_Read_Item
                menuitem <2,\
                          offset PCI_Master_Wait_Read_Str,VT692_PP+42H,020h,PCI_CMOS+2,08h,\
                          offset Dis_Str,0,1,Xaxis,Yaxis,00h,080h,offset PCI_Master_Wait_Read_Item_Lang_Tbl>

ifdef	PCI_LATENCY_SELECTABLE
DEFINE_ITEM	Pci_Latency_Item
	menuitem <0+KEYIN+SHOWNUM+DIGIT3,\
		offset PciLat_Str,NOCT,0ffh,PCI_CMOS+5,0FFH,\
		offset Nullstr,0,255,Xaxis,Yaxis,40H,40H,offset NullStr>
else;	PCI_LATENCY_SELECTABLE
Yaxis   =  Yaxis + 1
endif;	PCI_LATENCY_SELECTABLE

ifndef	ALWAYS_LEVEL_PCI_IRQ				;R08
DEFINE_ITEM	PCI_IRQ_Method
	menuitem <0,\
	  offset PCI_Trigger_Str,NOCT,02h,PCI_CMOS,02h,\
	  offset PCI_Trigger_Val,0,1,Xaxis,Yaxis,02h,02h,offset PCI_IRQ_Method_Lang_Tbl>
endif;	ALWAYS_LEVEL_PCI_IRQ				;R08

ifndef	NO_PCI_IDE_CARD
DEFINE_ITEM	PCI_IDE_IRQ	
  IFDEF	PCI_IDE_IRQ_ISA
IDE_IRQ		EQU	02H
  ELSE;	PCI_IDE_IRQ_ISA
IDE_IRQ		EQU	00H
  ENDIF;PCI_IDE_IRQ_ISA
	menuitem <0,\
	  offset PCI_Ide_Irq_Str,NOCT,00011100b,PCI_CMOS,00011100b,\
	  offset PCI_Ide_Irq_Val,0,5,Xaxis,Yaxis,IDE_IRQ,IDE_IRQ,offset PCI_IDE_IRQ_Lang_Tbl>

DEFINE_ITEM	First_IDE_INT
	menuitem <0,\
	  offset First_Int_Str,NOCT,01100000b,PCI_CMOS,01100000b,\
	  offset First_Int_Val,0,3,Xaxis,Yaxis,0,0,offset First_IDE_INT_Lang_Tbl>

DEFINE_ITEM	Second_IDE_INT
	menuitem <0,\
	  offset Second_Int_Str,NOCT,03h,PCI_CMOS+1,03h,\
	  offset First_Int_Val,0,3,Xaxis,Yaxis,01h,01h,offset Second_IDE_INT_Lang_Tbl>
endif;	NO_PCI_IDE_CARD


ifdef	SCSI_ITEM_IN_PCIFEAT
  IF	SCSI_ITEM
DEFINE_ITEM	Onboard_Scsi_Item
		menuitem <0,\
			  offset OnboardScsi_Str,NOCT,01h,PCI_CMOS+3,01h,\
			  offset Dis_Str,0,1,Xaxis,Yaxis,80h,80h,offset Onboard_Scsi_Item_Lang_Tbl>
  ENDIF	;SCSI_ITEM
endif;	SCSI_ITEM_IN_PCIFEAT

ifdef	NEW_PNP_SETUP		;R07 - starts
ifdef	UMB_AREA_SETUP
DEFINE_ITEM	UMB_BASE_ITEM, 1
menuitem <0,\
offset UMB_BASE_Str,NOCT           ,00000111b,PNP_CMOS+3,00000111b,\
offset UMB_BASE_Val,0,6,Xaxis,Yaxis,00000000b           ,00000000b,offset UMB_BASE_ITEM_Lang_Tbl>

DEFINE_ITEM	UMB_LEN_ITEM
menuitem <0,\
offset UMB_LEN_Str,NOCT           ,00000011b,PNP_CMOS+3,00011000b,\
offset UMB_LEN_Val,0,3,Xaxis,Yaxis,00000000b           ,00000000b,offset UMB_LEN_ITEM_Lang_Tbl>
endif	;UMB_AREA_SETUP
endif	;NEW_PNP_SETUP		;R07 - ends

ifdef	USB_IRQ_SELECTABLE
DEFINE_ITEM	UsbIrq_Item
	menuitem <0,\
		offset UsbIrq_Str,NOCT,008h,PNP_CMOS+0,08h,\
		offset Dis_Str,0,1,Xaxis,Yaxis,08h,08h,offset UsbIrq_Item_Lang_Tbl>
endif;	USB_IRQ_SELECTABLE

ifdef	VGA_IRQ_NOT_IN_BFEATURE
  IFDEF	PCI_VGA_IRQ_SETUP_ITEM
DEFINE_ITEM	Assign_Pci_IRQ_Item
		menuitem <0,\
			  offset PciVgaIRQ_Str,NOCT,00000001b,Assign_Pci_IRQ_CMOS,Assign_Pci_IRQ_BITS,\
			  offset Dis_Str,0,1,Xaxis,Yaxis,00h,Assign_Pci_IRQ_BITS,offset Assign_PCI_IRQ_Item_Lang_Tbl>
  ENDIF;PCI_VGA_IRQ_SETUP_ITEM
endif;	VGA_IRQ_NOT_IN_BFEATURE			

ifdef	ACPI_Support
;R04  IFNDEF No_ACPI_IRQ_Selectable
  IFDEF ACPI_IRQ_Selectable			;R04
    ifdef	ACPI_IRQ_Item_D4_Use_IRQ9		;R02 - starts
DEFINE_ITEM	Assign_ACPI_IRQ_Item
		menuitem <0,\
			  offset ACPI_IRQ_Str,NOCT,00000011b,PCI_CMOS,0Ch,\
			  offset ACPI_IRQ_Val,0,3,Xaxis,Yaxis,01h,04h,offset Assign_ACPI_IRQ_Item_Lang_Tbl>
    else;	ACPI_IRQ_Item_D4_Use_IRQ9		;R02 - ends
DEFINE_ITEM	Assign_ACPI_IRQ_Item
		menuitem <0,\
			  offset ACPI_IRQ_Str,NOCT,00000011b,PCI_CMOS,0Ch,\
			  offset ACPI_IRQ_Val,0,3,Xaxis,Yaxis,02h,08h,offset Assign_ACPI_IRQ_Item_Lang_Tbl>
    endif;	ACPI_IRQ_Item_D4_Use_IRQ9		;R02
;R04  ENDIF; No_ACPI_IRQ_Selectable
  ENDIF; ACPI_IRQ_Selectable			;R04
endif;	ACPI_Support

;R03 - starts
ifdef	PCI_IRQ_SELECTABLE
;R03A - start
ifndef	Slot1_IRQ_CMOS
Slot1_IRQ_CMOS	EQU	4CH
endif;	Slot1_IRQ_CMOS
ifndef	Slot2_IRQ_CMOS
Slot2_IRQ_CMOS	EQU	4CH
endif;	Slot2_IRQ_CMOS
ifndef	Slot3_IRQ_CMOS
Slot3_IRQ_CMOS	EQU	50H
endif;	Slot3_IRQ_CMOS
ifndef	Slot4_IRQ_CMOS
Slot4_IRQ_CMOS	EQU	5BH
endif;	Slot4_IRQ_CMOS
;R03A - end
		
DEFINE_ITEM	Slot1_IRQ
		menuitem <0,\
			  offset Slot1Irq1_Str,NOCT,0f0h,Slot1_IRQ_CMOS,0f0h,\
			  offset PIrq_Val,0,10,Xaxis,Yaxis,0,0,offset Slot1_IRQ_Lang_Tbl>
;R03A			  offset Slot1Irq1_Str,NOCT,0f0h,4CH,0f0h,\
DEFINE_ITEM	Slot2_IRQ
		menuitem <0,\
			  offset Slot2Irq1_Str,NOCT,0fh,Slot2_IRQ_CMOS,0fh,\
			  offset PIrq_Val,0,10,Xaxis,Yaxis,0,0,offset Slot2_IRQ_Lang_Tbl>
;R03A			  offset Slot2Irq1_Str,NOCT,0fh,4CH,0fh,\
  ifndef	TWO_PCI_SLOT_ONLY
   DEFINE_ITEM	Slot3_IRQ
		menuitem <0,\
			  offset Slot3Irq1_Str,NOCT,0f0h,Slot3_IRQ_CMOS,0f0h,\
			  offset PIrq_Val,0,10,Xaxis,Yaxis,0,0,offset Slot3_IRQ_Lang_Tbl>
;R03A			  offset Slot3Irq1_Str,NOCT,0f0h,50H,0f0h,\
   ifndef	THREE_PCI_SLOT_ONLY
    DEFINE_ITEM	Slot4_IRQ
		menuitem <0,\
			  offset Slot4Irq1_Str,NOCT,0fh,Slot4_IRQ_CMOS,0fh,\
			  offset PIrq_Val,0,10,Xaxis,Yaxis,0,0,offset Slot4_IRQ_Lang_Tbl>
;R03A			  offset Slot4Irq1_Str,NOCT,0fh,5bH,0fh,\
;R03B - starts
ifdef	FIVE_PCI_SLOTS
    DEFINE_ITEM	Slot5_IRQ
		menuitem <0,\
			  offset Slot5Irq1_Str,NOCT,0f0h,Slot5_IRQ_CMOS,0fh,\
			  offset PIrq_Val,0,10,Xaxis,Yaxis,0,0,offset Slot5_IRQ_Lang_Tbl>
endif;	FIVE_PCI_SLOTS
;R03B - ends
   endif;	THREE_PCI_SLOT_ONLY
  endif;	TWO_PCI_SLOT_ONLY
endif;	PCI_IRQ_SELECTABLE
;R03 - ends
;----------------------------------------------------------------

PCI_Feature_END		Label	Near
IF (offset PCI_Feature_END) EQ (offset PCI_Feature_START)
	PCI_STAT		EQU	0 + ITEMDISABLE
ELSE
	PCI_STAT		EQU	0
ENDIF
;----------------------------------------------------------

ifdef	SCSI_ITEM_IN_PCIFEAT
  IF	SCSI_ITEM
OnboardScsi_Str:	db	'Onboard PCI SCSI Chip    : ',0
  ENDIF	;SCSI_ITEM
endif;	SCSI_ITEM_IN_PCIFEAT

ifndef	NO_ISA_PNP					;R01
ifdef	PNP_OS_SELECTABLE		
OS_Setup_Str	db	'PNP OS Installed         : ', 0
OS_Setup_Val	db	'No ', 0
		db	'Yes', 0
endif;	PNP_OS_SELECTABLE		
endif	;NO_ISA_PNP					;R01

ifdef	NEW_PNP_SETUP
ifdef	ESCD_SUPPORT					;R01
Reset_Escd_Str	db	'Reset Configuration Data : ', 0
endif	;ESCD_SUPPORT					;R01
PnP_Control_Str	db	'Resources Controlled By  : ', 0
PnPCtrl_Val	db	'Auto  ',0
		db	'Manual',0

IRQ3_Str	db	'IRQ-3 '
Assign_To_Str	db	' assigned to : ', 0

IRQ4_Str	db	'IRQ-4 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ5_Str	db	'IRQ-5 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ7_Str	db	'IRQ-7 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ9_Str	db	'IRQ-9 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ10_Str	db	'IRQ-10'
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ11_Str	db	'IRQ-11'
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ12_Str	db	'IRQ-12'
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ14_Str	db	'IRQ-14'
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
IRQ15_Str	db	'IRQ-15'
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
DMA0_Str	db	'DMA-0 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
DMA1_Str	db	'DMA-1 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
DMA3_Str	db	'DMA-3 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
DMA5_Str	db	'DMA-5 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
DMA6_Str	db	'DMA-6 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
DMA7_Str	db	'DMA-7 '
		STRSHOW	<,,,offset Assign_To_Str>
		db	0
Bus_Var		db	'PCI/ISA PnP', 0
		db	'Legacy ISA ', 0
;R03 - starts
ifdef	PCI_IRQ_SELECTABLE
 Slot1Irq1_Str	db	'Slot 1 Use IRQ No.  : ',0
 Slot2Irq1_Str	db	'Slot 2 Use IRQ No.  : ',0
ifndef	TWO_PCI_SLOT_ONLY
 Slot3Irq1_Str	db	'Slot 3 Use IRQ No.  : ',0
ifndef	THREE_PCI_SLOT_ONLY
 Slot4Irq1_Str	db	'Slot 4 Use IRQ No.  : ',0
;R03B - starts
ifdef	FIVE_PCI_SLOTS
 Slot5Irq1_Str	db	'Slot 5 Use IRQ No.  : ',0
endif;	FIVE_PCI_SLOTS
;R03B - ends
endif;	THREE_PCI_SLOT_ONLY
endif;	TWO_PCI_SLOT_ONLY

PIrq_Val	db	'Auto',0
		db	'3   ',0
		db	'4   ',0
		db	'5   ',0
		db	'7   ',0
		db	'9   ',0
		db	'10  ',0
		db	'11  ',0
		db	'12  ',0
		db	'14  ',0
		db	'15  ',0
endif;	PCI_IRQ_SELECTABLE
;R03 - ends

Show_PnP_Auto	Proc	Near
		mov	di, offset IrqDma_Item_Tbl
		xor	cx, cx
		call	If_CX_Then_Dis
		ret
Show_PnP_Auto	Endp

IrqDma_Item_Tbl:
		dw	offset Irq3_Item
		dw	offset Irq4_Item
		dw	offset Irq5_Item
		dw	offset Irq7_Item
		dw	offset Irq9_Item
		dw	offset Irq10_Item
		dw	offset Irq11_Item
		dw	offset Irq12_Item
		dw	offset Irq14_Item
		dw	offset Irq15_Item
		dw	offset Dma0_Item
		dw	offset Dma1_Item
		dw	offset Dma3_Item
		dw	offset Dma5_Item
		dw	offset Dma6_Item
		dw	offset Dma7_Item
ifdef	UMB_AREA_SETUP					;R07
		dw	offset UMB_BASE_ITEM		;R07
endif	;UMB_AREA_SETUP					;R07
		dw	-1

		public	IrqItem_Table
IrqItem_Table	label	near
		dw	offset Irq3_Item
		db	3
		dw	offset Irq4_Item
		db	4
		dw	offset Irq5_Item
		db	5
		dw	offset Irq7_Item
		db	7
		dw	offset Irq9_Item
		db	9
		dw	offset Irq10_Item
		db	10
		dw	offset Irq11_Item
		db	11
		dw	offset Irq12_Item
		db	12
		dw	offset Irq14_Item
		db	14
		dw	offset Irq15_Item
		db	15
		dw	-1

		public	DmaItem_Table
DmaItem_Table	label	near
		dw	offset Dma0_Item
		db	0
		dw	offset Dma1_Item
		db	1
		dw	offset Dma3_Item
		db	3
		dw	offset Dma5_Item
		db	5
		dw	offset Dma6_Item
		db	6
		dw	offset Dma7_Item
		db	7
		dw	-1

ifdef	UMB_AREA_SETUP					;R07 - starts
Show_UMB_Base	Proc	Near

		mov	si, offset PNP_Control_Item
		extrn	GetItem_Value:near
		call	GetItem_Value
		or	al, al
		jnz	short @F
		mov	bx, si
	@@:
		mov	di, offset UMB_Len_ItemTbl
		xor	cx, cx
		call	If_CX_Then_Dis

		ret

Show_UMB_Base	Endp

UMB_Len_ItemTbl:
		dw	offset UMB_LEN_ITEM
		dw	-1
endif;	UMB_AREA_SETUP					;R07 - ends

endif;	NEW_PNP_SETUP

ifdef	ACPI_Support
;R04  IFNDEF	No_ACPI_IRQ_Selectable
  IFDEF ACPI_IRQ_Selectable			;R04
Show_Assign_ACPI_IRQ_Item	Proc	Near
		pushf
		cmp	byte ptr CALLTYPE[bp],POST_CALL
		jne	short @F
		Post_Func_Call E000_Show_Assign_ACPI_IRQ_Item
	@@:
		popf
		ret

Show_Assign_ACPI_IRQ_Item	Endp

Disable_Assign_ACPI_IRQ_Item	Proc	Near
		pushf
		cmp	byte ptr CALLTYPE[bp],POST_CALL
		jne	short @F
		Post_Func_Call E000_Disable_Assign_ACPI_IRQ_Item
	@@:
		popf
		ret

Disable_Assign_ACPI_IRQ_Item	Endp
;R04  ENDIF;No_ACPI_IRQ_Selectable
  ENDIF;ACPI_IRQ_Selectable			;R04
endif;	ACPI_Support
;R06 - starts
ifdef	USB_IRQ_SELECTABLE
Disable_UsbIrq_Item	Proc	Near
		pushf
		cmp	byte ptr CALLTYPE[bp],POST_CALL
		jne	short @F
		Post_Func_Call E000_Disable_UsbIrq_Item
	@@:
		popf
		ret

Disable_UsbIrq_Item	Endp
endif;	USB_IRQ_SELECTABLE
;R06 - end

ifndef	NEW_PNP_SETUP
  IFDEF	PNP_PCI_AUTO
PnP_Auto_Str	db	'PnP BIOS Auto-Config: ', 0
  ENDIF;PNP_PCI_AUTO

Irq_Val			db	'NA',0
			db	'  ',1
			db	'  ',1
			db	'3 ',1
			db	'4 ',1
			db	'5 ',0
			db	'  ',1
			db	'7 ',0
			db	'  ',1
			db	'9 ',0
			db	'10',0
			db	'11',0
  IFDEF	MOUSE
    ifndef	PS2_SETUPABLE			
			db	'12',1
    else	;PS2_SETUPABLE			
			db	'12',0		
    endif	;PS2_SETUPABLE			
  ELSE;	MOUSE
			db	'12',0
  ENDIF;MOUSE
			db	'  ',1
			db	'14',0
			db	'15',0

PCI_Irq1_Str:		db	'1st Available IRQ   : ',0
PCI_Irq2_Str:		db	'2nd Available IRQ   : ',0
PCI_Irq3_Str:		db	'3rd Available IRQ   : ',0
PCI_Irq4_Str:		db	'4th Available IRQ   : ',0
endif;	NEW_PNP_SETUP		

ifndef	ALWAYS_LEVEL_PCI_IRQ				;R08
PCI_Trigger_Str:	db	'PCI IRQ Actived By  : ',0
PCI_Trigger_Val:	db	'Edge ',0
			db	'Level',0
endif;	ALWAYS_LEVEL_PCI_IRQ				;R08
ifndef	NO_PCI_IDE_CARD
PCI_Ide_Irq_Str:	db	'PCI IDE IRQ Map To  : ',0
PCI_Ide_Irq_Val:	db	'PCI-AUTO ',0
			db	'ISA      ',0
			db	'PCI-SLOT1',0
			db	'PCI-SLOT2',0
			db	'PCI-SLOT3',0
			db	'PCI-SLOT4',0

First_Int_Str:		db	' Primary   IDE INT# : ',0
Second_Int_Str:		db	' Secondary IDE INT# : ',0
First_Int_Val:		db	'A',0
			db	'B',0
			db	'C',0
			db	'D',0

endif;	NO_PCI_IDE_CARD

PCI_C2P_WB_Str          db      'CPU to PCI Write Buffer: ',0

PCI_DyBrst_Str          db      'PCI Dynamic Bursting   : ',0

PCI_1WS_Str             db      'PCI Master 0 WS Write  : ',0

Delay_Trans_Str		db      'PCI Delay Transaction  : ',0

Delay_Transaction_Str		db      'Delay Transaction      : ',0

PCI_Master_Read_Caching_Str    	db      'PCI Master Read Caching: ',0

PCI2_Master_PCI1_Retry_Str      db      'PCI#2 Access #1 Retry  : ',0

ifdef	Have_PCI_Master_Broken_Timer_Item
PCI_Master_Broken_Timer_Str	db	'PCI Master Broken Timer: ',0
endif;	Have_PCI_Master_Broken_Timer_Item

PCI_Master_Wait_Write_Str       db      'AGP Master 1 WS Write  : ',0
PCI_Master_Wait_Read_Str        db      'AGP Master 1 WS Read   : ',0

ifdef	Have_ACPI_IO_Node_Item				
ACPI_IO_Node_Str	db	'ACPI I/O Device Node     : ',0	
endif;	Have_ACPI_IO_Node_Item				

ifdef	UMB_AREA_SETUP					;R07 - starts
UMB_BASE_Str	db	'Used MEM base addr  : ', 0
UMB_BASE_Val	db	'N/A ',0
		db	'C800',0
		db	'CC00',0
		db	'D000',0
		db	'D400',0
		db	'D800',0
		db	'DC00',0
UMB_LEN_Str	db	'Used MEM Length     : ', 0
UMB_LEN_Val	db	'8K ',0
		db	'16K',0
		db	'32K',0
		db	'64K',0
endif	;UMB_AREA_SETUP					;R07 - ends

ifdef	USB_IRQ_SELECTABLE					
UsbIrq_Str		db	'Assign IRQ For USB  : ',0	
endif;	USB_IRQ_SELECTABLE					

ifdef	PCI_VGA_IRQ_SETUP_ITEM
PciVgaIRQ_Str		db	'Assign IRQ For VGA  : ',0
endif	;PCI_VGA_IRQ_SETUP_ITEM

ifdef	ACPI_Support
;R04  IFNDEF No_ACPI_IRQ_Selectable
  IFDEF ACPI_IRQ_Selectable		;R04
ACPI_IRQ_Str		db	'Assign IRQ For ACPI : ',0
ACPI_IRQ_Val		db	'NA   ',1
			db	'IRQ9 ',0
			db	'IRQ10',0
			db	'IRQ11',0
;R04  ENDIF; No_ACPI_IRQ_Selectable
  ENDIF;ACPI_IRQ_Selectable		;R04
endif;	ACPI_Support

ifdef	PCI_LATENCY_SELECTABLE
PciLat_Str	db	'PCI Latency Timer(CLK)   : ',0
endif;	PCI_LATENCY_SELECTABLE

ifndef	NO_PCI_IDE_CARD
Show_PCI_IDE_IRQ	Proc	Near

		cmp	al,Special_Before
		je	short Show_PCI_IDE_IRQ_Exit

		pusha
		push	word ptr ATTRIBUTE[bp]
		push	word ptr Cursor_X[bp]

		call	VNormal

		call	Read_Item_Value
		cmp	dl,1
		mov	si,offset Self_Dis
		je	short @F
		mov	si,offset Re_Enable
	@@:
		mov	bx,offset First_IDE_INT
		call	si
		mov	bx,offset Second_IDE_INT
		call	si

		pop	word ptr Cursor_X[bp]
		pop	word ptr ATTRIBUTE[bp]
		popa

Show_PCI_IDE_IRQ_Exit:

		clc
		ret
Show_PCI_IDE_IRQ	Endp
endif;	NO_PCI_IDE_CARD

PCI_Auto_String	db	0

ifndef	NEW_PNP_SETUP		
 IFDEF	PNP_PCI_AUTO	

Show_PnP_Auto	Proc	near
		cmp	al,Special_Before
		je	Show_PnP_Auto_Exit

		pusha
		push	word ptr ATTRIBUTE[bp]
		push	word ptr Cursor_X[bp]

		call	VNormal

		call	Read_Item_Value
		cmp	dl,1
		mov	si,offset Self_Dis
		je	short @F
		mov	si,offset Re_Enable
@@:
		mov	bx, offset PnP_Item_Table
		mov	cx, PnP_Item_Table_L
@@:
		push	bx
		push	cx
		mov	bx, cs:[bx]
		call	si
		pop	cx
		pop	bx
		inc	bx
		inc	bx
		loop	short @b

		pop	word ptr Cursor_X[bp]
		pop	word ptr ATTRIBUTE[bp]
		popa
Show_PnP_Auto_Exit:
		clc
		ret
Show_PnP_Auto	endp

PnP_Item_Table	label	word
		dw	offset PCI_IRQ1
		dw	offset PCI_IRQ2
		dw	offset PCI_IRQ3
		dw	offset PCI_IRQ4
PnP_Item_Table_L	equ	($ - offset PnP_Item_Table)/2

  ENDIF;PNP_PCI_AUTO	
endif;	NEW_PNP_SETUP		

FCODE		ENDS
;--------------------------------------------------------------
;--------------------------------------------------------------
;----- The following codes will be located at E000 ! ----------
;----- The following codes will be located at E000 ! ----------
;----- The following codes will be located at E000 ! ----------
;----- The following codes will be located at E000 ! ----------
;--------------------------------------------------------------
;--------------------------------------------------------------
.386
ECODE		SEGMENT USE16 PARA PUBLIC 'ECODE'
		ASSUME	CS:EGROUP, ES:EGROUP

ifdef	NEW_PNP_SETUP
  IFDEF	ACPI_Support
;R04    ifndef	No_ACPI_IRQ_Selectable
    ifdef	ACPI_IRQ_Selectable	;R04
E000_Show_Assign_ACPI_IRQ_Item	Proc	Near

		pushad
		push	ds

		cmp	al, Special_Before
		jz	Show_Assign_ACPI_IRQ_Item_Exit

		mov	bx,offset Assign_ACPI_IRQ_Item	; Save Now Val Index
		F000_call Read_Item_Value
		push	dx
		
		xor	dx,dx				; Set DX to 0
		F000_call Get_VarString_Offset		; DS:SI is Val offset
		push	si

		;-----------------------;
		; Get ValItem Byte Num	;
		;-----------------------;
		xor	cx, cx				; Pre-Set CX
See_ValItem_Byte_Num:
		lodsb
		inc	cx			
		cmp	al,V_DONE
		je	short See_ValItem_Byte_Num_Done
		cmp	al,V_DONE_1
		je	short See_ValItem_Byte_Num_Done
		jnz	short See_ValItem_Byte_Num
See_ValItem_Byte_Num_Done:			; CX is ValItem Byte Num !

		;-----------------------------------------------;
		; Set Valitem to Valid According to Other Item	;
		;-----------------------------------------------;
		xor	bl,bl
		mov     si,offset Irq11_Item
		F000_call	GetItem_Value
		or	bl,al			; BL[2] 0 : IRQ11 PNP/PCI
						;       1 : IRQ11 Legacy ISA
		shl	bl,1
		mov     si,offset Irq10_Item
		F000_call	GetItem_Value
		or	bl,al			; BL[1] 0 : IRQ10 PNP/PCI
						;       1 : IRQ10 Legacy ISA
		shl	bl,1
		mov     si,offset Irq9_Item
		F000_call	GetItem_Value
		or	bl,al			; BL[0] 0 : IRQ9 PNP/PCI
						;       1 : IRQ9 Legacy ISA
		pop	si
		pushad
 		F000_call	F000_Shadow_W
		popad

		add	si,cx			; SI Assign to the Attribute
		dec	si			; of 'NA' Val.
		mov	byte ptr ds:[si],V_DONE_1
		cmp	bl,07h
		jnz	short @f
		mov	byte ptr ds:[si],V_DONE
@@:
		add	si,cx			; SI Assign to IRQ9 Val.
		mov	byte ptr ds:[si],V_DONE
		test	bl,01h			; If IRQ9 set Legacy ISA ?
		jz	short @f		; No, jmp !
		mov	byte ptr ds:[si],V_DONE_1
@@:
		add	si,cx			; SI Assign to IRQ10 Val.
		mov	byte ptr ds:[si],V_DONE
		test	bl,02h			; If IRQ10 set Legacy ISA ?
		jz	short @f		; No, jmp !
		mov	byte ptr ds:[si],V_DONE_1
@@:
		add	si,cx			; SI Assign to IRQ11 Val.
		mov	byte ptr ds:[si],V_DONE
		test	bl,04h			; If IRQ11 set Legacy ISA ?
		jz	short @f		; No, jmp !
		mov	byte ptr ds:[si],V_DONE_1
@@:
 		F000_call	F000_Shadow_R

		;-----------------------;
		; Display ACPI IRQ Item	;
		;-----------------------;
		pop	dx
		mov	bx,offset Assign_ACPI_IRQ_Item
		F000_call	Write_Item_Value
		F000_call	Display_Whole_Item

Show_Assign_ACPI_IRQ_Item_Exit:
		pop	ds
		popad

		clc
		ret
E000_Show_Assign_ACPI_IRQ_Item	Endp

E000_Disable_Assign_ACPI_IRQ_Item	Proc	Near


		mov     si,offset ACPI_option_Item
		F000_call	GetItem_Value
		or	al,al			; ZE : ACPI
						; NZ : Not ACPI
		jz	short Disable_Assign_ACPI_IRQ_Item_Exit
		F000_call	Self_Disable
		stc
		ret

Disable_Assign_ACPI_IRQ_Item_Exit:
		ret
E000_Disable_Assign_ACPI_IRQ_Item	Endp

;R04    endif;	No_ACPI_IRQ_Selectable
    endif;	ACPI_IRQ_Selectable		;R04
  ENDIF;ACPI_Support
;R06 - starts
ifdef	USB_IRQ_SELECTABLE
E000_Disable_UsbIrq_Item	Proc	Near

		mov     si,offset ONBD_USB_Item
		F000_call	GetItem_Value
		or	al,al			; ZE : enable
						; NZ : disable
		jz	short Disable_UsbIrq_Item_Exit
		F000_call	Self_Disable
		stc
Disable_UsbIrq_Item_Exit:
		ret

Disable_Disable_UsbIrq_Item_Exit:
		ret
E000_Disable_UsbIrq_Item	Endp
endif;	USB_IRQ_SELECTABLE
;R06 - ends
endif;	NEW_PNP_SETUP

ECODE		ENDS

.386
XGROUP		GROUP	XCODE
XCODE		SEGMENT USE16 PARA PUBLIC 'XCODE'
		ASSUME	CS:XGROUP,ES:XGROUP

ifdef	NEW_PNP_SETUP

ifndef	NO_ISA_PNP					;R01
  IFNDEF PNP_OS_Default_Disable		
	DEFINE_ITEM_MSG	OS_Setup_Item, OS_Setup_Str, OS_Setup_Val, ,NEED_STD_HELP
  ENDIF; PNP_OS_Default_Disable		
endif	;NO_ISA_PNP					;R01
	DEFINE_ITEM_MSG	PnP_Control_Item, PnP_Control_Str, PnPCtrl_Val, ,NEED_STD_HELP
ifdef	ESCD_SUPPORT					;R01
	DEFINE_ITEM_MSG	Reset_Escd_Item, Reset_Escd_Str, Dis_Str, ,NEED_STD_HELP
endif	;ESCD_SUPPORT					;R01
  IFNDEF Have_ACPI_IO_Node_Item     
	DEFINE_ITEM_MSG	ACPI_IO_Node_Item, ACPI_IO_Node_Str, Dis_Str, ,NEED_STD_HELP
  ENDIF; Have_ACPI_IO_Node_Item     
	DEFINE_ITEM_MSG	Irq3_Item, IRQ3_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq4_Item, IRQ4_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq5_Item, IRQ5_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq7_Item, IRQ7_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq9_Item, IRQ9_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq10_Item, IRQ10_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq11_Item, IRQ11_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq12_Item, IRQ12_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq14_Item, IRQ14_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Irq15_Item, IRQ15_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Dma0_Item, DMA0_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Dma1_Item, DMA1_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Dma3_Item, DMA3_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Dma5_Item, DMA5_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Dma6_Item, DMA6_Str, Bus_Var, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Dma7_Item, DMA7_Str, Bus_Var, ,NEED_STD_HELP

;R03 - starts
ifdef	PCI_IRQ_SELECTABLE
	DEFINE_ITEM_MSG	Slot1_IRQ, Slot1Irq1_Str, PIrq_Val, , NEED_STD_HELP
	DEFINE_ITEM_MSG	Slot2_IRQ, Slot2Irq1_Str, PIrq_Val, , NEED_STD_HELP
  ifndef  TWO_PCI_SLOT_ONLY
	DEFINE_ITEM_MSG	Slot3_IRQ, Slot3Irq1_Str, PIrq_Val, , NEED_STD_HELP
   ifndef THREE_PCI_SLOT_ONLY
	DEFINE_ITEM_MSG	Slot4_IRQ, Slot4Irq1_Str, PIrq_Val, , NEED_STD_HELP
;R03B - starts
ifdef	FIVE_PCI_SLOTS
	DEFINE_ITEM_MSG	Slot5_IRQ, Slot5Irq1_Str, PIrq_Val, , NEED_STD_HELP
endif;	FIVE_PCI_SLOTS
;R03B - ends
   endif  ;THREE_PCI_SLOT_ONLY
  endif	  ;TWO_PCI_SLOT_ONLY
endif	;PCI_IRQ_SELECTABLE
;R03 - ends
else		;NEW_PNP_SETUP

  IFDEF	PNP_PCI_AUTO
      	DEF_MSGINE_ITEM	PnP_Auto_Item, PnP_Auto_Str, Dis_Str, ,NEED_STD_HELP
  ENDIF;PNP_PCI_AUTO
	DEFINE_ITEM_MSG	PCI_IRQ1, PCI_Irq1_Str, Irq_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	PCI_IRQ2, PCI_Irq2_Str, Irq_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	PCI_IRQ3, PCI_Irq3_Str, Irq_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	PCI_IRQ4, PCI_Irq4_Str, Irq_Val, ,NEED_STD_HELP

endif;	NEW_PNP_SETUP

	DEFINE_ITEM_MSG	PCI_C2P_WB_Item, PCI_C2P_WB_Str, Dis_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG PCI_DyBrst_Item, PCI_DyBrst_Str, Dis_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	PCI_1WS_Item, PCI_1WS_Str, Ena_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG Delay_Trans_Item, Delay_Trans_Str, Dis_Str, ,NEED_STD_HELP
ifndef	VT596		       
	DEFINE_ITEM_MSG PCI_Master_Read_Item, PCI_Master_Read_Str, Dis_Str, ,NEED_STD_HELP
endif;	VT596
ifdef 	Have_PCI_Master_Broken_Timer_Item
	DEFINE_ITEM_MSG PCI_Master_Broken_Timer_Item, PCI_Master_Broken_Timer_Str, Dis_Str, ,NEED_STD_HELP
endif;	Have_PCI_Master_Broken_Timer_Item
	DEFINE_ITEM_MSG PCI2_Master_PCI1_Retry_Item, PCI2_Master_PCI1_Retry_Str, Dis_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG PCI_Master_Wait_Write_Item, PCI_Master_Wait_Write_Str, Dis_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG PCI_Master_Wait_Read_Item, PCI_Master_Wait_Read_Str, Dis_Str, ,NEED_STD_HELP
ifndef	ALWAYS_LEVEL_PCI_IRQ				;R08
	DEFINE_ITEM_MSG	PCI_IRQ_Method, PCI_Trigger_Str, PCI_Trigger_Val, ,NEED_STD_HELP
endif;	ALWAYS_LEVEL_PCI_IRQ				;R08
ifndef	NO_PCI_IDE_CARD			;R15
	DEFINE_ITEM_MSG	PCI_IDE_IRQ	, PCI_Ide_Irq_Str, PCI_Ide_Irq_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	First_IDE_INT, First_Int_Str, First_Int_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	Second_IDE_INT, Second_Int_Str, First_Int_Val, ,NEED_STD_HELP
endif	;NO_PCI_IDE_CARD		;R15
ifdef	SCSI_ITEM_IN_PCIFEAT
  IF	SCSI_ITEM
	DEFINE_ITEM_MSG	Onboard_Scsi_Item, OnboardScsi_Str, Dis_Str, ,NEED_STD_HELP
  ENDIF	;SCSI_ITEM
endif;	SCSI_ITEM_IN_PCIFEAT
ifdef	NEW_PNP_SETUP			;R07 - starts
ifdef	UMB_AREA_SETUP
	DEFINE_ITEM_MSG	UMB_BASE_ITEM, UMB_Base_Str, UMB_Base_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG	UMB_LEN_ITEM, UMB_Len_Str, UMB_Len_Val, ,NEED_STD_HELP
endif	;UMB_AREA_SETUP
endif	;NEW_PNP_SETUP			;R07 - ends
ifdef	USB_IRQ_SELECTABLE
	DEFINE_ITEM_MSG	UsbIrq_Item, UsbIrq_Str, Dis_Str, ,NEED_STD_HELP
endif;	USB_IRQ_SELECTABLE

ifdef	VGA_IRQ_NOT_IN_BFEATURE			
  IFDEF	PCI_VGA_IRQ_SETUP_ITEM
	DEFINE_ITEM_MSG Assign_Pci_IRQ_Item, PciVgaIRQ_Str, Dis_Str, ,NEED_STD_HELP
  ENDIF;PCI_VGA_IRQ_SETUP_ITEM
endif;	VGA_IRQ_NOT_IN_BFEATURE
ifdef	ACPI_Support
;R04  IFNDEF No_ACPI_IRQ_Selectable
  IFDEF ACPI_IRQ_Selectable			;R04
	DEFINE_ITEM_MSG	Assign_ACPI_IRQ_Item, ACPI_IRQ_Str, ACPI_IRQ_Val, ,NEED_STD_HELP
;R04  ENDIF; No_ACPI_IRQ_Selectable
  ENDIF; ACPI_IRQ_Selectable			;R04
endif;	ACPI_Support

XCODE		ENDS
		END
