; ----------------------------------------------------------------- ; MODULE NAME: oemsetup.inf ; ; DESCRIPTION: Setup script for the IBM Shared RAM ; Token-Ring network adapter family. ; ----------------------------------------------------------------- [Identify] read-syms Identification set Status = STATUS_SUCCESSFUL set Identifier = $(OptionType) set Media = #("Source Media Descriptions", 1, 1) Return $(Status) $(Identifier) $(Media) [ReturnOptions] set Status = STATUS_FAILED set OptionList = {} set OptionTextList = {} set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) ifstr(i) $($1) == "" goto ReturnOptions endif set PlatformList = ^(PlatformsSupported, 1) Ifcontains(i) $($1) in $(PlatformList) goto ReturnOptions else set Status = STATUS_NOTSUPPORTED goto Finish_ReturnOptions endif else set Status = STATUS_NOLANGUAGE goto Finish_ReturnOptions endif ReturnOptions = + set OptionList = ^(Options, 1) set OptionTextList = ^(OptionsText$($0), 1) set Status = STATUS_SUCCESSFUL Finish_ReturnOptions = + Return $(Status) $(OptionList) $(OptionTextList) [Source Media Descriptions] 1 = "Windows NT Setup Disk #1" 2 = "Windows NT Setup CD-ROM Disk" ; ----------------------------------------------------------------- ; SECTION NAME: InstallOption ; ; DESCRIPTION: Main entry point. Shelled to by main ; installation processing or by NCPASHEL.INF ; during reconfiguration, removal, update, ; etc. It performs three main functions: ; ; 1. Copies files representing options ; 2. Configures the installed option ; 3. Updates 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 ; ; ----------------------------------------------------------------- [InstallOption] set Option = $($1) set SrcDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) NOT-IN $(LanguageList) Return STATUS_NOLANGUAGE endif Set !G:DebugOutputControl = 1 Debug-Output "Entering InstallOption" Debug-Output "NTN_InstallOption="$(!NTN_InstallOption) read-syms GeneralConstants read-syms FileConstants Shell $(UtilityInf), GetBindingInfo, "IBM" ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set NetRuleSoftwareBindable = $($R1) 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 EndWait ; ----------------------------------------------------------------- ; Begin - Determine what option we are being called with ; ----------------------------------------------------------------- Begin = + Debug-Output "AutoNetBusNumber = "$(!AutoNetBusNumber) Debug-Output "AutoNetInterfaceType = "$(!AutoNetInterfaceType) Debug-Output "LIBHANDLE = "$(!LIBHANDLE) Debug-Output "NTN_InstallMode = "$(!NTN_InstallMode) Debug-Output "NTN_Origination = "$(!NTN_Origination) Debug-Output "NTN_RegBase = "$(!NTN_RegBase) Debug-Output "NTN_ServiceBase = "$(!NTN_ServiceBase) Debug-Output "NTN_SoftwareBase = "$(!NTN_SoftwareBase) Debug-Output "REG_H_LOCAL = "$(!REG_H_LOCAL) Debug-Output "REG_VT_DWORD = "$(!REG_VT_DWORD) Debug-Output "REG_VT_MULTI_SZ = "$(!REG_VT_MULTI_SZ) Debug-Output "REG_VT_SZ = "$(!REG_VT_SZ) Debug-Output "Shell_CODE_OK = "$(!Shell_CODE_OK) Debug-Output "STF_CWDDIR = "$(!STF_CWDDIR) Debug-Output "STF_GUI_UNATTENDED = "$(!STF_GUI_UNATTENDED) Debug-Output "STF_HWND = "$(!STF_HWND) Debug-Output "STF_INSTALL_MODE = "$(!STF_INSTALL_MODE) Debug-Output "STF_LANGUAGE = "$(!STF_LANGUAGE) Debug-Output "STF_NCDETCARD = "$(!STF_NCDETCARD) Debug-Output "STF_NCDETECT = "$(!STF_NCDETECT) Debug-Output "STF_NCDETINFO = "$(!STF_NCDETINFO) Debug-Output "STF_NCOPTION = "$(!STF_NCOPTION) Debug-Output "STF_NCPA_FLUSH_COPYLIST = "$(!STF_NCPA_FLUSH_COPYLIST) Debug-Output "STF_NTPATH = "$(!STF_NTPATH) Debug-Output "STF_PLATFORM = "$(!STF_PLATFORM) Debug-Output "STF_WINDOWSSYSPATH = "$(!STF_WINDOWSSYSPATH) Debug-Output "UG_Filename = "$(!UG_Filename) ; Typical values: ; AutoNetBusNumber = ; AutoNetInterfaceType = ; LIBHANDLE = |1985806336 ; NTN_InstallMode = install ; NTN_Origination = ncpa or install ; NTN_RegBase = ; NTN_ServiceBase = SYSTEM\CurrentControlSet\SERVICES ; NTN_SoftwareBase = SOFTWARE ; REG_H_LOCAL = |-2147483646 ; REG_VT_DWORD = 4 ; REG_VT_MULTI_SZ = 7 ; REG_VT_SZ = 1 ; Shell_CODE_OK = 0 ; STF_CWDDIR = C:\WINNT\system32\ ; STF_GUI_UNATTENDED = NO ; STF_HWND = 8009e ; STF_INSTALL_MODE = CUSTOM ; STF_LANGUAGE = ENG ; STF_NCDETCARD = 0 ; STF_NCDETECT = NO (NCPA) or YES (SETUP) ; STF_NCDETINFO = {} ; STF_NCOPTION = ; STF_NCPA_FLUSH_COPYLIST = ; STF_NTPATH = C:\WINNT\System32 ; STF_PLATFORM = I386 ; STF_WINDOWSSYSPATH = C:\WINNT\System32 ; UG_Filename = set ActivateDetection = FALSE Ifstr(i) $(!NTN_InstallMode) == DEINSTALL set StartLabel = RemoveAdapter else-Ifstr(i) $(!NTN_InstallMode) == BIND set StartLabel = BindingAdapter else-Ifstr(i) $(!NTN_InstallMode) == UPDATE set StartLabel = UpgradeSoftware else-Ifstr(i) $(!NTN_InstallMode) == CONFIGURE set StartLabel = ConfigureAdapter set CommonStatus = STATUS_REBOOT set ActivateDetection = TRUE Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set Error = $($R0) set from = end set to = end goto NonFatalInfo endif else ; == INSTALL set StartLabel = InstallAdapter set OEM_ABANDON_OPTIONS = {} set OEM_ABANDON_SOFTWARE = FALSE set OEM_ABANDON_ON = TRUE set ActivateDetection = TRUE endif ; ------------------------------------------------------------- ; Build type list for card detection ; ------------------------------------------------------------- Set IoBaseAddress = 1 Set DetectedCard = FALSE Ifstr(i) $(ActivateDetection) != TRUE Goto SkipDetection Endif Set TypeList = {{IOADDR, IOADDR_Addr_List, IoBaseAddress}} Shell $(ParamInf) Param_BuildTypeLists $(Option) $(TypeList) Set Status = $($R0) ifstr(i) $(Status) != STATUS_SUCCESSFUL Goto FatalDetect Endif Shell $(ParamInf) Param_SetDefaults {} Ifstr(i) $(!STF_NCDETECT) == YES Ifstr(i) $(!STF_NCOPTION) == $(Option) Set DetectedCard = TRUE Endif Endif SkipDetection =+ set from = $(fatal) set to = $(fatal) goto $(StartLabel) ; ----------------------------------------------------------------- ; InstallAdapter - Entry point for new adapter installation ; ----------------------------------------------------------------- InstallAdapter = + OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct ; ------------------------------------------------------------- ; If the software key already exists then either ; ; 1. The driver is already installed, or ; 2. The driver no longer exists but an adapter that it ; would handle does exist. ; ; Prompt the user for whether to continue or exit ; ------------------------------------------------------------- Ifstr $(KeyProduct) != $(KeyNull) CloseRegKey $(KeyProduct) ifstr(i) !(NTN_RegBase) == $(ProductKeyName) Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+ $(ProductVersion) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif goto end else Shell $(UtilityInf), CardExistedDlg ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif ifstr(i) $($R1) != "OK" set CommonStatus = STATUS_USERCANCEL goto end endif set OldVersionExisted = $(TRUE) endif endif ; ------------------------------------------------------------- ; Copy the DLL and help file from diskette ; ------------------------------------------------------------- set OldSource = $(!STF_SRCDIR) Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(!STF_SRCDIR) Ifint $($ShellCode) != $(!Shell_CODE_OK) goto fatal endif Ifstr(i) $($R0) == STATUS_FAILED goto fatal endif Ifstr(i) $($R0) == STATUS_USERCANCEL goto end endif set !STF_SRCDIR = $($R1) install "Install-DLL" set !STF_SRCDIR = $(OldSource) ; ----------------------------------------------------------------- ; Prompt for type of adapter to install ; ----------------------------------------------------------------- AdapterSelect =+ set ParmTypes = "NOT_FOUND" set AdapterID = "NOT_FOUND" set hDLL = "" ifstr(i) $(!STF_GUI_UNATTENDED) == "YES" goto AfterDll endif LoadLibrary "X" $(EditSramDLL) hDLL LibraryProcedure Result $(hDLL) AdapterSelect $(!STF_HWND) FreeLibrary $(hDLL) AfterDll =+ ; Extract parameters from result string Split-String $(Result) "," ResultList ForListDo $(ResultList) Set Token = $($) ifstr $(Token) != "," Split-String $(Token) "=" KeyEqualsValue Set Key = *($(KeyEqualsValue), 1) Set Value = *($(KeyEqualsValue), 3) ifstr $(Key) == "STATUS" ifstr $(Value) == "CANCEL" Set CommonStatus = STATUS_USERCANCEL Debug-Output "Cancel button pressed in AdapterSelect()" goto end endif else-ifstr $(Key) == "ParmTypes" Set ParmTypes = $(Value) else-ifstr $(Key) == "AdapterID" Set AdapterID = $(Value) else endif endif EndForListDo Debug-Output "OK button pressed in AdapterSelect()" Debug-Output "ParmTypes = $(ParmTypes)" Debug-Output "AdapterID = $(AdapterID)" ; Write parameters into dialog input parameter string Set ParmList = "AdapterID="$(AdapterID)",ParmTypes="$(ParmTypes) Debug-Output "ParmList is ("$(ParmList)")" ; ------------------------------------------------------------- ; Begin adapter setup ; ------------------------------------------------------------- Ifstr(i) $(DetectedCard) != TRUE Goto AdapterSetup Endif StartWait Shell $(ParamInf) Param_QueryCard $(!STF_NCDETCARD) EndWait Ifstr(i) $($R0) != STATUS_SUCCESSFUL Goto AdapterSetup Endif Set DetectedParams = $($R1) Shell $(ParamInf) Param_SetDefaults $(DetectedParams) goto AdapterOptions ; ----------------------------------------------------------------- ; ConfigureAdapter - Entry point for configuration mode ; ----------------------------------------------------------------- ConfigureAdapter = + Ifstr $(KeyProduct) == $(KeyNull) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) == $(KeyNull) set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE goto fatalregistry Endif Endif Shell $(UtilityInf) FindService, $(KeyProduct) Ifint $($ShellCode) != $(!Shell_CODE_OK) Goto ShellCodeError Endif Ifstr(i) $($R0) != NO_ERROR Goto fatalregistry endif ; ------------------------------------------------------------- ; Set KeyParameters to be the open handle to the Parameters ; subkey for this adapter ; ------------------------------------------------------------- set KeyParameters = $($R2) CloseRegKey $($R1) Ifstr $(KeyParameters) == $(KeyNull) set RegistryErrorIndex = "CANNOT_FIND_COMPONENT_SERVICE" goto fatalregistry endif set OldVersionExisted = $(TRUE ) set ValueName = "" set ValueData = "" set ValueStr = "" set ValueList = {} ; ------------------------------------------------------------- ; Set ValueList equal to the list of parameter keywords. ; Then examine each parameter in the list and copy its ; value to a local variable if its name is one of the ; following: ; ; 1. AdapterID (NOTE: keyword is CardID) ; 2. IoBaseAddress ; 3. NetworkAddress ; 4. BusType ; 5. BusNumber ; 6. MaximumPacketSize ; 7. UAA ; 8. RelativeUAA ; 9. FastPath ; 10. ShallowMode ; 11. FullDuplex ; ------------------------------------------------------------- Set AdapterID = "" ; Set IoBaseAddress = "" Set NetworkAddress = "" Set BusType = "" Set BusNumber = "" Set MaximumPacketSize = "" Set UAA = "" Set RelativeUAA = "" Set FastPath = "" Set ShallowMode = "" Set FullDuplex = "" EnumRegValue $(KeyParameters) ValueList ForListDo $(ValueList) set ValueItem = $($) set ValueName = *($(ValueItem),1) set ValueData = *($(ValueItem),4) Ifstr(i) $(ValueName) == "CardID" set AdapterID = $(ValueData) ; else-Ifstr(i) $(ValueName) == "IoBaseAddress" ; set IoBaseAddress = $(ValueData) else-Ifstr(i) $(ValueName) == "NetworkAddress" set NetworkAddress = $(ValueData) else-ifstr(i) $(ValueName) == "BusType" set BusInterfaceType = $(ValueData) else-ifstr(i) $(ValueName) == "BusNumber" set BusNumber = $(ValueData) else-ifstr(i) $(ValueName) == "MaximumPacketSize" set MaximumPacketSize = $(ValueData) else-ifstr(i) $(ValueName) == "UAA" set UAA = $(ValueData) else-ifstr(i) $(ValueName) == "RelativeUAA" set RelativeUAA = $(ValueData) else-ifstr(i) $(ValueName) == "FastPath" set FastPath = $(ValueData) else-ifstr(i) $(ValueName) == "ShallowMode" set ShallowMode = $(ValueData) else-ifstr(i) $(ValueName) == "FullDuplex" set FullDuplex = $(ValueData) endif EndForListDo ifstr(i) $(AdapterID) == "" set AdapterID = $(GenericSharedRamAdapter) endif ifstr(i) $(AdapterID) == "IBM1070" ; Auto Wake Set ParmTypes = 1 ; Enhanced microcode else-ifstr(i) $(AdapterID) == "IBM1080" ; Turbo 16/4 Set ParmTypes = 1 ; Enhanced microcode else Set ParmTypes = 0 ; Compatible microcode endif ; ------------------------------------------------------------- ; For each parameter that was found, load it into the ; parameter string that will be passed. The parameter string ; must have the format "KEYWORD=VALUE,KEYWORD=VALUE,..." ; The keyword names are case-sensitive. Order is not important. ; ------------------------------------------------------------- ifint $(ParmTypes) == 0 ; --------------------------------------------------------- ; Compatibile microcode. Parameters are: ; ; 1. AdapterID ; 2. IoBaseAddress ; 3. NetworkAddress (optional) ; 4. BusType (not visible) ; 5. BusNumber (not visible) ; 6. MaximumPacketSize (optional) ; 7. FastPath (optional) ; 8. ShallowMode (optional) ; 9. FullDuplex (optional) ; --------------------------------------------------------- set ParmList = "AdapterID="$(AdapterID) ; set ParmList = $(ParmList)",IoBaseAddress="$(IoBaseAddress) ifstr $(NetworkAddress) != "" set ParmList = $(ParmList)",NetworkAddress="$(NetworkAddress) endif ifstr $(BusType) != "" set ParmList = $(ParmList)",BusType="$(BusType) endif ifstr $(BusNumber) != "" set ParmList = $(ParmList)",BusNumber="$(BusNumber) endif ifstr $(MaximumPacketSize) != "" set ParmList = $(ParmList)",MaximumPacketSize="$(MaximumPacketSize) endif ifstr $(FastPath) != "" set ParmList = $(ParmList)",FastPath="$(FastPath) endif ifstr $(ShallowMode) != "" set ParmList = $(ParmList)",ShallowMode="$(ShallowMode) endif ifstr $(FullDuplex) != "" set ParmList = $(ParmList)",FullDuplex="$(FullDuplex) endif else ; --------------------------------------------------------- ; Enhanced microcode. Parameters are: ; ; 1. AdapterID ; 2. UAA or RelativeUAA ; 3. NetworkAddress (optional) ; 4. BusType (not visible) ; 5. BusNumber (not visible) ; 6. MaximumPacketSize (optional) ; 7. FastPath (optional) ; 8. ShallowMode (optional) ; 9. FullDuplex (optional) ; --------------------------------------------------------- set ParmList = "AdapterID="$(AdapterID) ifstr $(UAA) != "" set ParmList = $(ParmList)",UAA="$(UAA) endif ifstr $(RelativeUAA) != "" set ParmList = $(ParmList)",RelativeUAA="$(RelativeUAA) endif ifstr $(NetworkAddress) != "" set ParmList = $(ParmList)",NetworkAddress="$(NetworkAddress) endif ifstr $(BusType) != "" set ParmList = $(ParmList)",BusType="$(BusType) endif ifstr $(BusNumber) != "" set ParmList = $(ParmList)",BusNumber="$(BusNumber) endif ifstr $(MaximumPacketSize) != "" set ParmList = $(ParmList)",MaximumPacketSize="$(MaximumPacketSize) endif ifstr $(FastPath) != "" set ParmList = $(ParmList)",FastPath="$(FastPath) endif ifstr $(ShallowMode) != "" set ParmList = $(ParmList)",ShallowMode="$(ShallowMode) endif ifstr $(FullDuplex) != "" set ParmList = $(ParmList)",FullDuplex="$(FullDuplex) endif endif AdapterSetup =+ Shell $(ParamInf) Param_ParameterConfidence Ifstr(i) $($R0) != STATUS_SUCCESSFUL Goto AdapterOptions Endif Ifstr(i) $(DetectedCard) == TRUE Ifstr(i) $(!STF_INSTALL_MODE) != CUSTOM Goto AdapterVerify Endif Endif goto AdapterOptions ; ----------------------------------------------------------------- ; AdapterOptions - Prompt user for parameter values ; ----------------------------------------------------------------- AdapterOptions = + Debug-Output "At label AdapterOptions" Debug-Output "!STF_GUI_UNATTENDED = $(!STF_GUI_UNATTENDED)" Debug-Output "!STF_NCDETINFO = $(!STF_NCDETINFO)" Debug-Output "ParmList is $(ParmList)" set from = AdapterOptions ifstr(i) $(!STF_GUI_UNATTENDED) == "YES" ifstr(i) $(!AutoNetInterfaceType) != "" set BusInterfaceType = $(!AutoNetInterfaceType) else set BusInterfaceType = 1 endif ifstr(i) $(!AutoNetBusNumber) != "" set BusNumber = $(!AutoNetBusNumber) else set BusNumber = 0 endif goto AdapterVerify endif ; ------------------------------------------------------------- ; Display appropriate dialog based on microcode type ; ------------------------------------------------------------- ifint $(ParmTypes) == 0 LoadLibrary "X" $(EditSramDLL) hDLL LibraryProcedure Result $(hDLL) CompatibleMicrocode $(ParmList) FreeLibrary $(hDLL) endif ifint $(ParmTypes) == 1 LoadLibrary "X" $(EditSramDLL) hDLL LibraryProcedure Result $(hDLL) EnhancedMicrocode $(ParmList) FreeLibrary $(hDLL) endif ; Extract parameters from result string Set AdapterID = "" ; Set IoBaseAddress = "" Set NetworkAddress = "" Set BusType = "" Set BusNumber = "" Set MaximumPacketSize = "" Set UAA = "" Set RelativeUAA = "" Set FastPath = "" Set ShallowMode = "" Set FullDuplex = "" Split-String $(Result) "," ResultList ForListDo $(ResultList) Set Token = $($) ifstr $(Token) != "," Split-String $(Token) "=" KeyEqualsValue Set Key = *($(KeyEqualsValue), 1) Set Value = *($(KeyEqualsValue), 3) ifstr $(Key) == "STATUS" ifstr $(Value) == "CANCEL" ifstr(i) $(!NTN_InstallMode) == "CONFIGURE" set CommonStatus = STATUS_USERCANCEL goto end else goto AdapterSelect endif endif else-ifstr $(Key) == "AdapterID" Set AdapterID = $(Value) ; else-ifstr $(Key) == "IoBaseAddress" ; Set IoBaseAddress = $(Value) else-ifstr $(Key) == "NetworkAddress" Set NetworkAddress = $(Value) else-ifstr $(Key) == "BusType" Set BusType = $(Value) else-ifstr $(Key) == "BusNumber" Set BusNumber = $(Value) else-ifstr $(Key) == "MaximumPacketSize" Set MaximumPacketSize = $(Value) else-ifstr $(Key) == "UAA" Set UAA = $(Value) else-ifstr $(Key) == "RelativeUAA" Set RelativeUAA = $(Value) else-ifstr(i) $(Key) == "FastPath" Set FastPath = $(Value) else-ifstr(i) $(Key) == "ShallowMode" Set ShallowMode = $(Value) else-ifstr(i) $(Key) == "FullDuplex" Set FullDuplex = $(Value) else Debug-Output "Unknown parm key $(Key)=$(Value)" Debug-Output "Bypassing parm key $(Key)=$(Value)" endif endif EndForListDo Debug-Output "OK button pressed in dialog:" Debug-Output "ParmTypes = $(ParmTypes)" Debug-Output "AdapterID = $(AdapterID)" ; Debug-Output "IoBaseAddress = $(IoBaseAddress)" Debug-Output "NetworkAddress = $(NetworkAddress)" Debug-Output "BusType = $(BusType)" Debug-Output "BusNumber = $(BusNumber)" Debug-Output "MaximumPacketSize = $(MaximumPacketSize)" Debug-Output "UAA = $(UAA)" Debug-Output "RelativeUAA = $(RelativeUAA)" Debug-Output "FastPath = $(FastPath)" Debug-Output "ShallowMode = $(ShallowMode)" Debug-Output "FullDuplex = $(FullDuplex)" ifstr(i) $(!STF_NCDETINFO) == {} Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardwareDescription) $(BusInterfaceType) $(BusNumber) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set BusInterfaceType = $($R1) set BusNumber = $($R2) else set BusInterfaceType = *($(!STF_NCDETINFO),5) set BusNumber = *($(!STF_NCDETINFO),6) endif AdapterVerify =+ Ifstr(i) $(DetectedCard) != TRUE Goto SkipOptions Endif Shell $(ParamInf) Param_VerifyCard $(!STF_NCDETCARD) Ifstr(i) $($R0) == STATUS_SUCCESSFUL Goto SkipOptions Endif Set from = AdapterOptions Set to = SkipOptions Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set Error = $($R0) Goto Warning ; ----------------------------------------------------------------- ; SkipOptions - Parameters have been entered and validated. ; Now copy the driver from diskette ; ----------------------------------------------------------------- SkipOptions =+ ; If the driver was already installed and we were called ; in configure mode, we are done. Go to WriteParameters. ; If the driver was already installed and we are in install ; mode, don't reinstall it. ifint $(OldVersionExisted) == $(TRUE) ifstr(i) $(!NTN_InstallMode) == configure goto WriteParameters endif StartWait goto AfterDriverInstall endif StartWait ; --------------------------------------------------------- ; Install mode ; --------------------------------------------------------- ifstr(i) $(!NTN_InstallMode) == "install" ; If the copy flag is on, prompt for source directory Ifstr(i) $(DoCopy) == "YES" Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES Ifint $($ShellCode) != $(!Shell_CODE_OK) Goto ShellCodeError Else-Ifstr(i) $($R0) == STATUS_FAILED Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL" ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set Error = $($R0) Goto fatal Else-Ifstr(i) $($R0) == STATUS_USERCANCEL Goto successful Endif Set SrcDir = $($R1) Endif ; Call the install section to install the driver 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 ; Install mode ; --------------------------------------------------------- ; Add the driver component to the registry ; --------------------------------------------------------- Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName), + $(ProductSoftwareName), + $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), + $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+ $(NetEventDLL) Set OEM_ABANDON_SOFTWARE = TRUE ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait 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) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait 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) goto ShellCodeError endif set RegistryErrorIndex = $($R0) CloseRegKey $(SoftProductKey) CloseRegKey $(SoftNetRuleKey) CloseRegKey $(SoftServiceKey) CloseRegKey $(SoftParameterKey) CloseRegKey $(SoftLinkageKey) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait goto fatalregistry endif ; ------------------------------------------------------------- ; Add the adapter entry to the registry ; ------------------------------------------------------------- AfterDriverInstall =+ 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) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) goto fatalregistry endif set KeyParameters = $($R3) set KeyAdapterRules = $($R2) set AdapterNumber = $($R4) set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+ {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+ {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif CloseRegKey $($R1) set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)"""" set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm) set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+ {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}} Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait CloseRegKey $(KeyParameters) CloseRegKey $(KeyAdapterRules) goto fatalregistry endif CloseRegKey $(KeyAdapterRules) goto WriteParameters ; ------------------------------------------------------------- ; Add the adapter/parameter key to the registry ; ------------------------------------------------------------- WriteParameters = + Debug-Output "At label WriteParameters" ; Remove all values currently under this key EnumRegValue $(KeyParameters) OldValueList Debug-Output "OldValueList="$(OldValueList) ForListDo $(OldValueList) set ValueItem = $($) set ValueName = *($(ValueItem),1) Debug-Output "Deleting value name="$(ValueName) DeleteRegValue $(KeyParameters) $(ValueName) EndForListDo ; Build the new value list. Add common parameters first Set NewValueList = {+ {CardID,0,$(!REG_VT_SZ),$(AdapterID)},+ {BusType,0,$(!REG_VT_DWORD),$(BusInterfaceType)},+ {BusNumber,0,$(!REG_VT_DWORD),$(BusNumber)},+ {MediaType,0,$(!REG_VT_DWORD),2}} Debug-Output "Common parameters list is "$(NewValueList) ; Card-specific parameters next ; ifint $(ParmTypes) == 0 ; Debug-Output "Compatibility microcode:" ; Set List = {IoBaseAddress,0,$(!REG_VT_DWORD),$(IoBaseAddress)} ; Debug-Output "Adding "$(List)" to NewValueList" ; Set NewValueList = >($(NewValueList),$(List)) ; endif ifint $(ParmTypes) == 1 Debug-Output "Enhanced microcode:" Debug-Output "UAA="$(UAA) Debug-Output "RelativeUAA="$(RelativeUAA) ifstr $(UAA) != "" Set List = {UAA,0,$(!REG_VT_SZ),$(UAA)} Debug-Output "Adding "$(List)" to NewValueList" Set NewValueList = >($(NewValueList),$(List)) endif ifstr $(RelativeUAA) != "" Set List = {RelativeUAA,0,$(!REG_VT_DWORD),$(RelativeUAA)} Debug-Output "Adding "$(List)" to NewValueList" Set NewValueList = >($(NewValueList),$(List)) endif endif Debug-Output "List including card-specific parameters:" Debug-Output $(NewValueList) ; Finally, add optional parameters Debug-Output "MaximumPacketSize="$(MaximumPacketSize) ifstr $(MaximumPacketSize) != "" Set List = {MaximumPacketSize,0,$(!REG_VT_DWORD),$(MaximumPacketSize)} Debug-Output "Adding "$(List)" to NewValueList" Set NewValueList = >($(NewValueList),$(List)) endif ifstr $(NetworkAddress) != "" Set List = {NetworkAddress,0,$(!REG_VT_SZ),$(NetworkAddress)} Debug-Output "Adding "$(List)" to NewValueList" Set NewValueList = >($(NewValueList),$(List)) endif Debug-Output "FastPath="$(FastPath) ifstr $(FastPath) != "" Set List = {FastPath,0,$(!REG_VT_SZ),$(FastPath)} Debug-Output "Adding "$(List)" to NewValueList" Set NewValueList = >($(NewValueList),$(List)) endif Debug-Output "ShallowMode="$(ShallowMode) ifstr $(ShallowMode) != "" Set List = {ShallowMode,0,$(!REG_VT_SZ),$(ShallowMode)} Debug-Output "Adding "$(List)" to NewValueList" Set NewValueList = >($(NewValueList),$(List)) endif Debug-Output "FullDuplex="$(FullDuplex) ifstr $(FullDuplex) != "" Set List = {FullDuplex,0,$(!REG_VT_SZ),$(FullDuplex)} Debug-Output "Adding "$(List)" to NewValueList" Set NewValueList = >($(NewValueList),$(List)) endif Debug-Output "List including optional parameters:" Debug-Output $(NewValueList) ; Add the list value to the registry Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList) ifstr(i) $(!STF_GUI_UNATTENDED) == "YES" Shell "",AddDefaultNetCardParameters,$(HardParameterKey) endif ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) CloseRegKey $(KeyParameters) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif EndWait goto successful BindingAdapter =+ set Error = "Binding: Sorry, not yet implemented." goto fatal RemoveAdapter = + Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif else Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), + $(ProductSoftwareName), $(!NTN_RegBase) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end UpgradeSoftware = + OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) 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) 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) 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 CommonStatus = STATUS_USERCANCEL Set Severity = STATUS goto NonFatalmsg NonFatal = + Set Severity = NonFatal goto NonFatalmsg NonFatalmsg = + ifstr(i) $(Error) == "" Set Severity = NonFatal Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL" ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set Error = $($R0) endif Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif ifstr(i) $($R1) == "OK" goto $(from) else goto "end" endif fatalregistry = + Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set Error = $($R0) goto fatal FatalDetect = + Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set Error = $($R0) Goto fatal fatal = + ifstr(i) $(Error) == "" Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL" ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif set Error = $($R0) endif Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error) ifint $($ShellCode) != $(!Shell_CODE_OK) goto ShellCodeError endif goto setfailed ShellCodeError = + set DlgType = "MessageBox" set STF_MB_TITLE = $(ShellCodeErrorTitle) set STF_MB_TEXT = $(ShellCodeErrorText) set STF_MB_TYPE = 1 set STF_MB_ICON = 3 set STF_MB_DEF = 1 ui start "Error Message" goto setfailed setfailed = + set CommonStatus = STATUS_FAILED ifstr(i) $(OEM_ABANDON_ON) == TRUE set OEM_ABANDON_ON = FALSE goto abandon endif goto end end = + goto term term = + Return $(CommonStatus) ; ----------------------------------------------------------------- ; Symbols and constants ; ----------------------------------------------------------------- [Identification] OptionType = NetAdapter [PlatformsSupported] ISA EISA "Jazz-Internal Bus" [Options] IBMTOK [GeneralConstants] from = "" to = "" retaddr = "" KeyNull = "" StringNull = "" MAXIMUM_ALLOWED = 33554432 RegistryErrorIndex = NO_ERROR KeyProduct = "" KeyParameters = "" TRUE = 1 FALSE = 0 NoTitle = 0 ExitState = "Active" OldVersionExisted = $(FALSE) DriverPath = $(!STF_NTPATH)\drivers [FileConstants] UtilityInf = "UTILITY.INF" ParamInf = "NCPARAM.INF" subroutineinf = "SUBROUTN.INF" SoftwareType = "driver" NetEventDLL = "%SystemRoot%\System32\netevent.dll" IoLogMsgDLL = "%SystemRoot%\System32\IoLogMsg.dll" EditSramDLL = $(!STF_WINDOWSSYSPATH)"\editsram.dll" GenericSharedRamAdapter = "PNP80CA" Manufacturer = "Microsoft" ProductMajorVersion = "3" ProductMinorVersion = "5" ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion) ProductSoftwareName = "IbmTok5" ProductSoftwareImagePath = "\SystemRoot\System32\drivers\ibmtok5.sys" NetRuleSoftwareType = "ibmtokSys ndisDriver ibmtokDriver" NetRuleSoftwareUse = $(SoftwareType) NetRuleSoftwareBindForm = """IBMTokSys"" yes no container" NetRuleSoftwareClass = {"ibmtokDriver basic"} ProductHardwareName = "Ibmtok5" NetRuleHardwareType = "ibmtok ibmtokAdapter" NetRuleHardwareBindForm = " yes yes container" NetRuleHardwareClass = {"ibmtokAdapter basic"} ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion" ParamKeyName = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters" [date] Now = {} ? $(!LIBHANDLE) GetSystemDate ; ----------------------------------------------------------------- ; Install sections ; ----------------------------------------------------------------- [Install-Option] set STF_VITAL = "" ifstr(i) $(AddCopy) == "YES" AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers endif ifstr(i) $(DoCopy) == "YES" set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList endif ifstr(i) $(DoConfig) == "YES" endif Exit [Install-Update] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers exit [Install-DLL] set STF_VITAL = "" AddSectionFilesToCopyList Files-DLL $(SrcDir) $(!STF_WINDOWSSYSPATH) CopyFilesInCopyList exit [Signature] FileType = MICROSOFT_FILE [GetSignature] read-syms Signature return $(FileType) [ProductType] STF_PRODUCT = Winnt STF_PLATFORM = I386 [Files-Inf] 2, oemsetup.inf, SIZE=44567, RENAME=$(!UG_Filename) [Files-IBMTok] 2, IBMTOK5.SYS, SIZE=215408 [Files-DLL] 2, editsram.dll, SIZE=100016 2, editsram.hlp, SIZE=9974 [LanguagesSupported] ENG [OptionsTextENG] IBMTOK5 = "IBM Shared RAM Token-Ring Adapter" [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:" FunctionTitle = "IBM Shared RAM Token-Ring Adapter Card Setup" ProductSoftwareDescription = "IBM Shared RAM Token-Ring Adapter Driver" ProductHardwareDescription = "IBM Shared RAM Token-Ring Adapter" ProductSoftwareTitle = "IBM Shared RAM Token-Ring Adapter Driver" ProductHardwareTitle = "IBM Shared RAM Token-Ring Adapter" ShellCodeErrorTitle = "Error: "$(FunctionTitle) ShellCodeErrorText = "Shell Code Error." [DialogConstantsENG] Help = "&Help" Exit = "Cancel" OK = "OK" HelpContext = "" Continue = "Continue" Cancel = "Cancel" [AddDefaultNetCardParameters] set KeyParameter = $($0) ForListDo $(!NetCardParameterName) set Name = $($) set Value = *($(!NetCardParameterValue), $(#)) ifstr(i) $(Name) == "NetAddress" set Type = $(!REG_VT_SZ) Else-Ifstr(i) $(Name) == "FastPath" set Type = $(!REG_VT_SZ) Else-Ifstr(i) $(Name) == "ShallowMode" set Type = $(!REG_VT_SZ) Else-Ifstr(i) $(Name) == "FullDuplex" set Type = $(!REG_VT_SZ) else set Type = $(!REG_VT_DWORD) endif Debug-Output "Name = "$(Name) Debug-Output "Value = "$(Value) SetRegValue $(KeyParameter) {$(Name),0,$(Type),$(Value)} EndForListDo returnDownload Driver Pack
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.