;
; $Log: Oemsetup.inf,v $
; Revision 1.3  2002/01/17 03:09:21  rohit
; Modified the Inf file to add more than one card at the same time.
;
; Revision 1.2  2001/12/20 09:01:53  rohit
; The directory structure has been modified to reflect changes for the new
; DLL and Help file for L7 adapter.
;
; Revision 1.1.1.1  2001/12/12 08:35:24  devsimha
; Added Common Base Code
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[Identification]
    OptionType = NetAdapter

[ReturnOptions]
    set Status        = STATUS_FAILED
    set OptionList     = {}
    set OptionTextList = {}
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) in $(LanguageList)
    ifstr(i) $($1) == ""
	    goto returnoptions
    endif
    set PlatformList = ^(PlatformsSupported, 1)
    Ifcontains(i) $($1) in $(PlatformList)
	    goto returnoptions
    else
	    set Status = STATUS_NOTSUPPORTED
	    goto finish_ReturnOptions
    endif
    else
	set Status = STATUS_NOLANGUAGE
	goto finish_ReturnOptions
    endif
returnoptions = +
    set OptionList     = ^(Options, 1)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL
finish_ReturnOptions = +
    Return $(Status) $(OptionList) $(OptionTextList)

[InstallOption]
;==============================================
; setup passes the following parameters to the section:
;   Language to use
;   OptionID to Install
;   SourceDirectory
;   AddCopy  (yes | no)
;   DoCopy   (yes | no)
;   DoConfig (yes | no)
;=============================================

    set Status   = STATUS_FAILED
    set Option   = $($1)
    set SrcDir   = $($2)
    set AddCopy  = $($3)
    set DoCopy   = $($4)
    set DoConfig = $($5)
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) NOT-IN $(LanguageList)
	Return STATUS_NOLANGUAGE
    endif
    set-subst LF = "\n"
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)
    read-syms DialogConstants$(!STF_LANGUAGE)
    ifstr(i) $(!NTN_Origination) == "NCPA"
	set Continue = $(OK)
    endif
    detect date
    set-title  $(FunctionTitle)
    set to   = Begin
    set from = Begin
    set CommonStatus = STATUS_SUCCESSFUL
    EndWait
Begin = +
    Set ActivateDetection = FALSE
    Ifstr(i) $(!NTN_InstallMode) == deinstall
	set StartLabel = removeadapter
    else-Ifstr(i) $(!NTN_InstallMode) == Update
	set StartLabel = UpgradeSoftware
    else-Ifstr(i) $(!NTN_InstallMode) == bind
	set StartLabel = bindingadapter
    else-Ifstr(i) $(!NTN_InstallMode) == configure
	set StartLabel = configureadapter
	Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
	    Debug-Output "Cannot configure the PCnet family driver software."
	    Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error: cannot get an error string."
		goto ShellCodeError
	    endif
	    set Error = $($R0)
	    set from = end
	    set to = end
	    goto nonfatalinfo
	endif
    else
	set StartLabel = installadapter
	set OEM_ABANDON_OPTIONS = {}
	set OEM_ABANDON_SOFTWARE = FALSE
	set OEM_ABANDON_ON = TRUE
    endif
    set IRQValue = *($(IRQList), 9)
    set IOBaseAddrValue = *($(IOBaseAddrList), 17)
    set DMAChannelValue = *($(DMAChannelList), 5)
    set RadioIn  = {4}
    set BusScanValue = "ALL"
    set LED0Value = *($(LEDList), 1)
    set LED1Value = *($(LEDList), 1)
    set LED2Value = *($(LEDList), 1)
    set LED3Value = *($(LEDList), 1)
   ; set TPValue = 0
;magic packet
   ; set MPValue = 0
    set FullDuplexValue = *($(FullDuplexList), 4)
    set ExtPhy = *($(ExtPhyList), 5)
    set BusTimerValue = *($(BusTimerList), 10)
    Set from = $(fatal)
    Set to = $(fatal)
    Goto $(StartLabel)
installadapter = +
    set IsISA = 0
    set Vendor = 4130
    set CardID = 29794
   ; set CardID = 29771
;8192
;29771
    Shell $(UtilityInf), GetPCIInformation, $(Vendor) $(CardID)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    set AdapterList = $($R0)
    set NewAdapterList = {}
    set NumNew = 0
    ForListDo $(AdapterList)
	set BusNumber = *($($),1)
	set SlotNum = *($($),2)
	Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(BusNumber), +
	$(SlotNum), $(GenericPCIAdapterName), $(ProductHardwareName)
	ifstr(i) $($R1) != "YES"
	    set-add NumNew = $(NumNew),1
	    ifstr(i) $(NewAdapterList) == {}
		set NewAdapterList = {$($)}
	    else
		set NewAdapterList = >($(NewAdapterList),$($))
	    endif
	endif
    EndForListDo

    set AdapterList = $(NewAdapterList)

    ifint $(NumNew) == 0
	set AdapterList = {{0,0,0}}
	set IsISA = 1
    endif
    Debug-Output $(AdapterList)
    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
	CloseRegKey $(KeyProduct)
	ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
	    Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
	       $(ProductVersion)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error: cannot get an error string."
		goto ShellCodeError
	    endif
	    goto end
	else
	    Shell $(UtilityInf), CardExistedDlg
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error: cannot get an error string."
		goto ShellCodeError
	    endif
	    ifstr(i) $($R1) != "OK"
		goto end
	    endif
	    set OldVersionExisted = $(TRUE)
	endif
    endif
    ifint $(OldVersionExisted) == $(FALSE)
	ifstr(i) $(!NTN_InstallMode) == "install"
	    Ifstr(i) $(DoCopy) == "YES"
		Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) NO
		Ifint $($ShellCode) != $(!SHELL_CODE_OK)
		    Goto ShellCodeError
		Else-Ifstr(i) $($R0) == STATUS_FAILED
		    Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
		    ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		    endif
		    set Error = $($R0)
		    Goto fatal
		Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
		    Goto successful
		Endif
		Set SrcDir = $($R1)
	    endif
	    install "Install-Helpfile"
	endif
    endif
    SetHelpFile "AM8111n4.hlp" 0 11
    Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
    Ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Goto ShellCodeError
    Else-Ifstr(i) $($R0) == STATUS_FAILED
	Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	set Error = $($R0)
	Goto fatal
    Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
	Goto successful
    Endif
    Set SrcDir = $($R1)
    install "Install-Dll"
;    install "Install-DMIApp"
    goto adaptersetup
