;	[]===========================================================[]
;
;	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
;----------------------------------------------------------------------------
;R09	04/16/99 RAY	Add AWIN_WATCHDOG
;R08	03/31/99 PAL	Add ESS1869 onboard PNP sound chip Disable function
;R07	03/02/99 ADS	Add "TV_OUT_ITEM_IN_IOFEAT" to move TV_OUT Item to
;			IOFEAT.
;R06	02/10/99 RAY	Add option: PciLanROM_Control
;R05	01/29/99 PAL	Add "LanChip_Cntl_USE_ClkGen" option
;R04	01/19/99 RIC	Add "Control_Onchip_By_GPO_Low_CMOS"
;			    "Control_Onchip_By_GPO_Low_CMOS_BIT" definition.
;R03 	11/27/98 PAL	Add "SndChip_Cntl_USE_ClkGen" option 
;R02	09/14/98 RIC	Add "Have_CDROM_PIOMode_Item" define.
;R01	08/26/98 RIC	Add SCSI Item.
;R00	08/25/98 RIC	Initial revision.

		PAGE	56,132
		.286

	;---------------;
	;   Include	;
	;---------------;
		include	bios.cfg
		include	bsetup.inc
		include	setup.ext
		include	common.equ
		include	common.mac
		include	SUPERIO.ESH

	;-----------------------;
	;  External Subroutine	;
	;-----------------------;
		Extrn	Self_Dis:near
		Extrn	Re_Enable:near

	;-----------------------;
	;  External Item/Label	;
	;-----------------------;
		DECLARE_MULTI_LANGUAGE	;macro to declare externals
		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

	;---------------;
	;    Public	;
	;---------------;
ifdef	NEW_IO_FEATURE
		Public	IO_Feature_Special_Do
		Public	IO_Feature_Special_Show
		Public	IO_Feature_StartUp_Str
		Public	IO_Feature_Start
		Public	IO_Feature_End
		Public	IO_Auto_Table
		Public	IO_EndAuto_Table
		Public	IO_Auto_String
endif;	NEW_IO_FEATURE

DGROUP		GROUP	FCODE
FCODE		SEGMENT	DWORD PUBLIC 'CODE'
		ASSUME	CS:DGROUP,DS:DGROUP

ifdef	NEW_IO_FEATURE

		db	'$ML$'		;Signature For Multi-Language
IO_Feature_Special_Do:
			dw	IO_Feature_Do_NO
  IFNDEF ONBOARD_IO_IN_CHIPSETSETUP
			include	superio.do
  ENDIF; ONBOARD_IO_IN_CHIPSETSETUP
IO_Feature_Do_NO	EQU	(($ - offset IO_Feature_Special_Do)-2)/4

IO_Feature_Special_Show:
		       	dw	IO_Feature_Show_NO
       	dw	ONBD_1IDE_Item, offset Show_First_IDE
       	dw	ONBD_2IDE_Item,offset Show_Second_IDE
ifdef	MSI_SCSI_Special				;R01 - starts
	dw	Onboard_Scsi_Item,offset Show_MSI_SCSI
	dw	MSI_SCSI_Ch1_Auto_Item,offset Show_MSI_Ch1
	dw	MSI_SCSI_Ch2_Auto_Item,offset Show_MSI_Ch2
endif;	MSI_SCSI_Special				;R01 - ends
  IFDEF	AIOCMOS
			include	AUDIO.SHW
  ENDIF;AIOCMOS
  IFNDEF ONBOARD_IO_IN_CHIPSETSETUP			
			include	superio.shw	
  ENDIF; ONBOARD_IO_IN_CHIPSETSETUP		

  IFDEF	USB_Item_Not_In_Cfeat					
    ifdef VT586_USB						
      IFDEF	USB_SUPPORT						
		dw	ONBD_USB_Item, offset Show_USB_Legacy	
      ENDIF;	USB_SUPPORT						
    endif;VT586_USB						
  ENDIF;USB_Item_Not_In_Cfeat					
IO_Feature_Show_NO	EQU	(($ - offset IO_Feature_Special_Show)-2)/4

IO_Feature_StartUp_Str	label	near
		STRSHOW	<,,,offset Common_StartUp_Str>
		POS	<,29,PAGE_NAME_Y>
		public	IO_FEATURE_STR
IO_FEATURE_STR:
		db	'INTEGRATED PERIPHERALS'
		db	0

;----------------------------------------------------------------------------

		ALIGN	4
		db	0
IO_Auto_Table	label	near
IO_EndAuto_Table	label	near


;[]======================================================================[]
;
;			Menuitems
;
;[]======================================================================[]
IO_Feature_START	Label	Near

DEFINE_ITEM	MACRO	MENU_NAME,GAP
IF	Yaxis EQ 23
 IF	Xaxis LT 40
	Xaxis = 42
	Yaxis = 3
 ENDIF	;
ENDIF	;
IFNB	<GAP>
 IF	Yaxis GT 3		;if Yaxis great than the top row, process gap
  IFDEF LAST_GAP_POSITION
   IF	Xaxis+Yaxis NE LAST_GAP_POSITION
	Yaxis = Yaxis + 1
   ENDIF;
  ELSE	;
	Yaxis = Yaxis + 1
  ENDIF ;LAST_GAP_POSITION
 ENDIF	;
	Yaxis = Yaxis + GAP
 IF	GAP EQ 0
	LAST_GAP_POSITION = Xaxis + Yaxis
 ENDIF	;
