OEMSETUP.INF Driver File Contents (ndis3-4.zip)

;***********************************************************************
;
;  OEMSETNT.INF
;
;  LAN9000 Adapter card and driver SETUP INF file.
;
;
;  Copyright (c) 2000  Standard Microsystems Corp.  All Rights Reserved
;
;
;  22 November 1994   D. Ebert BaseBand Technologies.
;                     Updates for NT 3.5.
;  13 January 1995    D. Ebert BaseBand Technologies.
;                     Updates for FEAST.
;  10 August  1995    D. Ebert BaseBand Technologies.
;                     Updates for PCMCIA.
;  28 August  1996    John YongJiang Yi.
;                     Elisa Research Inc.
;                     Updates for both Multi-Function and
;                     single  function Card
;
;  Apr. 24, 1997      Shawn X.D. Meng  Elisa Research Inc.
;                     Added new fewture about Early Transmit, Flow Control
;                     and Duplex.
;
;  May 8,   1998      J. Cao            ERI.
;                     Change installation file name and 
;                     some display strings
;
;   April 26, 2000    XXXXX
		      - Added proper registry entries to allow Microsoft
;                     - PCMCIA enabler to correctly configure PC Card.
;                     - Added support for LAN91C110 Ethernet+Modem card.
;		      - To fix issues with events added driver to NetEventDLL
;
;              
;***********************************************************************
;
; ifdef AltName
;
; ELISA_CardManufacturer AND ELISA_CardKeyName NEED TO BE MODIFIED ACCORDING TO
; ELISA CARD TUPLE 
; Example.
;
; 1.In PcmciaKeysSMCM section
;   CardManufacturer = "ELISA_CardManufacturer"
;   CardKeyName = "ELISA_CardKeyName"
;
; 2.In Options section
;   If SMCM is to be changed ELISA, Use ELISA replace SMCM in all of Sections.
;
; 3.In SetUpPcmcia section.
;   Changed CreateRegKey to be ELISA_CardManufacturer and SetRegValue to be
;   ELISA of Options section.   
;   
; endif
;
;***********************************************************************


[Identification]
    OptionType = NetAdapter

[PlatformsSupported]
    ISA
    EISA		
    PCMCIA

[LanguagesSupported]
    ENG

[Options]
    SMCM
    SMSC110

[OptionsTextENG]
    SMCM    = " LAN 9000 Ethernet PCCard+Modem"
    SMSC110 = " LAN 91C110 Ethernet PCCard+Modem"

[Source Media Descriptions]
    1   = "SMSC Driver Install Diskette"

[Files-SMC9000]
    1,LAN9000.sys, SIZE=40000

[Files-Dll]
    1,LAN9000.dll, SIZE=40000
    1,LAN9000.hlp, SIZE=40000

;[Files-SMCncdet]
;    1, LANncdet.dll, SIZE=40000

[Files-Inf]
    1, oemsetup.inf, SIZE=40000, RENAME=$(!UG_Filename)

[date]
    Now = {} ? $(!LIBHANDLE) GetSystemDate

[FileConstants]
    UtilityInf      = "UTILITY.INF"
    ParamInf        = "NCPARAM.INF"
    SubroutnInf     = "SUBROUTN.INF"
    NetEventDLL     = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\Drivers\lan9000.sys"

[RegistryConstantsSMSC110]
    SoftwareType             = "driver"
    Manufacturer             = "SMC"
    ProductMajorVersion      = "3"
    ProductMinorVersion      = "5"
    ProductVersion           = $(ProductMajorVersion)"."$(ProductMinorVersion)
    ProductSoftwareName      = "SMCM"
    ProductSoftwareTitle     = "SMSC9000 LAN+Modem Adapter Driver"
    ProductSoftwareImagePath = "\SystemRoot\System32\drivers\LAN9000.sys"
    NetRuleSoftwareType      = "SMC9000Sys ndisDriver SMC9000Driver"
    NetRuleSoftwareUse       = $(SoftwareType)
    NetRuleSoftwareBindForm  = """SMC9000Sys"" yes no container"
    NetRuleSoftwareClass     = {"SMC9000Driver basic"}
    NetRuleSoftwareBindable  = {"SMC9000Driver SMCMAdapter non exclusive 100"}
    ProductHardwareName      = "SMCM"
    ProductHardwareTitle     = "LAN 9000 PCMCIA LAN+Modem Adapter"
    NetRuleHardwareType      = "SMCM SMCMAdapter"
    NetRuleHardwareBindForm  = " yes yes container"
    NetRuleHardwareClass     = {"SMCMAdapter basic"}
    ProductKeyName           = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
    ParamKeyName             = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
    ProductSoftwareDescription = "LAN 9000 Ethernet PCCard+Modem Device Driver"
    ProductHardwareDescription = "LAN 9000 Ethernet PCCard+Modem Adapter"
;Combo++
    ;
    ;Modem Registry paths
    ;
    SerialCommPath      = "\\HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM"
    PortsPath           = "\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports"
    SMCEtherModemPath    = "\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\SMCEtherModem"

;Combo--


[RegistryConstantsSMCM]
    SoftwareType             = "driver"
    Manufacturer             = "SMC"
    ProductMajorVersion      = "3"
    ProductMinorVersion      = "5"
    ProductVersion           = $(ProductMajorVersion)"."$(ProductMinorVersion)
    ProductSoftwareName      = "SMCM"
    ProductSoftwareTitle     = "SMSC9000 LAN+Modem Adapter Driver"
    ProductSoftwareImagePath = "\SystemRoot\System32\drivers\LAN9000.sys"
    NetRuleSoftwareType      = "SMC9000Sys ndisDriver SMC9000Driver"
    NetRuleSoftwareUse       = $(SoftwareType)
    NetRuleSoftwareBindForm  = """SMC9000Sys"" yes no container"
    NetRuleSoftwareClass     = {"SMC9000Driver basic"}
    NetRuleSoftwareBindable  = {"SMC9000Driver SMCMAdapter non exclusive 100"}
    ProductHardwareName      = "SMCM"
    ProductHardwareTitle     = "LAN 9000 PCMCIA LAN+Modem Adapter"
    NetRuleHardwareType      = "SMCM SMCMAdapter"
    NetRuleHardwareBindForm  = " yes yes container"
    NetRuleHardwareClass     = {"SMCMAdapter basic"}
    ProductKeyName           = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
    ParamKeyName             = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
    ProductSoftwareDescription = "LAN 9000 Ethernet PCCard+Modem Device Driver"
    ProductHardwareDescription = "LAN 9000 Ethernet PCCard+Modem Adapter"
;Combo++
    ;
    ;Modem Registry paths
    ;
    SerialCommPath      = "\\HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM"
    PortsPath           = "\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports"
    SMCEtherModemPath   = "\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\SMCEtherModem"

;Combo--

[GeneralConstants]
    KeyNull            = ""
    MAXIMUM_ALLOWED    = 33554432
    KeyProduct         = ""
    KeyParameters      = ""
    PcmciaKey          = ""
    SMCPcmciaKey       = ""
    SMCKey             = ""
    NoTitle            = 0
    OldVersionExisted  = FALSE
    DriverPath         = $(!STF_NTPATH)\drivers

[PcmciaKeysSMSC110]
    CardManufacturer   = "SMSC"
    CardKeyName        = "LAN91C110 Ethernet+Modem"
    PcmciaPath         = $(!NTN_ServiceBase)"\Pcmcia\DataBase"
    SMCPcmciaPath      = $(!NTN_ServiceBase)"\Pcmcia\DataBase\"$(CardManufacturer)
    SMCPath            = $(!NTN_ServiceBase)"\Pcmcia\DataBase\"$(CardManufacturer)"\"$(CardKeyName)

[PcmciaKeysSMCM]
    CardManufacturer   = "SMC/Rockwell"
    CardKeyName        = "SMC9000 Ethernet/Modem PCCard"
    PcmciaPath         = $(!NTN_ServiceBase)"\Pcmcia\DataBase"
    SMCPcmciaPath      = $(!NTN_ServiceBase)"\Pcmcia\DataBase\"$(CardManufacturer)
    SMCPath            = $(!NTN_ServiceBase)"\Pcmcia\DataBase\"$(CardManufacturer)"\"$(CardKeyName)