configureadapter = +
    SetHelpFile "AM8111n4.hlp" 0 11
    Ifstr $(KeyProduct) == $(KeyNull)
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
	Ifstr $(KeyProduct) == $(KeyNull)
	    set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
	    Debug-Output "Cannot find component product key"
	    goto fatalregistry
	Endif
    Endif
    Debug-Output "INF: Shelling to FindService"
    Shell $(UtilityInf) FindService, $(KeyProduct)
    Ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output "INF: FindService shell failure"
	Goto ShellCodeError
    Endif
    Ifstr(i) $($R0) != NO_ERROR
	Debug-Output "INF: FindService Shell error: "$($R0)
	Goto fatalregistry
    endif
    Set KeyParameters = $($R2)
    CloseRegKey $($R1)
    Ifstr $(KeyParameters) == $(KeyNull)
	set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
	Debug-Output "Cannot find component service"
	goto fatalregistry
    endif
    set OldVersionExisted = $(TRUE)
    set ValueName = ""
    set ValueData = ""
    set ValueStr  = ""
    set ValueList = {}
    EnumRegValue $(KeyParameters) ValueList
    ForListDo $(ValueList)
	set ValueItem = $($)
	set ValueName = *($(ValueItem),1)
	set ValueData = *($(ValueItem),4)
	ifstr(i) $(ValueName) == "BUS_TO_SCAN"
	    set BusScanValue = $(ValueData)
	;else-ifstr(i) $(ValueName) == "TP"
	  ;  set TPValue = $(ValueData)
;magic packet
	;else-ifstr(i) $(ValueName) == "MPMODE"
	;    set MPValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "LED0"
	    set LED0Value = $(ValueData)
	else-ifstr(i) $(ValueName) == "LED1"
	    set LED1Value = $(ValueData)
	else-ifstr(i) $(ValueName) == "LED2"
	    set LED2Value = $(ValueData)
	else-ifstr(i) $(ValueName) == "LED3"
	    set LED3Value = $(ValueData)
	else-ifstr(i) $(ValueName) == "IOAddress"
	    set IOBaseAddrValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "Interrupt"
	    set IRQValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "DMAChannel"
	    set DMAChannelValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "FDUP"
	    set FullDuplexValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "EXTPHY"
	    set ExtPhyValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "BUSTIMER"
	    set BusTimerValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "BusType"
	    set BusInterfaceType = $(ValueData)
	    ifint $(BusInterfaceType) == 5
		set IsISA = 0
	    else
		set IsISA = 1
	    endif
	else-ifstr(i) $(ValueName) == "BusNumber"
	    set BusNumber = $(ValueData)
	else-ifstr(i) $(ValueName) == "AdapterNumber"
	    set AdapterNumber = $(ValueData)
	endif
    EndForListDo
    ;Ifint $(TPValue) == 0
	;Set CheckItemsIn = {"OFF"}
    ;Else
	;Set CheckItemsIn = {"ON"}
    ;Endif

;magic packet
    ;Ifint $(MPValue) == 0
	;Set CheckItemsIn = >($(CheckItemsIn),"OFF")
  ;  Else
	;Set CheckItemsIn = >($(CheckItemsIn),"ON")
   ; Endif

    Debug-Output $(InfName)" CheckItemsIn is "$(CheckItemsIn)
    Ifstr $(BusScanValue) == "PNP"
	Set RadioIn = {1}
    Else-Ifstr $(BusScanValue) == "VESA"
	Set RadioIn = {2}
    Else-Ifstr $(BusScanValue) == "ISA"
	Set RadioIn = {3}
    Else-Ifstr $(BusScanValue) == "ALL"
	Set RadioIn = {4}
    Else-Ifstr $(BusScanValue) == ""
	Set RadioIn = {4}
    Endif
  ;  Debug-Output $(InfName)" TP is "$(TPValue)
   ; Debug-Output $(InfName)" MP is "$(MPValue)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ifint $(IsISA) == 1
	set IRQValue = *($(IRQList), ~($(IRQValues),$(IRQValue)))
	ifstr(i) $(IRQValue) == ""
	    set IRQValue = *($(IRQList), 2)
	endif
	Debug-Output $(InfName)" IRQ_Level is "$(IRQValue)
	set DMAChannelValue = *($(DMAChannelList), ~($(DMAChannelValues),$(DMAChannelValue)))
	ifstr(i) $(DMAChannelValue) == ""
	    set DMAChannelValue = *($(DMAChannelList), 2)
	endif
	Debug-Output $(InfName)" DMA is "$(DMAChannelValue)
	set IOBaseAddrValue = *($(IOBaseAddrList), ~($(IOBaseAddrValues),$(IOBaseAddrValue)))
	ifstr(i) $(IOBaseAddrValue) == ""
	    set IOBaseAddrValue = *($(IOBaseAddrList), 1)
	endif
	Debug-Output $(InfName)" I/o base is "$(IOBaseAddrValue)
    endif
    set LED0Value = *($(LEDList), ~($(LEDValues),$(LED0Value)))
    ifstr(i) $(LED0Value) == ""
	set LED0Value = *($(LEDList), 1)
    endif
    Debug-Output $(InfName)" LED0 is "$(LED0Value)
    set LED1Value = *($(LEDList), ~($(LEDValues),$(LED1Value)))
    ifstr(i) $(LED1Value) == ""
	set LED1Value = *($(LEDList), 1)
    endif
    Debug-Output $(InfName)" LED1 is "$(LED1Value)
    set LED2Value = *($(LEDList), ~($(LEDValues),$(LED2Value)))
    ifstr(i) $(LED2Value) == ""
	set LED2Value = *($(LEDList), 1)
    endif
    Debug-Output $(InfName)" LED2 is "$(LED0Value)
    set LED3Value = *($(LEDList), ~($(LEDValues),$(LED3Value)))
    ifstr(i) $(LED3Value) == ""
	set LED3Value = *($(LEDList), 1)
    endif
    Debug-Output $(InfName)" LED3 is "$(LED3Value)

;; Full Duplex
    set FullDuplexValue = *($(FullDuplexList), ~($(FullDuplexValues),$(FullDuplexValue)))
    ifstr(i) $(FullDuplexValue) == ""
	set FullDuplexValue = *($(FullDuplexList), 1)
    endif
    Debug-Output $(InfName)" Full Duplex is "$(FullDuplexValue)

;; External PHY setting
    set ExtPhyValue = *($(ExtPhyList), ~($(ExtPhyValues),$(ExtPhyValue)))
    ifstr(i) $(ExtPhyValue) == ""
	set ExtPhyValue = *($(ExtPhyList), 1)
    endif
    Debug-Output $(InfName)" MII mode is "$(ExtPhyValue)