ELSE	;
	Yaxis = Yaxis + 1
ENDIF	;GAP
IFNB	<MENU_NAME>
	PUBLIC	MENU_NAME
	MENU_NAME:
ENDIF
		ENDM

ifndef	SCSI_ITEM_IN_PCIFEAT				;R01 - starts
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
endif;	SCSI_ITEM_IN_PCIFEAT				;R01 - end

endif	;NEW_IO_FEATURE

IDE_CMOS	EQU	46H
IO_CMOS		EQU	49h

ifdef	USB_Item_Not_In_Cfeat				
  IFDEF	USB_SUPPORT					
CF_CMOS         EQU     40H				
USB_CMOS	EQU	CF_CMOS				
USB_CMOS_BIT	EQU	80h				
  ENDIF;USB_SUPPORT					
endif;	USB_Item_Not_In_Cfeat				

Xaxis   =       2
Yaxis   =       3

DEFINE_ITEM     ONBD_1IDE_Item
        menuitem <0,\
          offset ONBD_1IDE_Str,NOCT,00000001b,IDE_CMOS,00000001b,\
          offset Dis_Str,0,1,Xaxis,Yaxis,01h,1h,offset ONBD_1IDE_Item_Lang_Tbl>

ifndef  ONCHIP_2ND_ALWAYS_DISABLE

DEFINE_ITEM     ONBD_2IDE_Item
        menuitem <0,\
          offset ONBD_2IDE_Str,NOCT,00010000b,IDE_CMOS,00010000b,\
          offset Dis_Str,0,1,Xaxis,Yaxis,10h,10h,offset ONBD_2IDE_Item_Lang_Tbl>
endif;  ONCHIP_2ND_ALWAYS_DISABLE

DEFINE_ITEM     IDE_PF_Item
        menuitem <0,\
          offset IDE_PF_Str,NOCT,00000001b,IDE_CMOS+1,00000001b,\
          offset Dis_Str,0,1,Xaxis,Yaxis,0,1h,Offset IDE_PF_Item_Lang_Tbl>

ifdef   IDE_ITEM_NOT_IN_BFEATURE
DEFINE_ITEM     IdeBlock_Item
        menuitem <0,\
          offset IdeBlock_Str,NOCT,01000000b,11h,01000000b,\
          offset Dis_Str,0,1,Xaxis,Yaxis,0,40h,Offset IdeBlock_Item_Lang_Tbl>
endif;  IDE_ITEM_NOT_IN_BFEATURE

ifdef	Have_IDE_Threshold_Item
DEFINE_ITEM	IDE_Threshold_Item
	menuitem <0,\
	offset IDE_Threshold_Str,NOCT,00000001b,IDE_CMOS+1,00010000b,\
	offset Dis_Str,0,1,Xaxis,Yaxis,00h,10h,offset Std_Help_Str>
endif;	Have_IDE_Threshold_Item

ifdef	Have_CDROM_PIOMode_Item				;R02 - starts
  IFNDEF	CDROM_PIOMode_CMOS
CDROM_PIOMode_CMOS	EQU	IDE_CMOS+1
CDROM_PIOMode_CMOS_Bit	EQU	00010000b
  ENDIF;	CDROM_PIOMode_CMOS
DEFINE_ITEM     CDROM_PIOMode_Item
        menuitem <0,\
          offset CDROM_PIOMode_Str,NOCT,00000001b,CDROM_PIOMode_CMOS,CDROM_PIOMode_CMOS_Bit,\
          offset Ena_Str,0,1,Xaxis,Yaxis,00h,00h,offset CDROM_PIOMode_Item_Lang_Tbl>
endif;	Have_CDROM_PIOMode_Item				;R02 - starts

DEFINE_ITEM     IdeA_Mode_Item
        menuitem <0,\
          offset IDEA_Mode_Str,NOCT,11100000b,IDE_CMOS,11100000b,\
          offset IDE_mode_Val,0,5,Xaxis,Yaxis,00h,00h,offset IdeA_Mode_Item_Lang_Tbl>

DEFINE_ITEM     IdeB_Mode_Item
        menuitem <0,\
          offset IDEB_Mode_Str,NOCT,00001110b,IDE_CMOS,00001110b,\
          offset IDE_mode_Val,0,5,Xaxis,Yaxis,00h,00h,offset IdeB_Mode_Item_Lang_Tbl>

ifndef  ONCHIP_2ND_ALWAYS_DISABLE
DEFINE_ITEM     IdeC_Mode_Item
        menuitem <0,\
          offset IDEC_Mode_Str,NOCT,11100000b,IDE_CMOS+1,11100000b,\
          offset IDE_mode_Val,0,5,Xaxis,Yaxis,00h,00h,offset IdeC_Mode_Item_Lang_Tbl>

DEFINE_ITEM     IdeD_Mode_Item
        menuitem <0,\
          offset IDED_Mode_Str,NOCT,00001110b,IDE_CMOS+1,00001110b,\
          offset IDE_mode_Val,0,5,Xaxis,Yaxis,00h,00h,offset IdeD_Mode_Item_Lang_Tbl>
endif   ;ONCHIP_2ND_ALWAYS_DISABLE

