OEMSETUP.INF Driver File Contents (ntnicdrv.exe)

;   -----------------------------------------------------------------
;   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
    return

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: web2, load: 1.34