;; Bus Timer
    set BusTimerValue = *($(BusTimerList), ~($(BusTimerValues),$(BusTimerValue)))
    ifstr(i) $(BusTimerValue) == ""
	set BusTimerValue = *($(BusTimerList), 1)
    endif
    Debug-Output $(InfName)" Bus Timer is "$(BusTimerValue)

    ifint $(IsISA) == 0
      LoadLibrary "Disk 1" .\$(DialogDllName) hLib

;harish -- remodeled the below logic
;check the retrun value & set the CommonStatus flag
;    read-syms FileDependentDlgPCI$(!STF_LANGUAGE)

;    Debug-Output $(InfName)" TP is "$(TPValue)
;    Debug-Output $(InfName)" MP is "$(MPValue)
;    Debug-Output $(InfName)" LED0 is "$(LED0Value)
;    Debug-Output $(InfName)" LED1 is "$(LED1Value)
;    Debug-Output $(InfName)" LED2 is "$(LED2Value)
;    Debug-Output $(InfName)" LED3 is "$(LED3Value)
;    Debug-Output $(InfName)" Full Duplex is "$(FullDuplexValue)
;    Debug-Output $(InfName)" External Phy is "$(ExtPhyValue)
;    Debug-Output $(InfName)" Bus Timer is "$(BusTimerValue)

;    ui start "Inputdlg" $(hLib)
;    set ExitButton      = $(ButtonPressed)
;    Debug-Output " ButtonPressed "$(ButtonPressed)
;    Debug-Output $(DLGEVENT)
;    FreeLibrary $(hLib)

    set FLibraryErrCtl = 1
    LibraryProcedure Result, $(hLib), AMDDlg, $(!STF_HWND), $(ProductHardwareName), $(AdapterNumber)
    set FLibraryErrCtl = 0

    set Response = *($(Result),1)
    ifstr $(Response) == "CANCEL"
      set CommonStatus = STATUS_USERCANCEL
    endif
    FreeLibrary $(hLib)
    goto end

	ifstr(i) $(DLGEVENT) == "CONTINUE"
	    set FullDuplexValue = $(Combo1Out)
;            set BusTimerValue = $(Combo2Out)
	    set ExtPhyValue = $(Combo2Out)
	    set ExitButton = $(ButtonPressed)
	    set BusIndex = *($(RadioOut),1)
	    Ifint $(BusIndex) == 1
		Set BusScanValue = "PNP"
	    else-Ifint $(BusIndex) == 2
		Set BusScanValue = "VESA"
	    else-Ifint $(BusIndex) == 3
		Set BusScanValue = "ISA"
	    else-Ifint $(BusIndex) ==  4
		Set BusScanValue = "ALL"
	    Endif
	    Debug-Output $(InfName)" CheckItemsOut is "$(CheckItemsOut)
	   ; Set Chk = *($(CheckItemsOut), 1)
	   ; Ifstr(i) $(Chk) == "ON"
		;Set TPValue = 1
	    ;Else
		;Set TPValue = 0
	   ; Endif
;magic packet
	   ; Set Chk = *($(CheckItemsOut), 2)
	   ; Ifstr(i) $(Chk) == "ON"
		;Set MPValue = 1
	   ; Else
		;Set MPValue = 0
	   ; Endif

	    ui pop 
	else-ifstr(i) $(DLGEVENT) == "EXIT"
	    set CommonStatus = STATUS_USERCANCEL
	    Debug-Output "Action: exit. Bye."
	    ui pop 1
	    goto end
	else
	    ui pop 1
	    Debug-Output "Action: unknown. Bye."
	    goto end
	endif
	Debug-Output " Combo list out "$(ComboListItemsOut)
    endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
adaptersetup = +
    Set from = adapteroptions

adapteroptions = +

;added 9/21/98 by RWP
ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
	ifstr(i) $(!AutoNetInterfaceType) != ""
	    set BusInterfaceType = $(!AutoNetInterfaceType)
	else
	    set BusInterfaceType = 1    
	endif
	ifstr(i) $(!AutoNetBusNumber) != ""
	    set BusNumber = $(!AutoNetBusNumber)
	else
	    set BusNumber = 0
	endif
	goto skipoptions
    endif
;end added rwp

    ifint $(IsISA) == 1
	LoadLibrary "Disk 1" .\$(DialogDllName) hLib
	Debug-Output "read the isa dialog"
	read-syms FileDependentDlg$(!STF_LANGUAGE)
	Debug-Output $(InfName)" Bus is "$(BusScanValue)
	Debug-Output $(InfName)" TP is "$(TPValue)
	Debug-Output $(InfName)" LED0 is "$(LED0Value)
	Debug-Output $(InfName)" LED1 is "$(LED1Value)
	Debug-Output $(InfName)" LED2 is "$(LED2Value)
	Debug-Output $(InfName)" LED3 is "$(LED3Value)
	Debug-Output $(InfName)" DMA is "$(DMAChannelValue)
	Debug-Output $(InfName)" I/o base is "$(IOBaseAddrValue)
	Debug-Output $(InfName)" Full Duplex is "$(FullDuplexValue)
	Debug-Output $(InfName)" Bus Timer is "$(BusTimerValue)
	ui start "InputDlg"  $(hLib)
	set ExitButton      = $(ButtonPressed)
	FreeLibrary $(hLib)
	ifstr(i) $(DLGEVENT) == "CONTINUE"
	    set IOBaseAddrValue = $(Combo1Out)
	    set IRQValueValue = $(Combo2Out)
	    set DMAChannelValue = $(Combo3Out)
	    set FullDuplexValue = $(Combo4Out)
	    set BusTimerValue = $(Combo5Out)
	    set ExitButton = $(ButtonPressed)
	    set BusIndex = *($(RadioOut),1)
	    Ifint $(BusIndex) == 1
		Set BusScanValue = "PNP"
	    else-Ifint $(BusIndex) == 2
		Set BusScanValue = "VESA"
	    else-Ifint $(BusIndex) == 3
		Set BusScanValue = "ISA"
	    else-Ifint $(BusIndex) ==  4
		Set BusScanValue = "ALL"
	    Endif

	   ; Set Chk = *($(CheckItemsOut), 1)
	    ;Ifstr(i) $(Chk) == "ON"
		;Set TPValue = 1
	  ;  Else
		;Set TPValue = 0
	  ;  Endif