[PcmciaKeys]
    CardManufacturer   = "SMC"
    CardKeyName        = "SMC9000 Ethernet PCCard"
    PcmciaPath         = $(!NTN_ServiceBase)"\Pcmcia\DataBase"
    SMCPcmciaPath      = $(!NTN_ServiceBase)"\Pcmcia\DataBase\"$(CardManufacturer)
    SMCPath            = $(!NTN_ServiceBase)"\Pcmcia\DataBase\"$(CardManufacturer)"\"$(CardKeyName)

[FileConstantsENG]
    ProCaption                 = "Windows NT Setup"
    ProCancel                  = "Cancel"
    ProCancelMsg               = "The "$(Option)" Adapter is not correctly installed.  "+
				 "Are you sure you want to cancel copying files?"

    ProCancelCap               = "Network Setup Message"
    ProText1                   = "Copying:"
    ProText2                   = "To:"
    FunctionTitle              = $(Option)" Ethernet Adapter Card Setup"

[SMCIrqs]
    IRQ0  = "5",5
    IRQ1  = "3",3
    IRQ2  = "4",4
    IRQ3  = "6",6
    IRQ4  = "7",7
    IRQ5  = "9",9
    IRQ6  = "10",10
    IRQ7  = "11",11
    IRQ8  = "12",12
    IRQ9  = "13",13
    IRQ10 = "14",14
    IRQ11 = "15",15

[SMCIoBase]
    Base0  = "0x300",0x0300
    Base1  = "0x200",0x0200
    Base2  = "0x220",0x0220
    Base3  = "0x240",0x0240
    Base4  = "0x260",0x0260
    Base5  = "0x280",0x0280
    Base6  = "0x2A0",0x02A0
    Base7  = "0x2C0",0x02C0
    Base8  = "0x2E0",0x02E0
    Base9  = "0x320",0x0320
    Base10 = "0x340",0x0340
    Base11 = "0x360",0x0360
    Base12 = "0x380",0x0380
    Base13 = "0x3A0",0x03A0
    Base14 = "0x3C0",0x03C0
    Base15 = "0x3E0",0x03E0

[SMCMedia]
    Media0 = "AutoDetect"
    Media1 = "10BaseT"
    Media2 = "BNC"

[SmcDuplex]
    Duplex0 = "HALF"
    Duplex1 = "FULL"
    Duplex2 = "Default"
    Duplex3 = "Auto-Negotiation"

[HexDigits]
    Hex0 = 0
    Hex1 = 1
    Hex2 = 2
    Hex3 = 3
    Hex4 = 4
    Hex5 = 5
    Hex6 = 6
    Hex7 = 7
    Hex8 = 8
    Hex9 = 9
    HexA = A
    HexB = B
    HexC = C
    HexD = D
    HexE = E
    HexF = F

;;Combo++

[ModemPortChoices]
    Port_1 = "COM3", 3
    Port_2 = "COM2", 2
    Port_3 = "COM1", 1
    Port_4 = "COM4", 4

[AttributeMemChoices]
    Add_1 = "0xD8000",884736
    Add_2 = "0xC0000",786432
    Add_3 = "0xC4000",802816
    Add_4 = "0xC8000",819200
    Add_5 = "0xCC000",835584
    Add_6 = "0xD0000",851968
    Add_7 = "0xD4000",868352
    Add_8 = "0xDC000",901120
    
[ModemIOBaseChoices]
    MBase0  = "0x3E8",0x03E8
    MBase1  = "0x2E8",0x02E8
    MBase2  = "0x2F8",0x02F8
    MBase3  = "0x3F8",0x03F8

[ModemIrqChoices]
    IRQ0  = "5",5
    IRQ1  = "3",3
    IRQ2  = "4",4

;;Combo--

[DialogConstantsENG]
    Help             = "&Help"
    Exit             = "&Cancel"
    OK               = "&OK"
    Advance          = "Ad&vance"
    ContextSMCM      = 30100
    ContextSMSC110   = 30100
;;J.C.++
    ContextLAN       = 30101
    ContextMODEM     = 30102
    ContextLANMODEM  = 30103
    ContextAdvance   = 30104
;;J.C.--
    HelpContext      = $(Context$(Option))
    Continue         = "Con&tinue"
    Cancel           = "&Cancel"
    BadAddr1         = "Network Address must be 12 hexadecimal digits"
    BadAddr2         = "Network Address contains invalid hexadecimal digit: "
    BadAddr3         = "Network Address invalid, group bit must be 0"

[FileDependentDlgENG]
    DlgType           = "RadioCombination"
    DlgTemplate       = $(Option)
;;Combo++
    Function          = "Function &Select"
    LAN               = "&LAN Only"
    MODEM             = "&Modem Only"
    LANMODEM          = "&LAN/Modem"
    CaptionLAN        = "LAN 9000 Ethernet PC Card+Modem (LAN) Setup"
    CaptionMODEM      = "LAN 9000 Ethernet PC Card+Modem (MODEM) Setup"
    CaptionLANMODEM   = "LAN 9000 Ethernet PC Card+Modem (COMBO) Setup"
    CaptionAdvance    = "Ethernet Adapter Card Advance Setup"
    CaptionSMCM       = "LAN 9000 Ethernet PC Card+Modem Setup"
    CaptionSMSC110    = "LAN 91C110 Ethernet PC Card+Modem Setup"
;;Combo--
    Caption           = $(Caption$(Option))
    Combo1Label       = "&IRQ Level:"
    Combo2Label       = "I/O &Base:"
    Combo3Label       = "&Media Type:"
;;Combo++
    Combo4Label       = "Modem &Port:"
    Combo5Label       = "Modem IR&Q:"
    Combo6Label       = "Modem I/&O:"
    Combo7Label       = "&Attribute Mem:"
;;Combo--

    Check1Label       = "&WatchDog Timer Enable:"
    Label3            = "&Network Address:"
    IrqList           = ^(SMCIrqs, 1)
    IoBaseList        = ^(SMCIoBase, 1)
    MediaList         = ^(SMCMedia, 1)
    MediaTypeValue    = 0
    Combo1List        = $(IrqList)
    Combo1Out         = $(IRQLevel)
    Combo2List        = $(IoBaseList)
    Combo2Out         = $(IOBaseAddress)
    Combo3List        = $(MediaList)
    Combo3Out         = $(Media)
;;Combo++

    ;
    ;  Add content about the new features.
    ;
    Combo8Label       = "&Duplex Mode:"
    Check2Label       = "&Early Transmit Enable:"
    Check3Label       = "&Flow Control Enable:"
    DuplexList        = ^(SmcDuplex, 1)
    Combo8List        = $(DuplexList)
    Combo8Out         = $(Duplex)
    ;
    ; End of adding.
    ;
    AttributeMemList  = ^(AttributeMemChoices, 1)
    ModemIOBaseList   = ^(ModemIoBaseChoices, 1)
    ModemPortList     = ^(ModemPortChoices, 1)
    ModemIrqList      = ^(ModemIrqChoices, 1)

    Combo7List      = $(AttributeMemList)
    Combo7Out       = *($(AttributeMemList), 5)

;; Modem

    ModemPortValues     = ^(ModemPortChoices,2)

    Combo4List      = $(ModemPortList)
    Combo4Out       = *($(ModemPortList), 3)
    
    Combo5List      = $(ModemIrqList)
    Combo5Out       = *($(ModemIrqList), 2)

    Combo6List      = $(ModemIOBaseList)
    Combo6Out       = *($(ModemIOBaseList), 3)

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

;;Combo--

    CBOptionsGreyed   = {}
    RCCtlFocusOn      = 403

[Identify]
    read-syms Identification
    shell "" DebugControl

    set Status     = STATUS_SUCCESSFUL
    set Identifier = $(OptionType)
    set Media      = #("Source Media Descriptions", 1, 1)

    Return $(Status) $(Identifier) $(Media)