ifdef	Ultra_DMA33_support
DEFINE_ITEM	IdeA_Sdma_Item
		menuitem <0,\
			  offset IDEA_Sdma_Str,NOCT,00000001b,IDE_CMOS+2,00000001b,\
			  offset Sdma_Str,0,1,Xaxis,Yaxis,00h,01h,offset IdeA_Sdma_Item_Lang_Tbl>

DEFINE_ITEM	IdeB_Sdma_Item
		menuitem <0,\
			  offset IDEB_Sdma_Str,NOCT,00000010b,IDE_CMOS+2,00000010b,\
			  offset Sdma_Str,0,1,Xaxis,Yaxis,00h,02h,offset IdeB_Sdma_Item_Lang_Tbl>
DEFINE_ITEM	IdeC_Sdma_Item
		menuitem <0,\
			  offset IDEC_Sdma_Str,NOCT,00000100b,IDE_CMOS+2,00000100b,\
			  offset Sdma_Str,0,1,Xaxis,Yaxis,00h,04h,offset IdeC_Sdma_Item_Lang_Tbl>
DEFINE_ITEM	IdeD_Sdma_Item
		menuitem <0,\
			  offset IDED_Sdma_Str,NOCT,00001000b,IDE_CMOS+2,00001000b,\
			  offset Sdma_Str,0,1,Xaxis,Yaxis,00h,08h,offset IdeD_Sdma_Item_Lang_Tbl>
endif	;Ultra_DMA33_support

ifndef	NO_PCI_IDE_2ND_CONTROL
ifdef	PCI_IDE_2nd_Channel_Not_At_BF
DEFINE_ITEM     Second_IDE_channel
	menuitem <0,\
	  offset Second_Ide_Str,NOCT,08h,3eH,08h,\
	  offset Dis_Str,0,1,Xaxis,Yaxis,0h,0h,Offset Second_IDE_channel_Lang_Tbl>
endif	;PCI_IDE_2nd_Channel_Not_At_BF
endif;	NO_PCI_IDE_2ND_CONTROL

ifdef	AGP_SLOTID
DEFINE_ITEM	FirstInitAGP_Item
	menuitem <0,\
		  offset FirstInitAGP_Str,NOCT,10h,IDE_CMOS+2,00110000b,\
		  offset FirstInitAGP_Val,0,2,Xaxis,Yaxis,00h,00h,offset FirstInitAGP_Item_Lang_Tbl>
endif	;AGP_SLOTID

;R08 - start
ifdef	PROC_SPECIAL_ISAPNP
DEFINE_ITEM	ESS1869_Item
	menuitem <2,\
		  offset ESS1869_Str,NOCT,ESS1869_CMOS_Bit,ESS1869_CMOS,ESS1869_CMOS_Bit,\
		  offset Dis_Str,0h,1h,Xaxis,Yaxis,ESS1869_CMOS_Bit,ESS1869_CMOS_Bit,offset NullStr>
endif;	PROC_SPECIAL_ISAPNP
;R08 - end

ifdef	NEW_IO_FEATURE

DEFINE_ITEM	,0
		IDECMOS= 48h
		IOCMOS = IO_CMOS	
		include superio.mnu

ifdef	AIOCMOS
		include	AUDIO.MNU
endif	;AIOCMOS

ifndef	VT596			
  IFDEF	Control_Onchip_By_GPIO_Low
DEFINE_ITEM     ONBD_Chip_Item
        menuitem <0,\
          offset ONBD_Chip_Str,NOCT,080h,IO_CMOS+2,080h,\		
          offset Dis_Str,0,1,Xaxis,Yaxis,080h,080h,offset ONBD_Chip_Item_Lang_Tbl>
  ENDIF;Control_Onchip_By_GPIO_Low
else;	VT596						
  IFDEF	Control_Onchip_By_GPO_Low
	ifndef	Control_Onchip_By_GPO_Low_CMOS				;R04
	Control_Onchip_By_GPO_Low_CMOS		EQU	IO_CMOS+2	;R04
	Control_Onchip_By_GPO_Low_CMOS_BIT	EQU	080h		;R04
	endif;	Control_Onchip_By_GPO_Low_CMOS				;R04
DEFINE_ITEM     ONBD_Chip_Item
        menuitem <0,\
offset ONBD_Chip_Str,NOCT,080h,Control_Onchip_By_GPO_Low_CMOS,Control_Onchip_By_GPO_Low_CMOS_BIT,\		
offset Dis_Str,0,1,Xaxis,Yaxis,080h,Control_Onchip_By_GPO_Low_CMOS_BIT,offset ONBD_Chip_Item_Lang_Tbl>
  ENDIF;Control_Onchip_By_GPO_Low
  IFDEF	Control_Onchip_By_GPO_High
	ifndef	Control_Onchip_By_GPO_Low_CMOS				;R04
	Control_Onchip_By_GPO_Low_CMOS		EQU	IO_CMOS+2	;R04
	Control_Onchip_By_GPO_Low_CMOS_BIT	EQU	080h		;R04
	endif;	Control_Onchip_By_GPO_Low_CMOS				;R04
DEFINE_ITEM     ONBD_Chip_Item
        menuitem <0,\
offset ONBD_Chip_Str,NOCT,080h,Control_Onchip_By_GPO_Low_CMOS,Control_Onchip_By_GPO_Low_CMOS_BIT,\		
offset Dis_Str,0,1,Xaxis,Yaxis,080h,Control_Onchip_By_GPO_Low_CMOS_BIT,offset ONBD_Chip_Item_Lang_Tbl>
  ENDIF;Control_Onchip_By_GPO_High