;magic packet
	   ; Set Chk = *($(CheckItemsOut), 2)
	   ; Ifstr(i) $(Chk) == "ON"
		;Set MPValue = 1
	   ; Else
		;Set MPValue = 0
	   ; Endif
	    ui pop 1

	else-ifstr(i) $(DLGEVENT) == "EXIT"
	    set CommonStatus = STATUS_USERCANCEL
	    Debug-Output "Action: exit. Bye."
	    ui pop 1
	    goto end
	else
	    ui pop 1
	    Debug-Output "Action: unknown. Bye."
	    goto end
	endif
    else
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; QUIET MODE
; Remove comment if you do not want quiet mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;        LoadLibrary "Disk 1" .\$(DialogDllName) hLib
;        read-syms FileDependentDlgPCI$(!STF_LANGUAGE)
;        Debug-Output $(InfName)" TP is "$(TPValue)
;        Debug-Output $(InfName)" MP is "$(MPValue)
;        Debug-Output $(InfName)" LED0 is "$(LED0Value)
;        Debug-Output $(InfName)" LED1 is "$(LED1Value)
;        Debug-Output $(InfName)" LED2 is "$(LED2Value)
;        Debug-Output $(InfName)" LED3 is "$(LED3Value)
;        Debug-Output $(InfName)" Full Duplex is "$(FullDuplexValue)
;        Debug-Output $(InfName)" Bus Timer is "$(BusTimerValue)
;        ui start "Inputdlg" $(hLib)
;        set ExitButton      = $(ButtonPressed)
;        Debug-Output " ButtonPressed "$(ButtonPressed)
;        Debug-Output $(DLGEVENT)
;        FreeLibrary $(hLib)
;        ifstr(i) $(DLGEVENT) == "CONTINUE"
;            set FullDuplexValue = $(Combo1Out)
;            set BusTimerValue = $(Combo2Out)
;            set ExitButton = $(ButtonPressed)
;            set BusIndex = *($(RadioOut),1)
;            Ifint $(BusIndex) == 1
;                Set BusScanValue = "PNP"
;            else-Ifint $(BusIndex) == 2
;                Set BusScanValue = "VESA"
;            else-Ifint $(BusIndex) == 3
;                Set BusScanValue = "ISA"
;            else-Ifint $(BusIndex) ==  4
;                Set BusScanValue = "ALL"
;            Endif
;            Debug-Output $(InfName)" CheckItemsOut is "$(CheckItemsOut)
;            Set Chk = *($(CheckItemsOut), 1)
;            Ifstr(i) $(Chk) == "ON"
;                Set TPValue = 1
;            Else
;                Set TPValue = 0
;            Endif
;;magic packet
;            Set Chk = *($(CheckItemsOut), 2)
;            Ifstr(i) $(Chk) == "ON"
;                Set MPValue = 1
;            Else
;                Set MPValue = 0
;            Endif
;            ui pop 1
;        else-ifstr(i) $(DLGEVENT) == "EXIT"
;            set CommonStatus = STATUS_USERCANCEL
;            Debug-Output "Action: exit. Bye."
;            ui pop 1
;            goto end
;        else
;            ui pop 1
;            Debug-Output "Action: unknown. Bye."
;            goto end
;        endif
;        Debug-Output " Combo list out "$(ComboListItemsOut)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    endif

skipoptions =+
    ifint $(OldVersionExisted) == $(TRUE)
	ifstr(i) $(!NTN_InstallMode) == configure
	    Shell $(UtilityInf), GetBusTypeNum
	    set BusTypeNum = $($R1)
	    set BusNumberValue = 0 
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	    endif
	    Debug-Output "before write registry"
	    set DMAChannelValue = *($(DMAChannelValues), ~($(DMAChannelList),$(DMAChannelValue)))
	    set IRQValue = *($(IRQValues), ~($(IRQList),$(IRQValueValue)))
	    set IOBaseAddrValue = *($(IOBaseAddrValues), ~($(IOBaseAddrList),$(IOBaseAddrValue)))
	    set LED0Value = *($(LEDValues), ~($(LEDList),$(LED0Value)))
	    set LED1Value = *($(LEDValues), ~($(LEDList),$(LED1Value)))
	    set LED2Value = *($(LEDValues), ~($(LEDList),$(LED2Value)))
	    set LED3Value = *($(LEDValues), ~($(LEDList),$(LED3Value)))
	    set FullDuplexValue = *($(FullDuplexValues), ~($(FullDuplexList),$(FullDuplexValue)))
	    set ExtPhyValue = *($(ExtPhyValues), ~($(ExtPhyList),$(ExtPhyValue)))
	    set BusTimerValue = *($(BusTimerValues), ~($(BusTimerList),$(BusTimerValue)))
	    ifint $(IsISA) == 0
		set NewValueList = {{FDUP,  $(NoTitle),$(!REG_VT_DWORD),$(FullDuplexValue)},+
			{BUSTIMER,  $(NoTitle),$(!REG_VT_DWORD),$(BusTimerValue)},+
			{EXTPHY,  $(NoTitle),$(!REG_VT_DWORD),$(ExtPhyValue)}}
			;{TP,    $(NoTitle),$(!REG_VT_DWORD),$(TPValue)},+