[ReturnOptions]
    shell "" DebugControl

    set OptionList     = ^(Options, 1)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL

    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) in $(LanguageList)
      ifstr(i) $($0) == ""
	set Status = STATUS_NOLANGUAGE
	goto ExitReturnOptions
      endif
    else
      set Status = STATUS_NOLANGUAGE
      goto ExitReturnOptions
    endif

    set PlatformList = ^(PlatformsSupported, 1)
    Ifcontains(i) $($1) NOT-IN $(PlatformList)
      ifstr(i) $($1) != ""
	set Status = STATUS_NOTSUPPORTED
      endif
    endif

ExitReturnOptions = +
    Return $(Status) $(OptionList) $(OptionTextList)

[InstallOption]
    set Option   = $($1)
    set SrcDir   = $($2)
    set AddCopy  = $($3)
    set DoCopy   = $($4)
    set DoConfig = $($5)

    read-syms GeneralConstants
    read-syms FileConstants
    read-syms FileDependentDlg$(!STF_LANGUAGE)
    read-syms DialogConstants$(!STF_LANGUAGE)
    read-syms FileConstants$(!STF_LANGUAGE)

    Ifstr(i) $(Option) == "SMSC110"
	Set DlgTemplate = "SMCM"
    Endif

    shell "" DebugControl
    StartWait

    read-syms RegistryConstants$(Option)

    set LanguageList = ^(LanguagesSupported, 1)

    Ifstr(i) $(!NTN_InstallMode) == deinstall
	set SubFunction = RemoveAdapter
    else-Ifstr(i) $(!NTN_InstallMode) == install
	set SubFunction = InstallAdapter
    else-Ifstr(i) $(!NTN_InstallMode) == update
	set SubFunction = UpgradeSoftware
    else-Ifstr(i) $(!NTN_InstallMode) == configure
	set SubFunction = ConfigureAdapter
    else
	set SubFunction = NoWay
    endif

    Shell "" $(SubFunction)
    EndWait
    return $($R0)

[InstallAdapter]
    read-syms GeneralConstants
    read-syms FileConstants
    detect date

    set CurrentTime = *($(Now),1)
    set SrcDir      = $(!p:SrcDir)
    set Option      = $(!p:Option)
    set DoCopy      = $(!p:DoCopy)
    set AddCopy     = $(!p:AddCopy)
    set KeyProduct  = $(KeyNull)
    set DoSetup     = TRUE

    read-syms RegistryConstants$(Option)

    Debug-Output "STC_NCDETECT  = "$(!STF_NCDETECT)
    Debug-Output "STF_NCDETCARD = "$(!STF_NCDETCARD)
    Debug-Output "STF_NCOPTION = "$(!STF_NCOPTION)

    Set DetectedCard = FALSE
	Set PCMCIA = 1
	Set TypeList = {{IRQ,IRQ_List,IRQLevel},+
			{IOADDR, IOBaseAddressDecList, IOBaseValue},+
			{TRANSCEIVER, MediaList, MediaTypeValue}}
    set OldVersionExisted = FALSE
    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct

    Ifstr $(KeyProduct) != $(KeyNull)
	CloseRegKey $(KeyProduct)

	ifstr(i) $(!NTN_RegBase) == $(ProductKeyName)
	    Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle), +
		$(ProductVersion)
	    ifstr(i) $($R1) != "OK"
		Return STATUS_FAILED
	    endif
	else
	    Shell $(UtilityInf), CardExistedDlg
	    ifstr(i) $($R1) != "OK"
		Return STATUS_FAILED
	    endif
	    set OldVersionExisted = TRUE
	endif
    endif

    IfStr(i) $(DoSetup) == TRUE
	set NetworkAddress  = ""

	ifint $(MediaTypeValue) == 0
	    set MediaValue = "AutoDetect"
	else
	    set MediaValue = "10BaseT"
	endif

	set ReceiveTimer = 0
	set Duplex = "Auto-Negotiation"
	set FlowControl = 0
	set EarlyTransmit = 0

	set DLLPATH = $(SrcDir)
;        set DLLPATH = ""
	ifstr(i) $(DoCopy) == "YES"
	    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
	    Ifstr $(KeyProduct) != $(KeyNull)
		CloseRegKey $(KeyProduct)
		set DLLPATH = $(!STF_CWDDIR)
	    else
		set BuiltIn = "YES"
		ifstr(i) $(!NTN_Origination) == "NCPA"
		    Set BuiltIn = "NO"
		endif
		Shell $(UtilityInf) DoAskSource $(!STF_CWDDIR) $(SrcDir) $(BuiltIn)
		set DLLPATH = $($R1)
		set SrcDir  = $($R1)
	    endif
	endif

dowind =+

;;Combo++

	set AttributeMem = 0
	set ModemIOBase = 0
	set ModemIrq = 0
	set ModemPort = 0

	set Function      = 3
 
;;Combo--

	Shell "" AdapterSetup
	IfStr(i) $($R0) != TRUE
	    Return STATUS_USERCANCEL
	endif

	ifstr(i) $(MediaValue) == "AutoDetect"
	    set MediaTypeValue = 0
	else-ifstr(i) $(MediaValue) == "10BaseT"
	    set MediaTypeValue = 1
	endif

	IfStr(i) $(OldVersionExisted) == FALSE
	    Shell "" SetCopy $(DoCopy) $(AddCopy) $(SrcDir) "Install-Option"
	    IfStr(i) $($R0) == TRUE
		Shell "" SetSoftware $(CurrentTime)
		IfStr(i) $($R0) != TRUE
		    Return STATUS_FAILED
		endif
	    endif
	endif

	Shell "" SetHardware $(CurrentTime)

	IfStr(i) $($R0) == TRUE
	    Shell "" WriteParameters
	endif
    endif

    IfStr(i) $($R0) == TRUE
	Return STATUS_SUCCESSFUL
    else
	Return STATUS_FAILED
    endif


[ConfigureAdapter]
    set Option = $(!p:Option)

    read-syms GeneralConstants
    read-syms FileConstants
    read-syms FileDependentDlg$(!STF_LANGUAGE)

    Ifstr(i) $(Option) == "SMSC110"
	Set DlgTemplate = "SMCM"
    Endif

    set DLLPATH = $(!STF_CWDDIR)

    read-syms RegistryConstants$(Option)

    ifstr(i) $(!NTN_RegBase) == $(ProductKeyName)
	Shell $(UtilityInf) RegistryErrorString CANNOT_CONFIGURE_SOFTWARE
	Shell "" ShellError $($R0)
	Return STATUS_FAILED
    endif
    
    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct

    Ifstr $(KeyProduct) == $(KeyNull)
	Shell $(UtilityInf) RegistryErrorString CANNOT_FIND_COMPONENT_SERVICE
	Shell "" ShellError $($R0)
	Return STATUS_FAILED
    endif

    Shell $(UtilityInf) FindService, $(KeyProduct)

    Ifstr(i) $($R0) != NO_ERROR
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return STATUS_FAILED
    endif

    Set !KeyParameters = $($R2)
    CloseRegKey $($R1)

    Ifstr $(!KeyParameters) == $(KeyNull)
	Shell $(UtilityInf) RegistryErrorString CANNOT_FIND_COMPONENT_SERVICE
	Shell "" FatalError $($R0)
	Return STATUS_FAILED
    endif

    set ValueName = ""
    set ValueData = ""
    set ValueStr  = ""
    set ValueList = {}

    EnumRegValue $(!KeyParameters) ValueList
    set NetworkAddress = ""
    set PCMCIA = 0

    ForListDo $(ValueList)
	set ValueItem = $($)
	set ValueName = *($(ValueItem),1)
	set ValueData = *($(ValueItem),4)
	Ifstr(i) $(ValueName) == "Transceiver"
	    set MediaValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "Interrupt"
	    set IRQLevel = $(ValueData)
	else-ifstr(i) $(ValueName) == "IoBase"
	    set IOBaseValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "NetworkAddress"
	    set NetworkAddress = $(ValueData)
	else-ifstr(i) $(ValueName) == "PCMCIA"
	    set PCMCIA = $(ValueData)
