OEMSETUP.INF Driver File Contents (fem65cx2.exe)

;===========================================================
; 3Com Megahertz Global 10-100 LAN+56K Modem CardBus PC Card
;-----------------------------------------------------------
; %VER v1.8	OEMSETUP.INF - NT4.0 Setup File 3/30/00 (MS)
;===========================================================

[Identification]
 OptionType = NetAdapter

[PlatformsSupported]
 ISA
 PCI
 PCMCIA
 "Jazz-Internal Bus"

[Options]
 Elpc656

[OptionsTextENG]
 Elpc656 = "FEM656C-3Com Global 10-100+56K CardBus PC Card-(Fast Ethernet)"


[AllFileConstants]
GenericInfVersion = " v2.00"
UtilityInf = "UTILITY.INF"
ParamInf = "NCPARAM.INF"
subroutineinf = "SUBROUTN.INF"
SoftwareType = "driver"
Exit_Code = 0
NetEventDLL = "%SystemRoot%\System32\netevent.dll"
IoLogMsgDLL = "%SystemRoot%\System32\IoLogMsg.dll"
;TrayIconExe = "comsmd.exe -try"
UninstallExe = "un3c656"
UnInstallName = "3Com 3CXFEM656 Uninstaller"
Manufacturer = "3Com"
DISABLEPCMCIASYS = "0"


