OEMSETUP.INF Driver File Contents (Token_Ring_3140.zip)

;***********************************************************************
;
; OEMSETUP.INF
;
; Version 1.13
;
; Olicom network card and driver SETUP INF file.
;
;***********************************************************************

;-----------------------------------------------------------------------
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with.  The different
; possible types are:
;
; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
;
;  Types specific to networking:
;
; NetAdapter,        a netcard / adapter combination or just a netcard
; NetDriver,         just a netcard driver
; NetTransport,      a complete NDIS-compliant TDI transport stack
; NetService,        an NT networking service
; NetWork,           a complete network ensemble.
; NetProvider        a complete network which supports NT MPR protocol
;-----------------------------------------------------------------------

[Identification]
    OptionType = NetAdapter

;-----------------------------------------------------------------------
; PlatformsSupported
; ------------------
; This identifies the platforms supported by the adapter card.
; Possible types are:
;
; ISA, EISA, MCA, "Jazz-Internal Bus", PC Card and PCI
;-----------------------------------------------------------------------

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

[LanguagesSupported]
    ENG

;-----------------------------------------------------------------------
; OPTION LIST
; -----------
; This section lists the OEM Option key names.  These keys are locale
; independent and used to represent the option in a locale independent
; manner.
;
;-----------------------------------------------------------------------

[Options]
;    OCTX3117
;    OCTX3118
;    OCTX3133
;    OCTX3136
;    OCTX3137
;    OCTX3139
    OCTX3140
    OCTX3141
;    OCTX3129
;    OCTX3220
;    OCTX3221
;    OCTX3230
;    OCTX3232
;    OCTX3250


[OptionsTextENG]
;    OCTX3117 = "Olicom Token-Ring ISA 16/4 Adapter (OC-3117)"
;    OCTX3118 = "Olicom Token-Ring ISA 16/4 Adapter (OC-3118)"
;    OCTX3133 = "Olicom Token-Ring EISA 16/4 Adapter (OC-3133)"
;    OCTX3136 = "Olicom Token-Ring PCI 16/4 Adapter (OC-3136)"
;    OCTX3137 = "Olicom Token-Ring PCI/II 16/4 Adapter (OC-3137)"
;    OCTX3139 = "Olicom RapidFire 3139 Token-Ring 16/4 PCI Adapter"
    OCTX3140 = "Olicom RapidFire 3140 Token-Ring 16/4 PCI Adapter"
    OCTX3141 = "Olicom RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter"
;    OCTX3129 = "Olicom Token-Ring MCA 16/4 Adapter (OC-3129)"
;    OCTX3220 = "Olicom GoCard Token-Ring PC Card (OC-3220)"
;    OCTX3221 = "Olicom GoCard Token-Ring PC Card (OC-3221)"
;    OCTX3230 = "Olicom GoCard TR/Modem 144 PC Card (OC-3230)"
;    OCTX3232 = "Olicom GoCard TRN/Modem 336 PC Card (OC-3232)"
;    OCTX3250 = "Olicom GoCard 3250 Token-Ring 16/4 CardBus PC Card"

[IOBaseAddrChoices]
IOBase_0  = "Auto detect", 0
IOBase_1  = "0A00-0A1F", 2560
IOBase_2  = "0A20-0A3F", 2592
IOBase_3  = "0A40-0A5F", 2624
IOBase_4  = "0A60-0A7F", 2656
IOBase_5  = "0A80-0A9F", 2688
IOBase_6  = "0AA0-0ABF", 2720
IOBase_7  = "0AC0-0ADF", 2752
IOBase_8  = "0AE0-0AFF", 2874
IOBase_9  = "0B00-0B1F", 2816
IOBase_10 = "0B20-0B3F", 2848
IOBase_11 = "0B40-0B5F", 2880
IOBase_12 = "0B60-0B7F", 2912
IOBase_13 = "0B80-0B9F", 2944
IOBase_14 = "0BA0-0BBF", 2976
IOBase_15 = "0BC0-0BDF", 3008
IOBase_16 = "0BE0-0BFF", 3040
IOBase_20 = "0A20-0A23,0A30-0A3F", 2592
IOBase_21 = "0A24-0A27,0A40-0A4F", 2596
IOBase_22 = "0A50-0A53,0A60-0A6F", 2640
IOBase_23 = "0A54-0A57,0A70-0A7F", 2644

[RxBufferCountChoices]
RBC_1 = "32",32
RBC_2 = "31",31
RBC_3 = "30",30
RBC_4 = "29",29
RBC_5 = "28",28
RBC_6 = "27",27
RBC_7 = "26",26
RBC_8 = "25",25
RBC_9 = "24",24
RBC_10 = "23",23
RBC_11 = "22",22
RBC_12 = "21",21
RBC_13 = "20",20
RBC_14 = "19",19
RBC_15 = "18",18
RBC_16 = "17",17
RBC_17 = "16",16
RBC_18 = "15",15
RBC_19 = "14",14
RBC_20 = "13",13
RBC_21 = "12",12
RBC_22 = "11",11
RBC_23 = "10",10
RBC_24 = "9",9
RBC_25 = "8",8
RBC_26 = "7",7
RBC_27 = "6",6
RBC_28 = "5",5

[TxBufferCountChoices]
XBC_1 = "32",32
XBC_2 = "31",31
XBC_3 = "30",30
XBC_4 = "29",29
XBC_5 = "28",28
XBC_6 = "27",27
XBC_7 = "26",26
XBC_8 = "25",25
XBC_9 = "24",24
XBC_10 = "23",23
XBC_11 = "22",22
XBC_12 = "21",21
XBC_13 = "20",20
XBC_14 = "19",19
XBC_15 = "18",18
XBC_16 = "17",17
XBC_17 = "16",16
XBC_18 = "15",15
XBC_19 = "14",14
XBC_20 = "13",13
XBC_21 = "12",12
XBC_22 = "11",11
XBC_23 = "10",10
XBC_24 = "9",9
XBC_25 = "8",8
XBC_26 = "7",7
XBC_27 = "6",6
XBC_28 = "5",5
XBC_29 = "4",4
XBC_30 = "3",3
XBC_31 = "2",2

[Oct3RxBufferCountChoices]
RBC3_1  = "Auto",  0
RBC3_2	=  "128",128
RBC3_3	=   "96", 96
RBC3_4	=   "64", 64
RBC3_5	=   "48", 48
RBC3_6	=   "32", 32
RBC3_7	=   "24", 24
RBC3_8	=   "16", 16
RBC3_9	=    "8",  8

[Oct3TxBufferCountChoices]
XBC3_1  = "Auto",  0
XBC3_2  =   "64", 64
XBC3_3  =   "48", 48
XBC3_4  =   "32", 32
XBC3_5  =   "24", 24
XBC3_6  =   "16", 16
XBC3_7  =    "8",  8

[LegacyWakeUpChoices]
LM_1 = "Disabled",0
LM_2 = "Enabled",1
LM_3 = "Auto",2

[IOBasePCMCIAChoices]
; 3E0h is where PCIC is (normally) located
; 240h is where TCIC is (normally) located
; therefore user cannot select these for locating the adapter
IOBase_1  = "200h",512
IOBase_2  = "280h",640
IOBase_3  = "2C0h",714
IOBase_4  = "300h",768
IOBase_5  = "340h",832
IOBase_6  = "380h",896
IOBase_7  = "3C0h",960
IOBase_8  = "A00h",2560
IOBase_9  = "A40h",2624
IOBase_10 = "A80h",2688
IOBase_11 = "AC0h",2752
IOBase_12 = "B00h",2816
IOBase_13 = "B40h",2880
IOBase_14 = "B80h",2944
IOBase_15 = "BC0h",3008

[MemWinChoices]
MemWin_1  = "A0000h", 655360
MemWin_2  = "A2000h", 663552
MemWin_3  = "A4000h", 671744
MemWin_4  = "A6000h", 679936
MemWin_5  = "A8000h", 688128
MemWin_6  = "AA000h", 696320
MemWin_7  = "AC000h", 704512
MemWin_8  = "AE000h", 712704
MemWin_9  = "B0000h", 720896
MemWin_10 = "B2000h", 729088
MemWin_11 = "B4000h", 737280
MemWin_12 = "B6000h", 745472
MemWin_13 = "B8000h", 753664
MemWin_14 = "BA000h", 761856
MemWin_15 = "BC000h", 770048
MemWin_16 = "BE000h", 778240
MemWin_17 = "C0000h", 786432
MemWin_18 = "C2000h", 794624
MemWin_19 = "C4000h", 802816
MemWin_20 = "C6000h", 811008
MemWin_21 = "C8000h", 819200
MemWin_22 = "CA000h", 827392
MemWin_23 = "CC000h", 835584
MemWin_24 = "CE000h", 843776
MemWin_25 = "D0000h", 851968
MemWin_26 = "D2000h", 860160
MemWin_27 = "D4000h", 868352
MemWin_28 = "D6000h", 876544
MemWin_29 = "D8000h", 884736
MemWin_30 = "DA000h", 892928
MemWin_31 = "DC000h", 901120
MemWin_32 = "DE000h", 909312

[InterruptChoices]
Interrupt_1  = "3", 3
Interrupt_2  = "4", 4
Interrupt_3  = "5", 5
Interrupt_4  = "7", 7
Interrupt_5  = "9", 9
Interrupt_6  = "10",10
Interrupt_7  = "11",11
Interrupt_8  = "12",12
Interrupt_9  = "14",14
Interrupt_10 = "15",15

[ComPortChoices]
Com_1 = "COM1", 1016
Com_2 = "COM2", 760
Com_3 = "COM3", 1000
Com_4 = "COM4", 744
Com_5 = "COM5", 24
Com_6 = "Disabled", 0

[ComPortChoicesNT]
Com_1 = "COM1", 1016
Com_2 = "COM2", 760
Com_3 = "COM3", 1000
Com_4 = "COM4", 744

[IOBasePCMCIAControllerChoices]
IOBase_1  = "Olicom Enabler",992
IOBase_2  = "Olicom Enabler (3E2h)",994
;;;IOBase_3  = "Windows NT Enabler",0

[WaitstateChoices]
Waitstate_1  = "0", 0
Waitstate_2  = "1", 1
Waitstate_3  = "2", 2
Waitstate_4  = "3", 3
Waitstate_5  = "4", 4
Waitstate_6  = "5", 5
Waitstate_7  = "6", 6
Waitstate_8  = "7", 7
Waitstate_9  = "8", 8
Waitstate_10 = "9", 9
Waitstate_11 = "10",10
Waitstate_12 = "11",11
Waitstate_13 = "12",12
Waitstate_14 = "13",13
Waitstate_15 = "14",14
Waitstate_16 = "15",15

[DatasizeChoices]
Datasize_1 = 1, 1,"&16 Bit"
Datasize_2 = 2, 0,"&8 Bit"

[RingSpeedChoices]
RS_1 = "16 Mbps", 16
RS_2 = "4 Mbps", 4

[RSChoices]
RS_1 = "Adapter setting", 255
RS_2 = "Force 16 Mbps", 16
RS_3 = "Force 4 Mbps", 4

[Oct3RSChoices]
RS_1 = "Auto", 0
RS_2 = "Force 16 Mbps", 16
RS_3 = "Force 4 Mbps", 4
RS_4 = "Adapter setting", 255

;-----------------------------------------------------------------------
; Constants for use with dialogs
;-----------------------------------------------------------------------