;;Combo++
	else-ifstr(i) $(ValueName) == "Function"
	    set Function = $(ValueData)
	else-ifstr(i) $(ValueName) == "COMIRQNumber"
	    set ModemIrq = $(ValueData)
	else-ifstr(i) $(ValueName) == "COMIOBase"
	    set ModemIOBase = $(ValueData)
	else-ifstr(i) $(ValueName) == "PCCARDAttributeMemoryAddress"
	    set AttributeMem = $(ValueData)
	else-ifstr(i) $(ValueName) == "COMPort"
	    set ModemPort = $(ValueData)
	else-ifstr(i) $(ValueName) == "ReceiveTimer"
	    set ReceiveTimer = $(ValueData)
;;Combo--
		else-ifstr(i) $(ValueName) == "EarlyTransmit"
		    set EarlyTransmit = $(ValueData)
		else-ifstr(i) $(ValueName) == "Duplex"
		    set Duplex = $(ValueData)
		else-ifstr(i) $(ValueName) == "FlowControl"
		    set FlowControl = $(ValueData)
 
	endif
    EndForListDo

    ifstr(i) $(MediaValue) == "10BaseT"
	set MediaTypeValue = 0
    else-ifstr(i) $(MediaValue) == "BNC"
	set MediaTypeValue = 1
    endif

winagn =+
    Shell "" AdapterSetup
    IfStr(i) $($R0) != TRUE
	Return STATUS_USERCANCEL
    endif

    ifstr(i) $(MediaValue) == "10BaseT"
	set MediaTypeValue = 0
    else-ifstr(i) $(MediaValue) == "BNC"
	set MediaTypeValue = 1
    endif

    Shell "" WriteParameters

    IfStr(i) $($R0) == TRUE
	Return STATUS_SUCCESSFUL
    else
	Return STATUS_FAILED
    endif

[NoWay]
    read-syms GeneralConstants
    Shell "" ShellError "NoWay"
    Return STATUS_FAILED

[RemoveAdapter]
    read-syms GeneralConstants
    read-syms FileConstants

    set Option = $(!p:Option)

;Combo++

    Ifcontains(i) $(Option) in { "SMCM", "SMSC110" }
	read-syms CustomMessageDlg
	ui start "CustomMessageBox"
	ui pop 1
    Endif

;;Combo--
    read-syms RegistryConstants$(Option)

	Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), $(!NTN_RegBase)

	ifstr(i) $($R0) != NO_ERROR
	    Shell $(UtilityInf) RegistryErrorString $($R0)
	    Shell "" ShellError $($R0)
	    Return STATUS_FAILURE
	endif

;;Combo++

	  ; Remove Software Component

	  Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
		$(ProductSoftwareName)
	
	   ifstr(i) $($R0) != NO_ERROR
		Shell $(UtilityInf) RegistryErrorString $($R0)
		Shell "" ShellError $($R0)
		Return STATUS_FAILURE
    endif
    ;
    ; Remove Modem from the Registry
    ;
    Ifcontains(i) $(Option) in { "SMCM", "SMSC110" }
	  OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) MyNewSerialHandle
	  DeleteRegTree $(MyNewSerialHandle) "SMCEtherEthernetModem"
	  CloseRegKey $(MyNewSerialHandle)

	  OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP\SERIALCOMM" $(MAXIMUM_ALLOWED) MyNewSerialHandle
	  DeleteRegValue $(MyNewSerialHandle) "SMCEtherEthernetModem"
	  CloseRegKey $(MyNewSerialHandle)
    Endif
;;Combo--
    Return STATUS_SUCCESSFUL


[UpgradeSoftware]
    read-syms GeneralConstants

    set SrcDir      = $(!p:SrcDir)
    set Option      = $(!p:Option)

    read-syms RegistryConstants$(Option)

    ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
	Ifstr $(KeyProduct) == $(KeyNull)
	    Return STATUS_FAILED
	endif

	set DoCopy  = YES
	set AddCopy = YES
	Shell "" SetCopy $(DoCopy) $(AddCopy) $(SrcDir) "Install-Update"

	SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
	SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
	CloseRegKey $(KeyProduct)
    else
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) NetworkCardKey
	Ifstr(i) $(NetworkCardKey) == $(KeyNull)
	    Return STATUS_FAILED
	endif

	GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
	set ServiceName = *($(ServiceNameInfo), 4)

	OpenRegKey $(NetworkCardKey) "" "NetRules" $(MAXIMUM_ALLOWED) NetRuleKey
	Ifstr(i) $(NetRuleKey) == $(KeyNull)
	    Return STATUS_FAILED
	endif

	CloseRegKey $(NetRules)
	CloseRegKey $(NetworkCardKey)

	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ServiceName) $(MAXIMUM_ALLOWED) ServiceKey
	Ifstr(i) $(ServiceKey) == $(KeyNull)
	    Return STATUS_FAILED
	endif

	CloseRegKey $(ServiceKey)
    endif

    Return STATUS_SUCCESSFUL

[AdapterSetup]
    set Option = $(!p:Option)

    read-syms FileDependentDlg$(!STF_LANGUAGE)
    read-syms DialogConstants$(!STF_LANGUAGE)
    read-syms FileConstants$(!STF_LANGUAGE)
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms RegistryConstants$(Option)

    Ifstr(i) $(Option) == "SMSC110"
	Set DlgTemplate = "SMCM"
    Endif

    set Combo1Out          = $(!p:IRQLevel)
    set-dectohex Combo2Out = $(!p:IOBaseValue)
    set MediaValue         = $(!p:MediaValue)
    set NetworkAddress     = $(!p:NetworkAddress)
    set DLLPATH            = $(!p:DLLPATH)
;
;Combo++
    set-dectohex Combo7Out = $(!p:AttributeMem)   
    set-dectohex Combo6Out = $(!p:ModemIOBase)    
    set Combo5Out          = $(!p:ModemIrq)     
    set Combo4Out          = $(!p:ModemPort)    
;;Combo--
    set Combo8Out          = $(!p:Duplex)

    ifstr(i) $(DLLPATH) != ""
	Split-String $(DLLPATH) "\" TempList
	QueryListSize ListSize $(TempList)
	ifstr(i) *($(TempList), $(ListSize)) != "\"
	    set DLLPATH = $(DLLPATH)"\"
	endif
    endif

    SetHelpFile $(DLLPATH)LAN9000.hlp 30100 30105

    set AdapterStatus = FALSE

    set Combo3Out = $(MediaValue)

    set EditTextIn = {$(NetworkAddress)}
    set NotifyFields   = {NO, NO, NO}
    set EditTextLim    = {12}
    set EditFocusOn    = ""

     ifstr(i) $(Option) != "SMSC110"
;    ifstr(i) $(Option) != "smc91c100"
	ifint $(!p:ReceiveTimer) == 1
	    set CheckItemsIn = { "ON" }
	else
	    set CheckItemsIn = { "OFF" }
	endif
    endif

    ifint $(!p:Function) == 1
	Set RadioIn = {2}
    else-ifint $(!p:Function) == 2
	Set RadioIn = {1}
    else-ifint $(!p:Function) == 3
	Set RadioIn = {3}
    endif

    Ifstr(i) $(Option) == "SMSC110"
	Set DlgTemplate = "SMCM"
    Endif

    loadlibrary "SMSC LAN 9000 Install Diskette" $(DLLPATH)LAN9000.dll DllHandle

RetryDialog =+

    EndWait
    ui start "InputDlg" $(DllHandle)
    StartWait
    ui pop 1

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

	set Radio1 = *($(RadioOut), 1)

Retry2ndDialog =+

	ifint $(Radio1) == 1

	    set Combo1Out          = $(!p:IRQLevel)
	    set-dectohex Combo2Out = $(!p:IOBaseValue)
	    set Combo3Out          = $(!p:MediaValue)
	    set NetworkAddress     = $(!p:NetworkAddress)
	    set-dectohex Combo7Out = $(!p:AttributeMem)   

	    set OldTemplate = $(DlgTemplate)
	    set DlgTemplate = LANFUNC       
	    set OldContext  = $(HelpContext)
	    set HelpContext = $(ContextLAN)             ;;J.C.

	    EndWait
	    ui start "InputDlg" $(DllHandle)
	    StartWait
	    ui pop 1

	    set DlgTemplate = $(OldTemplate)
	    set HelpContext = $(OldContext)

	    ifstr(i) $(DLGEVENT) == "FREEBUTTON1"
				
		set OldTemplate = $(DlgTemplate)
		set DlgTemplate = ADVANCE

		set OldCaption = $(Caption)
		set Caption = $(CaptionAdvance)
		set OldCheckItemsIn = $(CheckItemsIn)