endif;	VT596						

ifdef	MIDI_IRQ_CMOS
DEFINE_ITEM	MidiIrq_Item	
	menuitem <0,\
		offset MidiIrq_Str,NOCT,MIDI_IRQ_BIT,MIDI_IRQ_CMOS,MIDI_IRQ_BIT,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0,0,offset Std_Help_Str>
endif;	MIDI_IRQ_CMOS

ifdef	USB_Item_Not_In_Cfeat
  IFDEF	VT586_USB
DEFINE_ITEM     ONBD_USB_Item
        menuitem <0,\
          offset ONBD_USB_Str,NOCT,04h,CF_CMOS+2,040h,\
          offset Ena_Str,0,1,Xaxis,Yaxis,04h,040h,offset ONBD_USB_Item_Lang_Tbl>
    ifdef	USB_SUPPORT
DEFINE_ITEM	Usb_Legacy_Item
	menuitem <0,\
		offset UsbLegacy_Str,NOCT,USB_CMOS_BIT,USB_CMOS,USB_CMOS_BIT,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0,0,offset Usb_Legacy_Item_Lang_Tbl>
    endif	;USB_SUPPORT
  ENDIF;VT586_USB
endif;	USB_Item_Not_In_Cfeat

ifndef	SCSI_ITEM_IN_PCIFEAT				;R01 - starts
IF	SCSI_ITEM
DEFINE_ITEM	Onboard_Scsi_Item
		menuitem <0,\
			  offset OnboardScsi_Str,NOCT,80h,IDE_CMOS+2,80h,\
			  offset Dis_Str,0,1,Xaxis,Yaxis,80h,80h,offset Onboard_Scsi_Item_Lang_Tbl>
ifdef	MSI_SCSI_Special
DEFINE_ITEM	MSI_SCSI_Ch1_Auto_Item
	menuitem <0,\
		  offset MSI_SCSI_Ch1_Auto_Str,NOCT,01h,MSI_SCSI_CMOS,01h,\
		  offset Ena_Str,0,1,Xaxis,Yaxis,0h,0h,offset MSI_SCSI_Ch1_Auto_Item_Lang_Tbl>

DEFINE_ITEM	MSI_SCSI_Ch1_Cntl_Item
	menuitem <0,\
		  offset MSI_SCSI_Ch1_Cntl_Str,NOCT,02h,MSI_SCSI_CMOS,02h,\
		  offset Dis_Str,0,1,Xaxis,Yaxis,02h,02h,offset MSI_SCSI_Ch1_Cntl_Item_Lang_Tbl>

DEFINE_ITEM	MSI_SCSI_Ch2_Auto_Item
	menuitem <0,\
		  offset MSI_SCSI_Ch2_Auto_Str,NOCT,04h,MSI_SCSI_CMOS,04h,\
		  offset Ena_Str,0,1,Xaxis,Yaxis,0h,0h,offset MSI_SCSI_Ch2_Auto_Item_Lang_Tbl>

DEFINE_ITEM	MSI_SCSI_Ch2_Hibyte_Item
	menuitem <0,\
		  offset MSI_SCSI_Ch2_Hibyte_Str,NOCT,08h,MSI_SCSI_CMOS,08h,\
		  offset Dis_Str,0,1,Xaxis,Yaxis,08h,08h,offset MSI_SCSI_Ch2_Hibyte_Item_Lang_Tbl>

DEFINE_ITEM	MSI_SCSI_Ch2_Lobyte_Item
	menuitem <0,\
		  offset MSI_SCSI_Ch2_Lobyte_Str,NOCT,10h,MSI_SCSI_CMOS,10h,\
		  offset Dis_Str,0,1,Xaxis,Yaxis,10h,10h,offset MSI_SCSI_Ch2_Lobyte_Item_Lang_Tbl>

endif;	MSI_SCSI_Special

ifdef	GIGA_SCSI_Special
DEFINE_ITEM	GIGA_SCSI_Hibyte_Item
	menuitem <0,\
		  offset GIGA_SCSI_Hibyte_Str,NOCT,01h,GIGA_SCSI_CMOS,01h,\
		  offset Ena_Str,0,1,Xaxis,Yaxis,0h,0h,offset Std_Help_Str>

DEFINE_ITEM	GIGA_SCSI_Lobyte_Item
	menuitem <0,\
		  offset GIGA_SCSI_Lobyte_Str,NOCT,02h,GIGA_SCSI_CMOS,02h,\
		  offset Ena_Str,0,1,Xaxis,Yaxis,0h,0h,offset Std_Help_Str>

DEFINE_ITEM	GIGA_U2_Term_Item
	menuitem <0,\
		  offset GIGA_U2_Term_Str,NOCT,04h,GIGA_SCSI_CMOS,04h,\
		  offset Ena_Str,0,1,Xaxis,Yaxis,0h,0h,offset Std_Help_Str>
endif;	GIGA_SCSI_Special

ENDIF	;SCSI_ITEM
endif;	SCSI_ITEM_IN_PCIFEAT				;R01 -ends

;R03 - start
ifdef	SndChip_Cntl_USE_ClkGen
DEFINE_ITEM 	SndChip_Item
	menuitem <2,\
	  offset SndChip_Str,NOCT,SndChip_CMOS_Bit,SndChip_CMOS,SndChip_CMOS_Bit,\
	  offset Ena_Str,0h,1h,Xaxis,Yaxis,0h,0h,offset SndChip_Item_Lang_Tbl>