[FileConstants]
UtilityInf      = "UTILITY.INF"
subroutineinf   = "SUBROUTN.INF"
SoftwareType    = "driver"
Exit_Code       = 0
DialogDllName   = "oct3x.dll"
HelpfileName    = "oct3x.hlp"
NetEventDLL     = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\Drivers\Oct3xnd3.sys"
IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
Manufacturer    = "Olicom"
ProductMajorVersion     = "1"
ProductMinorVersion     = "00"
ProductVersion          = $(ProductMajorVersion)"."$(ProductMinorVersion)
ProductSoftwareName     = "Oct3xnd3"
ProductSoftwareTitle    = "Olicom Oct3x Token-Ring Driver"
ProductSoftwareImagePath = "\SystemRoot\System32\drivers\oct3xnd3.sys"
NetRuleSoftwareType     = "oct3xnd3Sys ndisDriver oct3xnd3Driver"
NetRuleSoftwareUse      = $(SoftwareType)
NetRuleSoftwareBindForm = """Oct3xnd3Sys"" yes no container"
NetRuleSoftwareClass    = {"oct3xnd3Driver basic"}
NetRuleSoftwareBindable = {"oct3xnd3Driver oct3xnd3Adapter non exclusive 100"}
ProductHardwareName     = "Oct3xnd3"

ProductHardwareOCTX3117Title = "Olicom Token-Ring ISA 16/4 Adapter (OC-3117)"
ProductHardwareOCTX3118Title = "Olicom Token-Ring ISA 16/4 Adapter (OC-3118)"
ProductHardwareOCTX3133Title = "Olicom Token-Ring EISA 16/4 Adapter (OC-3133)"
ProductHardwareOCTX3136Title = "Olicom Token-Ring PCI 16/4 Adapter (OC-3136)"
ProductHardwareOCTX3137Title = "Olicom Token-Ring PCI/II 16/4 Adapter (OC-3137)"
ProductHardwareOCTX3139Title = "Olicom RapidFire 3139 Token-Ring 16/4 PCI Adapter"
ProductHardwareOCTX3140Title = "Olicom RapidFire 3140 Token-Ring 16/4 PCI Adapter"
ProductHardwareOCTX3141Title = "Olicom RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter"
ProductHardwareOCTX3129Title = "Olicom Token-Ring MCA 16/4 Adapter (OC-3129)"
ProductHardwareOCTX3220Title = "Olicom GoCard Token-Ring PC Card (OC-3220)"
ProductHardwareOCTX3221Title = "Olicom GoCard Token-Ring PC Card (OC-3221)"
ProductHardwareOCTX3230Title = "Olicom GoCard TR/Modem 144 PC Card (OC-3230)"
ProductHardwareOCTX3232Title = "Olicom GoCard TRN/Modem 336 PC Card (OC-3232)"
ProductHardwareOCTX3250Title = "Olicom GoCard 3250 Token-Ring 16/4 CardBus PC Card"

NetRuleHardwareType     = "oct3xnd3 oct3xnd3Adapter"
NetRuleHardwareBindForm = " yes yes container"
NetRuleHardwareClass    = {"oct3xnd3Adapter basic"}
ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"

[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
PCIDetectSupported = $(TRUE)
NT40VersionConstant  = "4.0"
NT351VersionConstant = "3.51"
NT350VersionConstant = "3.50"
NT310VersionConstant = "3.10"

[FileConstantsENG]
ProCaption   = "Windows NT Setup"
ProCancel    = "Cancel"
ProCancelMsg = "Windows NT Networking is not correctly installed.  "+
	       "Are you sure you want to cancel copying files?"
ProCancelCap = "Network Setup Message"
ProText1     = "Copying:"
ProText2     = "To:"

ProductHardwareOCTX3117Description = "Olicom Token-Ring ISA 16/4 Adapter (OC-3117)"
ProductHardwareOCTX3118Description = "Olicom Token-Ring ISA 16/4 Adapter (OC-3118)"
ProductHardwareOCTX3133Description = "Olicom Token-Ring EISA 16/4 Adapter (OC-3133)"
ProductHardwareOCTX3136Description = "Olicom Token-Ring PCI 16/4 Adapter (OC-3136)"
ProductHardwareOCTX3137Description = "Olicom Token-Ring PCI/II 16/4 Adapter (OC-3137)"
ProductHardwareOCTX3139Description = "Olicom RapidFire 3139 Token-Ring 16/4 PCI Adapter"
ProductHardwareOCTX3140Description = "Olicom RapidFire 3140 Token-Ring 16/4 PCI Adapter"
ProductHardwareOCTX3141Description = "Olicom RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter"
ProductHardwareOCTX3129Description = "Olicom Token-Ring MCA 16/4 Adapter (OC-3129)"
ProductHardwareOCTX3220Description = "Olicom GoCard Token-Ring PC Card (OC-3220)"
ProductHardwareOCTX3221Description = "Olicom GoCard Token-Ring PC Card (OC-3221)"
ProductHardwareOCTX3230Description = "Olicom GoCard TR/Modem 144 PC Card (OC-3230)"
ProductHardwareOCTX3232Description = "Olicom GoCard TRN/Modem 336 PC Card (OC-3232)"
ProductHardwareOCTX3250Description = "Olicom GoCard 3250 Token-Ring 16/4 CardBus PC Card"

ProductSoftwareDescription = "Olicom Token-Ring Adapter Driver"
ProductHardwareDescription = "Olicom Token-Ring Adapter"
FunctionTitle              = "Olicom Token-Ring Adapter Setup"

IOBaseAddrList = ^(IOBaseAddrChoices, 1)
IOBaseAddrValues = ^(IOBaseAddrChoices, 2)
RcvBufCountList  = ^(RxBufferCountChoices, 1)
RcvBufCountValues = ^(RxBufferCountChoices, 2)
XmitBufCountList = ^(TxBufferCountChoices, 1)
XmitBufCountValues = ^(TxBufferCountChoices, 2)
LegacyWakeUpList = ^(LegacyWakeUpChoices, 1)
LegacyWakeUpValues = ^(LegacyWakeUpChoices, 2)
IOBasePCMCIAList = ^(IOBasePCMCIAChoices, 1)
IOBasePCMCIAValues = ^(IOBasePCMCIAChoices, 2)
MemWinList = ^(MemWinChoices, 1)
MemWinValues = ^(MemWinChoices, 2)
InterruptList = ^(InterruptChoices, 1)
InterruptValues = ^(InterruptChoices, 2)
RingSpeedList = ^(RingSpeedChoices, 1)
RingSpeedValues = ^(RingSpeedChoices, 2)
RSList = ^(RSChoices, 1)
RSValues = ^(RSChoices, 2)
ComPortList = ^(ComPortChoices, 1)
ComPortValues = ^(ComPortChoices, 2)
ComPortListNT = ^(ComPortChoicesNT, 1)
ComPortValuesNT = ^(ComPortChoicesNT, 2)
IOBasePCMCIAControllerList = ^(IOBasePCMCIAControllerChoices, 1)
IOBasePCMCIAControllerValues = ^(IOBasePCMCIAControllerChoices, 2)
WaitstateList = ^(WaitstateChoices, 1)
WaitstateValues = ^(WaitstateChoices, 2)
DatasizeList = ^(DatasizeChoices, 1)
DatasizeValues = ^(DatasizeChoices, 2)
DatasizeLabels = ^(DatasizeChoices, 3)

; Parameter defaults
IOBasePCMCIADefault = 8
MemWinDefault	    = 25
ComPortDefault      = 3
InterruptDefault    = 1
RcvBufCountDefault  = 27
XmitBufCountDefault = 25
LegacyWakeUpDefault = 3
FrameSizeDefault    = 4472

; Bus/slot defaults for PCI auto-detect
BusNoDefault        = 0
SlotNoDefault       = 0
SlotNoUnknown       = 1024

[DialogConstantsENG]
Help        = "&Help"
Exit        = "Cancel"
OK          = "OK"
HelpContext = ""
Continue    = "Continue"
Cancel      = "Cancel"
ContextMinimumID        = 6000
ContextContentsID       = 6000
ContextPCMCIASetupID    = 6001
ContextPCMCIAAdvancedID = 6002
ContextMaximumID        = 6020

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

[AskSourceDlgText]
    DlgText        = "Please enter the full path of the Olicom 16/4 driver "+
		     "setup files. Then choose Continue."

;-----------------------------------------------------------------------
; ADAPTER PARAMETER DIALOG
; ------------------------
; This section sets up the adapter parameter dialog. All textstrings
; presented in this dialog are defined here.
;
;-----------------------------------------------------------------------
[OCTK16ParameterDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "OCTK16"
Caption = $(FunctionTitle)
DlgText = "Please select values for the following fields:"
Free        = "&Bus..."
Combo1Label = "&I/O Base Address:"
Combo2Label = "&Receive Buffers:"
Combo3Label = "&Transmit Buffers:"
Combo4Label = "Ring &Speed:"
Label1 = "&Early Token Release:"
Radio1 = "Yes"
Radio2 = "No"
Label2 = "&Frame Status:"
Radio3 = "Yes"
Radio4 = "No"
Edit1Label = "&Network Address:"
Edit2Label = "&Max Frame Size:"
Combo1List = $(IOBaseAddrList)
Combo1Out  = $(IOBaseAddrIndex)
Combo2List = $(RcvBufCountList)
Combo2Out  = $(RcvBufCountIndex)
Combo3List = $(XmitBufCountList)
Combo3Out  = $(XmitBufCountIndex)
Combo4List = $(RSList)
Combo4Out  = $(RSIndex)
ComboListItemsIn  = {Combo1List, Combo2List, Combo3List, Combo4List}
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out, Combo4Out}
EditTextLim = { 17, 5 }
EditTextIn  = { $(NetworkAddress), $(FrameSizeValue) }
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO, NO, NO}
HelpContext = $(ContextContentsID)

;-----------------------------------------------------------------------
; PCI PARAMETER MAIN DIALOG
; -------------------------
; This section sets up the adapter parameter dialog. All textstrings
; presented in this dialog are defined here.
;
;-----------------------------------------------------------------------
[PCIParameterDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "PCMCIA"
Caption = $(FunctionTitle)
DlgText = "Please select values for the following fields:"
Free        = "&Bus"
Combo1Label = "&Receive Buffers:"
Combo2Label = "&Transmit Buffers:"
Combo3Label = "Ring &Speed:"
Label1 = "&Early Token Release:"
Radio1 = "Yes"
Radio2 = "No"
Label2 = "&Frame Status:"
Radio3 = "Yes"
Radio4 = "No"
Edit1Label = "&Network Address:"
Edit2Label = "&Max Frame Size:"
Combo1List = $(RcvBufCountList)
Combo1Out  = $(RcvBufCountIndex)
Combo2List = $(XmitBufCountList)
Combo2Out  = $(XmitBufCountIndex)
Combo3List = $(RSList)
Combo3Out  = $(RSIndex)
ComboListItemsIn  = {Combo1List, Combo2List, Combo3List}
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out}
EditTextLim = { 17, 5 }
EditTextIn  = { $(NetworkAddress), $(FrameSizeValue) }
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO}
HelpContext = $(ContextContentsID)

;-----------------------------------------------------------------------
; PCI3 PARAMETER MAIN DIALOG
; -------------------------
; This section sets up the adapter parameter dialog. All textstrings
; presented in this dialog are defined here.
;
;-----------------------------------------------------------------------
[PCI3ParameterDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "OCTK16"
Caption = $(FunctionTitle)
DlgText = "Please select values for the following fields:"
Free        = "&Bus..."
Combo1Label = "&Wake-on-LAN:"
Combo2Label = "&Receive Buffers:"
Combo3Label = "&Transmit Buffers:"
Combo4Label = "Ring &Speed:"
Label1 = "&Early Token Release:"
Radio1 = "Yes"
Radio2 = "No"
Label2 = "&Frame Status:"
Radio3 = "Yes"
Radio4 = "No"
Edit1Label = "&Network Address:"
Edit2Label = "&Max Frame Size:"
Combo1List = $(LegacyWakeUpList)
Combo1Out  = $(LegacyWakeUpIndex)
Combo2List = $(RcvBufCountList)
Combo2Out  = $(RcvBufCountIndex)
Combo3List = $(XmitBufCountList)
Combo3Out  = $(XmitBufCountIndex)
Combo4List = $(RSList)
Combo4Out  = $(RSIndex)
ComboListItemsIn  = {Combo1List, Combo2List, Combo3List, Combo4List}
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out, Combo4Out}
EditTextLim = { 17, 5 }
EditTextIn  = { $(NetworkAddress), $(FrameSizeValue) }
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO, NO, NO}
HelpContext = $(ContextContentsID)

;-----------------------------------------------------------------------
; PCMCIA PARAMETER MAIN DIALOG
; ----------------------------
; This section sets up the adapter parameter dialog. All textstrings
; presented in this dialog are defined here.
;
;-----------------------------------------------------------------------
[PCMCIAParameterDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "PCMCIA"
Caption = $(FunctionTitle)
DlgText = "Please select values for the following fields:"
Free        = "&PC Card..."
Combo1Label = "&Receive Buffers:"
Combo2Label = "&Transmit Buffers:"
Combo3Label = "Ring &Speed:"
Label1 = "&Early Token Release:"
Radio1 = "Yes"
Radio2 = "No"
Label2 = "&Frame Status:"
Radio3 = "Yes"
Radio4 = "No"
Edit1Label = "&Network Address:"
Edit2Label = "&Max Frame Size:"
Combo1List = $(RcvBufCountList)
Combo1Out  = $(RcvBufCountIndex)
Combo2List = $(XmitBufCountList)
Combo2Out  = $(XmitBufCountIndex)
Combo3List = $(RSList)
Combo3Out  = $(RSIndex)
ComboListItemsIn  = {Combo1List, Combo2List, Combo3List}
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out}
EditTextLim = { 17, 5 }
EditTextIn  = { $(NetworkAddress), $(FrameSizeValue) }
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO}
HelpContext = $(ContextContentsID)

;-----------------------------------------------------------------------
; PCMCIA COMBO Cards PARAMETER MAIN DIALOG
; ----------------------------------------
; This section sets up the adapter parameter dialog. All textstrings
; presented in this dialog are defined here.
;
;-----------------------------------------------------------------------
[COMBOParameterDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "PCMCIA"
Caption = $(FunctionTitle)
DlgText = "Please select values for the following fields:"
Free        = "&PC Card..."
Combo1Label = "&Receive Buffers:"
Combo2Label = "&Transmit Buffers:"
Combo3Label = "Ring &Speed:"
Label1 = "&Early Token Release:"
Radio1 = "Yes"
Radio2 = "No"
Label2 = "&Frame Status:"
Radio3 = "Yes"
Radio4 = "No"
Edit1Label = "&Network Address:"
Edit2Label = "&Max Frame Size:"
Combo1List = $(RcvBufCountList)
Combo1Out  = $(RcvBufCountIndex)
Combo2List = $(XmitBufCountList)
Combo2Out  = $(XmitBufCountIndex)
Combo3List = $(RingSpeedList)
Combo3Out  = $(RingSpeedIndex)
ComboListItemsIn  = {Combo1List, Combo2List, Combo3List}
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out}
EditTextLim = { 17, 5 }
EditTextIn  = { $(NetworkAddress), $(FrameSizeValue) }
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO}
HelpContext = $(ContextContentsID)

;-----------------------------------------------------------------------
; MORE PCMCIA PARAMETER DIALOG
; ----------------------------
; This section sets up the PCMCIA parameter dialog. All textstrings
; presented in this dialog are defined here.
;
;-----------------------------------------------------------------------

[PCMCIAMoreDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "PCMCIAM"
Caption = "PC Card Setup"
DlgText = "Please select values for the following fields:"
Free        = "&Advanced..."
Combo1Label = "I/O &Base Address:"
Combo2Label = "&Memory Window:"
Combo3Label = "&Interrupt:"
Combo1List = $(IOBasePCMCIAList)
Combo1Out  = $(IOBasePCMCIAIndex)
Combo2List = $(MemWinList)
Combo2Out  = $(MemWinIndex)
Combo3List = $(InterruptList)
Combo3Out  = $(InterruptIndex)
ComboListItemsIn  = {Combo1List, Combo2List, Combo3List}
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out}
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO, NO}
HelpContext = $(ContextPCMCIASetupID)

;-----------------------------------------------------------------------
; MORE COMBO PARAMETER DIALOG
; ---------------------------
; This section sets up the PCMCIA parameter dialog. All textstrings
; presented in this dialog are defined here.
;
;-----------------------------------------------------------------------

[COMBOMoreDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "COMBOM"
Caption = "PC Card Setup"
DlgText = "Please select values for the following fields:"
Free        = "&Advanced..."
Combo1Label = "I/O &Base Address:"
Combo2Label = "&Memory Window:"
Combo3Label = "&Interrupt:"
Combo4Label = "&Com Port:"
Combo1List = $(IOBasePCMCIAList)
Combo1Out  = $(IOBasePCMCIAIndex)
Combo2List = $(MemWinList)
Combo2Out  = $(MemWinIndex)
Combo3List = $(InterruptList)
Combo3Out  = $(InterruptIndex)
Combo4List = $(ComPortList)
Combo4Out  = $(ComPortIndex)
ComboListItemsIn  = {Combo1List, Combo2List, Combo3List, Combo4List}
ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out, Combo4Out}
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO, NO}
HelpContext = $(ContextPCMCIASetupID)

;-----------------------------------------------------------------------
; PCMCIA ADVANCED SETTINGS DIALOG
; -------------------------------
; This section sets up the PCMCIA adavanced settings dialog. All
; textstrings presented in this dialog are defined here.
;
;-----------------------------------------------------------------------

[PCMCIAAdvancedDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "PCMCIAADV"
Caption = "PC Card Advanced Settings"
DlgText = "Please select values for the following fields:"
Combo1Label = "PC Card &Enabler:"
Combo2Label = "&Additional Waitstates:"
Radio1Label = "&Datasize:"
Radio1Button1 = *($(DatasizeLabels),1)
Radio1Button2 = *($(DatasizeLabels),2)
Combo1List = $(IOBasePCMCIAControllerList)
Combo1Out  = $(IOBasePCMCIAControllerIndex)
Combo2List = $(WaitstateList)
Combo2Out  = $(WaitstateIndex)
ComboListItemsIn  = {Combo1List, Combo2List}
ComboListItemsOut = {Combo1Out, Combo2Out}
RadioIn = { $(DatasizeIndex) }
RadioOptionGreyed = {}
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO, NO}
HelpContext = $(ContextPCMCIAAdvancedID)

;---------------------------------------------------------------------------
; 1. Identify
;
; DESCRIPTION:   To verify that this INF deals with the same type of options
;                as we are choosing currently.
;
; INPUT:         None
;
; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
;                $($R1): Option Type (COMPUTER ...)
;                $($R2): Diskette description
;---------------------------------------------------------------------------

[Identify]
    read-syms Identification
    set Status     = STATUS_SUCCESSFUL
    set Identifier = $(OptionType)
    set Media      = #("Source Media Descriptions", 1, 1)
    Return $(Status) $(Identifier) $(Media)

;------------------------------------------------------------------------
; 2. ReturnOptions:
;
; DESCRIPTION:   To return the option list supported by this INF and the
;                localised text list representing the options.
;
;
; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
;
; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
;                                STATUS_NOLANGUAGE
;                                STATUS_FAILED
;                                STATUS_NOTSUPPORTED
;
;                $($R1): Option List
;                $($R2): Option Text List
;------------------------------------------------------------------------

[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:
;
;      This section is shelled to by main installation processing
;      or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION:  To copy files representing Options
;            To configure the installed option
;            To update the registry for the installed option
;
; INPUT:     $($0):  Language to use
;            $($1):  OptionID to install
;            $($2):  SourceDirectory
;            $($3):  AddCopy  (YES | NO)
;            $($4):  DoCopy   (YES | NO)
;            $($5):  DoConfig (YES | NO)
;
; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
;                            STATUS_NOLANGUAGE |
;                            STATUS_USERCANCEL |
;                            STATUS_FAILED
;
;------------------------------------------------------------------------

[InstallOption]
    StartWait
    set SrcDir   = ""
    set Option   = $($1)
    set SrcDir   = $($2)
    set AddCopy  = $($3)
    set DoCopy   = $($4)
    set DoConfig = $($5)
    ifstr(i) $(SrcDir) == ""
       Set SrcDir = "A:\"
    Endif
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) NOT-IN $(LanguageList)
	Return STATUS_NOLANGUAGE
    endif
    Debug-Output "STF_CWDDIR is: "$(!STF_CWDDIR)
    Debug-Output "STF_LANGUAGE is: "$(!STF_LANGUAGE)
    set-subst LF = "\n"
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms DialogConstants$(!STF_LANGUAGE)
    ifstr(i) $(!NTN_Origination) == "NCPA"
	set Continue = "OK"
    endif
    read-syms FileConstants$(!STF_LANGUAGE)
    detect date
    set-title  $(FunctionTitle)
    set to   = Begin
    set from = Begin
    set CommonStatus = STATUS_SUCCESSFUL
    SetHelpFile $(HelpfileName) $(ContextMinimumID) $(ContextMaximumID)
    ;
    ; OCT3X requires special setting for buffer counts and ring speed
    ;
    ifcontains(i) $(Option) in {"OCTX3139","OCTX3140","OCTX3141","OCTX3250"}
	set RcvBufCountList     = ^(Oct3RxBufferCountChoices, 1)
	set RcvBufCountValues   = ^(Oct3RxBufferCountChoices, 2)
        set RcvBufCountDefault  = 0
        set XmitBufCountList    = ^(Oct3TxBufferCountChoices, 1)
	set XmitBufCountValues  = ^(Oct3TxBufferCountChoices, 2)
	set XmitBufCountDefault = 0
        set RSList              = ^(Oct3RSChoices, 1)
        set RSValues            = ^(Oct3RSChoices, 2)
    endif

    EndWait
Begin = +
    ;
    ; Get the Windows NT version. We will not install on NT v3.1x
    ;
    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
    
    ifstr(i) (*($(CurrentVersionValue),4)) == ($(NT310VersionConstant))
	 Debug-Output "Running on WindowsNT 3.10"
	 set Error = "Windows NT v3.10 is not support by this product"
	 goto fatal
    endif
    ifstr(i) (*($(CurrentVersionValue),4)) == ($(NT350VersionConstant))
	 Debug-Output "Running on WindowsNT 3.50"
	 set Error = "Windows NT v3.50 is not support by this product"
	 goto fatal
    endif

    set NTComboSupport = $(FALSE)
    ifstr(i) (*($(CurrentVersionValue),4)) == ($(NT40VersionConstant))
	set NTComboSupport = $(TRUE)
    endif

    Ifstr(i) $(!NTN_InstallMode) == deinstall
	set StartLabel = removeadapter
    else-Ifstr(i) $(!NTN_InstallMode) == Update
	set StartLabel = UpgradeSoftware
    else-Ifstr(i) $(!NTN_InstallMode) == bind
	set StartLabel = bindingadapter
    else-Ifstr(i) $(!NTN_InstallMode) == configure
	set StartLabel = configureadapter
	Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
	    Debug-Output "Cannot configure the driver software."
	    Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error: cannot get an error string."
		goto ShellCodeError
	    endif
	    set Error = $($R0)
	    set from = end
	    set to = end
	    goto nonfatalinfo
	endif
    else
	set StartLabel = installadapter
	set OEM_ABANDON_OPTIONS = {}
	set OEM_ABANDON_SOFTWARE = FALSE
	set OEM_ABANDON_ON = TRUE
    endif
    set IOBaseAddrIndex = *($(IOBaseAddrList), 1)
    set RcvBufCountIndex = *($(RcvBufCountList), $(RcvBufCountDefault))
    set XmitBufCountIndex = *($(XmitBufCountList), $(XmitBufCountDefault))
    set FrameSizeValue = $(FrameSizeDefault))
    set NetworkAddress = *($(EditTextOut), 1)
    set Rad1 = 1
    set Rad2 = 3
    set RadioIn = {$(Rad1), $(Rad2) }
    set EarlyRelease = 1
    set FrameStatus = 1
    set IOBasePCMCIAIndex = *($(IOBasePCMCIAList), $(IOBasePCMCIADefault))

    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters\SerialOct3xnd3" $(MAXIMUM_ALLOWED) SerialHandle
    ifstr $(SerialHandle) == $(KeyNull)
	set ComPortIndex = *($(ComPortList), $(ComPortDefault))
	set AllowComPort = $(TRUE)
    else
	set ComPortIndex = *($(ComPortList), 6)
	set AllowComPort = $(FALSE)
    endif
    CloseRegKey $(SerialHandle)

    set InterruptIndex = *($(InterruptList), $(InterruptDefault))
    set MemWinIndex = *($(MemWinList), $(MemWinDefault))
    set IOBasePCMCIAControllerIndex = *($(IOBasePCMCIAControllerList), 1)
    ifcontains(i) $(Option) in {"OCTX3220","OCTX3221"}
       set IOBasePCMCIAControllerList = >($(IOBasePCMCIAControllerList),"Windows NT Enabler")
       set IOBasePCMCIAControllerValues = >($(IOBasePCMCIAControllerValues),0)
       set IOBasePCMCIAControllerIndex = *($(IOBasePCMCIAControllerList), 3)
    endif
    ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
       ifstr(i) $(NTComboSupport) == $(TRUE)
	   set IOBasePCMCIAControllerList = >($(IOBasePCMCIAControllerList),"Windows NT Enabler")
	   set IOBasePCMCIAControllerValues = >($(IOBasePCMCIAControllerValues),0)
	   set IOBasePCMCIAControllerIndex = *($(IOBasePCMCIAControllerList), 3)
       endif
    endif
    set WaitstateIndex = *($(WaitstateList), 1)
    set DatasizeIndex = 1
    set RingSpeedIndex = *($(RingSpeedList), 1)
    set RSIndex = *($(RSList), 1)
    Shell "" DebugConfiguration "After parameter querying"
    set RcvBufCountValue = *($(RcvBufCountList), $(RcvBufCountDefault))
    set XmitBufCountValue = *($(XmitBufCountList), $(XmitBufCountDefault))
    set LegacyWakeUpValue = *($(LegacyWakeUpValues), $(LegacyWakeUpDefault))
    set FrameSizeValue = $(FrameSizeDefault)
    set BusNumber = $(BusNoDefault)
    set SlotNumber = $(SlotNoDefault)
    set ForcePciSlot = 1
    Shell $(UtilityInf), GetBusTypeNum
    set BusInterfaceType = $($R1)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output "ShellCode error."
	goto ShellCodeError
    endif
    Set from = $(fatal)
    Set to = $(fatal)
    Goto $(StartLabel)

;-----------------------------------------------
; Installation Section
;-----------------------------------------------
;
;   Get the current values of all the parameters
;
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
	   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
    Set SrcDir = $($R1)
    install "Install-Dll"
    Goto adapteroptions

;-----------------------------------------------
; Configuration Section
;-----------------------------------------------
;
;   Get the current values of all the parameters
;
configureadapter = +
    Ifstr(i) $(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) == "RecBufCount"
	    set RcvBufCountValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "RxBuffers"
	    set RcvBufCountValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "IoBase"
	    set IOBaseAddrValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "TxBufferCount"
	    set XmitBufCountValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "TxBuffers"
	    set XmitBufCountValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "LegacyWakeUp"
	    set LegacyWakeUpValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "TransmitBufferSize"
	    set FrameSizeValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "MaxFrameSize"
	    set FrameSizeValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "BusNumber"
	    set BusNumber = $(ValueData)
	else-ifstr(i) $(ValueName) == "SlotNumber"
	    set SlotNumber = $(ValueData)
	else-ifstr(i) $(ValueName) == "EarlyReleaseType"
	    set EarlyRelease = $(ValueData)
	else-ifstr(i) $(ValueName) == "FrameStatusType"
	    set FrameStatus = $(ValueData)
        else-Ifstr(i) $(ValueName) == "NetworkAddress"
	    set NetworkAddress = $(ValueData)
	else-ifstr(i) $(ValueName) == "IoBaseAddress"
	    set IOBasePCMCIAValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "IoBaseAddress_1"
	    set IOBasePCMCIAValue_1 = $(ValueData)
	else-ifstr(i) $(ValueName) == "PCCARDAttributeMemoryAddress"
	    set MemWinValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "InterruptNumber"
	    set InterruptValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "ComPortBase"
	    set ComPortValue = $(ValueData)
	    ifstr(i) $(ComPortValue) != 0
		set AllowComPort = $(TRUE)
	    endif
	else-ifstr(i) $(ValueName) == "PcmciaCtrlBase"
	    set IOBasePCMCIAControllerValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "WaitStates"
	    set WaitstateValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "DataSize"
	    set DatasizeValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "RingSpeed"
	    set RingSpeedValue = $(ValueData)
	else-ifstr(i) $(ValueName) == "BusType"
	    set BusInterfaceType = $(ValueData)
	else-ifstr(i) $(ValueName) == "ForcePciSlot"
	    set ForcePciSlot = $(ValueData)
	endif
    EndForListDo

    ;
    ; For combo cards with NT enabler we must
    ; use the second I/O window
    ;
    ifstr(i) $(IOBasePCMCIAValue_1) != ""
	set IOBasePCMCIAValue = $(IOBasePCMCIAValue_1)
    endif

    ;
    ; Combo-lists and radio-buttons use a special list of parameter-names
    ; when dialogs are executed. The following section converts the actual
    ; values into the corresponding names (indexes). If a value is undefined,
    ; the first entry in the index-list is used.
    ;
    set RcvBufCountIndex = *($(RcvBufCountList), ~($(RcvBufCountValues),$(RcvBufCountValue)))
    ifstr(i) $(RcvBufCountIndex) == ""
	set RcvBufCountIndex = *($(RcvBufCountList), $(RcvBufCountDefault))
    endif
    set XmitBufCountIndex = *($(XmitBufCountList), ~($(XmitBufCountValues),$(XmitBufCountValue)))
    ifstr(i) $(XmitBufCountIndex) == ""
	set XmitBufCountIndex = *($(XmitBufCountList), $(XmitBufCountDefault))
    endif
    set LegacyWakeUpIndex = *($(LegacyWakeUpList), ~($(LegacyWakeUpValues),$(LegacyWakeUpValue)))
    ifstr(i) $(LegacyWakeUpIndex) == ""
	set LegacyWakeUpIndex = *($(LegacyWakeUpList), $(LegacyWakeUpDefault))
    endif
    set IOBaseAddrIndex = *($(IOBaseAddrList), ~($(IOBaseAddrValues),$(IOBaseAddrValue)))
    ifstr(i) $(IOBaseAddrIndex) == ""
	set IOBaseAddrIndex = *($(IOBaseAddrList), 1)
    endif
    ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129","OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141","OCTX3250"}
       set RSIndex = *($(RSList), ~($(RSValues),$(RingSpeedValue)))
       ifstr(i) $(RSIndex) == ""
	  set RSIndex = *($(RSList), 1)
       endif
    else
       set RingSpeedIndex = *($(RingSpeedList), ~($(RingSpeedValues),$(RingSpeedValue)))
       ifstr(i) $(RingSpeedIndex) == ""
	  set RingSpeedIndex = *($(RingSpeedList), 1)
       endif
    endif
    Ifstr(i) $(EarlyRelease) == "Yes"
        set EarlyRelease = 1
        set Rad1 = 1
    else-ifstr(i) $(EarlyRelease) == 1
	set Rad1 = 1
    else
	set Rad1 = 2
    endif
    Ifstr(i) $(FrameStatus) == "Yes"
        set FrameStatus = 1;
        set Rad2 = 3
    else-ifstr(i) $(FrameStatus) == 1
	set Rad2 = 3
    else
	set Rad2 = 4
    endif
    set RadioIn = {$(Rad1), $(Rad2) }
    set IOBasePCMCIAIndex = *($(IOBasePCMCIAList), ~($(IOBasePCMCIAValues),$(IOBasePCMCIAValue)))
    ifstr(i) $(IOBasePCMCIAIndex) == ""
	set IOBasePCMCIAIndex = *($(IOBasePCMCIAList), 1)
    endif
    set MemWinIndex = *($(MemWinList), ~($(MemWinValues),$(MemWinValue)))
    ifstr(i) $(MemWinIndex) == ""
	set MemWinIndex = *($(MemWinList), $(MemWinDefault))
    endif
    set InterruptIndex = *($(InterruptList), ~($(InterruptValues),$(InterruptValue)))
    ifstr(i) $(InterruptIndex) == ""
	set InterruptIndex = *($(InterruptList), $(InterruptDefault))
    endif
    set ComPortIndex = *($(ComPortList), ~($(ComPortValues),$(ComPortValue)))
    ifstr(i) $(ComPortIndex) == ""
	set ComPortIndex = *($(ComPortList), 6)
    endif
    set IOBasePCMCIAControllerIndex = *($(IOBasePCMCIAControllerList), ~($(IOBasePCMCIAControllerValues),$(IOBasePCMCIAControllerValue)))
    ifstr(i) $(IOBasePCMCIAControllerIndex) == ""
	set IOBasePCMCIAControllerIndex = *($(IOBasePCMCIAControllerList), 1)
    endif
    set WaitstateIndex = *($(WaitstateList), ~($(WaitstateValues),$(WaitstateValue)))
    ifstr(i) $(WaitstateIndex) == ""
	set WaitstateIndex = *($(WaitstateList), 2)
    endif
    set DatasizeIndex = *($(DatasizeList), ~($(DatasizeValues),$(DatasizeValue)))
    ifstr(i) $(DatasizeIndex) == ""
	set DatasizeIndex = *($(DatasizeList), 1)
    endif
    ;
    ; This section runs the dialogs. From the main dialog (adapter parameter
    ; setup) it is possible to enter the PCMCIA dialog if requested. When
    ; exiting the PCMCIA dialog the user is returned to the main dialog.
    ;
adapteroptions = +
    set from = adapteroptions
    ifstr(i) $(!NTN_InstallMode) == "install"
	;
	; Default parameters for installation. 
	; User will NOT be asked to change/verify configuration during
	; normal or unattended installation, unless we are installing on
	; NT v3.50.
	;
        ifcontains(i) $(Option) in {"OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141","OCTX3250"}
	     set BusInterfaceType = 5
	     ifint $(PCIDetectSupported) == $(FALSE)
		  ifstr(i) $(!AutoNetBusNumber) != ""
		       set BusNumber = $(!AutoNetBusNumber)
		  else
		       set BusNumber = $(BusNoDefault)
		  endif
	     endif
	else
	     ifcontains(i) $(Option) in {"OCTX3117","OCTX3118"}
		  ; ISA
		  set BusInterfaceType = 1
	     else-ifstr(i) $(Option) == "OCTX3133"
		  ; EISA
		  set BusInterfaceType = 2
	     else-ifstr(i) $(Option) == "OCTX3129"
		  ; MCA
		  set BusInterfaceType = 3
	     else
		  ; PCMCIA
		  set BusInterfaceType = 1
	     endif

	     ifstr(i) $(!AutoNetBusNumber) != ""
		  set BusNumber = $(!AutoNetBusNumber)
	     else
		  set BusNumber = 0
	     endif
	endif

	ifint $(PCIDetectSupported) == $(TRUE)
	     ; Default parameters for installation on any NT except 3.50
	     goto unattended
	endif

	ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
	     ; Default parameters for unattended installation
	     goto unattended
	endif
    endif
    set OldNetAddress = $(NetworkAddress)
    ;
    ; Load DLL containing dialogs and verification routines
    ;
    LoadLibrary "Olicom Driver Disk" $(DialogDllName) DialogHandle
adapteroptions1 = +
    ;
    ; If upgraded from old version we do not have a PCI slotnumber
    ;
    Ifint $(SlotNumber) == 0
	set PCIDetectSupported = $(FALSE)
    Endif
    ;
    ; Read main dialog setup and show dialog
    ;
    ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129"}
	read-syms OCTK16ParameterDlg$(!STF_LANGUAGE)
    endif
    ifcontains(i) $(Option) in {"OCTX3136","OCTX3137"}
	read-syms PCIParameterDlg$(!STF_LANGUAGE)
    endif
    ifcontains(i) $(Option) in {"OCTX3139","OCTX3140","OCTX3141"}
	read-syms PCI3ParameterDlg$(!STF_LANGUAGE)
    endif
    ifcontains(i) $(Option) in {"OCTX3220","OCTX3221","OCTX3250"}
        read-syms PCMCIAParameterDlg$(!STF_LANGUAGE)
    endif
    ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
	read-syms COMBOParameterDlg$(!STF_LANGUAGE)
    endif
    set RadioIn = {$(Rad1), $(Rad2) }
    ui start "InputDlg"  $(DialogHandle)
    ui pop 1
    ;
    ; Save new settings because this dialog might be called again.
    ; If CANCEL was pressed these values will not be used
    ;
    ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129"}
       set IOBaseAddrIndex = $(Combo1Out)
       set RcvBufCountIndex = $(Combo2Out)
       set XmitBufCountIndex = $(Combo3Out)
       set RSIndex = $(Combo4Out)
    else-ifcontains(i) $(Option) in {"OCTX3136","OCTX3137"}
       set RcvBufCountIndex = $(Combo1Out)
       set XmitBufCountIndex = $(Combo2Out)
       set RSIndex = $(Combo3Out)
    else-ifcontains(i) $(Option) in {"OCTX3139","OCTX3140","OCTX3141"}
       set LegacyWakeUpIndex = $(Combo1Out)
       set RcvBufCountIndex = $(Combo2Out)
       set XmitBufCountIndex = $(Combo3Out)
       set RSIndex = $(Combo4Out)
    else-ifcontains(i) $(Option) in {"OCTX3250"}
       set RcvBufCountIndex = $(Combo1Out)
       set XmitBufCountIndex = $(Combo2Out)
       set RSIndex = $(Combo3Out)
    else
       set RcvBufCountIndex = $(Combo1Out)
       set XmitBufCountIndex = $(Combo2Out)
       set RingSpeedIndex = $(Combo3Out)
    Endif
    IfContains "1" IN $(RadioOut)
	set EarlyRelease = 1
	set Rad1 = 1
    else-IfContains "2" IN $(RadioOut)
	set EarlyRelease = 0
	set Rad1 = 2
    endif
    IfContains "3" IN $(RadioOut)
	set FrameStatus = 1
	set Rad2 = 3
    else-IfContains "4" IN $(RadioOut)
	set FrameStatus = 0
	set Rad2 = 4
    endif
    set NetworkAddress = *($(EditTextOut),1)
    set FrameSizeValue = *($(EditTextOut),2)
    ifstr(i) $(DLGEVENT) == "CONTINUE"
	;
	; parameters have already been stored at this stage
	;
	goto nextstep
    else-ifstr(i) $(DLGEVENT) == "EXIT"
	set CommonStatus = STATUS_USERCANCEL
	Debug-Output "Action: exit. Bye."
	FreeLibrary $(DialogHandle)
	goto end
    else-ifstr(i) $(DLGEVENT) == "FREEBUTTON1" ; BUS... (non PCMCIA)
adapteroptions2 = +
	;
	; Read PCMCIA dialog setup and show dialog
	;
	ifcontains(i) $(Option) in {"OCTX3220","OCTX3221"}
	    read-syms PCMCIAMoreDlg$(!STF_LANGUAGE)
        else-ifcontains(i) $(Option) in {"OCTX3250"}
            read-syms PCMCIAMoreDlg$(!STF_LANGUAGE)
            set Free = "&Cancel"
        else-ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
	    ifstr $(AllowComPort) == $(TRUE)
		read-syms COMBOMoreDlg$(!STF_LANGUAGE)
		ifstr(i) $(IOBasePCMCIAControllerIndex) == "Windows NT Enabler"
		    set Combo4List = $(ComPortListNT)
                endif
            else
		read-syms PCMCIAMoreDlg$(!STF_LANGUAGE)
	    endif
	else-ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129"}
	    Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardwareDescription) $(BusInterfaceType) $(BusNumber)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto Shell_Code_Error
	    endif
	    ifstr(i) $($R0) == ERROR
		Shell $(UtilityInf), GetBusTypeNum
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
		    goto Shell_Code_Error
		endif
		set BusInterfaceType = $($R1)
		set BusNumber  = 0
	    else
		set BusInterfaceType = $($R1)
		set BusNumber  = $($R2)
	    endif
	    set BusTypeConfigured = 1
	    goto adapteroptions1
        else-ifcontains(i) $(Option) in {"OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141"}
	    ifint $(PCIDetectSupported) == $(FALSE)
		Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardwareDescription) $(BusInterfaceType) $(BusNumber)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
		    goto Shell_Code_Error
		endif
		ifstr(i) $($R0) == ERROR
		    Shell $(UtilityInf), GetBusTypeNum
		    ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto Shell_Code_Error
		    endif
                    set BusInterfaceType = $($R1)
		    set BusNumber  = 0
		else
		    set BusInterfaceType = $($R1)
		    set BusNumber  = $($R2)
		endif
	    else
		set DlgType      = "MessageBox"
		set STF_MB_TITLE = "PCI Bus Parameters"
		set STF_MB_TEXT  = "Bus parameters are configured automatically for PCI adapters. Do you want to force the PCI slot number?"
		set STF_MB_TYPE  = 4
		set STF_MB_ICON  = 2
		ifstr $(ForcePciSlot) == "1"
		    set STF_MB_DEF = 1
		else
		    set STF_MB_DEF = 2
		endif
		ui start "PciBusParameters"
		ifstr $(DLGEVENT) == "YES"
		    set ForcePciSlot = 1
			Shell $(subroutineinf) SetupMessage $(!STF_LANGUAGE) STATUS +
			    "This PCI adapter is currently configured for bus number "$(BusNumber)" and slot number "$(SlotNumber)
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
			    goto Shell_Code_Error
			endif
		else-ifstr $(DLGEVENT) == "NO"
		    set ForcePciSlot = 0
		endif
	    endif
	    set BusTypeConfigured = 1
	    goto adapteroptions1
	endif
	ui start "InputDlg"  $(DialogHandle)
	ui pop 1

        ifcontains(i) $(Option) in {"OCTX3250"}
            ifstr(i) $(DLGEVENT) == "FREEBUTTON1"
                ;
                ; For CardBus this option should work as Cancel
                ;
                goto adapteroptions1
            endif
        endif

        ;
	; Save new settings because this dialog might be called again.
	; If CANCEL was pressed these values will not be used
	;
        set IOBasePCMCIAIndex = $(Combo1Out)
	set MemWinIndex = $(Combo2Out)
	set InterruptIndex = $(Combo3Out)
	set ComPortIndex = $(Combo4Out)
	ifstr(i) $(DLGEVENT) == "CONTINUE"
	    ;
	    ; parameters have already been stored at this stage
	    ;
	    goto adapteroptions1
	else-ifstr(i) $(DLGEVENT) == "FREEBUTTON1"
	    ;
	    ; Read PCMCIA Advanced dialog setup and show dialog
	    ;
	    read-syms PCMCIAAdvancedDlg$(!STF_LANGUAGE)
	    ui start "InputDlg"  $(DialogHandle)
	    ui pop 1
	    ;
	    ; Save new settings because this dialog might be called again.
	    ; If CANCEL was pressed these values will not be used
	    ;
	    set IOBasePCMCIAControllerIndex = $(Combo1Out)
	    set WaitstateIndex = $(Combo2Out)
	    set DatasizeIndex = *($(RadioOut),1)
;	     set IOBasePCMCIAControllerValue = *($(IOBasePCMCIAControllerValues), ~($(IOBasePCMCIAControllerList),$(IOBasePCMCIAControllerIndex)))
	    ifstr(i) $(IOBasePCMCIAControllerIndex) == "Windows NT Enabler"
		ifstr(i) $(ComPortIndex) == "Disabled"
		    set ComPortIndex = *($(ComPortList), $(ComPortDefault))
		else-ifstr(i) $(ComPortIndex) == "COM4"
		    set ComPortIndex = *($(ComPortList), $(ComPortDefault))
                endif
	    endif
            goto adapteroptions2
	else
	    Debug-Output "Action: unknown: "$(DLGEVENT)
	    FreeLibrary $(DialogHandle)
	    goto end
	endif
    else
	Debug-Output "Action: unknown: "$(DLGEVENT)
	FreeLibrary $(DialogHandle)
	goto end
    endif
nextstep =+
    ifcontains(i) $(Option) in {"OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141","OCTX3250"}
        set BusTypeConfigured = 1 ; Avoid BusType/BusNumber Dialog box for PCI/CardBus
    endif
    ifstr(i) $(!NTN_InstallMode) == "install"
	ifint $(BusTypeConfigured) == 0
            ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129"}
		Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardwareDescription) $(BusInterfaceType) $(BusNumber)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
		    goto Shell_Code_Error
		endif
		ifstr(i) $($R0) == ERROR
		    Shell $(UtilityInf), GetBusTypeNum
		    ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto Shell_Code_Error
		    endif
		    set BusInterfaceType = $($R1)
		    set BusNumber  = 0
		else
		    set BusInterfaceType = $($R1)
		    set BusNumber  = $($R2)
		endif
	    endif
	endif
    endif
    ifstr $(NetworkAddress) != ""
	;
	; If network address has been entered then verify that it is a
	; valid address (not a multicast or broadcast address)
	;
	set FLibraryErrCtl = 1
	LibraryProcedure DlgResult $(DialogHandle) VerifyAddress $(NetworkAddress)
	set FLibraryErrCtl = 0
	ifstr $(DlgResult) != "STATUS_SUCCESS"
	    FreeLibrary $(DialogHandle)
	    set Error = $(DlgResult)
	    goto nonfatal
	endif
    endif
    set FLibraryErrCtl = 1
    set RcvBufCountValue = *($(RcvBufCountValues), ~($(RcvBufCountList),$(RcvBufCountIndex)))
    set XmitBufCountValue = *($(XmitBufCountValues), ~($(XmitBufCountList),$(XmitBufCountIndex)))
    set RingSpeedValue = *($(RingSpeedValues), ~($(RingSpeedList),$(RingSpeedIndex)))
    set RSValue = *($(RSValues), ~($(RSList),$(RSIndex)))
    ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129","OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141","OCTX3250"}
	ifstr $(RcvBufCountValue) == 0
	    LibraryProcedure DlgResult $(DialogHandle) CheckMaxFrameSize $(FrameSizeValue) $(XmitBufCountValue) 32 $(RSValue)
	else
	    LibraryProcedure DlgResult $(DialogHandle) CheckMaxFrameSize $(FrameSizeValue) $(XmitBufCountValue) $(RcvBufCountValue) $(RSValue)
	endif
    else
	LibraryProcedure DlgResult $(DialogHandle) CheckMaxFrameSize $(FrameSizeValue) $(XmitBufCountValue) $(RcvBufCountValue) $(RingSpeedValue)
    endif
    set FLibraryErrCtl = 0
    ifstr $(DlgResult) != "STATUS_SUCCESS"
	FreeLibrary $(DialogHandle)
	set Error = $(DlgResult)
	goto nonfatal
    endif
    FreeLibrary $(DialogHandle)
unattended =+
    ifint $(OldVersionExisted) == $(TRUE)
	ifstr(i) $(!NTN_InstallMode) == configure
	    goto writeparameters
	endif
    endif
    StartWait
    Ifint $(OldVersionExisted) != $(FALSE)
	Goto installhardware
    Endif
    ifstr(i) $(!NTN_InstallMode) == "install"
       Ifstr(i) $(DoCopy) == "YES"
	  Ifstr(i) $(SrcDir) == ""
	     read-syms AskSourceDlgText
	     Shell $(subroutineinf) DoAskSourceEx $(SrcDir) $(DlgText)
	     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
       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)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	EndWait
	Debug-Output "OEMNADUB.INF: Registry error: add software components"
	CloseRegKey $($R1)
	CloseRegKey $($R2)
	CloseRegKey $($R3)
	CloseRegKey $($R4)
	CloseRegKey $($R5)
	goto fatalregistry
    endif
    set SoftProductKey  = $($R1)
    Set SoftNetRuleKey = $($R2)
    Set SoftServiceKey  = $($R3)
    Set SoftParameterKey        = $($R4)
    Set SoftLinkageKey  = $($R5)
    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, $(SoftProductKey), $(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 $(SoftProductKey)
	CloseRegKey $(SoftNetRuleKey)
	CloseRegKey $(SoftServiceKey)
	CloseRegKey $(SoftParameterKey)
	CloseRegKey $(SoftLinkageKey)
	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, $(SoftNetRuleKey), $(NewValueList)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output "ShellCode error."
	goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    CloseRegKey $(SoftProductKey)
    CloseRegKey $(SoftNetRuleKey)
    CloseRegKey $(SoftServiceKey)
    CloseRegKey $(SoftParameterKey)
    CloseRegKey $(SoftLinkageKey)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	EndWait
	Debug-Output "Registry error: add value list."
	goto fatalregistry
    endif
;
;   Insert hardware component in registry
;
installhardware =+
    set HardwareInstalled = $(FALSE)
    ifcontains(i) $(Option) in {"OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141"}
	;
	; If We are installing a PCI adapter so go get PCI information
	;
	ifint $(PCIDetectSupported) == $(TRUE)
	    ;
	    ; NOTE: PCI configuration (BusNumber, SlotNumber will not be
	    ;       changed in normal configuration
	    ;
	    set HardwareInstalled = $(TRUE)
	    
	    set VendorID = 4237 ; Olicom Vendor ID: 108Dh
            ifcontains(i) $(Option) in {"OCTX3139","OCTX3140"}
                set DeviceID = 4 ; OC-3139/OC-3140
            else-ifcontains(i) $(Option) in {"OCTX3141"}
                set DeviceID = 7 ; OC-3141
            else
                set DeviceID = 1 ; OC-3136/OC-3137
	    endif
	    
	    ; Get PCI information
	    Shell $(UtilityInf), GetPCIInformation, $(VendorID) $(DeviceID)
	    set AdapterList = $($R0)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	    endif

	    ifstr(i) $($R0) == {}
		;
		; Adapter list is empty. No adapters of this type was found
		;
		ifstr(i) $(!STF_GUI_UNATTENDED) != "YES"
		    ;
		    ; Unattended install: We will NOT install adapter
		    ; Attended install  : We will ask user if he wants to install
		    ;                     adapter anyway.
		    ;
		    shell $(subroutineinf) SetupMessage $(!STF_LANGUAGE) FATAL +
			  "No PCI adapters found"
		    ifstr(i) $($R0) != STATUS_SUCCESSFUL
			set Error = $($R0)
			goto fatal
		    endif
		    EndWait
		    goto abandon
		endif
	    else
		;
		; Adapter(s) has be found. We will try to find out if the (or
		; these) adapter hasn't been installed already.
		;
		set FoundNew = "NO"
		ForListDo $(AdapterList)
		     ; Run through the Adapter list
		     ; Get Bus number from list:
		     set BusNumber = *($($),1)
		     ; Get SLot Number from list:
		     set SlotNumber = *($($),2)

		     ; Check registry
		     Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(BusNumber), +
			  $(SlotNumber), $(ProductHardware$(Option)Description), $(ProductHardwareName)
		     ifint $($ShellCode) != $(!SHELL_CODE_OK)
			  goto ShellCodeError
		     endif
		     ifstr $($R0) != "NO_ERROR"
			  set Error = $($R0)
			  goto fatal
		     endif
		     ifstr(i) $($R1) == "NO"
			  ;
			  ; This adapter in the AdapterList has not been install yet
			  ;
			  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 KeyProduct = $($R1)
			  set KeyAdapterRules = $($R2)
			  set KeyParameters = $($R3)
			  set AdapterNumber = $($R4)
			  set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
					     {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
					     {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
					     {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
					     {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
					     {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
			  Shell  $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
			  ifint $($ShellCode) != $(!SHELL_CODE_OK)
			      Debug-Output "ShellCode error"
			      goto ShellCodeError
			  endif
			  CloseRegKey $(KeyProduct)
			  Set KeyProduct = ""
			  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
			  CloseRegKey $(KeyAdapterRules)
			  set RegistryErrorIndex = $($R0)
			  Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			      EndWait
			      Debug-Output "Registry error: add value list."
			      CloseRegKey $(KeyParameters)
			      goto fatalregistry
			  endif
			  ;
			  ; Set up parameter list for AddValueList routine
			  ;
			  Set NewValueList = {{IoBase,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
					      {MediaType,$(NoTitle),$(!REG_VT_DWORD),2},+
					      {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
					      {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
					      {SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)},+
					      {ForcePciSlot,$(NoTitle),$(!REG_VT_DWORD),$(ForcePciSlot)},+
					      {FixedIntMod,$(NoTitle),$(!REG_VT_DWORD),0},+
					      {RxBuffers,$(NoTitle),$(!REG_VT_DWORD),$(RcvBufCountValue)},+
					      {TxBuffers,$(NoTitle),$(!REG_VT_DWORD),$(XmitBufCountValue)},+
                                              {MaxFrameSize,$(NoTitle),$(!REG_VT_DWORD),$(FrameSizeValue)},+
                                              {EarlyReleaseType,$(NoTitle),$(!REG_VT_DWORD),$(EarlyRelease)},+
                                              {FrameStatusType,$(NoTitle),$(!REG_VT_DWORD),$(FrameStatus)}}

			  ifstr $(NetworkAddress) != ""
			      set NewValueList = >($(NewValueList),{NetworkAddress,$(NoTitle),$(!REG_VT_SZ),$(NetworkAddress)})
			  endif
			  set NewValueList = >($(NewValueList),{RingSpeed,$(NoTitle),$(!REG_VT_DWORD),$(RSValue)})
                          ifcontains(i) $(Option) in {"OCTX3139","OCTX3140","OCTX3141"}
			      set NewValueList = >($(NewValueList),{LegacyWakeUp,$(NoTitle),$(!REG_VT_DWORD),$(LegacyWakeUpValue)})
			  endif

			  ;---------------------------------------
			  ; Add keyword to prevent driver from
			  ; entering promiscuous mode
			  ;

			  ;set NewValueList = >($(NewValueList),{AllowTrace,$(NoTitle),$(!REG_VT_DWORD),0})

			  ;
			  ;---------------------------------------

			  ;
			  ; Now update registry
			  ;
			  Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
			  ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
			      Shell $(UtilityInf),AddDefaultNetCardParameters,$(KeyParameters)
			  endif
			  set FoundNew = "YES"
		     endif
		EndForListDo

		ifstr(i) $(FoundNew) == "NO"
		    ifstr(i) $(!STF_GUI_UNATTENDED) != "YES"
			;
			; No new (uninstalled) adapters found - show message
			;
			shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), STATUS,+
			      "No new PCI adapters found"
			ifstr(i) $($R0) != STATUS_SUCCESSFUL
			    set Error = $($R0)
			    goto fatal
			endif
		    endif
		endif

	    endif
	endif
    endif

    ifstr(i) $(HardwareInstalled) == $(FALSE)
	;
	; Install non-PCI device (or NT 3.50)
	;
	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 KeyProduct = $($R1)
	set KeyAdapterRules = $($R2)
	set KeyParameters = $($R3)
	set AdapterNumber = $($R4)
	set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
			   {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
			   {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
			   {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
			   {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
			   {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
	Shell  $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	CloseRegKey $(KeyProduct)
	Set KeyProduct = ""
	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
	CloseRegKey $(KeyAdapterRules)
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    EndWait
	    Debug-Output "Registry error: add value list."
	    CloseRegKey $(KeyParameters)
	    goto fatalregistry
	endif
    endif
;
; Write Adapter Parameters to registry
;
writeparameters = +
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output "ShellCode error."
	goto ShellCodeError
    endif
    Ifstr(i) $(KeyParameters) == $(KeyNull)
	Debug-Output "*** KeyParameters is NULL at writeparameters"
    Endif

    set DoWrite = "NO"
    ifcontains(i) $(Option) in {"OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141"}
	ifstr(i) $(!NTN_InstallMode) == "Configure"
	    set DoWrite = "YES"
	endif
    else
	set DoWrite = "YES"
    endif

    Ifstr(i) $(DoWrite) == "YES"
	;
	; Convert selections from combo-lists and radio-buttons into actual
	; parameter values
	;
	set IOBaseAddrValue = *($(IOBaseAddrValues), ~($(IOBaseAddrList),$(IOBaseAddrIndex)))
	set RcvBufCountValue = *($(RcvBufCountValues), ~($(RcvBufCountList),$(RcvBufCountIndex)))
	set XmitBufCountValue = *($(XmitBufCountValues), ~($(XmitBufCountList),$(XmitBufCountIndex)))
	set LegacyWakeUpValue = *($(LegacyWakeUpValues), ~($(LegacyWakeUpList),$(LegacyWakeUpIndex)))
	set IOBasePCMCIAValue = *($(IOBasePCMCIAValues), ~($(IOBasePCMCIAList),$(IOBasePCMCIAIndex)))
	set MemWinValue = *($(MemWinValues), ~($(MemWinList),$(MemWinIndex)))
	set InterruptValue = *($(InterruptValues), ~($(InterruptList),$(InterruptIndex)))
	set RingSpeedValue = *($(RingSpeedValues), ~($(RingSpeedList),$(RingSpeedIndex)))
	set RSValue = *($(RSValues), ~($(RSList),$(RSIndex)))
	set ComPortValue = *($(ComPortValues), ~($(ComPortList),$(ComPortIndex)))

	set IOBasePCMCIAControllerValue = *($(IOBasePCMCIAControllerValues), ~($(IOBasePCMCIAControllerList),$(IOBasePCMCIAControllerIndex)))
	set WaitstateValue = *($(WaitstateValues), ~($(WaitstateList),$(WaitstateIndex)))
	set DatasizeValue = *($(DatasizeValues), ~($(DatasizeList),$(DatasizeIndex)))

	ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
	   set BusInterfaceType = 1
	   set BusNumber = 0
	Endif

	ifcontains(i) $(Option) in {"OCTX3220","OCTX3221"}
	   set BusInterfaceType = 1
	   set BusNumber = 0
	Endif

	ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
	    ;
	    ; If we're installing a ComboCard, update settings for Serial\parameters\serialoct3xnd3 as well
	    ; SERIALCOMM will be created automatically by serial.sys
	    ;
	    ifint $(ComPortValue) != 0
		OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters\SerialOct3xnd3" $(MAXIMUM_ALLOWED) SerialHandle
		Ifstr $(SerialHandle) == $(KeyNull)
		    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialKey
		    CreateRegKey $(SerialKey) {"SerialOct3xnd3",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SerialHandle
		    CloseRegKey $(SerialKey)
		endif
		ifint $(ComPortValue) != 24
		    set NewValueList = {{DosDevices,       $(NoTitle),$(!REG_VT_SZ),      $(ComPortIndex)},+
			    {ForceFifoEnable,  $(NoTitle),$(!REG_VT_DWORD),   0},+
			    {ForceShare,       $(NoTitle),$(!REG_VT_DWORD),   1},+
			    {Interrupt,        $(NoTitle),$(!REG_VT_DWORD),   $(InterruptValue)},+
			    {PortAddress,      $(NoTitle),$(!REG_VT_DWORD),   $(ComPortValue)}}
		Else
		    set-add ComportBaseAddress = $(ComPortValue), $(IOBasePCMCIAValue)
		    set NewValueList = {{DosDevices,       $(NoTitle),$(!REG_VT_SZ),      $(ComPortIndex)},+
			    {ForceFifoEnable,  $(NoTitle),$(!REG_VT_DWORD),   0},+
			    {ForceShare,       $(NoTitle),$(!REG_VT_DWORD),   1},+
			    {Interrupt,        $(NoTitle),$(!REG_VT_DWORD),   $(InterruptValue)},+
			    {PortAddress,      $(NoTitle),$(!REG_VT_DWORD),   $(ComportBaseAddress)}}
		Endif
		Shell  $(UtilityInf), AddValueList, $(SerialHandle), $(NewValueList)
		CloseRegKey $(SerialHandle)
		;
		; Update settings comm port in SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports section
		;
		OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" $(MAXIMUM_ALLOWED) SerialHandle
		Ifstr $(SerialHandle) == $(KeyNull)
		    OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion" $(MAXIMUM_ALLOWED) SerialKey
		    CreateRegKey $(SerialKey) {"Ports",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SerialHandle
		    CloseRegKey $(SerialKey)
		endif
		SetRegValue $(SerialHandle) {$(ComPortIndex)":",$(NoTitle),$(!REG_VT_SZ), "9600,n,8,1"}
		CloseRegKey $(SerialHandle)
		;
		; Update settings in HARDWARE\DEVICEMAP\SERIALCOMM section
		;
		OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP\SERIALCOMM" $(MAXIMUM_ALLOWED) SerialHandle
		Ifstr $(SerialHandle) == $(KeyNull)
			OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP" $(MAXIMUM_ALLOWED) SerialKey
			CreateRegKey $(SerialKey) {"SERIALCOMM",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" SerialHandle
			CloseRegKey $(SerialKey)
		endif
		SetRegValue $(SerialHandle) {"SerialOct3xnd3",$(NoTitle),$(!REG_VT_SZ),$(ComPortIndex)}
		CloseRegKey $(SerialHandle)
	    Else
		;
		; Be nice and delete the COM stuff if user really wants so
		; SERIALCOMM will be deleted automatically
		;
		ifstr(i) $(AllowComPort) == $(TRUE)
		    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialHandle
		    DeleteRegTree $(SerialHandle) "SerialOct3xnd3"
		    CloseRegKey $(SerialHandle)
		    OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP\SERIALCOMM" $(MAXIMUM_ALLOWED) SerialHandle
		    DeleteRegValue $(SerialHandle) "SerialOct3xnd3"
		    CloseRegKey $(SerialHandle)
		endif
	    Endif
	Endif

	;
	; If using NT enabler for combo cards we must request
	; one additional I/O window
	;
	set PcmciaIoLength = 31
	ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
	    ifstr(i) $(NTComboSupport) == $(TRUE)
		ifint $(IOBasePCMCIAControllerValue) == 0
		    set IOBasePCMCIAValue_1 = $(IOBasePCMCIAValue)
		    set PcmciaIoLength_1 = $(PcmciaIoLength)
		    set IOBasePCMCIAValue = $(ComPortValue)
		    set PcmciaIoLength = 8
		endif
	    endif
	endif

	;
	; Set up parameter list for AddValueList routine
	;
	Set NewValueList = {{IoBase,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
			    {MediaType,$(NoTitle),$(!REG_VT_DWORD),2},+
			    {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
			    {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
			    {SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)},+
			    {ForcePciSlot,$(NoTitle),$(!REG_VT_DWORD),$(ForcePciSlot)},+
			    {FixedIntMod,$(NoTitle),$(!REG_VT_DWORD),0},+
			    {RxBuffers,$(NoTitle),$(!REG_VT_DWORD),$(RcvBufCountValue)},+
                            {TxBuffers,$(NoTitle),$(!REG_VT_DWORD),$(XmitBufCountValue)},+
			    {MaxFrameSize,$(NoTitle),$(!REG_VT_DWORD),$(FrameSizeValue)},+
                            {EarlyReleaseType,$(NoTitle),$(!REG_VT_DWORD),$(EarlyRelease)},+
                            {FrameStatusType,$(NoTitle),$(!REG_VT_DWORD),$(FrameStatus)},+
			    {LegacyWakeUp,$(NoTitle),$(!REG_VT_DWORD),$(LegacyWakeUpValue)},+
			    {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOBasePCMCIAValue)},+
			    {IoLength,$(NoTitle),$(!REG_VT_DWORD),$(PcmciaIoLength)},+
			    {PCCARDAttributeMemoryAddress,$(NoTitle),$(!REG_VT_DWORD),$(MemWinValue)},+
			    {PCCARDAttributeMemorySize, $(NoTitle),$(!REG_VT_DWORD),4096},+
			    {PCCARDAttributeMemoryOffset, $(NoTitle),$(!REG_VT_DWORD),0},+
			    {InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(InterruptValue)},+
			    {ComPortBase,$(NoTitle),$(!REG_VT_DWORD),$(ComPortValue)},+
			    {PcmciaCtrlBase,$(NoTitle),$(!REG_VT_DWORD),$(IOBasePCMCIAControllerValue)},+
			    {WaitStates,$(NoTitle),$(!REG_VT_DWORD),$(WaitstateValue)},+
			    {DataSize,$(NoTitle),$(!REG_VT_DWORD),$(DatasizeValue)}}

	ifstr $(NetworkAddress) != ""
	    set NewValueList = >($(NewValueList),{NetworkAddress,$(NoTitle),$(!REG_VT_SZ),$(NetworkAddress)})
	endif
        ifcontains(i) $(Option) in {"OCTX3250"}
            set NewValueList = >($(NewValueList),{CardBusType,$(NoTitle),$(!REG_VT_DWORD),1})
        endif
        ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129","OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141","OCTX3250"}
	    set NewValueList = >($(NewValueList),{RingSpeed,$(NoTitle),$(!REG_VT_DWORD),$(RSValue)})
	else
	    set NewValueList = >($(NewValueList),{RingSpeed,$(NoTitle),$(!REG_VT_DWORD),$(RingSpeedValue)})
	    ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
		ifstr(i) $(NTComboSupport) == $(TRUE)
		    ifint $(IOBasePCMCIAControllerValue) == 0
			set NewValueList = >($(NewValueList),{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),1})
			set NewValueList = >($(NewValueList),{ModemFunction,$(NoTitle),$(!REG_VT_DWORD),1})
			set NewValueList = >($(NewValueList),{IoBaseAddress_1,$(NoTitle),$(!REG_VT_DWORD),$(IOBasePCMCIAValue_1)})
			set NewValueList = >($(NewValueList),{IoLength_1,$(NoTitle),$(!REG_VT_DWORD),$(PcmciaIoLength_1)})
		    else
			set NewValueList = >($(NewValueList),{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),0})
		    endif
		else
		    set NewValueList = >($(NewValueList),{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),0})
		endif
	    else
		ifint $(IOBasePCMCIAControllerValue) == 0
		    set NewValueList = >($(NewValueList),{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),1})
		else
		    set NewValueList = >($(NewValueList),{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),0})
		endif
	    endif
	endif

	;---------------------------------------
	; Add keyword to prevent driver from
	; entering promiscuous mode
	;

	;set NewValueList = >($(NewValueList),{AllowTrace,$(NoTitle),$(!REG_VT_DWORD),0})

	;
	;---------------------------------------

	;
	; Now update registry
	;
	Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
	ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
	    Shell $(UtilityInf),AddDefaultNetCardParameters,$(KeyParameters)
	endif
	;
	; If the network address has been deleted then also delete it from
	; the registry.
	;
	ifstr $(OldNetAddress) != ""
	   ifstr $(NetworkAddress) == ""
	      DeleteRegValue $(KeyParameters) NetworkAddress
	   endif
	endif
	;
	; Update power management entries
	;
        ifcontains(i) $(Option) in {"OCTX3139","OCTX3140","OCTX3141"}
	    ; do not delete anything
	else
	    ; delete power management entries
	    DeleteRegValue $(KeyParameters) LegacyWakeUp
	endif
	;
	; If we're not installing a PCMCIA Card, remove PCMCIA specific settings
	;
        ifcontains(i) $(Option) in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129","OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141"}
	    DeleteRegValue $(KeyParameters) IoBaseAddress
            DeleteRegValue $(KeyParameters) IoLength
	    DeleteRegValue $(KeyParameters) IoBaseAddress_1
	    DeleteRegValue $(KeyParameters) IoLength_1
	    DeleteRegValue $(KeyParameters) ModemFunction
	    DeleteRegValue $(KeyParameters) PCCARDAttributeMemoryAddress
	    DeleteRegValue $(KeyParameters) PCCARDAttributeMemorySize
	    DeleteRegValue $(KeyParameters) PCCARDAttributeMemoryOffset
	    DeleteRegValue $(KeyParameters) InterruptNumber
	    DeleteRegValue $(KeyParameters) ComPortBase
	    DeleteRegValue $(KeyParameters) PcmciaCtrlBase
	    DeleteRegValue $(KeyParameters) Pcmcia
	    DeleteRegValue $(KeyParameters) WaitStates
	    DeleteRegValue $(KeyParameters) DataSize
	endif
        ifcontains(i) $(Option) in {"OCTX3220","OCTX3221","OCTX3250"}
	    DeleteRegValue $(KeyParameters) ComPortBase
	    DeleteRegValue $(KeyParameters) IoBaseAddress_1
	    DeleteRegValue $(KeyParameters) IoLength_1
	    DeleteRegValue $(KeyParameters) ModemFunction
	endif
        ifcontains(i) $(Option) in {"OCTX3250"}
            DeleteRegValue $(KeyParameters) IoLength
            DeleteRegValue $(KeyParameters) Pcmcia
            DeleteRegValue $(KeyParameters) PcmciaCtrlBase
            DeleteRegValue $(KeyParameters) WaitStates
	    DeleteRegValue $(KeyParameters) DataSize
        endif
        ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
	    ifint $(IOBasePCMCIAControllerValue) != 0
		DeleteRegValue $(KeyParameters) IoBaseAddress_1
		DeleteRegValue $(KeyParameters) IoLength_1
		DeleteRegValue $(KeyParameters) ModemFunction
	    endif
	endif
        ifcontains(i) $(Option) not-in {"OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141","OCTX3250"}
	    DeleteRegValue $(KeyParameters) SlotNumber
	endif
	CloseRegKey $(KeyParameters)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error."
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
	    Debug-Output "Registry error: Add value list"
	    goto fatalregistry
	endif
	;
	; Add some keywords to the PCMCIA database in the registry
	;
        ifcontains(i) $(Option) not-in {"OCTX3117","OCTX3118","OCTX3133","OCTX3129","OCTX3136","OCTX3137","OCTX3139","OCTX3140","OCTX3141"}
	    set PCMCIADatabaseKeyName = $(!NTN_ServiceBase)"\Pcmcia\DataBase"
	    OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIADatabaseKeyName) $(MAXIMUM_ALLOWED) PCMCIADatabaseKey
	    ifstr $(PCMCIADatabaseKey) != $(NULL)
		CreateRegKey $(PCMCIADatabaseKey) {"Olicom", 0, 0} "" $(MAXIMUM_ALLOWED) "" PCMCIADatabaseManuKey
		ifstr $(PCMCIADatabaseManuKey) == $(NULL)
		    set PCMCIADatabaseManuKeyName = $(PCMCIADatabaseKeyName)"\Olicom"
		    OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIADatabaseManuKeyName) $(MAXIMUM_ALLOWED) PCMCIADatabaseManuKey
		endif
		CreateRegKey $(PCMCIADatabaseManuKey) {"TR16/4", 0, 0} "" $(MAXIMUM_ALLOWED) 0 PCMCIADatabaseManuCardKey
		ifstr $(PCMCIADatabaseManuCardKey) == $(NULL)
		    set PCMCIADatabaseManuCardKeyName = $(PCMCIADatabaseKeyName)"\Olicom\TR16/4"
		    OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIADatabaseManuCardKeyName) $(MAXIMUM_ALLOWED) PCMCIADatabaseManuCardKey
		endif
		SetRegValue $(PCMCIADatabaseManuCardKey) {Driver, 0, $(!REG_VT_SZ),"oct3xnd3"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {DeviceType, 0, $(!REG_VT_SZ),"NET"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {AttributeMemorySize, 0, $(!REG_VT_DWORD),4096}
		CloseRegKey $(PCMCIADatabaseManuCardKey)

		CreateRegKey $(PCMCIADatabaseManuKey) {"TR 16/4 II", 0, 0} "" $(MAXIMUM_ALLOWED) 0 PCMCIADatabaseManuCardKey
		ifstr $(PCMCIADatabaseManuCardKey) == $(NULL)
		    set PCMCIADatabaseManuCardKeyName = $(PCMCIADatabaseKeyName)"\Olicom\TR 16/4 II"
		    OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIADatabaseManuCardKeyName) $(MAXIMUM_ALLOWED) PCMCIADatabaseManuCardKey
		endif
		SetRegValue $(PCMCIADatabaseManuCardKey) {Driver, 0, $(!REG_VT_SZ),"oct3xnd3"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {DeviceType, 0, $(!REG_VT_SZ),"NET"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {AttributeMemorySize, 0, $(!REG_VT_DWORD),4096}
		CloseRegKey $(PCMCIADatabaseManuCardKey)

		CreateRegKey $(PCMCIADatabaseManuKey) {"GoCard Token-Ring 16/4+Modem 14400", 0, 0} "" $(MAXIMUM_ALLOWED) 0 PCMCIADatabaseManuCardKey
		ifstr $(PCMCIADatabaseManuCardKey) == $(NULL)
		    set PCMCIADatabaseManuCardKeyName = $(PCMCIADatabaseKeyName)"\Olicom\GoCard Token-Ring 16/4+Modem 14400"
		    OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIADatabaseManuCardKeyName) $(MAXIMUM_ALLOWED) PCMCIADatabaseManuCardKey
		endif
		SetRegValue $(PCMCIADatabaseManuCardKey) {Driver, 0, $(!REG_VT_SZ),"oct3xnd3"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {DeviceType, 0, $(!REG_VT_SZ),"NET"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {AttributeMemorySize, 0, $(!REG_VT_DWORD),4096}
		CloseRegKey $(PCMCIADatabaseManuCardKey)

		CreateRegKey $(PCMCIADatabaseManuKey) {"GoCard TRN/Modem 336", 0, 0} "" $(MAXIMUM_ALLOWED) 0 PCMCIADatabaseManuCardKey
		ifstr $(PCMCIADatabaseManuCardKey) == $(NULL)
		    set PCMCIADatabaseManuCardKeyName = $(PCMCIADatabaseKeyName)"\Olicom\GoCard TRN/Modem 336"
		    OpenRegKey $(!REG_H_LOCAL) "" $(PCMCIADatabaseManuCardKeyName) $(MAXIMUM_ALLOWED) PCMCIADatabaseManuCardKey
		endif
		SetRegValue $(PCMCIADatabaseManuCardKey) {Driver, 0, $(!REG_VT_SZ),"oct3xnd3"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {DeviceType, 0, $(!REG_VT_SZ),"NET"}
		SetRegValue $(PCMCIADatabaseManuCardKey) {AttributeMemorySize, 0, $(!REG_VT_DWORD),4096}
		CloseRegKey $(PCMCIADatabaseManuCardKey)
	    Endif
	Endif
    Endif

    ;-------------------------------------------------------------------------
    ; Add keywords to prevent MS Network Monitor Agent to trap Windows NT 4.0
    ;

    ;OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) $(MAXIMUM_ALLOWED) NMAServicesKey
    ;CreateRegKey $(NMAServicesKey) {"bh", 0, 0} "" $(MAXIMUM_ALLOWED) 0 NMAbhKey
    ;ifstr $(NMAbhKey) == $(NULL)
    ;    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\bh" $(MAXIMUM_ALLOWED) NMAbhKey
    ;endif
    ;CreateRegKey $(NMAbhKey) {"Parameters", 0, 0} "" $(MAXIMUM_ALLOWED) 0 NMAParametersKey
    ;ifstr $(NMAParametersKey) == $(NULL)
    ;    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\bh\Parameters" $(MAXIMUM_ALLOWED) NMAParametersKey
    ;endif
    ;CreateRegKey $(NMAParametersKey) {"ForcePMode", 0, 0} "" $(MAXIMUM_ALLOWED) 0 NMAForcePModeKey
    ;ifstr $(NMAForcePModeKey) == $(NULL)
    ;    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\bh\Parameters\ForcePMode" $(MAXIMUM_ALLOWED) NMAForcePModeKey
    ;endif
    ;SetRegValue $(NMAForcePModeKey) {Oct3xnd31, 0, $(!REG_VT_DWORD), 1}
    ;SetRegValue $(NMAForcePModeKey) {Oct3xnd32, 0, $(!REG_VT_DWORD), 1}
    ;SetRegValue $(NMAForcePModeKey) {Oct3xnd33, 0, $(!REG_VT_DWORD), 1}
    ;SetRegValue $(NMAForcePModeKey) {Oct3xnd34, 0, $(!REG_VT_DWORD), 1}
    ;SetRegValue $(NMAForcePModeKey) {Oct3xnd35, 0, $(!REG_VT_DWORD), 1}
    ;CloseRegKey $(NMAForcePModeKey)
    ;CloseRegKey $(NMAParametersKey)
    ;CloseRegKey $(NMAbhKey)
    ;CloseRegKey $(NMAServicesModeKey)

    ;
    ;-------------------------------------------------------------------------

    EndWait
    goto successful

bindingadapter =+
    set Error = "Binding: Sorry, not yet implemented."
    goto fatal

;-----------------------------------------------
; Remove Adapter Section
;-----------------------------------------------
;
;   Remove all adapter information from the registry
;
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
	;
	; Remove associated Com port if required
	;
	ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
	    Split-String $(!NTN_RegBase), "\", CardInfo
	    set AdapterNumber   = *($(CardInfo),11)
	    set ParamKeyName = $(!NTN_ServiceBase)"\"$(ProductHardwareName)$(AdapterNumber)"\Parameters"
	    OpenRegKey $(!REG_H_LOCAL) "" $(ParamKeyName) $(!REG_KEY_READ) KeyComPortBase
	    GetRegValue $(KeyComPortBase) "ComPortBase" ComPortBaseInfo
	    set ComPortBase = *($(ComPortBaseInfo), 3);
	    CloseRegKey $(KeyComPortBase)
	    ifstr(i) $(ComPortBase) != 0
		OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialHandle
		DeleteRegTree $(SerialHandle) "SerialOct3xnd3"
		CloseRegKey $(SerialHandle)
		OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP\SERIALCOMM" $(MAXIMUM_ALLOWED) SerialHandle
		DeleteRegValue $(SerialHandle) "SerialOct3xnd3"
		CloseRegKey $(SerialHandle)
	    endif
	endif

	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
    goto end

UpgradeSoftware = +
    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
	Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	set !UG_Filename = $($R0)
	install "Install-Update"
	ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
	    goto fatal
	endif
	SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
	SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
	CloseRegKey $(KeyProduct)
    else
	goto fatalregistry
    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
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 = "Error: "$(FunctionTitle)
    set STF_MB_TEXT  = "Shell Code Error"
    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)

[Install-Option]
    set STF_VITAL = ""
    ifstr(i) $(AddCopy) == "YES"
        AddSectionFilesToCopyList Files-Net $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
	ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
            AddSectionFilesToCopyList Files-Modem $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
        endif
    endif
    Debug-Output "OEMSETUP.INF: [Install-Option] DoCopy = "$(DoCopy)
    ifstr(i) $(DoCopy) == "YES"
	set !STF_NCPA_FLUSH_COPYLIST = TRUE
	CopyFilesInCopyList
    endif

    Exit

[Install-Update]
    set STF_VITAL        = ""
    set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
    AddSectionFilesToCopyList Files-Net $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
    ifcontains(i) $(Option) in {"OCTX3230","OCTX3232"}
        AddSectionFilesToCopyList Files-Modem $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
    endif
    AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
    AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
    set !STF_NCPA_FLUSH_COPYLIST = TRUE
    CopyFilesInCopyList
    exit

[Install-Dll]
    set STF_VITAL        = ""
    ifstr(i) $(AddCopy) == "YES"
	AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
    endif
    ifstr(i) $(DoCopy) == "YES"
	set !STF_NCPA_FLUSH_COPYLIST = TRUE
	CopyFilesInCopyList
    else
	; get minimum needed files for configuration
	LibraryProcedure STATUS,$(!NCPA_HANDLE), CopySingleFile $(!STF_HWND) $(SrcDir)\OCT3X.DLL $(!STF_WINDOWSSYSPATH)\OCT3X.DLL
	LibraryProcedure STATUS,$(!NCPA_HANDLE), CopySingleFile $(!STF_HWND) $(SrcDir)\OCT3X.HLP $(!STF_WINDOWSSYSPATH)\OCT3X.HLP
    endif
    exit

[Source Media Descriptions]
    1  = "Olicom Driver Disk"

[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386

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

[Files-Net]
1,      oct3xnd3.sys,   SIZE=999

[Files-Modem]
1,      serial.sys,     SIZE=999
1,      ocmdm144.inf,   SIZE=999,       DESTINATION=$(!STF_WINDOWSPATH)\INF
1,      ocmdm336.inf,   SIZE=999,       DESTINATION=$(!STF_WINDOWSPATH)\INF

[Files-Dll]
1,      oct3x.dll,   SIZE=999
1,      oct3x.hlp,   SIZE=999

[Files-dummy]





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.64