;;J.C.++
            	set OldContext = $(HelpContext)
	        set HelpContext = $(ContextAdvance)
;;J.C.--

		ifint $(!p:EarlyTransmit) == 1
	        	set Check2In = "ON"
		else
			set Check2In = "OFF"
		endif
		ifint $(!p:FlowControl) == 1
		    set Check3In = "ON"
		else
		    set Check3In = "OFF" 
		endif
		set Combo8Out = $(!p:Duplex)

		set CheckItemsIn = { $(Check2In), $(Check3In) }

		EndWait
		ui start "Inputdlg" $(DllHandle)
		startWait
		ui pop 1

		set DlgTemplate = $(OldTemplate)
		set Caption = $(OldCaption)
		set CheckItemsIn = $(OldCheckItemsIn)
          	set HelpContext = $(OldContext)         ;;J.C.

		ifstr(i) $(DLGEVENT) == "CONTINUE"
		    set Check2Out = *($(CheckItemsOut), 1)
		    set Check3Out = *($(CheckItemsOut), 2)
		    ifstr(i) $(Check2Out) == "ON"
			set !p:EarlyTransmit = 1
		    else
			set !p:EarlyTransmit = 0
		    endif
		    ifstr(i) $(Check3Out) == "ON"
			set !p:FlowControl = 1
		    else
			set !p:FlowControl = 0
		    endif
		    set !p:Duplex = $(Combo8Out)
		endif

		goto Retry2ndDialog
	    
	    endif
	    ifstr(i) $(DLGEVENT) == "CONTINUE"

		set NewNetworkAddress = *($(EditTextOut), 1)

		ifstr(i) $(NewNetworkAddress) != ""
		    Split-String $(NewNetworkAddress), "0123456789ABCDEFabcdef", TempList
		    set HexList = ^(HexDigits, 1)
		    QueryListSize ListSize $(TempList)
		    ifint $(ListSize) == 12
			set Index1 = 1
			set Loop   = 1
		    else
			Shell "" WarnError $(BadAddr1)
			goto Retry2ndDialog
		    endif

NetAddrLoop =+
		    set Temp1 = *($(TempList), $(Index1))
		    ifcontains(i) $(Temp1) not-in $(HexList)
			Shell "" WarnError $(BadAddr2)$(Temp1)
			goto Retry2ndDialog
		    endif
		    ifint $(Index1) == 2
			ifcontains(i) $(Temp1) in { 1,3,5,7,9,b,d,f }
			    Shell "" WarnError $(BadAddr3)
			    goto Retry2ndDialog
			endif
		    endif
	
		    set-add Index1 = $(Index1), 1
		    set-add Loop  = $(Loop), 1
		    ifint $(Loop) < 13
			  goto NetAddrLoop
		    endif
		endif

		set AdapterStatus              = TRUE
		set !p:MediaValue              = $(Combo3Out)
		set-hextodec !p:IOBaseValue    = $(Combo2Out)
		set-hextodec !p:AttributeMem   = $(Combo7Out)
		set !p:IRQLevel                = $(Combo1Out)
		set AdapterStatus              = TRUE
		set !p:Function                = 2
		set !p:NetworkAddress          = $(NewNetworkAddress)

	    else
		Set RadioIn = {1}
		goto RetryDialog
	    endif

	else-ifint $(Radio1) == 2

	    set OldTemplate = $(DlgTemplate)
	    set DlgTemplate = MODEMFUNC       
	    set OldContext  = $(HelpContext)
	    set HelpContext = $(ContextMODEM)           ;;J.C.

	    set-dectohex Combo7Out = $(!p:AttributeMem)   
	    set-dectohex Combo6Out = $(!p:ModemIOBase)    
	    set Combo5Out          = $(!p:ModemIrq)     
	    set Combo4Out          = $(!p:ModemPort)    

	    EndWait
	    ui start "InputDlg" $(DllHandle)
	    StartWait
	    ui pop 1

	    set DlgTemplate = $(OldTemplate)
	    set HelpContext = $(OldContext)

	    ifstr(i) $(DLGEVENT) == "CONTINUE"
		set AdapterStatus              = TRUE
		set-hextodec !p:AttributeMem   = $(Combo7Out)
		set-hextodec !p:ModemIOBase    = $(Combo6Out)
		set !p:ModemIrq                = $(Combo5Out)
		set !p:ModemPort               = $(Combo4Out)
		set !p:Function                = 1
	    else
		Set RadioIn = {2}
		goto RetryDialog
	    endif

	else-ifint $(Radio1) == 3

	    set OldTemplate        = $(DlgTemplate)
	    set DlgTemplate        = LANMODEM       
	    set OldContext         = $(HelpContext)
	    set HelpContext        = $(ContextLANMODEM)         ;;J.C.
	    set Combo1Out          = $(!p:IRQLevel)
	    set-dectohex Combo2Out = $(!p:IOBaseValue)
	    set Combo3Out          = $(!p:MediaValue)
	    set NetworkAddress     = $(!p:NetworkAddress)
	    
	    set-dectohex Combo7Out = $(!p:AttributeMem)   
	    set-dectohex Combo6Out = $(!p:ModemIOBase)    
	    set Combo5Out          = $(!p:ModemIrq)     
	    set Combo4Out          = $(!p:ModemPort)    
	
	    EndWait
	    ui start "InputDlg" $(DllHandle)
	    StartWait
	    ui pop 1

	    set DlgTemplate = $(OldTemplate)
	    set HelpContext = $(OldContext)

	    ifstr(i) $(DLGEVENT) == "FREEBUTTON1"
				
		set OldTemplate = $(DlgTemplate)
		set DlgTemplate = ADVANCE
		set OldCaption = $(Caption)
		set Caption = $(CaptionAdvance)
		set OldCheckItemsIn = $(CheckItemsIn)
;;J.C.++
            	set OldContext  = $(HelpContext)
	        set HelpContext = $(ContextAdvance)
;;J.C.--

		ifint $(!p:EarlyTransmit) == 1
        		set Check2In = "ON"
		else
			set Check2In = "OFF"
		endif
		ifint $(!p:FlowControl) == 1
		    set Check3In = "ON"
		else
		    set Check3In = "OFF" 
		endif
		set Combo8Out = $(!p:Duplex)

		set CheckItemsIn = { $(Check2In), $(Check3In) }

		EndWait
		ui start "Inputdlg" $(DllHandle)
		startWait
		ui pop 1

		set DlgTemplate = $(OldTemplate)
		set Caption = $(OldCaption)
		set CheckItemsIn = $(OldCheckItemsIn)
          	set HelpContext = $(OldContext)         ;;J.C.

		ifstr(i) $(DLGEVENT) == "CONTINUE"
		    set Check2Out = *($(CheckItemsOut), 1)
		    set Check3Out = *($(CheckItemsOut), 2)
		    ifstr(i) $(Check2Out) == "ON"
			set !p:EarlyTransmit = 1
		    else
			set !p:EarlyTransmit = 0
		    endif
		    ifstr(i) $(Check3Out) == "ON"
			set !p:FlowControl = 1
		    else
			set !p:FlowControl = 0
		    endif
		    set !p:Duplex = $(Combo8Out)
		endif

		goto Retry2ndDialog
	    
	    endif
	    ifstr(i) $(DLGEVENT) == "CONTINUE"

		set NewNetworkAddress = *($(EditTextOut), 1)

		ifstr(i) $(NewNetworkAddress) != ""
		    Split-String $(NewNetworkAddress), "0123456789ABCDEFabcdef", TempList
		    set HexList = ^(HexDigits, 1)
		    QueryListSize ListSize $(TempList)
		    ifint $(ListSize) == 12
			set Index1 = 1
			set Loop   = 1
		    else
			Shell "" WarnError $(BadAddr1)
			goto Retry2ndDialog
		    endif