;magic packet
			;{MPMODE, $(NoTitle),$(!REG_VT_DWORD),$(MPValue)}}
		Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
	    else
		set NewValueList = {{BUS_TO_SCAN,$(NoTitle),$(!REG_VT_SZ),$(BusScanValue)},+
		    {FDUP,  $(NoTitle),$(!REG_VT_DWORD),$(FullDuplexValue)},+
		    {BUSTIMER,  $(NoTitle),$(!REG_VT_DWORD),$(BusTimerValue)},+
		   ; {TP,    $(NoTitle),$(!REG_VT_DWORD),$(TPValue)},+
;magic packet
		    ;{MPMODE,$(NoTitle),$(!REG_VT_DWORD),$(MPValue)},+
		    {IOAddress,  $(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
		    {Interrupt,  $(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+
		    {DMAChannel, $(NoTitle),$(!REG_VT_DWORD),$(DMAChannelValue)}}
		Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
	    endif
	    CloseRegKey $(KeyParameters)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	    endif
	    set RegistryErrorIndex = $($R0)
	    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		goto fatalregistry
	    endif
	    EndWait
	    goto successful
	endif
    endif
    StartWait
    ifint $(OldVersionExisted) == $(FALSE)
	ifstr(i) $(!NTN_InstallMode) == "install"
	    Ifstr(i) $(DoCopy) == "YES"
		Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
		Ifint $($ShellCode) != $(!SHELL_CODE_OK)
		    Goto ShellCodeError
		Else-Ifstr(i) $($R0) == STATUS_FAILED
		    Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
		    ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		    endif
		    set Error = $($R0)
		    Goto fatal
		Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
		    Goto successful
		Endif
		Set SrcDir = $($R1)
	    Endif
	    install "Install-Option"
	    ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
		Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
		    goto ShellCodeError
		endif
		set Error = $($R0)
		goto fatal
	    endif
	endif
	Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), +
	    $(ProductSoftwareName), +
	    $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
	    $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
	    $(NetEventDLL)
	Set OEM_ABANDON_SOFTWARE = TRUE
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	set KeyProduct      = $($R1)
	Set SoftNetRulesKey = $($R2)
	CloseRegKey $($R3)
	CloseRegKey $($R4)
	CloseRegKey $($R5)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    EndWait
	    Debug-Output "Registry error: add software components"
	    CloseRegKey $(KeyProduct)
	    CloseRegKey $(SoftNetRulesKey)
	    goto fatalregistry
	endif
	set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
	       {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
	       {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
	       {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
	       {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
	       {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
	       {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
	Shell  $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error."
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    EndWait
	    Debug-Output "Registry error: add value list."
	    CloseRegKey $(KeyProduct)
	    CloseRegKey $(SoftNetRulesKey)
	    goto fatalregistry
	endif
	set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
		    {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
		    {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
		    {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
		    {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
		    {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
	Shell  $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error."
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	CloseRegKey $(KeyProduct)
	CloseRegKey $(SoftNetRulesKey)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    EndWait
	    Debug-Output "Resgitry error: add value list."
	    goto fatalregistry
	endif
    endif
    Debug-Output "AdapterList "$(AdapterList)

    set OrgLed0 = $(LED0Value)
    set OrgLed1 = $(LED1Value)
    set OrgLed2 = $(LED2Value)
    set OrgLed3 = $(LED3Value)
    set OrgFullDupValue = $(FullDuplexValue)
    set OrgExtPhyValue = $(ExtPhyValue)
    set OrgBusTimerValue = $(BusTimerValue)

    ForListDo $(AdapterList)
	Debug-Output "For Loop Count"
	set BusNumber = *($($),1)
	set DeviceNum = *($($),2)
	set FunctionNum = *($($),3)
	Debug-Output "ProductHardwareName="$(ProductHardwareName)
	Debug-Output "ProductKeyName="$(ProductKeyName)
	Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
	Debug-Output "KeyAdapterRules="$($R2)
	Debug-Output "KeyParameters="$($R3)
	Debug-Output "Adapter Number="$($R4)
	ifint $($R4) != -1
	    Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
	endif
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "Cannot add hardware component"
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    EndWait
	    Debug-Output "Registry error: add hardware component"
	    CloseRegKey $($R1)
	    CloseRegKey $($R2)
	    CloseRegKey $($R3)
	    goto fatalregistry
	endif
	set KeyParameters = $($R3)
	set KeyAdapterRules = $($R2)
	set AdapterNumber = $($R4)
	ifint $(IsISA) == 1
	    set HardwareDescription = $(GenericAdapterName)
	    set HardwareTitle = $(GenericAdapterName)
	else
	    set HardwareDescription = $(GenericPCIAdapterName)
	    set HardwareTitle = $(GenericPCIAdapterName)
	endif
	set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
		   {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(HardwareTitle)},+
		   {Description,$(NoTitle),$(!REG_VT_SZ),$(HardwareDescription)},+
		   {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
		   {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
				   {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)},+
		   {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
	Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	CloseRegKey $($R1)
	set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
	set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
	set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
		{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
		{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
		{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
	Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error."
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    EndWait
	    Debug-Output "Resgitry error: add value list."
	    CloseRegKey $(KeyParameters)
	    CloseRegKey $(KeyAdapterRules)
	    goto fatalregistry
	endif
	CloseRegKey $(KeyAdapterRules)
	goto writeparameters
writeparameters = +
	Shell $(UtilityInf), GetBusTypeNum
	set BusTypeNum = $($R1)
	set BusNumberValue = 0 
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error."
	    goto ShellCodeError
	endif
	Debug-Output "before write registry"
	set DMAChannelValue = *($(DMAChannelValues), ~($(DMAChannelList),$(DMAChannelValue)))
	set IRQValue = *($(IRQValues), ~($(IRQList),$(IRQValueValue)))
	set IOBaseAddrValue = *($(IOBaseAddrValues), ~($(IOBaseAddrList),$(IOBaseAddrValue)))
	Debug-Output "LEDValues="$(LEDValues)
	Debug-Output "LEDList="$(LEDList)
	Debug-Output "LED0Value="$(LED0Value)
	Debug-Output "Real LED0Value="*($(LEDValues), ~($(LEDList),$(LED0Value)))
	set LED0Value = *($(LEDValues), ~($(LEDList),$(OrgLed0)))
	set LED1Value = *($(LEDValues), ~($(LEDList),$(OrgLed1)))
	set LED2Value = *($(LEDValues), ~($(LEDList),$(OrgLed2)))
	set LED3Value = *($(LEDValues), ~($(LEDList),$(OrgLed3)))
	;Duke's change
	;set FullDuplexValue = *($(FullDuplexValues), ~($(FullDuplexList),$(FullDuplexValue)))
	;set BusTimerValue = *($(BusTimerValues), ~($(BusTimerList),$(BusTimerValue)))
	set FullDuplexValue = *($(FullDuplexValues), ~($(FullDuplexList),$(OrgFullDupValue)))
	set ExtPhyValue = *($(ExtPhyValues), ~($(ExtPhyList),$(OrgExtPhyValue)))
	set BusTimerValue = *($(BusTimerValues), ~($(BusTimerList),$(OrgBusTimerValue)))

	ifint $(IsISA) == 0
	    set NewValueList = {{BusType,$(NoTitle),$(!REG_VT_DWORD),5},+
		{MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
		{LED0,  $(NoTitle),$(!REG_VT_DWORD),$(LED0Value)},+
		{LED1,  $(NoTitle),$(!REG_VT_DWORD),$(LED1Value)},+
		{LED2,  $(NoTitle),$(!REG_VT_DWORD),$(LED2Value)},+
		{LED3,  $(NoTitle),$(!REG_VT_DWORD),$(LED3Value)},+
		{FDUP,  $(NoTitle),$(!REG_VT_DWORD),$(FullDuplexValue)},+
		{EXTPHY,  $(NoTitle),$(!REG_VT_DWORD),$(ExtPhyValue)},+
		{BUSTIMER,  $(NoTitle),$(!REG_VT_DWORD),$(BusTimerValue)},+
		;{TP,    $(NoTitle),$(!REG_VT_DWORD),$(TPValue)},+
;magic packet
		;{MPMODE,$(NoTitle),$(!REG_VT_DWORD),$(MPValue)},+
		{AdapterCFID,$(NoTitle),$(!REG_VT_DWORD),1952583714},+
		{SlotNumber, $(NoTitle),$(!REG_VT_DWORD),$(DeviceNum)},+
		{AdapterNumber, $(NoTitle),$(!REG_VT_DWORD),$(AdapterNumber)},+
		{BusNumber,  $(NoTitle),$(!REG_VT_DWORD),$(BusNumber)}}
	    Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
	else
	    set NewValueList = {{BUS_TO_SCAN,$(NoTitle),$(!REG_VT_SZ),$(BusScanValue)},+
		{BusType,$(NoTitle),$(!REG_VT_DWORD),1},+
		{MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
		{LED0,  $(NoTitle),$(!REG_VT_DWORD),$(LED0Value)},+
		{LED1,  $(NoTitle),$(!REG_VT_DWORD),$(LED1Value)},+
		{LED2,  $(NoTitle),$(!REG_VT_DWORD),$(LED2Value)},+
		{LED3,  $(NoTitle),$(!REG_VT_DWORD),$(LED3Value)},+
		{FDUP,  $(NoTitle),$(!REG_VT_DWORD),$(FullDuplexValue)},+
		{BUSTIMER,  $(NoTitle),$(!REG_VT_DWORD),$(BusTimerValue)},+
		;{TP,    $(NoTitle),$(!REG_VT_DWORD),$(TPValue)},+
;magic packet
		;{MPMODE,$(NoTitle),$(!REG_VT_DWORD),$(MPValue)},+
		{IOAddress,  $(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
		{Interrupt,  $(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+
		{DMAChannel, $(NoTitle),$(!REG_VT_DWORD),$(DMAChannelValue)},+
		{BusNumber,  $(NoTitle),$(!REG_VT_DWORD),$(BusNumber)}}
	    Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
	endif
	CloseRegKey $(KeyParameters)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error."
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    Debug-Output "Registry error: Add value list"
	    goto fatalregistry
	endif

; ADDED rwp
  Set NewValueList = {{InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+
	  {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
	  {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
	  {AdapterType,$(NoTitle),$(!REG_VT_DWORD),0},+
	  {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
	  {MemoryMappedBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(MemoryMapValue)},+
	  {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)}}
    Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
  ;
  ; ==============================
  ; Rewrites the registry from the answer file.
  ; ==============================
  ;
    ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
	 Shell $(UtilityInf), AddDefaultNetCardParameters,$(KeyParameters)
    endif
; END ADDED rwp


    EndForListDo
;	RunProgram ExitCode "" "" $(SrcDir)\pcnet.exe -install
    EndWait
    goto successful
bindingadapter =+
    set Error = "Binding: Sorry, not yet implemented."
    goto fatal
removeadapter = +
    Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
	Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
    else
	Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), $(!NTN_RegBase)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    goto fatalregistry
	endif

; We shouldnt delete the registry entries for pcnet.exe till all the instances
; of the driver have been removed
;	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) DeleteHandle
;	Ifstr $(DeleteHandle) == $(KeyNull)
;		RunProgram ExitCode "" "" pcnet.exe -remove
;	endif
;	CloseRegKey $(DeleteHandle)

;	set RegistryErrorIndex = $($R0)
;	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
;	    goto fatalregistry
;	endif

    endif
    goto end
UpgradeSoftware = +
    set DlgType      = "MessageBox"
    set STF_MB_TITLE = "AMDDLGn4.DLL"
    set STF_MB_TEXT  = "Update is not supported. Please remove the installed driver, then install this new driver."
    set STF_MB_TYPE  = 1
    set STF_MB_ICON  = 3
    set STF_MB_DEF   = 1
    ui start "Error Message"
    goto end
successful = +
    goto end
abandon = +
    ForListDo $(OEM_ABANDON_OPTIONS)
	Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), $($)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    goto fatalregistry
	endif
    EndForListDo
    Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
	Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), FALSE
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    goto fatalregistry
	endif
    endif
    goto end
warning = +
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    ifstr(i) $($R1) == "OK"
	goto $(to)
    else-ifstr(i) $($R1) == "CANCEL"
	goto $(from)
    else
	goto "end"
    endif
nonfatalinfo = +
    Set Severity = STATUS
    Set CommonStatus = STATUS_USERCANCEL
    goto nonfatalmsg
nonfatal = +
    Set Severity = NONFATAL
    goto nonfatalmsg
nonfatalmsg = +
    ifstr(i) $(Error) == ""
	Set Severity = NONFATAL
	Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	set Error = $($R0)
    endif
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    ifstr(i) $($R1) == "OK"
	goto $(from)
    else
	goto "end"
    endif
fatalregistry = +
    Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    set Error = $($R0)
    goto fatal
fataldetect = +
    Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output "ShellCode error: cannot get an error string."
	goto ShellCodeError
    endif
    set Error = $($R0)
    Goto fatal
fatal = +
    ifstr(i) $(Error) == ""
	Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	set Error = $($R0)
    endif
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    goto setfailed
ShellCodeError = +
    set DlgType      = "MessageBox"
    set STF_MB_TITLE = $(ShellCodeErrorTitle)
    set STF_MB_TEXT  = $(ShellCodeErrorText)
    set STF_MB_TYPE  = 1
    set STF_MB_ICON  = 3
    set STF_MB_DEF   = 1
    ui start "Error Message"
    goto setfailed
setfailed = +
    set CommonStatus = STATUS_FAILED
    ifstr(i) $(OEM_ABANDON_ON) == TRUE
	set OEM_ABANDON_ON = FALSE
	goto abandon
    endif
    goto end
end = +
    goto term
term = +
    Return $(CommonStatus)

[Source Media Descriptions]
    1 = "Driver Disk"
;    1 = "Windows NT Server CD-ROM", TAGFILE = disk1

[PlatformsSupported]
    ISA
    EISA
    PCI
[Options]
    AMDPCI
[FileConstants]
    GenericSysName     = "AM8111n4.sys"
    GenericName        = "AM8111n4"
    UtilityInf      = "UTILITY.INF"
    ParamInf        = "NCPARAM.INF"
    subroutineinf   = "SUBROUTN.INF"
    SoftwareType    = "driver"
    Exit_Code       = 0
    NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
    IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
    Manufacturer    = "Microsoft"
    ProductMajorVersion     = "4"
    ProductMinorVersion     = "0"
    ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)
    ProductSoftwareName     = "AM8111n4"
    ProductSoftwareImagePath = "\SystemRoot\System32\drivers\"$(GenericSysName)
    NetRuleSoftwareType     = "AM8111n4Sys ndisDriver AM8111n4Driver"
    NetRuleSoftwareUse      = $(SoftwareType)
    NetRuleSoftwareBindForm = """AM8111n4Sys"" yes no container"
    NetRuleSoftwareClass    = {"AM8111n4Driver basic"}
    NetRuleSoftwareBindable = {"AM8111n4Driver AM8111n4Adapter non exclusive 100"}
    ProductHardwareName        = "AM8111n4"
    NetRuleHardwareType        = "AM8111n4 AM8111n4Adapter"
    NetRuleHardwareBindForm    = " yes yes container"
    NetRuleHardwareClass       = {"AM8111n4Adapter basic"}
    ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
    ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
	ProductOpSupport = 134
[GeneralConstants]
    from      = ""
    to        = ""
    ExitCodeOk     = 0
    ExitCodeCancel = 1
    ExitCodeFatal  = 2
    KeyNull         = ""
    MAXIMUM_ALLOWED   = 33554432
    RegistryErrorIndex = NO_ERROR
    KeyProduct      = ""
    KeyParameters   = ""
    TRUE            = 1
    FALSE           = 0
    NoTitle         = 0
    ExitState   = "Active"
    OldVersionExisted = $(FALSE)
    DriverPath      = $(!STF_NTPATH)\drivers
[date]
    Now = {} ? $(!LIBHANDLE) GetSystemDate
[Identify]
    read-syms Identification
    set Status     = STATUS_SUCCESSFUL
    set Identifier = $(OptionType)
    set Media      = #("Source Media Descriptions", 1, 1)
    Return $(Status) $(Identifier) $(Media)
[DebugConfiguration]
    Set InfName = "OEMNADAM.INF"
    Debug-Output $(InfName)" **CONFIGURATION STATE: "$($0)
    Debug-Output $(InfName)" IRQ_Level is "$(!p:IRQ_Level)
    Debug-Output $(InfName)" IOBaseAddrValue is "$(!p:IOBaseAddrValue)
    return
[Install-Option]
    set STF_VITAL = ""
    ifstr(i) $(AddCopy) == "YES"
    AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
    endif
    ifstr(i) $(DoCopy) == "YES"
       set !STF_NCPA_FLUSH_COPYLIST = TRUE
       CopyFilesInCopyList
    endif
    Exit
[Install-Update]
   set STF_VITAL        = ""
   set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
   AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
   AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-hlp $(SrcDir) $(!STF_WINDOWSSYSPATH)
;   AddSectionFilesToCopyList Files-DMIApp $(SrcDir) $(!STF_WINDOWSSYSPATH)
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   CopyFilesInCopyList
   exit
[Install-Helpfile]
   Debug-Output "At Install-Helpfile"
   set STF_VITAL        = ""
   set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
   ifstr(i) $(AddCopy) == "YES"
       AddSectionFilesToCopyList Files-hlp $(SrcDir) $(!STF_WINDOWSSYSPATH)
   endif
   ifstr(i) $(DoCopy) == "YES"
      set !STF_NCPA_FLUSH_COPYLIST = TRUE
      CopyFilesInCopyList
   endif
   exit
[Install-Dll]
   set STF_VITAL        = ""
   ifstr(i) $(AddCopy) == "YES"
       AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
   endif
   ifstr(i) $(DoCopy) == "YES"
       set !STF_NCPA_FLUSH_COPYLIST = TRUE
       CopyFilesInCopyList
   endif
   exit

;[Install-DMIApp]
;   set STF_VITAL        = ""
;   set !STF_OVERWRITE    = ""
;   ifstr(i) $(AddCopy) == "YES"
;       AddSectionFilesToCopyList Files-DMI $(SrcDir) $(!STF_WINDOWSSYSPATH)
;       AddSectionFilesToCopyList Files-MIF $(SrcDir) $(!STF_WINDOWSSYSPATH)
;   endif

;   ifstr(i) $(DoCopy) == "YES"
;       set !STF_NCPA_FLUSH_COPYLIST = TRUE
;       CopyFilesInCopyList
;   endif
;   exit

[Signature]
    FileType = MICROSOFT_FILE
[GetSignature]
    read-syms Signature
    return $(FileType)
[ProductType]
    STF_PRODUCT  = Winnt
    STF_PLATFORM = I386
[Files-Inf]
    2,  oemsetup.inf,    SIZE=1000, RENAME=$(!UG_Filename)
[Files-AMDPCI]
    1,AM8111N4.SYS , SIZE=47333
[Files-Dll]
    1,AMDDLGn4.DLL , SIZE=7168
[Files-DMI]
;    1,PCNET.EXE , SIZE=104960
[Files-MIF]
;    1,PCNET.MIF , SIZE=76748
[Files-hlp]
    1,AM8111n4.HLP , SIZE=12288
[LanguagesSupported]
    ENG
[OptionsTextENG]
    AMDPCI     = "AMD-8111 10/100 Integrated Ethernet Controller"
[FileConstantsENG]
    ProCaption   = "Windows NT Setup"
    ProCancel    = "Cancel"
    ProCancelMsg = "Windows NT Networking is not correctly installed.  "+
	   "Are you sure you want to cancel copying files?"
    ProCancelCap = "Network Setup Message"
    ProText1     = "Copying:"
    ProText2     = "To:"
    GenericAdapterName = "AMD PCnet ISA/VESA Ethernet Adapter"
    GenericPCIAdapterName = "AMD-8111 10/100 Integrated Ethernet Controller"
    GenericDriverName  = "AMD-8111 10/100 Integrated Ethernet Controller"
    ProductSoftwareDescription = $(GenericDriverName)
    ProductHardwareDescription = $(GenericAdapterName)
    ProductHardwareAM8111n4Description="AMD-8111 10/100 Integrated Ethernet Controller"
    ProductSoftwareTitle =       $(GenericDriverName)
    ProductHardwareAM8111n4Title = $(GenericAdapterName)
    DialogDllName   = "amddlgn4.dll"
    IRQList  = ^(IRQChoices, 1)
    IRQValues = ^(IRQChoices, 2)
    IOBaseAddrList = ^(IOBaseAddrChoices, 1)
    IOBaseAddrValues = ^(IOBaseAddrChoices, 2)
    DMAChannelList = ^(DMAChannelChoices,1)
    DMAChannelValues = ^(DMAChannelChoices,2)
    LEDList = ^(LEDChoices,1)
    LEDValues = ^(LEDChoices,2)
    FullDuplexList = ^(FullDuplexChoices,1)
    FullDuplexValues = ^(FullDuplexChoices,2)
    ExtPhyList = ^(ExtPhyChoices,1)
    ExtPhyValues = ^(ExtPhyChoices,2)
    BusTimerList = ^(BusTimerChoices,1)
    BusTimerValues = ^(BusTimerChoices,2)
[DialogConstantsENG]
    Help        = "&Help"
    Exit        = "Cance&l"
    OK          = "&OK"
    HelpContext = ""
    Continue    = "C&ontinue"
    Cancel      = "&Cancel"
[MemoryMappedChoicesENG]
    Map_1 = 1, "ON"
    Map_2 = 0, "OFF"
[FileDependentDlgENG]
    FunctionTitle   = $(GenericAdapterName)
    DlgText = "Please select values for the following fields:"
    Combo1Label = "&I/O Port:"
    Combo2Label = "IRQ &Number:"
    Combo3Label = "&DMA Number:"
    Combo4Label = "&Full Duplex:"
    Combo5Label = "&Bus Timer:"
    BigButton   = "More AM8111n4 BS >>"
    ;CheckBox1 = "&TP"
;magic packet
    ;CheckBox2 = "&MPMODE"
    Group1 = "&Bus to scan"
    Radio1 = "&PNP"
    Radio2 = "&VESA"
    Radio3 = "&ISA"
    Radio4 = "&ALL"
    DlgType = "RadioCombination"
    DlgTemplate = "AM8111n4"
    Caption = $(FunctionTitle)
    CBOptionsGreyed = {}
    NotifyFields = {NO, NO}
    HelpContext = 0
    Combo1List = $(IOBaseAddrList)
    Combo1Out  = $(IOBaseAddrValue)
    Combo2List = $(IRQList)
    Combo2Out  = $(IRQValue)
    Combo3List = $(DMAChannelList)
    Combo3Out  = $(DMAChannelValue)
    Combo4List = $(FullDuplexList)
    Combo4Out  = $(FullDuplexValue)
    Combo5List = $(BusTimerList)
    Combo5Out  = $(BusTimerValue)
    ComboListItemsIn  = {Combo1List,Combo2List,Combo3List,Combo4List,Combo5List}
    ComboListItemsOut = {Combo1Out,Combo2Out,Combo3Out,Combo4Out,Combo5Out}
    EditTextIn = ""
    EditTextLim = ""
[IRQChoices]
    IRQ_1 = "3",3
    IRQ_2 = "4",4
    IRQ_3 = "5",5
    IRQ_4 = "9",9
    IRQ_5 = "10",10
    IRQ_6 = "11",11
    IRQ_7 = "12",12
    IRQ_8 = "15",15
    IRQ_9 = "Auto_Scan",0
[IOBaseAddrChoices]
    IOBase_1  = "0x200",512
    IOBase_2  = "0x220",544
    IOBase_3  = "0x240",576
    IOBase_4  = "0x260",608
    IOBase_5  = "0x280",640
    IOBase_6  = "0x2a0",672
    IOBase_7  = "0x2c0",714
    IOBase_8  = "0x2e0",746
    IOBase_9  = "0x300",768
    IOBase_10 = "0x320",800
    IOBase_11 = "0x340",832
    IOBase_12 = "0x360",864
    IOBase_13 = "0x380",896
    IOBase_14 = "0x3a0",928
    IOBase_15 = "0x3c0",960
    IOBase_16 = "0x3e0",992
    IOBase_17 = "Auto_Scan",0
[DMAChannelChoices]
    DMAChannel_1 = "3",3
    DMAChannel_2 = "5",5
    DMAChannel_3 = "6",6
    DMAChannel_4 = "7",7
    DMAChannel_5 = "Auto_Scan",0
[FileDependentDlgPCIENG]
    FunctionTitle   = $(GenericPCIAdapterName)
    DlgText = "Please select values for the following fields:"
    Combo1Label = "&Full Duplex:"
    Combo2Label = "&MII Mode:"
    BigButton   = "More of AM8111n4 >>"
    ;CheckBox1 = "&TP"
;magic packet
    ;CheckBox2 = "M&PMODE"
    DlgType = "RadioCombination"
    DlgTemplate = "AM8111n4PCI"
    Caption = $(FunctionTitle)
    CBOptionsGreyed = {}
    NotifyFields = {NO, NO}
    HelpContext = 0
    Combo1List = $(FullDuplexList)
    Combo1Out  = $(FullDuplexValue)
    Combo2List = $(ExtPhyList)
    Combo2Out  = $(ExtPhyValue)
    Combo3List = $(LEDList)
    Combo3Out  = $(LED0Value)
    Combo4List = $(LEDList)
    Combo4Out  = $(LED1Value)
    Combo5List = $(LEDList)
    Combo5Out  = $(LED2Value)
    Combo6List = $(LEDList)
    Combo6Out  = $(LED3Value)
    ComboListItemsIn  = {Combo1List, Combo2List}
    ComboListItemsOut = {Combo1Out, Combo2Out}
    EditTextIn = ""
    EditTextLim = ""
[LEDChoices]
    LED_1 = "Default",65536
    LED_2 = "0x0",0
    LED_3 = "0x2",2
    LED_4 = "0x4",4
    LED_5 = "0x8",8
    LED_6 = "0x10",16
    LED_7 = "0x20",32
    LED_8 = "0x30",48
    LED_9 = "0x34",52
    LED_10 = "0x40",64
    LED_11 = "0xc0",192
    LED_12 = "0x4088",16520
    LED_13 = "0xb0",176
    LED_14 = "0x21",129
[FullDuplexChoices]
    FULLDUPLEX_1 = "OFF",1
    FULLDUPLEX_2 = "AUI",2
    FULLDUPLEX_3 = "UTP",3
    FULLDUPLEX_4 = "Default",0
[ExtPhyChoices]
    EXTPHY_1 = "AutoNeg", 0
    EXTPHY_2 = "100Mb HalfDuplex",1
    EXTPHY_3 = "100Mb FullDuplex",2
    EXTPHY_4 = "10Mb HalfDuplex", 3
    EXTPHY_5 = "10Mb FullDuplex", 4
[BusTimerChoices]
    BUSTIMER_1 = "5",5
    BUSTIMER_2 = "6",6
    BUSTIMER_3 = "7",7
    BUSTIMER_4 = "8",8
    BUSTIMER_5 = "9",9
    BUSTIMER_6 = "10",10
    BUSTIMER_7 = "11",11
    BUSTIMER_8 = "12",12
    BUSTIMER_9 = "13",13
    BUSTIMER_10 = "Default",0