endif;	SndChip_Cntl_USE_ClkGen
;R03 - end

;R05 - start
ifdef	LanChip_Cntl_USE_ClkGen
DEFINE_ITEM 	LanChip_Item
	menuitem <2,\
	  offset LanChip_Str,NOCT,LanChip_CMOS_Bit,LanChip_CMOS,LanChip_CMOS_Bit,\
	  offset Ena_Str,0h,1h,Xaxis,Yaxis,0h,0h,offset LanChip_Item_Lang_Tbl>
endif;	LanChip_Cntl_USE_ClkGen
;R05 - end

;R06 - starts
ifdef	PciLanROM_Control
DEFINE_ITEM 	PciLanROM_Item
	menuitem <2,\
	  offset PciLanROM_Str,NOCT,PciLanROM_CMOS_Bit,PciLanROM_CMOS,PciLanROM_CMOS_Bit,\
	  offset Ena_Str,0h,1h,Xaxis,Yaxis,0h,0h,offset PciLanROM_Item_Lang_Tbl>
endif	;PciLanROM_Control
;R06 - ends
;R07 - starts
ifdef	TV_OUT_ITEM_IN_IOFEAT
DEFINE_ITEM	TV_Out_Mode_Item
	menuitem <0,\
		offset TV_Out_Mode_Str,NOCT,TV_Out_Mode_CMOS_BIT,TV_Out_Mode_CMOS,TV_Out_Mode_CMOS_BIT,\
		offset TV_Out_Mode_Val,0,1,Xaxis,Yaxis,0,0,offset TV_Out_Mode_Item_Lang_Tbl>
endif;	TV_OUT_ITEM_IN_IOFEAT
;R07 - ends

;R09 - starts
ifdef	AWIN_WATCHDOG
DEFINE_ITEM     AWIN_WATCHDOG_item
		menuitem <0,\
			  offset AWIN_WATCHDOG_Str,NOCT,01h,AWIN_WATCHDOG_CMOS,AWIN_WATCHDOG_BIT,\
			  offset Dis_Str,0,1,Xaxis,Yaxis,0,0,Offset Std_Help_Str>
endif	;AWIN_WATCHDOG
;R09 - eds

IO_Feature_END		Label	Near

IO_Auto_String		db	0

;R09 - starts
ifdef	AWIN_WATCHDOG
AWIN_WATCHDOG_Str	db	'Watchdog Function     : ', 0
endif	;AWIN_WATCHDOG
;R09 - ends

ifndef	IOFEAT_COLLON_LOC
		COLLON_LOC = 22
else;	IOFEAT_COLLON_LOC
		COLLON_LOC = IOFEAT_COLLON_LOC
endif;	IOFEAT_COLLON_LOC

ifdef	AIOCMOS
		include	AUDIO.STR
endif	;AIOCMOS

ifndef	ONBOARD_IO_IN_CHIPSETSETUP
		include superio.str
endif	;ONBOARD_IO_IN_CHIPSETSETUP

endif	;NEW_IO_FEATURE

ONBD_1IDE_Str           db      'OnChip IDE Channel0 : ',0
ONBD_2IDE_Str           db      'OnChip IDE Channel1 : ',0
IDE_PF_Str		db	'IDE Prefetch Mode   : ',0

ifdef   IDE_ITEM_NOT_IN_BFEATURE
IdeBlock_Str            db      'IDE HDD Block Mode  : ',0
endif;  IDE_ITEM_NOT_IN_BFEATURE

IDEA_mode_Str		db	'Primary Master   '
PIO_str			db	'PIO: ',0
IDEB_mode_Str		db	'Primary Slave    '
			STRSHOW <,,,offset PIO_str>
			db	0
IDEC_mode_Str		db	'Secondary Master '
			STRSHOW <,,,offset PIO_str>
			db	0
IDED_mode_Str		db	'Secondary Slave  '
			STRSHOW <,,,offset PIO_str>
			db	0
IDE_mode_Val            db      'Auto  ',0
                        db      'Mode 0',0
                        db      'Mode 1',0
                        db      'Mode 2',0
                        db      'Mode 3',0
                        db      'Mode 4',0
ifdef	PCI_IDE_2nd_Channel_Not_At_BF
Second_Ide_Str		db	'PCI IDE Channel1    : ',0
endif;	PCI_IDE_2nd_Channel_Not_At_BF

ifdef	Have_CDROM_PIOMode_Item				;R02 - starts
CDROM_PIOMode_Str	db	'CDROM Set PIO Mode  : ',0
endif;	Have_CDROM_PIOMode_Item				;R02 - starts

ifdef	Ultra_DMA33_support
IDEA_Sdma_Str		db	'Primary Master  '
UltraDMA_str		db	'UDMA: ',0
IDEB_Sdma_Str		db	'Primary Slave   '
			STRSHOW <,,,offset UltraDMA_str>
			db	0
IDEC_Sdma_Str		db	'Secondary Master'
			STRSHOW <,,,offset UltraDMA_str>
			db	0
IDED_Sdma_Str		db	'Secondary Slave '
			STRSHOW <,,,offset UltraDMA_str>
			db	0
Sdma_Str		db	'Disable',0
			db	'Auto   ',0
endif	;Ultra_DMA33_support