NetAddrLoop =+
		    set Temp1 = *($(TempList), $(Index1))
		    ifcontains(i) $(Temp1) not-in $(HexList)
			Shell "" WarnError $(BadAddr2)$(Temp1)
			goto Retry2ndDialog
		    endif
		    ifint $(Index1) == 2
			ifcontains(i) $(Temp1) in { 1,3,5,7,9,b,d,f }
			    Shell "" WarnError $(BadAddr3)
			    goto Retry2ndDialog
			endif
		    endif
      
		    set-add Index1 = $(Index1), 1
		    set-add Loop  = $(Loop), 1
		    ifint $(Loop) < 13
			goto NetAddrLoop
		    endif
		endif

		set AdapterStatus              = TRUE
		set-hextodec !p:IOBaseValue    = $(Combo2Out)
		set !p:IRQLevel                = $(Combo1Out)
		set !p:NetworkAddress          = $(NewNetworkAddress)
		
		set-hextodec !p:AttributeMem   = $(Combo7Out)
		set-hextodec !p:ModemIOBase    = $(Combo6Out)
		set !p:ModemIrq                = $(Combo5Out)
		set !p:ModemPort               = $(Combo4Out)
  
		set !p:MediaValue              = $(Combo3Out)

		set !p:Function                = 3

	    else
		Set RadioIn = {3}
		goto RetryDialog
	    endif
	endif
    endif

    ifstr(i) $(DLGEVENT) == "CONTINUE"
	IfStr(i) $(!STF_NCDETINFO) == {}
	    Set !p:BusType   = 1
	    Set !p:BusNumber = 0
	Else
	    Set !p:BusType   = *($(!STF_NCDETINFO),5)
	    Set !p:BusNumber = *($(!STF_NCDETINFO),6)
	EndIf
    Endif

    set Check = *($(CheckItemsOut), 1)
    ifstr(i) $(Check) == "ON"
	set !p:ReceiveTimer = 1
    else
	set !p:ReceiveTimer = 0
    endif

    freelibrary $(DllHandle)
    return $(AdapterStatus)

[SetCopy]
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    set DoCopy = $($0)
    set AddCopy = $($1)
    set SrcDir  = $($2)
    set InstallSection = $($3)
    set Needcopy = FALSE

    Ifstr(i) $(DoCopy) == "YES"
	set NeedCopy = TRUE
    else-ifstr(i) $(AddCopy) == "YES"
	set NeedCopy = TRUE
    else
	Return TRUE
    endif

    set BuiltIn = "YES"
    ifstr(i) $(!NTN_Origination) == "NCPA"
	set BuiltIn = "NO"
    endif

    Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) $(BuiltIn)

    Ifstr(i) $($R0) == STATUS_FAILED
	Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
	Shell "" FatalError $($R0)
	Return FALSE
    Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
	Return FALSE
    Endif

    Set SrcDir = $($R1)

    install $(InstallSection)

    ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
	Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
	Shell "" FatalError $($R0)
	Return FALSE
    endif

    Return TRUE

[SetSoftware]
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms date

    set Option = $(!p:Option)
    read-syms RegistryConstants$(Option)

    Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
	  $(ProductSoftwareName), +
	  $(ProductSoftwareName), +
	  $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
	  $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
	  $(NetEventDLL)

    Ifstr(i) $($R0) != NO_ERROR
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return FALSE
    endif

	;
	;   At this point:
	;     $R1 contains the product version key handle;
	;     $R2 contains the NetRules subkey handle;
	;     $R3 contains the new Services key handle; and
	;     $R4 contains the Parameters key
	;     $R5 contains the Linkage Key
	;
    set KeyProduct      = $($R1)
    Set SoftNetRulesKey = $($R2)
    CloseRegKey $($R3)
    CloseRegKey $($R4)
    CloseRegKey $($R5)

    Ifstr(i) $($R0) != NO_ERROR
	CloseRegKey $(KeyProduct)
	CloseRegKey $(SoftNetRulesKey)
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return FALSE
    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),$($0)}}

    Shell  $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)

    Ifstr(i) $($R0) != NO_ERROR
	CloseRegKey $(KeyProduct)
	CloseRegKey $(SoftNetRulesKey)
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return FALSE
    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)

    CloseRegKey $(KeyProduct)
    CloseRegKey $(SoftNetRulesKey)

    Ifstr(i) $($R0) != NO_ERROR
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return FALSE
    endif
    return TRUE

[SetHardware]
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms date

    set Option = $(!p:Option)

    read-syms RegistryConstants$(Option)

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

    Ifstr(i) $($R0) != NO_ERROR
	CloseRegKey $($R1)
	CloseRegKey $($R2)
	CloseRegKey $($R3)
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return FALSE
    endif

;
;   At this point:
;     $R1  Registry key variable for HARDWARE\Netcard\(n)
;     $R2  Registry key variable for HARDWARE\Netcard\(n)\\NetRules
;     $R3  Registry key handle for <service>\Parameters key
;     $R4  Adapter number assigned to adapter
;     $R5  Service name generated by combining svc name with adapter number
;
    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),$($0)}}

    Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
    Ifstr(i) $($R0) != NO_ERROR
	CloseRegKey $($R1)
	CloseRegKey $($R2)
	CloseRegKey $($R3)
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return FALSE
    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)

    Ifstr(i) $($R0) != NO_ERROR
	CloseRegKey $(!KeyParameters)
	CloseRegKey $(KeyAdapterRules)
	Shell $(UtilityInf) RegistryErrorString $($R0)
	Shell "" ShellError $($R0)
	Return FALSE
    endif

    CloseRegKey $(KeyAdapterRules)
    return TRUE

[WriteParameters]
    read-syms FileConstants
    read-syms GeneralConstants

    set Option = $(!p:Option)

    read-syms RegistryConstants$(Option)

    set Base           = $(!p:IOBaseValue)
    set Irq            = $(!p:IRQLevel)
    set Media          = $(!p:MediaValue)
    set NetworkAddress = $(!p:NetworkAddress)
    set BusType        = $(!p:BusType)
    set BusNumber      = $(!p:BusNumber)
    set PCMCIA         = $(!p:PCMCIA)

;;Combo++

    set AttributeMemValue = $(!p:AttributeMem)
    set ModemIOBaseValue  = $(!p:ModemIOBase)
    set ModemIrqValue     = $(!p:ModemIrq)
    set ModemPortValue    = $(!p:ModemPort)
    set FunctionValue     = $(!p:Function)
    set ReceiveTimer      = $(!p:ReceiveTimer)
    set EarlyTransmit     = $(!p:EarlyTransmit)
    set FlowControl       = $(!p:FlowControl)
    set Duplex            = $(!p:Duplex)

;;Combo--

    ifint $(BusType) == 8
	set PCMCIA  = 1
	set BusType = 1
    endif

    Set NewValueList = {{BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusType)},+
			{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
			{MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
			{BusNumber,$(NoTitle),$(!REG_VT_DWORD),0},+
			{Transceiver,$(NoTitle),$(!REG_VT_SZ),$(Media)},+
			{Interrupt,$(NoTitle),$(!REG_VT_DWORD),$(Irq)},+
			{IoBase,$(NoTitle),$(!REG_VT_DWORD),$(Base)},+
			{PCCARDAttributeMemoryAddress,$(NoTitle),$(!REG_VT_DWORD),$(!p:AttributeMem)},+
;;                        {PCCARDAttributeMemoryOffset,$(NoTitle),$(!REG_VT_DWORD),0},+
			{PCCARDAttributeMemorySize,$(NoTitle),$(!REG_VT_DWORD),4096},+
			{ReceiveTimer,$(NoTitle),$(!REG_VT_DWORD),$(ReceiveTimer)},+
			{EarlyTransmit,$(NoTitle),$(!REG_VT_DWORD),$(EarlyTransmit)},+
			{FlowControl,$(NoTitle),$(!REG_VT_DWORD),$(FlowControl)},+
			{Duplex,$(NoTitle),$(!REG_VT_SZ),$(Duplex)},+
			{NetworkAddress,$(NoTitle),$(!REG_VT_SZ),$(NetworkAddress)}}



    Shell  $(UtilityInf), AddValueList, $(!KeyParameters), $(NewValueList)
    Set Status = $($R0)

    IfInt $(PCMCIA) == 1

	Set NewValueList = {{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),1},+
			    {InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(Irq)},+
			    {Duplex,$(NoTitle),$(!REG_VT_DWORD),$(Duplex)},+
			    {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(Base)},+
			    {IoLength,$(NoTitle),$(!REG_VT_DWORD),15}}