[FileConstants-Elpc656]
GenericAdapterName = "FEM656C-3Com Global 10-100+56K CardBus PC Card-(Fast Ethernet)"
GenericDriverName  = "FEM656C-3Com Global 10-100+56K CardBus PC Card-(Fast Ethernet)"
;ms; GenericSysName = "Elpc656.sys"
GenericName = "Elpc656"
ProductMajorVersion = "2"
ProductMinorVersion = "0"
ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)
ProductSoftwareName = "Elpc656"
ProductSoftwareDescription = "FEM656C-3Com Global 10-100+56K CardBus PC Card-(Fast Ethernet)"
;ms; ProductSoftwareImagePath = "\SystemRoot\System32\drivers\"$(GenericSysName)
NetRuleSoftwareType = "Elpc656Sys ndisDriver Elpc656Driver"
NetRuleSoftwareUse = $(SoftwareType)
NetRuleSoftwareBindForm = """Elpc656Sys"" yes no container"
NetRuleSoftwareClass = {"Elpc656Driver basic"}
NetRuleSoftwareBindable = {"Elpc656Driver Elpc656Adapter non exclusive 100"}
ProductHardwareName = "Elpc656"
ProductHardwareDescription = "FEM656C-3Com Global 10-100+56K CardBus PC Card-(Fast Ethernet)"
NetRuleHardwareType = "Elpc656 Elpc656Adapter"
NetRuleHardwareBindForm = " yes yes container"
NetRuleHardwareClass = {"Elpc656Adapter basic"}
ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
ParamKeyName   = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
VERS1Manufacturer = "3Com"
VERS1Product = "10-100+56K CardBus PC Card"
VERS1Type    = "Elpc656-FastEtherLink"
PCMCIA = 0

[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
NT350VersionConstant = "3.50"
NT310VersionConstant = "3.10"
NT400VersionConstant = "(4.0)"
DIAGCARDTYPE  = "3C656"

[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)


[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]
 set Status = STATUS_FAILED
 set Option = $($1)
 set SrcDir = $($2)
 set AddCopy = $($3)
 set DoCopy = $($4)
 set DoConfig = $($5)

 Set !DebugOutputControl = 1

 set LanguageList = ^(LanguagesSupported, 1)
 Ifcontains(i) $($0) NOT-IN $(LanguageList)
 Return STATUS_NOLANGUAGE
 endif

 set-subst LF = "\n"

 read-syms GeneralConstants
	read-syms AllFileConstants
 read-syms FileConstants"-"$(Option)
 read-syms DialogConstants$(!STF_LANGUAGE)"-"$(Option)
 ifstr(i) $(!NTN_Origination) == "NCPA"
 set Continue = $(OK)
 endif

 read-syms AllFileConstants$(!STF_LANGUAGE)
 read-syms FileConstants$(!STF_LANGUAGE)"-"$(Option)

 detect date

 set-title $(FunctionTitle)

 set to = Begin
 set from = Begin
 set CommonStatus = STATUS_SUCCESSFUL

 EndWait

Begin = +

set CurrentVersionValue = ""
 OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows Nt\CurrentVersion" $(!REG_KEY_READ) KeyNt
 Ifstr(i) $(KeyNt) != ""
 GetRegValue $(KeyNt) "CurrentVersion" CurrentVersionValue
 Debug-Output "$(InfFile) $(Option): WinNT CurrentVersion ="$(CurrentVersionValue)
 CloseRegKey $(KeyNt)
 Endif

     set NDIS_VER    = NDIS4
     set ProductSoftwareImagePath = "\SystemRoot\System32\drivers\EL656CD4.SYS"


ifstr(i) (*($(CurrentVersionValue),4)) == $(NT310VersionConstant)
Debug-Output "$(InfFile) $(Option): Configureadapter"
 set Error = "Windows NT v3.10 is not support by this product"
 goto fatal
 endif


 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)
   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), 7)
 set IOBaseAddrValue	= *($(IOBaseAddrList), 25)
 set MemoryAddrValue	= *($(MemoryAddrList), 13)
 set LinkValue          = *($(LinkList), 1)
 set FlowControlValue 	= *($(FlowControlList), 1)
 set LinkNotPresentFailValue = *($(LinkNotPresentFailList), 2)



 Set from = $(fatal)
 Set to = $(fatal)
 Goto $(StartLabel)


installadapter = +
 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

 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

;ms
Set FileToCheck = $($R1)\OEMSETUP.INF
 LibraryProcedure FilePresent,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
 Ifstr(i) $(FilePresent) != "YES"
     Goto installadapter
 Endif
;ms




 Set SrcDir = $($R1)
 install "Install-Dll"

 Debug-Output "Install-Uninstaller"
 install "Install-Uninstaller"

 StartWait
  ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)
   Debug-Output "$(InfFile) $(Option): Windows NT 4.00"
;   OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" $(!REG_KEY_ALL_ACCESS) KeyNt
;   set TrayIconList = {COMSMDEXE,$(NoTitle),$(!REG_VT_SZ),$(TrayIconExe)}
;   SetRegValue $(KeyNt) $(TrayIconList)
;   Debug-Output "Install-TraynCpl"
;   install "Install-TrayAndCpl"
;   CloseRegKey $(KeyNt)
;   RunProgram ExitCode "Windows Directory" "" UN3C656.EXE "-version"


   OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $(!REG_KEY_ALL_ACCESS) KeyNt
   ifstr $(KeyNt) == ""
     CreateRegKey $(!REG_H_LOCAL) {"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" , 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" KeyNt
   endif
   OpenRegKey $(KeyNt) "" "3ComNicUnInstall" $(!REG_KEY_ALL_ACCESS) KeyNt2
   ifstr $(KeyNt2) == ""
    CreateRegKey $(KeyNt) {"3ComNicUnInstall" , 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" KeyNt2
   endif
   set NewValueList = {{DisplayName, $(NoTitle), $(!REG_VT_SZ), "3Com FEM656C Uninstaller"},+
		      {UninstallString, $(NoTitle), $(!REG_VT_SZ), "UN3C656C.EXE"}}
   Shell $(UtilityInf), AddValueList, $(KeyNt2), $(NewValueList)
   ifint $($ShellCode) != $(!SHELL_CODE_OK)
    goto ShellCodeError
   endif
   CloseRegKey $(KeyNt)
   CloseRegKey $(KeyNt2)
  endif
 EndWait

 goto adaptersetup


configureadapter = +
 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) == "IoBaseAddress"
		 set IOBaseAddrIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "MemoryMappedBaseAddress"
		 set MemoryAddrIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "InterruptNumber"
		 set IRQIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "FlowControl"
	         set FlowControlIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "LinkSelection"
		 set LinkIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "LinkNotPresentFail"
	         set LinkNotPresentFailIndex = $(ValueData)
		endif
 EndForListDo

 set IRQValue = *($(IRQList), ~($(IRQValues),$(IRQIndex)))
 ifstr(i) $(IRQValue) == ""
		set IRQValue = *($(IRQList), 7)
 endif

 set MemoryAddrValue = *($(MemoryAddrList), ~($(MemoryAddrValues),$(MemoryAddrIndex)))
 ifstr(i) $(MemoryAddrValue) == ""
		set MemoryAddrValue = *($(MemoryAddrValues), 13)
 endif

 set IOBaseAddrValue = *($(IOBaseAddrList), ~($(IOBaseAddrValues),$(IOBaseAddrIndex)))
 ifstr(i) $(IOBaseAddrValue) == ""
		set IOBaseAddrValue = *($(IOBaseAddrList), 25)
 endif

 set FlowControlValue = *($(FlowControlList), ~($(FlowControlValues),$(FlowControlIndex)))
 ifstr(i) $(FlowControlValue) == ""
        set FlowControlValue = *($(FlowControlList), 1)
 endif

 set LinkValue = *($(LinkList), ~($(LinkValues),$(LinkIndex)))
 	ifstr(i) $(LinkValue) == ""
        	set LinkValue = *($(LinkList), 1)
 endif

 set LinkNotPresentFailValue = *($(LinkNotPresentFailList), ~($(LinkNotPresentFailValues),$(LinkNotPresentFailIndex)))
 ifstr(i) $(LinkNotPresentFailValue) == ""
        set LinkNotPresentFailValue = *($(LinkNotPresentFailList), 2)
 endif


adaptersetup = +

;------------------------------
;3/26/99 MS
;------------------------------
ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial" $(MAXIMUM_ALLOWED) MyNewSerialHandle
	Set NewValueList = { {PermitShare, $(NoTitle),$(!REG_VT_DWORD),1},+
	                     {ShareInterrupt,$(NoTitle),$(!REG_VT_DWORD),1}}
	Shell  $(UtilityInf), AddValueList, $(MyNewSerialHandle), $(NewValueList)
	CloseRegKey $(MyNewSerialHandle)

;	OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000" $(MAXIMUM_ALLOWED) MyNewSerialHandle
;	Ifstr $(MyNewSerialHandle) == $(KeyNull)
;	    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialKey
;	    CreateRegKey $(SerialKey) {"Serial10000",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyNewSerialHandle
;	    CloseRegKey $(SerialKey)
;	endif
;	set NewValueList = {{DosDevices, $(NoTitle),$(!REG_VT_SZ), "COM5"},+              ; "COMx"      
;			    {ForceFifoEnable, $(NoTitle), $(!REG_VT_DWORD), 1},+                        ; Always false
;			    {Interrupt, $(NoTitle), $(!REG_VT_DWORD), 15},+   
;			    {PortAddress, $(NoTitle),$(!REG_VT_DWORD), 1016}}     
;	Shell  $(UtilityInf), AddValueList, $(MyNewSerialHandle), $(NewValueList)
;	Debug-Output "<DBG> AddValueList - DosDevices, ForceFifiEnable,..."
;	CloseRegKey $(MyNewSerialHandle)

	OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP\SERIALCOMM" $(MAXIMUM_ALLOWED) MyNewSerialHandle
	Ifstr $(MyNewSerialHandle) == $(KeyNull)
	    OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP" $(MAXIMUM_ALLOWED) SerialKey
	    CreateRegKey $(SerialKey) {"SERIALCOMM",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyNewSerialHandle
	    CloseRegKey $(SerialKey)
	endif
	SetRegValue $(MyNewSerialHandle) {"Serial0",$(NoTitle),$(!REG_VT_SZ),"COM1"}
	CloseRegKey $(MyNewSerialHandle)

;	OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" $(MAXIMUM_ALLOWED) MyNewSerialHandle
;	Ifstr $(MyNewSerialHandle) == $(KeyNull)
;	    OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion" $(MAXIMUM_ALLOWED) SerialKey
;	    CreateRegKey $(SerialKey) {"Ports",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyNewSerialHandle
;	    CloseRegKey $(SerialKey)
;	endif
;	SetRegValue $(MyNewSerialHandle) {"COM5:",$(NoTitle),$(!REG_VT_SZ), "9600,n,8,1"}
;	CloseRegKey $(MyNewSerialHandle)
    endif

	;OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" $(!REG_KEY_ALL_ACCESS) COM5KEY
	;SetRegValue $(COM5KEY) {"COM5:", 0, $(!REG_VT_SZ), "9600,n,8,1"}
	;CloseRegKey $(COM5KEY)
	;OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters\" $(!REG_KEY_ALL_ACCESSS) PARAMKEY
	;OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000" $(!REG_KEY_ALL_ACCESSS) SERIALKEY
	;ifstr $(SERIALKEY) == ""
	; CreateRegKey $(PARAMKEY) {"Serial10000", 0, GenericClass} "" $(!REG_KEY_WRITE) "" SERIALKEY
	; endif
	;SetRegValue $(SERIALKEY) {{"DosDevices", 0, $(!REG_VT_SZ), "COM5"} +
							;	{"ForceFifoEnable", 0, $(!REG_VT_DWORD), 1} +
							;	{"Interrupt", 0, $(!REG_VT_DWORD), 15} +
							;	{"PortAddress", 0, $(!REG_VT_DWORD), 1016}}
								
	;CloseRegKey $(PARAMKEY)
	;CloseRegKey $(SERIALKEY)
	;OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP\SERIALCOMM" $(!REG_KEY_ALL_ACCESS) TRISSER0KEY
	;SetRegValue $(TRISSER0KEY) {"TrisSer0", 0, $(!REG_VT_SZ), "COM5"} 
	;CloseRegKey $(TRISSER0KEY)

;3/30MS	goto skipoptions
endif
;------------------------------
;3/26/99 MS
;------------------------------


;------------------------------------------------------
;3/29/99 added by MS
;------------------------------------------------------
    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
;------------------------------------------------------
;3/29/99 added by MS
;------------------------------------------------------

Debug-Output "MS 3/29/99"

 LoadLibrary "disk 1" $(DialogDllName) hLib
 read-syms FileDependentDlg$(!STF_LANGUAGE)"-"$(Option)
	set ENABLER = 0

Debug-Output "MS 3/29/99-1"

 ui start "InputDlg" $(hLib)

 set ExitButton = $(ButtonPressed)
	FreeLibrary $(hLib)

	ifstr(i) $(DLGEVENT) == "CONTINUE"

	set IOBaseAddrIndex		= $(Combo1Out)
	set MemoryAddrIndex		= $(Combo2Out)
	set IRQIndex			= $(Combo3Out)
	set FlowControlIndex		= $(Combo4Out)
	set LinkIndex              = $(Combo5Out)	
	set LinkNotPresentFailIndex	= $(Combo6Out)



	set ExitButton			= $(ButtonPressed)

		ui pop 1

	else-ifstr(i) $(DLGEVENT) == "EXIT"
		set CommonStatus = STATUS_USERCANCEL
		ui pop 1
		goto end
	else
		set CommonStatus = STATUS_USERCANCEL
		ui pop 1
		Debug-Output "Action: unknown. Bye."
		goto end
	endif

Debug-Output "MS 3/29/99-2"



skipoptions =+

 ifint $(OldVersionExisted) == $(TRUE)
 ifstr(i) $(!NTN_InstallMode) == configure
 goto writeparameters
 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

 Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)

 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)

 set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
 {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+
 {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+
 {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
 {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
 {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 = +


set BusTypeNum = 1
ifint $($ShellCode) != $(!SHELL_CODE_OK)
 Debug-Output "ShellCode error."
 goto ShellCodeError
 endif

ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
 set MemoryAddrValue	= *($(MemoryAddrList), 13)
 set IRQValue		= *($(IRQList), 7)
 set IOBaseAddrValue	= *($(IOBaseAddrList), 25)
 set FlowControlValue	= *($(FlowControlList),1)
 set LinkValue          = *($(LinkList), 1)
 set LinkNotPresentFailValue	= *($(LinkNotPresentFailList), 2)
else
 set MemoryAddrValue	= *($(MemoryAddrValues),~($(MemoryAddrList), $(MemoryAddrIndex)))
 set IRQValue		= *($(IRQValues),~($(IRQList), $(IRQIndex)))
 set IOBaseAddrValue	= *($(IOBaseAddrValues),~($(IOBaseAddrList), $(IOBaseAddrIndex)))
 set FlowControlValue	= *($(FlowControlValues), ~($(FlowControlList), $(FlowControlIndex)))
 set LinkValue          = *($(LinkValues), ~($(LinkList), $(LinkIndex)))
 set LinkNotPresentFailValue	= *($(LinkNotPresentFailValues),~($(LinkNotPresentFailList), $(LinkNotPresentFailIndex)))
endif

set UpPollEnableValue = 0
set DnPollEnableValue = 0

 set NewValueList = {{IoBaseAddress, $(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
	{IoLength,			$(NoTitle),$(!REG_VT_DWORD), 127},+
	{MemoryMappedBaseAddress, 	$(NoTitle),$(!REG_VT_DWORD),$(MemoryAddrValue)},+
	{MemoryMappedSize, 		$(NoTitle),$(!REG_VT_DWORD),4096},+
	{InterruptNumber, 		$(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+
	{MediaType, 			$(NoTitle),$(!REG_VT_DWORD),1},+
	{BusType, 			$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
 	{BusNumber, 			$(NoTitle),$(!REG_VT_DWORD),0},+
	{FlowControl,	  		$(NoTitle),$(!REG_VT_SZ),$(FlowControlValue)},+
        {LinkSelection,      		$(NoTitle),$(!REG_VT_DWORD),$(LinkValue)},+
	{LinkNotPresentFail,  		$(NoTitle),$(!REG_VT_DWORD),$(LinkNotPresentFailValue)},+
	{UpPollEnable,                  $(NoTitle),$(!REG_VT_DWORD),$(UpPollEnableValue)},+
	{DnPollEnable,                  $(NoTitle),$(!REG_VT_DWORD),$(DnPollEnableValue)},+
	{TransmitBufferSize,		$(NoTitle),$(!REG_VT_DWORD),7168},+
	{AdapterType,			$(NoTitle),$(!REG_VT_DWORD),0},+
	{DriverMode,			$(NoTitle),$(!REG_VT_DWORD),1},+
        {ISAInterrupt,                  $(NoTitle),$(!REG_VT_DWORD),1},+
	{OSType,			$(NoTitle),$(!REG_VT_DWORD),1},+
	{PCMCIA,			$(NoTitle),$(!REG_VT_DWORD),0}}


 Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
;------------------------------------------------------------------------
; 3/26/99 Modified for Unattended Setup (MS) 
;------------------------------------------------------------------------
   ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
        Shell $(UtilityInf),AddDefaultNetCardParameters,$(KeyParameters)
	set ValueList = {}
	EnumRegValue $(KeyParameters) ValueList
	ForListDo $(ValueList)
		set ValueItem = $($)
		set ValueName = *($(ValueItem),1)
		set ValueData = *($(ValueItem),4)

		ifstr(i) $(ValueName) == "IoBaseAddress"
		 set IOBaseAddrIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "MemoryMappedBaseAddress"
		 set MemoryAddrIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "InterruptNumber"
		 set IRQIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "FlowControl"
	         set FlowControlIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "LinkSelection"
		 set LinkIndex = $(ValueData)
		else-ifstr(i) $(ValueName) == "LinkNotPresentFail"
	         set LinkNotPresentFailIndex = $(ValueData)
		endif
	EndForListDo
   endif
;------------------------------------------------------------------------
;3/26/99 MS
;------------------------------------------------------------------------
 CloseRegKey $(KeyParameters)


	ifint $(DISABLEPCMCIASYS) == 1
		set PCMCIAKeyName = $(!NTN_ServiceBase)"\Pcmcia"
	OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIAKeyName) $(MAXIMUM_ALLOWED) PCMCIAKey
		SetRegValue $(PCMCIAKey) {Start, 0, $(!REG_VT_DWORD),4}
	CloseRegKey $(PCMCIAKey)
	endif


 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


;---------------------------------------------------------------------------
; SystemSoft Modifications -- Get from Milton -- 1/19/99 (MS)
;---------------------------------------------------------------------------
; Going to create an entry under Pcmcia
;---------------------------------------------------------------------------
set PcmciaKeyName = $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation"
OpenRegKey $(!REG_H_LOCAL) "" $(PcmciaKeyName) $(MAXIMUM_ALLOWED) SSHandle
Ifstr $(SSHandle) == $(KeyNull)
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database" $(MAXIMUM_ALLOWED) SSKey
	CreateRegKey $(SSKey) {"3Com Corporation",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SSHandle
	CloseRegKey $(SSKey)
endif
CloseRegKey $(SSHandle)

OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CXFEM656CT" $(MAXIMUM_ALLOWED) SSHandle
Ifstr $(SSHandle) == $(KeyNull)
 OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation" $(MAXIMUM_ALLOWED) SSKey
 CreateRegKey $(SSKey) {"3CXFEM656CT",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SSHandle
 CloseRegKey $(SSKey)
endif

OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CXFEM656C-LAN" $(MAXIMUM_ALLOWED) SSHandle
Ifstr $(SSHandle) == $(KeyNull)
 OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation" $(MAXIMUM_ALLOWED) SSKey
 CreateRegKey $(SSKey) {"3CXFEM656C-LAN",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SSHandle
 CloseRegKey $(SSKey)
endif


;-- LAN (0) entry
;OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CCFEM656BT\0" $(MAXIMUM_ALLOWED) SSHandle
;Ifstr $(SSHandle) == $(KeyNull)
; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CCFEM656BT" $(MAXIMUM_ALLOWED) SSKey
; CreateRegKey $(SSKey) {"0",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SSHandle
; CloseRegKey $(SSKey)
; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CCFEM656BT\0" $(MAXIMUM_ALLOWED) SSHandle
;endif

;set NewValueList = {{Driver,$(NoTitle),$(!REG_VT_SZ),"ELPC656"},+
;                   {DeviceType,$(NoTitle),$(!REG_VT_SZ),"NET"}}
;Shell $(UtilityInf), AddValueList, $(SSHandle), $(NewValueList)
;CloseRegKey $(SSHandle)

;-- Modem (1) entry
;OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CCFEM656BT\1" $(MAXIMUM_ALLOWED) SSHandle
;Ifstr $(SSHandle) == $(KeyNull)
; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CCFEM656BT" $(MAXIMUM_ALLOWED) SSKey
; CreateRegKey $(SSKey) {"1",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SSHandle
; CloseRegKey $(SSKey)
; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CXFEM656BT\1" $(MAXIMUM_ALLOWED) SSHandle
;endif

OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CXFEM656CT" $(MAXIMUM_ALLOWED) SSHandle
set NewValueList = {{Driver,$(NoTitle),$(!REG_VT_SZ),"ELPC656"},+
		   {DeviceType,$(NoTitle),$(!REG_VT_SZ),"NET"}}
Shell $(UtilityInf), AddValueList, $(SSHandle), $(NewValueList)
CloseRegKey $(SSHandle)

OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Pcmcia\Database\3Com Corporation\3CXFEM656C-LAN" $(MAXIMUM_ALLOWED) SSHandle
set NewValueList = {{Driver,$(NoTitle),$(!REG_VT_SZ),"ELPC656"},+
		   {DeviceType,$(NoTitle),$(!REG_VT_SZ),"NET"}}
Shell $(UtilityInf), AddValueList, $(SSHandle), $(NewValueList)
CloseRegKey $(SSHandle)
;----------------------------------------------------------------------------
; End of SystemSoft Modifications
;----------------------------------------------------------------------------


 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

 set RegistryErrorIndex = $($R0)

 Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
 goto fatalregistry
 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


 endif


	ifint $(DISABLEPCMCIASYS) == 1
		set PCMCIAKeyName = $(!NTN_ServiceBase)"\Pcmcia"
	OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIAKeyName) $(MAXIMUM_ALLOWED) PCMCIAKey
		SetRegValue $(PCMCIAKey) {Start, 0, $(!REG_VT_DWORD),0}
	CloseRegKey $(PCMCIAKey)
	endif
;	 ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)
;		 Debug-Output "$(InfFile) $(Option): Windows NT 4.00 remove icon"
;		 OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" $(!REG_KEY_ALL_ACCESS) KeyNt
;		 set TrayIconList = COMSMDEXE
;		 DeleteRegValue $(KeyNt) $(TrayIconList)
;		 CloseRegKey $(KeyNt)
;	 endif
	RunProgram ExitCode "Windows Directory" "" UN3C656C.EXE "-inf"

goto end


UpgradeSoftware = +

;;;;ms HQ94 2/22/98 
 Debug-Output "$(InfFile):*******************UpdateSoftware******************" 
 Debug-Output "MS!!!: UpdateSoftware" 

 set !UG_Filename = $($R0)
 ifstr(i) $(!UG_Filename) != ""
 install "Install-Update"
 ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
 goto fatal
 endif
 endif

 Debug-Output "$(InfFile):*******************UpdateSoftware******************" 
;;;;ms HQ94

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 

 Debug-Output "$(InfFile):*******************UpdateSoftware******************1" 

OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(!REG_KEY_ALL_ACCESS) KeyProduct 
Ifstr $(KeyProduct) != "" 
Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct) 
ifint $($ShellCode) != $(!SHELL_CODE_OK) 
Debug-Output "ShellCode error" 
goto ShellCodeError 
endif 

 Debug-Output "$(InfFile):*******************UpdateSoftware******************2" 

set !UG_Filename = $($R0) 
install "Install-INF" 
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS 
goto fatal 
endif 

 Debug-Output "$(InfFile):*******************UpdateSoftware******************3" 

install "Install-DLL" 
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS 
goto fatal 
endif 

 Debug-Output "$(InfFile):*******************UpdateSoftware******************4" 
;;;;ms HQ94


 ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
 OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct

 Ifstr $(KeyProduct) != $(KeyNull)
 GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
 set Version = *($(VersionInfo), 4)

 Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)

 ifint $($ShellCode) != $(!SHELL_CODE_OK)
 Debug-Output "ShellCode error"
 goto ShellCodeError
 endif

; set !UG_Filename = $($R0)
; ifstr(i) $(!UG_Filename) != ""
; install "Install-Update"
; ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
; goto fatal
; endif
; endif

 SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
 SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}

 ifint $(Version) != $(ProductVersion)
 endif
 CloseRegKey $(KeyProduct)
 else
 goto fatalregistry
 endif
 else
 OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
 $(MAXIMUM_ALLOWED) NetworkCardKey
 Ifstr(i) $(NetworkCardKey) != $(KeyNull)
 GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
 set ServiceName = *($(ServiceNameInfo), 4)

 OpenRegKey $(NetworkCardKey) "" "NetRules" +
 $(MAXIMUM_ALLOWED) NetRuleKey
 Ifstr(i) $(NetRuleKey) != $(KeyNull)
 else
 goto fatalregistry
 endif

 CloseRegKey $(NetRules)
 CloseRegKey $(NetworkCardKey)
 else
 goto fatalregistry
 endif
 OpenRegKey $(!REG_H_LOCAL) "" +
 $(!NTN_ServiceBase)"\"$(ServiceName) +
 $(MAXIMUM_ALLOWED) ServiceKey

 Ifstr(i) $(ServiceKey) != $(KeyNull)
 CloseRegKey $(ServiceKey)
 else
 goto fatalregistry
 endif
 endif

 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)


[DebugConfiguration]
 Set InfName = "OEMSETUP.INF"
return


[Install-Option]
 set STF_VITAL = ""

 ifstr(i) $(AddCopy) == "YES"
  ;;??AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  AddSectionFilesToCopyList Files-$(NDIS_VER) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
 endif

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

 Exit


[Install-Update]
 Debug-Output "$(InfFile):*******************Install-Update******************" 
 Debug-Output "MS: Install-Update" 

 set STF_VITAL = ""
 set STF_OVERWRITE = "VERIFYSOURSEOLDER"
; AddSectionFilesToCopyList Files-tnicdiag $(SrcDir)win32 $(!STF_WINDOWSSYSPATH)
; AddSectionFilesToCopyList Files-HwDll $(SrcDir)WINNT $(!STF_WINDOWSSYSPATH)
; AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
 AddSectionFilesToCopyList Files-$(NDIS_VER) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
 AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 exit

 Debug-Output "MS: Install-Update" 
 Debug-Output "$(InfFile):*******************Install-Update******************" 

[Install-INF]
 set STF_VITAL = ""
 AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 Exit

[Install-Dll]
 set STF_VITAL	= ""
 AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 exit

;[Install-tnicdiag]
; set STF_VITAL = ""
; AddSectionFilesToCopyList Files-tnicdiag $(SrcDir) $(!STF_WINDOWSSYSPATH)
; AddSectionFilesToCopyList Files-HwDll $(SrcDir)WINNT $(!STF_WINDOWSSYSPATH)
; set !STF_NCPA_FLUSH_COPYLIST = TRUE
; CopyFilesInCopyList
; Exit

;[Install-TrayAndCpl]
; set STF_VITAL = ""
; AddSectionFilesToCopyList Files-TrayAndCpl $(SrcDir)win32 $(!STF_WINDOWSSYSPATH)
; set !STF_NCPA_FLUSH_COPYLIST = TRUE
; CopyFilesInCopyList
; Exit


[Install-Uninstaller]
   set STF_OVERWRITE	= "VERIFYSOURCEOLDER"
   set STF_VITAL = ""
   AddSectionFilesToCopyList Files-Uninstaller $(SrcDir) $(!STF_WINDOWSSYSPATH)
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   CopyFilesInCopyList
   Exit



[Source Media Descriptions]
 1 = "Windows NT Setup Disk #1"
 2 = "3Com Megahertz Global 10/100 LAN+56K Modem CardBus PC Card"


[ProductType]
STF_PRODUCT = Winnt
STF_PLATFORM = I386


[Files-Inf]
2, OEMSETUP.INF, SIZE=80000,	RENAME=$(!UG_Filename)

[Files-Dll]
2, Elpc656c.DLL, SIZE=90000


[Files-Uninstaller]
2,UN3C656C.EXE, SIZE=100000

[Files-NDIS4]
2,EL656CD4.SYS , SIZE=60000

;[Files-NDIS3]
;2,EL656ND3.SYS , SIZE=60000

;[Files-HwDll]
;2,hwaccess.dll, SIZE=20198
;2,pcomdrv.sys, SIZE=5000
;2,tc656cfg.dll, SIZE=59458

;[Files-tnicdiag]
;2,tnicdiag.exe, SIZE=165504
;2,tnicdiag.hlp, SIZE=20877
;2,tvaraddr.txt, SIZE=113
;2,un3c656.exe, SIZE=100000

;[Files-TrayAndCpl]
;2,comsmd.exe, SIZE=8957


[LanguagesSupported]
 ENG

[AllFileConstantsENG]
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:"
;ms DialogDllName = "Elpc656.DLL"


[FileConstantsENG-Elpc656]
DialogDllName 		= "Elpc656c.DLL"
FunctionTitle		= $(GenericAdapterName)" Setup"$(GenericInfVersion)
ProductSoftwareTitle	= $(GenericDriverName)
ProductHardwareTitle	= $(GenericAdapterName)
IRQList 		= ^(IRQChoices, 1)
IRQValues		= ^(IRQChoices, 2)
InterruptStyleValues	= ^(InterruptStyleChoices, 2)
IOBaseAddrList		= ^(IOBaseAddrChoices, 1)
IOBaseAddrValues	= ^(IOBaseAddrChoices, 2)
MemoryAddrList		= ^(MemoryAddrChoices,1)
MemoryAddrValues	= ^(MemoryAddrChoices,2)
FlowControlList        	= ^(FlowControlChoices, 1)
FlowControlValues      	= ^(FlowControlChoices, 2)
LinkList                = ^(LinkChoices, 1)
LinkValues              = ^(LinkChoices, 2)
LinkNotPresentFailList 	 = ^(LinkNotPresentFailChoices, 1)
LinkNotPresentFailValues = ^(LinkNotPresentFailChoices, 2)


[DialogConstantsENG-Elpc656]
Help = "&Help"
Exit = "Cancel"
OK = "OK"
HelpContext = ""
Continue = "Continue"
Cancel = "Cancel"



[FileDependentDlgENG-Elpc656]
DlgType = "RadioCombination"
DlgTemplate = "Elpc656"
Caption = $(FunctionTitle)
HelpContext = $(!IDH_DB_OEMNADE2_INS)
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO}
Combo1Label = "I/O Port"
Combo2Label = "Memory Address"
Combo3Label = "Interrupt"
Combo4Label = "Flow Control"
Combo5Label = "Network Link Selection"
Combo6Label = "Link Not Present Fail"

Combo1List = $(IOBaseAddrList)
Combo1Out = $(IOBaseAddrValue)
Combo2List = $(MemoryAddrList)
Combo2Out = $(MemoryAddrValue)
Combo3List = $(IRQList)
Combo3Out = $(IRQValue)
Combo4List = $(FlowControlList)
Combo4Out = $(FlowControlValue)
Combo5List = $(LinkList)
Combo5Out = $(LinkValue)
Combo6List = $(LinkNotPresentFailList)
Combo6Out  = $(LinkNotPresentFailValue)

ComboListItemsIn = {Combo1List,Combo2List,Combo3List, Combo4List, Combo5List, Combo6List} 
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out, Combo4Out, Combo5Out, Combo6Out}

EditTextIn = {"",""}
EditTextLim = {"",""}

[FlowControlChoices]
FlowControl_1 = "YES", "YES"
FlowControl_2 = "NO", "NO"

[LinkChoices]
Link_1 = "Auto Negotiation",512
Link_2 = "100 BT Full Duplex",256
Link_3 = "100 BT Half Duplex",128
Link_4 = "10 BT Full Duplex",64
Link_5 = "10 BT Half Duplex",32

[LinkNotPresentFailChoices]
LinkNotPresentFail_1 = "YES",1
LinkNotPresentFail_2 = "NO", 0


[MemoryAddrChoices]
MA_1  = "0xC8000", 819200
MA_2  = "0xC9000", 823296
MA_3  = "0xCA000", 827392
MA_4  = "0xCB000", 831488
MA_5  = "0xCC000", 835584
MA_6  = "0xCD000", 839680
MA_7  = "0xCE000", 843776
MA_8  = "0xCF000", 847872
MA_9  = "0xD0000", 851968
MA_10 = "0xD1000", 856064
MA_11 = "0xD2000", 860160
MA_12 = "0xD3000", 864256
MA_13 = "0xD4000", 868352
MA_14 = "0xD5000", 872448
MA_15 = "0xD6000", 876544
MA_16 = "0xD7000", 880640
MA_17 = "0xD8000", 884736
MA_18 = "0xD9000", 888832
MA_19 = "0xDA000", 892928
MA_20 = "0xDB000", 897024
MA_21 = "0xDC000", 901120
MA_22 = "0xDD000", 905216
MA_23 = "0xDE000", 909312

[IRQChoices]
IRQ_1 = "3",3
IRQ_2 = "4",4
IRQ_3 = "5",5
IRQ_4 = "7",7
IRQ_5 = "9",9
IRQ_6 = "10",10
IRQ_7 = "11",11
IRQ_8 = "15",15

[IOBaseAddrChoices]
IOBase_1  = "0x1000",4096
IOBase_2  = "0x1100",4352
IOBase_3  = "0x1200",4608
IOBase_4  = "0x1300",4864
IOBase_5  = "0x1400",5120
IOBase_6  = "0x1500",5376
IOBase_7  = "0x1600",5632
IOBase_8  = "0x1700",5888
IOBase_9  = "0x2000",8192
IOBase_10 = "0x2100",8448
IOBase_11 = "0x2200",8704
IOBase_12 = "0x2300",8960
IOBase_13 = "0x2400",9216
IOBase_14 = "0x2500",9472
IOBase_15 = "0x2600",9728
IOBase_16 = "0x2700",9984
IOBase_17 = "0x3000",12288
IOBase_18 = "0x3100",12544
IOBase_19 = "0x3200",12800
IOBase_20 = "0x3300",13056
IOBase_21 = "0x3400",13312
IOBase_22 = "0x3500",13568
IOBase_23 = "0x3600",13824
IOBase_24 = "0x3700",14080
IOBase_25 = "0x3800",14336
IOBase_26 = "0x3900",14592
IOBase_27 = "0x3A00",14848
IOBase_28 = "0x3B00",15104
IOBase_29 = "0x3C00",15360
IOBase_30 = "0x3D00",15616
IOBase_31 = "0x3E00",15872
IOBase_32 = "0x3F00",16128

Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web5, load: 1.32