ifdef	Have_IDE_Threshold_Item
IDE_Threshold_Str	db	'IDE Threshold       : ',0
endif;	Have_IDE_Threshold_Item

ifdef	USB_Item_Not_In_Cfeat
  IFDEF VT586_USB
ONBD_USB_Str            db      'OnChip USB          : ', 0
    ifdef	USB_SUPPORT
UsbLegacy_Str		db	'USB Keyboard Support: ', 0
    endif	;USB_SUPPORT
  ENDIF;VT586_USB
endif;	USB_Item_Not_In_Cfeat
;R03 - start
ifdef	SndChip_Cntl_USE_ClkGen
SndChip_Str		db	'Onboard Audio Device  : ',0
endif;	SndChip_Cntl_USE_ClkGen
;R03 - end
;R05 - start
ifdef	LanChip_Cntl_USE_ClkGen
LanChip_Str		db	'Onboard Lan Device    : ',0
endif;	LanChip_Cntl_USE_ClkGen
;R05 - end

;R06 - starts
ifdef	PciLanROM_Control
PciLanROM_Str		db	'Onboard Lan Boot ROM  : ',0
endif	;PciLanROM_Control
;R06 - ends
;R07 - starts
ifdef	TV_OUT_ITEM_IN_IOFEAT
TV_Out_Mode_Str         db      'TV OUT Mode           : ', 0
TV_Out_Mode_Val		db	'NSTL ',0
			db	'APL  ',0
endif;	TV_OUT_ITEM_IN_IOFEAT
;R07 - ends

ifndef	SCSI_ITEM_IN_PCIFEAT				;R01 - starts
IF	SCSI_ITEM
OnboardScsi_Str:	db	'Onboard PCI SCSI Chip : ',0

ifdef	MSI_SCSI_Special
MSI_SCSI_Ch1_Auto_Str	db	'SCSI CH#1 Auto Config    : ',0
MSI_SCSI_Ch1_Cntl_Str	db	'SCSI CH#1 Termination    : ',0
MSI_SCSI_Ch2_Auto_Str	db	'SCSI CH#2 Auto Config    : ',0
MSI_SCSI_Ch2_Hibyte_Str	db	'SCSI CH#2 Hi-Byte Termin.: ',0
MSI_SCSI_Ch2_Lobyte_Str	db	'SCSI CH#2 Lo-Byte Termin.: ',0
endif;	MSI_SCSI_Special

ifdef	GIGA_SCSI_Special
GIGA_SCSI_Hibyte_Str	db	'SCSI Hi-Byte Terminator  : ',0
GIGA_SCSI_Lobyte_Str	db	'SCSI Lo-Byte Terminator  : ',0
GIGA_U2_Term_Str	db	'SCSI U2 Terminator       : ',0
endif;	GIGA_SCSI_Special

ENDIF	;SCSI_ITEM
endif;	SCSI_ITEM_IN_PCIFEAT				;R01 - ends

ifndef	VT596						
  IFDEF	Control_Onchip_By_GPIO_Low
ONBD_Chip_Str		db	'Onboard Sound Chip  : ', 0
  ENDIF;Control_Onchip_By_GPIO_Low
else;	VT596						
  IFDEF	Control_Onchip_By_GPO_Low
ONBD_Chip_Str		db	'Onboard Sound Chip  : ', 0
  ENDIF;Control_Onchip_By_GPO_Low
  IFDEF	Control_Onchip_By_GPO_High
ONBD_Chip_Str		db	'Onboard Sound Chip  : ', 0
  ENDIF;Control_Onchip_By_GPO_High
endif;	VT596						

ifdef	AGP_SLOTID
FirstInitAGP_Str	db	'Init Display First  : ', 0
FirstInitAGP_Val	db	'PCI Slot', 0
  IFDEF	ONBOARD_VGA_PRIORITY_SELECT
			db	'Onboard ', 0
  ELSE;	ONBOARD_VGA_PRIORITY_SELECT
			db	'Onboard ', 1
  ENDIF;ONBOARD_VGA_PRIORITY_SELECT
			db	'AGP     ', 0
endif	;AGP_SLOTID

;R08 - start
ifdef	PROC_SPECIAL_ISAPNP
ESS1869_Str		db	'ESS1869 Sound Chip      : ',0
endif;	PROC_SPECIAL_ISAPNP
;R08 - end

ifdef	MIDI_IRQ_CMOS
MidiIrq_Str		db	'Assign IRQ for Midi   : ',0
endif;	MIDI_IRQ_CMOS

Show_First_IDE	Proc	Near
		xor	cx, cx
		mov	di, offset _1st_IDE_Tbl
		call	If_CX_Then_Dis
		ret
Show_First_IDE	Endp

Show_Second_IDE	Proc	Near
		xor	cx, cx
		mov	di, offset _2nd_IDE_Tbl
		call	If_CX_Then_Dis
		ret
Show_Second_IDE	Endp

_1st_IDE_Tbl:
		dw	offset IdeA_Mode_Item
		dw	offset IdeB_Mode_Item
ifdef	Ultra_DMA33_support
		dw	offset IdeA_Sdma_Item		
		dw	offset IdeB_Sdma_Item		
endif;	Ultra_DMA33_support				
		dw	-1
_2nd_IDE_Tbl:
		dw	offset IdeC_Mode_Item
		dw	offset IdeD_Mode_Item
ifdef	Ultra_DMA33_support				
		dw	offset IdeC_Sdma_Item		
		dw	offset IdeD_Sdma_Item		