;;Combo++
	Ifcontains(i) $(Option) in { "SMCM", "SMSC110" }
;;	    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters\SMCEtherEthernetModem" $(MAXIMUM_ALLOWED) MyNewSeria
;;	    Ifstr $(MyNewSerialHandle) == $(KeyNull)
;;		OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialKey
;;		CreateRegKey $(SerialKey) {"SMCEtherEthernetModem",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyNewSerialHandle
;;		CloseRegKey $(SerialKey)
;;	    endif
;;	    set NewValueList = {{DosDevices, $(NoTitle),$(!REG_VT_SZ), $(!p:ModemPort)},+       ; "COMx"      
;;				{ForceFifoEnable,  $(NoTitle),$(!REG_VT_DWORD),   1},+                            ; Always true for EtherEZ
;;				{Interrupt,        $(NoTitle),$(!REG_VT_DWORD),   $(!p:ModemIrq)},+             ; Interrupt for EtherEZ modem
;;				{PortAddress,      $(NoTitle),$(!REG_VT_DWORD),   $(!p:ModemIOBase)}}       ; I/O Base address for EtherEZ
;;	    Shell  $(UtilityInf), AddValueList, $(MyNewSerialHandle), $(NewValueList)
;;	    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) {"SMCEtherEthernetModem",$(NoTitle),$(!REG_VT_SZ),$(!p:ModemPort)}

;;	    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) {$(!p:ModemPort)":",$(NoTitle),$(!REG_VT_SZ), "9600,n,8,1"}
;;	    CloseRegKey $(MyNewSerialHandle)
	 
    Ifcontains(i) $(Option) in { "SMCM" }
	    Set NewValueList = {{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),1},+
		   {InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(Irq)},+
		   {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(Base)},+
		   {COMIRQNumber,$(NoTitle),$(!REG_VT_DWORD),$(ModemIrqValue)},+
		   {COMPort,$(NoTitle),$(!REG_VT_SZ),$(!p:ModemPort)},+
		   {IoBaseAddress_1,$(NoTitle),$(!REG_VT_DWORD),$(ModemIOBaseValue)},+
		   {COMIOBase,$(NoTitle),$(!REG_VT_DWORD),$(ModemIOBaseValue)},+
		   {Function,$(NoTitle),$(!REG_VT_DWORD),$(FunctionValue)},+
		   {MULTIFUNCTION,$(NoTitle),$(!REG_VT_DWORD),1}}
	endif
    Ifcontains(i) $(Option) in { "SMSC110" }
	    Set NewValueList = {{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),1},+
		   {InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(Irq)},+
		   {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(ModemIOBaseValue)},+
		   {IoLength,$(NoTitle),$(!REG_VT_DWORD),7},+
		   {COMIRQNumber,$(NoTitle),$(!REG_VT_DWORD),$(ModemIrqValue)},+
		   {COMPort,$(NoTitle),$(!REG_VT_SZ),$(!p:ModemPort)},+
		   {IoBaseAddress_1,$(NoTitle),$(!REG_VT_DWORD),$(Base)},+
                   {IoLength_1,$(NoTitle),$(!REG_VT_DWORD),15},+
		   {COMIOBase,$(NoTitle),$(!REG_VT_DWORD),$(ModemIOBaseValue)},+
		   {Function,$(NoTitle),$(!REG_VT_DWORD),$(FunctionValue)},+
;OSITECH++
		   {110EXISTS,$(NoTitle),$(!REG_VT_DWORD),1},+	
		   {ModemFunction,$(NoTitle),$(!REG_VT_DWORD),1},+
		   {MULTIFUNCTION,$(NoTitle),$(!REG_VT_DWORD),1}}

;;		   {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(ModemIOBaseValue)},+
;;                   {IoLength_1,$(NoTitle),$(!REG_VT_DWORD),15},+
;;		   {ModemFunction,$(NoTitle),$(!REG_VT_DWORD),1},+
;;		   {IoBaseAddress_1,$(NoTitle),$(!REG_VT_DWORD),$(Base)},+
;;		   {IoLength,$(NoTitle),$(!REG_VT_DWORD),7},+

;OSITECH--
	Endif
	endif

;;Combo--

	Shell  $(UtilityInf), AddValueList, $(!KeyParameters), $(NewValueList)
	Set Status = $($R0)

	Ifcontains(i) $(Option) in { "SMCM", "SMSC110" }
	    Shell "" SetUpPcmcia$(Option)
	Endif

    else

	DeleteRegValue $(!KeyParameters) "Pcmcia"
	DeleteRegValue $(!KeyParameters) "IoBaseAddress"
        DeleteRegValue $(!KeyParameters) "IoLength"
	DeleteRegValue $(!KeyParameters) "InterruptNumber"
        
    endif

    CloseRegKey $(!KeyParameters)

    Ifstr(i) $(Status) != NO_ERROR
	Shell $(UtilityInf) RegistryErrorString $(Status)
	Shell "" ShellError $($R0)
	Return FALSE
    endif

    Return TRUE

[ShellError]
    read-syms DialogConstants$(!STF_LANGUAGE)
    read-syms FileConstants$(!STF_LANGUAGE)

    set DlgType      = "MessageBox"
    set STF_MB_TITLE = $(FunctionTitle)
    set STF_MB_TEXT  = $($0)
    set STF_MB_TYPE  = 1
    set STF_MB_ICON  = 3
    set STF_MB_DEF   = 1

    ifstr(i) $(STF_MB_TEXT) == ""
	set STF_MB_TEXT = "Unknown Error"
    endif

    ui start "Error Message"
    Return

[Install-Option]
    set STF_VITAL = ""

    ifstr(i) $(AddCopy) == "YES"
	AddSectionFilesToCopyList Files-SMC9000 $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
	AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
    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-SMC9000 $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
   AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
;;   AddSectionFilesToCopyList Files-SMCncdet $(SrcDir) $(!STF_WINDOWSSYSPATH)

   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   CopyFilesInCopyList

   exit

[Install-Detection-Dll]
    LibraryProcedure STATUS,$(!LIBHANDLE), CopySingleFile $(SrcDir)"\LANncdet.dll"  $(!STF_WINDOWSSYSPATH)"\LANncdet.dll"
    exit

[PrepareDetectionDll]
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    Set NewDllName   = $($0)
    set SrcDir       = $(!p:SrcDir)
    Set Status       = STATUS_FAILED
    Set DllValueName = "NetcardDlls"

    ifstr(i) $(SrcDir) != ""
	Split-String $(SrcDir) "\" TempList
	QueryListSize ListSize $(TempList)
	ifstr(i) *($(TempList), $(ListSize)) != "\"
	    set SrcDir = $(SrcDir)"\"
	endif
    endif

    OpenRegKey $(!REG_H_LOCAL) "" "System\Setup" $(MAXIMUM_ALLOWED) KeySetup
    Ifstr(i) $(KeySetup) == $(KeyNull)
	Debug-Output "System\Setup key is NULL"
	Goto PDD_Return
    Endif

    Set DllFound = 0
    GetRegValue $(KeySetup) $(DllValueName) DllNamesValue
    Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
	Debug-Output "LastError != Success"
	Shell $(UtilityInf),RegistryErrorString,$(RegLastError)
	Shell "" FatalError $($R0)
	Goto PDD_Return
    Endif

    Set DllNames = *($(DllNamesValue),4)
    ForListDo $(DllNames)
	Ifstr(i) $($) == $(NewDllName)
	    Set DllFound = 1
	Endif
    EndForListDo
    Ifint $(DllFound) == 0
	Set DllNames = >($(DllNames),$(NewDllName))
	Set ValueInfo = {$(DllValueName), $(NoTitle), $(!REG_VT_MULTI_SZ), $(DllNames)}
	SetRegValue $(KeySetup) $(ValueInfo)
	Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
	    Shell "" SetCopy "YES" $(AddCopy) $(SrcDir) "Install-Detection-Dll"

	    Shell $(ParamInf) Param_ControlDetection DTEND
	    Shell $(ParamInf) Param_ControlDetection DTSTART
	    Set Status = STATUS_SUCCESSFUL
	Else
	    Shell $(UtilityInf),RegistryErrorString,$(RegLastError)
	    Shell "" FatalError $($R0)
	Endif
    Else
	set Status = STATUS_SUCCESSFUL
    Endif
    CloseRegKey $(KeySetup)