endif;	Ultra_DMA33_support				
		dw	-1
ifdef	USB_Item_Not_In_Cfeat
ifdef	VT586_USB
ifdef	USB_SUPPORT
Show_USB_Legacy	proc	near
		mov	cx, 01
		mov	di, offset USB_Legacy_Tbl
		call	If_CX_Then_Dis
		ret
USB_Legacy_Tbl:
		dw	offset USB_Legacy_Item
		dw	-1
Show_USB_Legacy	endp
endif	;USB_SUPPORT
endif	;VT586_USB
endif;	USB_Item_Not_In_Cfeat

ifdef	MSI_SCSI_Special				;R01 -starts

Show_MSI_SCSI	Proc	Near
		xor	cx, cx
		mov	di, offset MSI_SCSI_Tbl
		call	If_CX_Then_Dis
		ret
Show_MSI_SCSI	endp

MSI_SCSI_Tbl:
		dw	offset MSI_SCSI_Ch1_Auto_Item
		dw	offset MSI_SCSI_Ch2_Auto_Item
		dw	-1

Show_MSI_Ch1	Proc	Near

		cmp	al, Special_Before
		je	short Show_MSI_Ch1_Exit
	
		pusha
		push	word ptr ATTRIBUTE[bp]
		push	word ptr Cursor_X[bp]
	
		call	VNormal
		mov	bx, offset Onboard_Scsi_Item
		call	Read_Item_Value
		mov	si, offset Self_Dis
		or	dl, dl
		jz	short Close_SCSI1
	
		mov	bx, offset MSI_SCSI_Ch1_Auto_Item
		call	Read_Item_Value
		cmp	dl,1
		je	short show_Ch1
	
		mov	si, offset Self_Dis
		jmp	short Close_SCSI1
show_Ch1:
		mov	si, offset Re_Enable
Close_SCSI1:
		mov	bx, offset MSI_SCSI_Ch1_Cntl_Item
		call	si
	
		pop	word ptr Cursor_X[bp]
		pop	word ptr ATTRIBUTE[bp]
		popa

Show_MSI_Ch1_Exit:

		ret

Show_MSI_Ch1	endp

Show_MSI_Ch2	Proc	Near

		cmp	al, Special_Before
		je	short Show_MSI_Ch2_Exit
	
		pusha
		push	word ptr ATTRIBUTE[bp]
		push	word ptr Cursor_X[bp]
	
		call	VNormal
		mov	bx, offset Onboard_Scsi_Item
		call	Read_Item_Value
		mov	si, offset Self_Dis
		or	dl, dl
		jz	short Close_SCSI2
	
		mov	bx, offset MSI_SCSI_Ch2_Auto_Item
		call	Read_Item_Value
		cmp	dl,1
		je	short Show_Ch2
	
		mov	si, offset Self_Dis
		jmp	short Close_SCSI2
Show_Ch2:
		mov	si, offset Re_Enable
Close_SCSI2:
		mov	bx, offset MSI_SCSI_Ch2_Hibyte_Item
		push	si
		call	si
		pop	si
		mov	bx, offset MSI_SCSI_Ch2_Lobyte_Item
		call	si
	
		pop	word ptr Cursor_X[bp]
		pop	word ptr ATTRIBUTE[bp]
		popa

Show_MSI_Ch2_Exit:


		ret

Show_MSI_Ch2	endp

endif;	MSI_SCSI_Special				;R01 -ends

FCODE		ENDS
.386
XGROUP		GROUP	XCODE
XCODE		SEGMENT USE16 PARA PUBLIC 'XCODE'
		ASSUME	CS:XGROUP,ES:XGROUP

	DEFINE_ITEM_MSG ONBD_1IDE_Item, ONBD_1IDE_Str, Dis_Str, ,NEED_STD_HELP
ifndef  ONCHIP_2ND_ALWAYS_DISABLE
	DEFINE_ITEM_MSG ONBD_2IDE_Item, ONBD_2IDE_Str, Dis_Str, ,NEED_STD_HELP
endif;  ONCHIP_2ND_ALWAYS_DISABLE
	DEFINE_ITEM_MSG IDE_PF_Item, IDE_PF_Str, Dis_Str, ,NEED_STD_HELP
ifdef   IDE_ITEM_NOT_IN_BFEATURE
	DEFINE_ITEM_MSG IdeBlock_Item, IdeBlock_Str, Dis_Str, ,NEED_STD_HELP
endif;  IDE_ITEM_NOT_IN_BFEATURE
	DEFINE_ITEM_MSG IdeA_Mode_Item, IDEA_Mode_Str, IDE_mode_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG IdeB_Mode_Item, IDEB_Mode_Str, IDE_mode_Val, ,NEED_STD_HELP
ifndef  ONCHIP_2ND_ALWAYS_DISABLE
	DEFINE_ITEM_MSG IdeC_Mode_Item, IDEC_Mode_Str, IDE_mode_Val, ,NEED_STD_HELP
	DEFINE_ITEM_MSG IdeD_Mode_Item, IDED_Mode_Str, IDE_mode_Val, ,NEED_STD_HELP
endif;  ONCHIP_2ND_ALWAYS_DISABLE
ifdef	Have_CDROM_PIOMode_Item				;R02 - starts
	DEFINE_ITEM_MSG CDROM_PIOMode_Item, CDROM_PIOMode_Str, Ena_Str, ,NEED_STD_HELP
endif;	Have_CDROM_PIOMode_Item				;R02 - starts
ifdef	Ultra_DMA33_support
	DEFINE_ITEM_MSG IdeA_Sdma_Item, IDEA_Sdma_Str, Sdma_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG IdeB_Sdma_Item, IDEB_Sdma_Str, Sdma_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG IdeC_Sdma_Item, IDEC_Sdma_Str, Sdma_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG IdeD_Sdma_Item, IDED_Sdma_Str, Sdma_Str, ,NEED_STD_HELP
endif	;Ultra_DMA33_support
ifndef	NO_PCI_IDE_2ND_CONTROL				
  IFDEF PCI_IDE_2nd_Channel_Not_At_BF
	DEFINE_ITEM_MSG Second_IDE_channel, Second_Ide_Str, Dis_Str, ,NEED_STD_HELP
  ENDIF;PCI_IDE_2nd_Channel_Not_At_BF
endif;	NO_PCI_IDE_2ND_CONTROL

ifdef	AGP_SLOTID
DEFINE_ITEM_MSG	 FirstInitAGP_Item, FirstInitAGP_Str , Ena_Str , , NEED_STD_HELP
endif	;AGP_SLOTID
;R03 - start
ifdef	SndChip_Cntl_USE_ClkGen
DEFINE_ITEM_MSG	 SndChip_Item, SndChip_Str , Ena_Str , , NEED_STD_HELP
endif;	SndChip_Cntl_USE_ClkGen
;R03 - end
;R05 - start
ifdef	LanChip_Cntl_USE_ClkGen
DEFINE_ITEM_MSG	 LanChip_Item, LanChip_Str , Ena_Str , , NEED_STD_HELP
endif;	LanChip_Cntl_USE_ClkGen
;R05 - end

;R06 - starts
ifdef	PciLanROM_Control
DEFINE_ITEM_MSG	 PciLanROM_Item, , Ena_Str , , NEED_STD_HELP
endif	;PciLanROM_Control
;R06 - ends
;R07 - starts
ifdef	TV_OUT_ITEM_IN_IOFEAT
	DEFINE_ITEM_MSG TV_Out_Mode_Item, TV_Out_Mode_Str, TV_Out_Mode_Val, ,NEED_STD_HELP
endif;	TV_OUT_ITEM_IN_IOFEAT
;R07 - ends
ifdef	NEW_IO_FEATURE
  IFNDEF	VT596						
    ifdef	Control_Onchip_By_GPIO_Low
	DEFINE_ITEM_MSG ONBD_Chip_Item, ONBD_Chip_Str, Dis_Str, ,NEED_STD_HELP
    endif;	Control_Onchip_By_GPIO_Low
  ELSE;		VT596						
    ifdef	Control_Onchip_By_GPO_Low
	DEFINE_ITEM_MSG ONBD_Chip_Item, ONBD_Chip_Str, Dis_Str, ,NEED_STD_HELP
    endif;	Control_Onchip_By_GPO_Low
    ifdef	Control_Onchip_By_GPO_High
	DEFINE_ITEM_MSG ONBD_Chip_Item, ONBD_Chip_Str, Dis_Str, ,NEED_STD_HELP
    endif;	Control_Onchip_By_GPO_High
  ENDIF;	VT596						
  IFDEF USB_Item_Not_In_Cfeat
    ifdef VT586_USB
	DEFINE_ITEM_MSG ONBD_USB_Item, ONBD_USB_Str, Ena_Str, ,NEED_STD_HELP
      IFDEF USB_SUPPORT
	DEFINE_ITEM_MSG Usb_Legacy_Item, UsbLegacy_Str, Dis_Str, ,NEED_STD_HELP
      ENDIF;USB_SUPPORT
    endif; VT586_USB
  ENDIF;USB_Item_Not_In_Cfeat

ifndef	SCSI_ITEM_IN_PCIFEAT				;R01 - satrts
IF	SCSI_ITEM
DEFINE_ITEM_MSG	 Onboard_Scsi_Item,OnboardScsi_Str ,Dis_Str , , NEED_STD_HELP
ifdef	MSI_SCSI_Special
DEFINE_ITEM_MSG	 MSI_SCSI_Ch1_Auto_Item,MSI_SCSI_Ch1_Auto_Str ,Ena_Str , , NEED_STD_HELP
DEFINE_ITEM_MSG	 MSI_SCSI_Ch1_Cntl_Item,MSI_SCSI_Ch1_Cntl_Str ,Dis_Str , , NEED_STD_HELP
DEFINE_ITEM_MSG	 MSI_SCSI_Ch2_Auto_Item,MSI_SCSI_Ch2_Auto_Str ,Ena_Str , , NEED_STD_HELP
DEFINE_ITEM_MSG	 MSI_SCSI_Ch2_Hibyte_Item,MSI_SCSI_Ch2_Hibyte_Str ,Dis_Str , , NEED_STD_HELP
DEFINE_ITEM_MSG	 MSI_SCSI_Ch2_Lobyte_Item,MSI_SCSI_Ch2_Lobyte_Str ,Dis_Str , , NEED_STD_HELP
endif;	MSI_SCSI_Special
ENDIF	;SCSI_ITEM
endif;	SCSI_ITEM_IN_PCIFEAT				;R01 - ends

endif;	NEW_IO_FEATURE

XCODE		ENDS
		include	superio.xgp

		END