PDD_Return = +
    Debug-Output "Status from PrepareDetectionDll = "$(Status)
    Return $(Status)

[FatalError]
    read-syms FileConstants

    ifstr(i) $($0) == ""
	set Message = "Unknown Error"
    else
	set Message = $($0)
    endif

    Shell $(SubroutnInf) SetupMessage $(!STF_LANGUAGE) FATAL $(Message)
    Return

[VerifyError]
    read-syms FileConstants

    ifstr(i) $($0) == ""
	set Message = "Unknown Error"
    else
	set Message = $($0)
    endif

    Shell $(SubroutnInf) SetupMessage $(!STF_LANGUAGE) WARNING $(Message)
    Return $($R1)

[WarnError]
    read-syms FileConstants

    ifstr(i) $($0) == ""
	set Message = "Unknown Error"
    else
	set Message = $($0)
    endif

    Shell $(SubroutnInf) SetupMessage $(!STF_LANGUAGE) NONFATAL $(Message)
    Return

[DebugControl]
    set !DebugOutputControl = 1
    return

[SetUpPcmciaSMCM]
    Read-Syms GeneralConstants
;;!!!    Read-Syms PcmciaKeys
    Read-Syms PcmciaKeysSMCM

    Debug-Output "Opening PCMCIA DataBase"
    OpenRegKey $(!REG_H_LOCAL) "" $(PcmciaPath) $(MAXIMUM_ALLOWED) PcmciaKey

    IfStr(i) $(PcmciaKey) == $(KeyNull)
	Debug-Output "Failed to open "$(PcmciaPath)
	Shell "" FatalError "Cannot Open PCMCIA Registry DataBase!"
	Return FALSE
    EndIf

    Debug-Output "Opening SMSC Key"

    OpenRegKey $(!REG_H_LOCAL) "" $(SMCPcmciaPath) $(MAXIMUM_ALLOWED) SMCPcmciaKey

    IfStr(i) $(SMCPcmciaKey) == $(KeyNull)
	Debug-Output "Open failed - creating key"
	CreateRegKey $(PcmciaKey) {"SMC/Rockwell", 0, 0 } "" $(MAXIMUM_ALLOWED) "" SMCPcmciaKey
	IfStr(i) $(SMCPcmciaKey) == $(KeyNull)
	    Debug-Output "Failed to create SMSC key"
	    Shell "" FatalError "Cannot Create SMSC Key in Registry DataBase PCMCIA!"
	    CloseRegKey $(PcmciaKey)
	    Return FALSE
	EndIf
    EndIf

    Debug-Output "Opening SMSC 9000 key = "$(SMCPath)
    OpenRegKey $(!REG_H_LOCAL) "" $(SMCPath) $(MAXIMUM_ALLOWED) SMCKey

    IfStr(i) $(SMCKey) == $(KeyNull)
	Debug-Output "Open failed - creating key"
	CreateRegKey $(SMCPcmciaKey) {$(CardKeyName), 0, 0 } "" $(MAXIMUM_ALLOWED) "" SMCKey
	IfStr(i) $(SMCKey) == $(KeyNull)
	    Shell "" FatalError "Cannot Create SMSC 9000 Key in Registry DataBase PCMCIA!"
	    CloseRegKey $(SMCPcmciaKey)
	    CloseRegKey $(PcmciaKey)
	    Return FALSE
	EndIf
    EndIf

    Debug-Output "Writing Driver Keyword"
    SetRegValue $(SMCKey) {Driver, 0, $(!REG_VT_SZ), "SMCM"}
    CloseRegKey $(SMCKey)
    CloseRegKey $(SMCPcmciaKey)
    CloseRegKey $(PcmciaKey)
    Debug-Output "All done with SetUpPcmcia"
    return TRUE

[SetUpPcmciaSMSC110]
    Read-Syms GeneralConstants
    Read-Syms PcmciaKeysSMSC110

    Debug-Output "Opening PCMCIA DataBase"
    OpenRegKey $(!REG_H_LOCAL) "" $(PcmciaPath) $(MAXIMUM_ALLOWED) PcmciaKey

    IfStr(i) $(PcmciaKey) == $(KeyNull)
	Debug-Output "Failed to open "$(PcmciaPath)
	Shell "" FatalError "Cannot Open PCMCIA Registry DataBase!"
	Return FALSE
    EndIf

    Debug-Output "Opening SMSC Key"

    OpenRegKey $(!REG_H_LOCAL) "" $(SMCPcmciaPath) $(MAXIMUM_ALLOWED) SMCPcmciaKey

    IfStr(i) $(SMCPcmciaKey) == $(KeyNull)
	Debug-Output "Open failed - creating key"
	CreateRegKey $(PcmciaKey) {"SMSC", 0, 0 } "" $(MAXIMUM_ALLOWED) "" SMCPcmciaKey
	IfStr(i) $(SMCPcmciaKey) == $(KeyNull)
	    Debug-Output "Failed to create SMSC key"
	    Shell "" FatalError "Cannot Create SMSC Key in Registry DataBase PCMCIA!"
	    CloseRegKey $(PcmciaKey)
	    Return FALSE
	EndIf
    EndIf

    Debug-Output "Opening SMSC 9000 key = "$(SMCPath)
    OpenRegKey $(!REG_H_LOCAL) "" $(SMCPath) $(MAXIMUM_ALLOWED) SMCKey

    IfStr(i) $(SMCKey) == $(KeyNull)
	Debug-Output "Open failed - creating key"
	CreateRegKey $(SMCPcmciaKey) {$(CardKeyName), 0, 0 } "" $(MAXIMUM_ALLOWED) "" SMCKey
	IfStr(i) $(SMCKey) == $(KeyNull)
	    Shell "" FatalError "Cannot Create SMSC 9000 Key in Registry DataBase PCMCIA!"
	    CloseRegKey $(SMCPcmciaKey)
	    CloseRegKey $(PcmciaKey)
	    Return FALSE
	EndIf
    EndIf

    Debug-Output "Writing Driver Keywords"
    SetRegValue $(SMCKey) {Driver,      $(NoTitle), $(!REG_VT_SZ),    "SMCM"}
;   SetRegValue $(SMCKey) {DeviceType,  $(NoTitle), $(!REG_VT_SZ),    "NET"}
;   SetRegValue $(SMCKey) {Option,      $(NoTitle), $(!REG_VT_SZ),    "SMSM110"}
;   SetRegValue $(SMCKey) {InfFileName, $(NoTitle), %(!REG_VT_SZ),    $(STF_CONTEXTINFNAME)}
    SetRegValue $(SMCKey) {PortWidth16, $(NoTitle), $(!REG_VT_DWORD), 1}
    CloseRegKey $(SMCKey)
    CloseRegKey $(SMCPcmciaKey)
    CloseRegKey $(PcmciaKey)
    Debug-Output "All done with SetUpPcmcia"
    return TRUE

;;Combo++

[CustomMessageDlg]
    DlgType      = "MessageBox"
    STF_MB_TITLE = "LAN9000 Ethernet PCCard+Modem Adapter Setup"
    STF_MB_TEXT  = "Ethernet and Modem will be removed together"
    STF_MB_TYPE  = 1
    STF_MB_ICON  = 1
    STF_MB_DEF   = 1
;;Combo--


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: web4, load: 0.51