[Identification]
    OptionType = NetAdapter

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

[LanguagesSupported]
    ENG

[Options]
    aclser

[AdapterInfo]
    aclser     = "ACL/Avanstar Family",    aclser,     aclser	;DEL   0 1

[FileConstants]
    ExitState   = "Active"
    OldVersionExisted = $(FALSE)
    HdwDriverComponentExists = $(FALSE)
    DriverPath      = $(!STF_NTPATH)"\drivers"
    UtilityInf     = "UTILITY.INF"
    subroutninf    = "SUBROUTN.INF"
;DEL    ParamInf        = "NCPARAM.INF"
    HandleNull   = ""
    ACLCONF_HANDLE = $(HandleNull)
	AdapterList = ^(AdapterInfo,0)
	AdapterTitleList = ^(AdapterInfo, 1)
	AdapterHardwareNameList = ^(AdapterInfo, 2)
	AdapterHardwareDriverList = ^(AdapterInfo, 3)
;DEL AdapterHardwareTypeList = ^(AdapterInfo, 4)
	AdapterTitle = *($(AdapterTitleList), ~($(AdapterList), $(Option)))
	AdapterHardwareName = *($(AdapterHardwareNameList), ~($(AdapterList), $(Option)))
	AdapterHardwareDriver = *($(AdapterHardwareDriverList), ~($(AdapterList), $(Option)))
;DEL AdapterHardwareType = *($(AdapterHardwareTypeList), ~($(AdapterList), $(Option)))
	AdapterRule = *($(AdapterHardwareDriverList), ~($(AdapterList), $(Option)))
	AdapterServiceName = ""
	AdapterName = ""    ; aclser0, ...

    NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
    IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
    Manufacturer    = "StarGate"
    SoftwareType    = "driver"

    ProductMajorVersionHdwDriver     = "1"
    ProductMinorVersionHdwDriver     = "18"
    ProductVersionHdwDriver  = $(ProductMajorVersionHdwDriver)"."$(ProductMinorVersionHdwDriver)
    ProductSoftwareNameHdwDriver = $(AdapterHardwareDriver)
    ProductSoftwareImagePathHdwDriver = "%SystemRoot%\System32\drivers\"$(AdapterHardwareDriver)".sys"
    NetRuleSoftwareTypeHdwDriver     = $(AdapterHardwareDriver)"sys "$(AdapterHardwareDriver)"Driver"
    NetRuleSoftwareUseHdwDriver      = $(SoftwareType)
    NetRuleSoftwareBindFormHdwDriver = """"$(AdapterHardwareDriver)"Driver"" yes no container"
    NetRuleSoftwareClassHdwDriver    = {$(AdapterHardwareDriver)"Driver basic"}
    NetRuleSoftwareHiddenHdwDriver   = 1
    NetRuleHardwareType     = $(AdapterRule)" "$(AdapterRule)"Adapter"
    NetRuleHardwareBindForm = " yes yes container"
    NetRuleHardwareClass    = {$(AdapterHardwareDriver)"Adapter basic"}
    ProductHardwareName         = $(AdapterHardwareDriver)
    AdapterParameters = {}

    ProductKeyNameHdwDriver  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareNameHdwDriver)"\CurrentVersion"
    ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"

[GeneralConstants]
    ExitCodeOk     = 0
    ExitCodeCancel = 1
    ExitCodeFatal  = 2
    KeyNull         = ""
    MAXIMUM_ALLOWED   = 33554432
    RegistryErrorIndex = NO_ERROR
    KeyProduct      = ""
    KeyParameters   = ""
    TRUE         = 1
    FALSE        = 0
    NoTitle      = 0
    fRemoveACL	 = TRUE

[DebugOptions]
    !DebugOutputControl = 1

[UiVars]
from      = ""
to        = ""
    !STF_NTDRIVE        = ""
    !STF_NTPATH         = ""
    !STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
    !STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
    !STF_FLOPPYLIST     = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
    !STF_UNUSEDDRIVES   = {} ? $(!LIBHANDLE) GetUnusedDrives
    !STF_LANGUAGE       = "ENG"
    VolumeList      = {} ? $(!LIBHANDLE) GetHardDriveLetters
    VolumeFreeList  = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
    VolumeFSList    = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
    DestVolume      = ""
    MinHelpID   = 25000
    MaxHelpID   = 25999

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

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

[ReturnOptions]
    set Status        = STATUS_FAILED
    set OptionList     = {}
    set OptionTextList = {}
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) in $(LanguageList)
        ifstr(i) $($1) == ""
            goto returnoptions
        endif
        set PlatformList = ^(PlatformsSupported, 1)
        Ifcontains(i) $($1) in $(PlatformList)
            goto returnoptions
        else
            set Status = STATUS_NOTSUPPORTED
            goto finish_ReturnOptions
        endif
    Else
        set Status = STATUS_NOLANGUAGE
        goto finish_ReturnOptions
    Endif
returnoptions = +
    set OptionList     = ^(Options, 1)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL
finish_ReturnOptions = +
    Return $(Status) $(OptionList) $(OptionTextList)

;DEL beg
;[Shell Commands]
;    read-syms DebugOptions
;    set-title "Serial Setup"
;    set-subst LF = "\n"
;    set Exit_Code = $(ExitCodeOk)
;    Debug-Output "OEMNIO8P.INF: STF_CWDDIR is "$(!STF_CWDDIR)
;    Debug-Output "OEMNIO8P.INF: STF_RANFROM is "$(!STF_RANFROM)
;    ifstr(i) $(!STF_RANFROM) != ""
;        ifstr(i) $(!STF_RANFROM) != $(!STF_CWDDIR)"SERIAL\"
;           set !STF_SRCDIR = $(!STF_RANFROM)
;        endif
;    endif
;    LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
;    shell "" InstallOption ENG Specialix $(!STF_SRCDIR)
;    FreeLibrary $(!LIBHANDLE)
;    set Status = $($R0)
;    Return $(Status)
;DEL end


[InstallOption]
    read-syms DebugOptions
    Debug-Output "OEMNACL.INF: In [InstallOption] section"
    set Status = STATUS_FAILED
    set Option    = $($1)
    set SrcDir    = $($2)
    set AddCopy   = $($3)
    set DoCopy    = $($4)
    set DoConfig  = $($5)
    set !SourceDir = $($2)
;    ifstr SrcDir == "A:\"
;        ifstr $(!STF_SRCDIR_OVERRIDE) == ""
;		set !STF_SRCDIR_OVERRIDE = $(!STF_CWDDIR)
;        endif
;    endif
    read-syms GeneralConstants
    read-syms FileConstants
;    Debug-Output "Calling GetBusTypeNum"
    Shell $(UtilityInf), GetBusTypeNum
    set BusTypeNum = $($R1)
    Debug-Output "BusTypeNum = "$(BusTypeNum)
    Debug-Output "OEMNACL.INF: Language = "$($0)
    Debug-Output "OEMNACL.INF: OptionID = "$($1)
    Debug-Output "OEMNACL.INF: SourceDirectory = "$($2)
    Debug-Output "OEMNACL.INF: AddCopy = "$(AddCopy)
    Debug-Output "OEMNACL.INF: DoCopy = "$(DoCopy)
    Debug-Output "OEMNACL.INF: DoConfig = "$(DoConfig)
    Debug-Output "OEMNACL.INF: Media = "$(Media)
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) NOT-IN $(LanguageList)
        Debug-Output "OEMNACL.INF: returning STATUS_NO_LANGUAGE"
        return STATUS_NOLANGUAGE
    Endif
    set-subst LF = "\n"
    Debug-Output "OEMNACL.INF: AdapterTitle = "$(AdapterTitle)
    Debug-Output "OEMNACL.INF: AdapterHardwareName = "$(AdapterHardwareName)
    Debug-Output "OEMNACL.INF: AdapterHardwareDriver = "$(AdapterHardwareDriver)

    read-syms BindingInfo-$(AdapterHardwareDriver)
    set NetRuleSoftwareBindableHdwDriver = $(BindingInfo)
;    Debug-Output "OEMNACL.INF: BindingInfo = "$(BindingInfo)
    read-syms DialogConstants$(!STF_LANGUAGE)
    ifstr(i) $(!NTN_Origination) == "NCPA"
        set Continue = "OK"
    endif
    read-syms FileConstants$(!STF_LANGUAGE)
    detect date
    Debug-Output "OEMNACL.INF: date = "$(Now)
    set-title  $(FunctionTitle)
    set to   = Begin
    set from = Begin
    set CommonStatus = STATUS_SUCCESSFUL
    EndWait
Begin = +
    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 = getAdapterSettings

        Ifstr(i) $(ProductKeyNameHdwDriver) == $(!NTN_RegBase)
            Debug-Output "This should not have happened!  Cannot configure the "$(AdapterHardwareName)" 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
;DEL pd    	Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
    	Ifint $($ShellCode) != $(!SHELL_CODE_OK)
        	Debug-Output "Shell code error: DoAskSource"
        	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
        	set CommonStatus = STATUS_USERCANCEL
        	Goto successful
    	Endif
    	Set SrcDir = $($R1)
		install Correct-SrcDir
        Debug-Output "We need to determine how to find out which adapter"
        Debug-Output "  we should be configuring!!!!!!"
        set from = writeparameters
        Debug-Output "setting from = "$(from)
    else
        set StartLabel = installadapter
        set OEM_ABANDON_OPTIONS = {}
        set OEM_ABANDON_SOFTWARE = FALSE
        set OEM_ABANDON_ON = TRUE
    endif
;    Debug-Output "OEMNACL.INF: Option is: "$(Option)
    set to = $(fatal)
    Goto $(StartLabel)

installadapter = +
    Debug-Output "******************Entering installadapter******************"
; 

    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyNameHdwDriver) +
               $(MAXIMUM_ALLOWED) KeyProductHdwDriver
    Debug-Output "ProductKeyNameHdwDriver = "$(ProductKeyNameHdwDriver)
	Debug-Output "KeyProductHdwDriver =	"$(KeyProductHdwDriver)

	Ifstr $(KeyProductHdwDriver) != $(KeyNull)
		CloseRegKey $(KeyProductHdwDriver)
        Shell $(UtilityInf), CardExistedDlg
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output "ShellCode error: --One adapter all ready exists, install another-- FAILED."
            goto ShellCodeError
        endif
        ifstr(i) $($R1) != "OK"
            goto end
        endif
        set HdwDriverComponentExists = $(TRUE)
        set OldVersionExisted = $(TRUE)
    EndIf

    goto skipoptions

skipoptions = +
    Debug-Output "******************Entering skipoptions******************"

    ifint $(HdwDriverComponentExists) == $(TRUE)
        ifstr(i) $(!NTN_InstallMode) == configure
            goto getAdapterSettings
        endif
    endif

    StartWait

;---------------------------------------------------- VIV  8/31/1993 begin
    ifstr(i) $(!NTN_InstallMode) == "install"
        ;
        ; Get Number to add to Hardware Driver.
        ;
        shell $(UtilityInf) AssignAdapterNumber

        set AdapterName = $(ProductHardwareName)$($R1)

        Debug-Output "OEMNACL.INF: AdapterName = "$(AdapterName)
    endif
;---------------------------------------------------- VIV  8/31/1993 end

    Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
    Ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "Shell code error: DoAskSource"
        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
        set CommonStatus = STATUS_USERCANCEL
        Goto successful
    Endif
    Set SrcDir = $($R1)
	install Correct-SrcDir
    ifint $(HdwDriverComponentExists) == $(FALSE)
        ifstr(i) $(!NTN_InstallMode) == "install"
           	;
           	; Ask for source to copy.
           	;
           	Ifstr(i) $(DoCopy) == "YES"
			Endif
	   		Debug-Output "OEMNACL.INF: SrcDir = "$(SrcDir)

        	;
        	; Expand and copy files to the windows directory
        	;
        	install "Install-Option"
	   		Debug-Output "OEMNACL.INF: STF_INSTALL_OUTCOME = "$(STF_INSTALL_OUTCOME)
        	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

		LoadLibrary "a" $(!STF_WINDOWSSYSPATH)"\"aclconf.dll ACLCONF_HANDLE

		;
		; Copy the Control Programs that have already been expanded
		; to the Registry
		;
    		LibraryProcedure Result, $(ACLCONF_HANDLE), +
							ACLPutCPDataToRegistry, +
							$(!STF_WINDOWSSYSPATH)"\", +
							$(ParamKeyName), +
							$(BusTypeNum)
		;
		; Remove the Control Programs from windows directory
		;
		set RemoveList = {}
		set CPList = ^( Files-CP, 2 )
	   	ForListDo $(CPList)
	    	    set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)\$($))
	   	EndForListDo
		ForListDo $(RemoveList)
	            LibraryProcedure Status , $(!LIBHANDLE), DelFile $($)
		EndForListDo
        endif
    endif
    set from = addHdwDriverComponent

    goto getAdapterSettings


addHdwDriverComponent = +
    Debug-Output "******************Entering addHdwDriverComponent******************"

    set ACLSpecificString = $(AdapterHardwareName)
    Ifint $(HdwDriverComponentExists) == $(TRUE)
        goto addAdapterComponent
    Endif
    ;
    ; Add hives: \SOFTWARE\StarGate\aclser\CurrentVersion and ...\NetRules
    ;
    Debug-Output "OEMNACL.INF: Adding HdwDriverComponent"
    set TypeofService = "kernelautostart"
    set ServiceOrderGroup = "Extended base"
    set Dependencies = {}
    set ObjectName = ""
    set TypeSupported = "7"
    set EventLogLocation = "System"
    set ErrorControlValue = 1

	Shell $(UtilityInf), AddSoftwareComponent, +
                                $(Manufacturer), +
                                $(ProductSoftwareNameHdwDriver), +
                                $(ProductSoftwareNameHdwDriver), +
                                $(ProductSoftwareTitleHdwDriver), +
                                $(STF_CONTEXTINFNAME), +
                                $(ProductSoftwareImagePathHdwDriver), +
                                $(TypeofService), +
                                $(ServiceOrderGroup), +
                                $(Dependencies), +
                                $(ObjectName), +
                                $(IoLogMsgDLL)";"$(ProductSoftwareImagePathHdwDriver), +
                                $(TypeSupported), +
                                $(EventLogLocation), +
                                $(ErrorControlValue)

    Set OEM_ABANDON_SOFTWARE = TRUE
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "ShellCode error: AddSoftwareComponent FAILED! -- "$(ProductSoftwareNameHdwDriver)
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output "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)
    ;
    ; Add values for \SOFTWARE\StarGate\aclser\CurrentVersion
    ;
    set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
                        {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersionHdwDriver)},+
                        {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersionHdwDriver)},+
                        {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitleHdwDriver)},+
                        {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescriptionHdwDriver)},+
                        {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareNameHdwDriver)},+
                        {hidden,$(NoTitle),$(!REG_VT_DWORD),$(NetRuleSoftwareHiddenHdwDriver)}, +
                        {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
    Shell  $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "ShellCode error: AddValueList FAILED!  -- "$(SoftProductKey)
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output "Resgitry error: add value list."
        CloseRegKey $(SoftProductKey)
        CloseRegKey $(SoftNetRuleKey)
        CloseRegKey $(SoftServiceKey)
        CloseRegKey $(SoftParameterKey)
        CloseRegKey $(SoftLinkageKey)
        goto fatalregistry
    endif
    ;
    ; Add values for \SOFTWARE\StarGate\aclser\CurrentVersion\NetRules
    ;
    set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareTypeHdwDriver)},+
                        {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUseHdwDriver)}, +
                        {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindFormHdwDriver)}, +
                        {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClassHdwDriver)}, +
                        {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindableHdwDriver)}, +
                        {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
    Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "ShellCode error. AddValueList FAILED!  -- "$(SoftNetRuleKey)
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    FlushRegKey $(SoftProductKey)
    FlushRegKey $(SoftNetRuleKey)
    FlushRegKey $(SoftServiceKey)
    FlushRegKey $(SoftParameterKey)
    FlushRegKey $(SoftLinkageKey)
    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

addAdapterComponent = +
    Debug-Output "******************Entering addAdapterComponent******************"
    ;
    ; Add hives: \SOFTWARE\Microsoft\...\NetworkCards\0... and ...\NetRules
    ;
    Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName), +
                         $(STF_CONTEXTINFNAME), $(ProductKeyNameHdwDriver)
    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"
        Debug-Output $(RegistryErrorIndex)
        CloseRegKey $($R1)
        CloseRegKey $($R2)
        CloseRegKey $($R3)
        goto fatalregistry
    endif
    ;
    ; Add values for \SOFTWARE\Microsoft\NetworkCards\0...
    ;
    set KeyParameters = $($R3)
    set KeyAdapterRules = $($R2)
    set AdapterNumber = $($R4)
    set AdapterServiceName = $($R5)

    Debug-Output "AdapterServiceName = "$(AdapterServiceName)

    set AdapterName = $(AdapterServiceName)
    set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
                       {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+
                       {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+
                       {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
                       {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
                       {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
    Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "ShellCode error: AddValueList FAILED  -- "$($R1)
        goto ShellCodeError
    endif
;VIV    shell $(UtilityInf) IncrementRefCount $(ProductKeyName)
    ;
    ; Add values for \SOFTWARE\Microsoft\...\NetworkCards\0...\NetRules
    ;
    set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
    set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
    set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
                        {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
                        {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
                        {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
    Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "ShellCode error."
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output "Registry error: add value list."
        CloseRegKey $(KeyParameters)
        CloseRegKey $(KeyAdapterRules)
        goto fatalregistry
    endif
    FlushRegKey $(KeyParameters)
    FlushRegKey $(KeyAdapterRules)
    CloseRegKey $(KeyParameters)
    CloseRegKey $(KeyAdapterRules)
    goto writeparameters

configureadapter = +
    Debug-Output "******************Entering configureadapter******************"
    Debug-Output "OEMNACL.INF: PortNameList = "$(PortNameList)

;---------------------------------------------------- VIV  8/27/1993 begin
;set BusTypeNum = 3
    LibraryProcedure Result, $(ACLCONF_HANDLE), +
            ACLConfigEntryPoint, +
                $(!STF_HWND), +                 ;0
                $(ConfigurationTitle), +        ;1
                $(IRQDefault), +                ;2
                $(IODefault), +                 ;3
                $(CtrlList), +                  ;4
                $(AdapterName), +               ;5
		$(BoardTypeDefault), +		;6
		$(BusTypeNum), +		;7
		$(MemWinDefault),   +		;8
		$(MemSizeDefault), +            ;9
		$(NumOfPortsDefault), +         ;10
                $(CtrlList1), +	                ;11
                $(SlotDefault), + 		;12
                $(CtrlInterfaceList), +         ;13
                $(CtrlInterfaceList1)           ;14
;---------------------------------------------------- VIV  8/27/1993 end

;	set Result = { 	$(IRQDefault), 		+
;					$(IODefault),  		+
;					$(PortListDefault)	+
;					$(DnlPath),         +
;					$(MemWinDefault),   +
;					$(MemSizeDefault)   +
;				 }
    Debug-Output "Result: "$(Result)
    Ifstr $(Result) == "{}"
        set CommonStatus = STATUS_USERCANCEL
        goto successful
    Endif

    set AdapterParameters = $(Result)
    read-syms UpdatingConfiguration$(!STF_LANGUAGE)
    shell $(subroutninf) PushBillBoard NETSTATUSDLG $(UpdatingConfiguration)
    Debug-Output "jumping to "$(from)
    goto $(from)

getAdapterSettings = +
    Debug-Output "******************Entering getAdapterSettings******************"
    Debug-Output "from value = "$(from)

    Ifstr $(BusTypeNum) == 3
	; MCA
	set BoardTypeDefault = 6	; A100M
    Else-Ifstr $(BusTypeNum) == 2
	; EISA
	set BoardTypeDefault = 10	; A100E
    Else
	; ISA
	set BoardTypeDefault = 12	; A100I
    Endif
    Debug-Output "Default BoardType = "$(BoardTypeDefault)

;---------------------------------------------------- VIV  8/25/1993 begin
;DEL    set IRQDefault = 5
;DEL    set IODefault = 200
;---------------------------------------------------- VIV  8/25/1993 end

    LoadLibrary "b" $(!STF_WINDOWSSYSPATH)"\"aclconf.dll ACLCONF_HANDLE

;DEL    read-syms AdapterSettings-$(AdapterHardwareName)
;    install AdapterSettings-$(AdapterHardwareName)
;    install GetDownloadPath
;    ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
;        goto fatalregistry
;	endif
    Debug-Output "NTN_RegBase="$(!NTN_RegBase)
    Ifstr $(!NTN_RegBase) != $(KeyNull)
        OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) SoftwareKey
    	Debug-Output "Opening key "$(!NTN_RegBase)
        Ifstr $(SoftwareKey) == $(KeyNull)
            Debug-Output "Unable to open "$(!NTN_RegBase)" key!!!!"
            goto getAdapterSettingsExit
        Else
            GetRegValue $(SoftwareKey), "ServiceName", ServiceNameList
            set AdapterServiceName = *($(ServiceNameList),4)
            set AdapterName = $(AdapterServiceName)
            CloseRegKey $(SoftwareKey)
        Endif
    Endif

    Debug-Output "AdapterServiceName = "$(AdapterServiceName)
    Debug-Output "AdapterName = "$(AdapterName)

    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(AdapterServiceName) $(MAXIMUM_ALLOWED) BaseKey
    Debug-Output "NTN_ServiceBase = "$(!NTN_ServiceBase)
    Debug-Output "BaseKey = "$(BaseKey)
    Ifstr $(BaseKey) == $(KeyNull)
        Debug-Output "Error opening BaseKey "$(!NTN_ServiceBase)"\"$(AdapterServiceName)
        CloseRegKey $(BaseKey)
        goto fatalregistry
    Endif

;---------------------------------------------------- VIV  10/20/1993 begin
    ;
    ; Open \SYSTEM\CurrentControlSet\Services\aclser\Parameters
    ;
    OpenRegKey $(BaseKey) "" "Parameters" $(MAXIMUM_ALLOWED) ParametersKey
    Ifstr $(ParametersKey) == $(KeyNull)
        Debug-Output "Assuming Parameters key does not exist!!!"
        CloseRegKey $(BaseKey)
        goto configureadapter
    Endif
;---------------------------------------------------- VIV  10/20/1993 end


;---------------------------------------------------- VIV  8/27/1993 begin
    GetRegValue $(ParametersKey) "InterruptNumber" IRQValueList
    GetRegValue $(ParametersKey) "IOBaseAddress" IOBaseValueList
    GetRegValue $(ParametersKey) "MemoryWindow" MemWinValueList
    GetRegValue $(ParametersKey) "WindowSize" MemSizeValueList
    GetRegValue $(ParametersKey) "BoardType" BoardTypeValueList
    GetRegValue $(ParametersKey) "NumOfPorts" NumOfPortsValueList
    GetRegValue $(ParametersKey) "Slot" SlotValueList

;VIV We do not need to check if IRQValueList is correct. We Will check them in DLL.
;    set-dectohex IRQDefault = *($(IRQValueList),4)
    set IRQDefault = *($(IRQValueList),4)
    Debug-Output "Current InterruptNumber = "$(IRQDefault)

;    set-dectohex TmpHex = *($(IRQValueList),4)
;    Debug-Output "Current InterruptNumber = "$(TmpHex)
;    ForListDo $(IRQRangeList)
;        Ifstr(i) $(TmpHex) == "0x"$($)
;            set-sub IRQDefault = $(#),1
;        Endif
;    EndForListDo

;VIV We do not need to check if IOBase is correct. We Will check them in DLL.
;    set-dectohex IODefault = *($(IOBaseValueList),4)
    set IODefault = *($(IOBaseValueList),4)
    Debug-Output "Current IOBaseAddress = "$(IODefault)

;    set-dectohex MemWinDefault = *($(MemWinValueList),4)
    set MemWinDefault = *($(MemWinValueList),4)
    Debug-Output "Current Memory Window = "$(MemWinDefault)

;    set-dectohex MemSizeDefault = *($(MemSizeValueList),4)
    set MemSizeDefault = *($(MemSizeValueList),4)
    Debug-Output "Current Memory Size = "$(MemSizeDefault)

;    set-dectohex BoardTypeDefault = *($(BoardTypeValueList),4)
    set BoardTypeDefault = *($(BoardTypeValueList),4)
    Debug-Output "Current BoardType = "$(BoardTypeDefault)

    set SlotDefault = *($(SlotValueList),4)
    Debug-Output "Current Slot = "$(SlotDefault)

    set NumOfPortsDefault = *($(NumOfPortsValueList),4)
    Debug-Output "Current NumOfPorts = "$(NumOfPortsDefault)
;    set IOFound = $(FALSE)
;    set-dectohex TmpHex = *($(IOBaseValueList),4)
;    Debug-Output "Current IOBaseAddress = "$(TmpHex)
;    ForListDo $(IORangeList)
;        Ifstr(i) $(TmpHex) == "0x"$($)
;            set-sub IODefault = $(#),1
;            set IOFound = $(TRUE)
;        Endif
;    EndForListDo
;
;    ifint $(IOFound) == $(FALSE)
;      set IORangeList = {$(TmpHex)}
;      set IODefault = 0
;      set BusTypeNum = 2
;    endif
;---------------------------------------------------- VIV  8/27/1993 end

;---------------------------------------------------- VIV  8/18/1993 begin
    ;
    ; Open \SYSTEM\CurrentControlSet\Services\aclser\Parameters\Line
    ;
    set CurrentLine = "Line"
    Debug-Output "CurrentLine = "$(CurrentLine)
    OpenRegKey $(ParametersKey) "" $(CurrentLine) $(MAXIMUM_ALLOWED) LineKey


    ; Parameter for DLL
    set CtrlList = {}
    set CtrlInterfaceList = {}

    set PortNameList = {}
    set CurrentPort = ""
    set PortName = {}
    set PortInterfaceList = {}
    set PortInterface = {}
    ForListDo {"1","2","3","4","5","6","7","8"}
       set CurrentPort = "Port"$($)
       ;
       ; Open \SYSTEM\CurrentControlSet\Services\aclser\Parameters\Line\PortX
       ;
       OpenRegKey $(LineKey) "" $(CurrentPort) $(MAXIMUM_ALLOWED) PortKey
       Ifstr $(PortKey) != $(KeyNull)
          GetRegValue $(PortKey) "DosDevices" PortName
          Ifstr $(PortNameList) == $(KeyNull)
             set PortNameList = *($(PortName),4)
          Else
             set PortNameList = >($(PortNameList), >($(CurrentPort),*($(PortName),4)))
          Endif
          GetRegValue $(PortKey) "EIA422" PortInterface
          Ifstr $(PortInterfaceList) == $(KeyNull)
             set PortInterfaceList = *($(PortInterface),4)
          Else
             set PortInterfaceList = >($(PortInterfaceList), >($(CurrentPort),*($(PortInterface),4)))
          Endif
          CloseRegKey $(PortKey)
       EndIf
    EndForListDo

    set CtrlList = $(PortNameList)
    set CtrlInterfaceList = $(PortInterfaceList)
    set CtrlList1 = {}

    set PortNameList = {}
    set CurrentPort = ""
    set PortName = {}
    set PortInterfaceList = {}
    set PortInterface = {}
    ForListDo {"9","10","11","12","13","14","15","16"}
       set CurrentPort = "Port"$($)
       ;
       ; Open \SYSTEM\CurrentControlSet\Services\aclser\Parameters\Line\PortX
       ;
       OpenRegKey $(LineKey) "" $(CurrentPort) $(MAXIMUM_ALLOWED) PortKey
       Ifstr $(PortKey) != $(KeyNull)
          GetRegValue $(PortKey) "DosDevices" PortName
          Ifstr $(PortNameList) == $(KeyNull)
             set PortNameList = *($(PortName),4)
          Else
             set PortNameList = >($(PortNameList), >($(CurrentPort),*($(PortName),4)))
          Endif
          GetRegValue $(PortKey) "EIA422" PortInterface
          Ifstr $(PortInterfaceList) == $(KeyNull)
             set PortInterfaceList = *($(PortInterface),4)
          Else
             set PortInterfaceList = >($(PortInterfaceList), >($(CurrentPort),*($(PortInterface),4)))
          Endif
          CloseRegKey $(PortKey)
       EndIf
    EndForListDo

    set CtrlList1 = $(PortNameList)
    set CtrlInterfaceList1 = $(PortInterfaceList)
    CloseRegKey $(LineKey)
;---------------------------------------------------- VIV  8/18/1993 end

    CloseRegKey $(ParametersKey)
    CloseRegKey $(BaseKey)

getAdapterSettingsExit = +
    goto configureadapter

writeparameters = +
    Debug-Output "******************Entering writeparameters******************"

    StartWait

    Debug-Output "Trying to open: "$(!NTN_ServiceBase)"\"$(AdapterServiceName)
    Debug-Output "AdapterParameters:"
    Debug-Output $(AdapterParameters)
    ;
    ; Open hive \SYSTEM\CurrentControlSet\Services\aclser0...
    ;
    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(AdapterServiceName) $(MAXIMUM_ALLOWED) BaseKey
    Ifstr $(BaseKey) == $(KeyNull)
        Debug-Output "Error opening BaseKey "$(!NTN_ServiceBase)"\"$(AdapterServiceName)
        CloseRegKey $(BaseKey)
        goto fatal
    Endif
    ;
    ; Open hive \SYSTEM\CurrentControlSet\Services\aclser0...\Parameters
    ;
    OpenRegKey $(BaseKey) "" "Parameters" $(MAXIMUM_ALLOWED) ParametersKey
    Ifstr $(ParametersKey) == $(KeyNull)
        Debug-Output "Assuming Parameters key does not exist!!!"
        CloseRegKey $(BaseKey)
        goto fatal
    Endif

;    Debug-Output "AdapterParameters parsed: "
    set InterruptNumber = *($(AdapterParameters),1)
    set IOBaseAddress = *($(AdapterParameters),2)
    set HdwDeviceName = "\Device\"$(AdapterHardwareDriver)
;    set DownloadPath = *($(AdapterParameters),4)
    set BoardType = *($(AdapterParameters),4)
    set MemoryWindow = *($(AdapterParameters),5)
    set WindowSize = *($(AdapterParameters),6)
    set NumOfPorts = *($(AdapterParameters),7)
    set Slot = *($(AdapterParameters),8)
    Debug-Output "FOO Slot = "$(Slot)

;    Debug-Output "InterruptNumber = "$(InterruptNumber)
;    Debug-Output "IOBaseAddress = "$(IOBaseAddress)
;    Debug-Output "HdwDeviceName = "$(HdwDeviceName)
;    Debug-Output "DownloadPath = "$(DownloadPath)
;    Debug-Output "MemoryWindow = "$(MemoryWindow)
;    Debug-Output "WindowSize = "$(WindowSize)
;    SetRegValue $(ParametersKey) {DownloadPath,$(NoTitle),$(!REG_VT_SZ),$(DownloadPath)}
    SetRegValue $(ParametersKey) {NumOfPorts,$(NoTitle),$(!REG_VT_DWORD),$(NumOfPorts)}
    SetRegValue $(ParametersKey) {HdwDeviceName,$(NoTitle),$(!REG_VT_SZ),$(HdwDeviceName)}
    SetRegValue $(ParametersKey) {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)}
    SetRegValue $(ParametersKey) {BoardType,$(NoTitle),$(!REG_VT_DWORD),$(BoardType)}
    SetRegValue $(ParametersKey) {WindowSize,$(NoTitle),$(!REG_VT_DWORD),$(WindowSize)}

	ifstr $(BusTypeNum) != 3
	    ; ISA
	    SetRegValue $(ParametersKey) {IOBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddress)}
	    SetRegValue $(ParametersKey) {InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(InterruptNumber)}
	    SetRegValue $(ParametersKey) {MemoryWindow,$(NoTitle),$(!REG_VT_DWORD),$(MemoryWindow)}
	    ; Eisa
	    SetRegValue $(ParametersKey) {Slot,$(NoTitle),$(!REG_VT_DWORD),$(Slot)}
	else
	    ; MCA
	    SetRegValue $(ParametersKey) {Slot,$(NoTitle),$(!REG_VT_DWORD),$(Slot)}

	endif
;---------------------------------------------------- VIV  8/18/1993 begin
    set PortList = *($(AdapterParameters),3)
    Debug-Output "PortList = "$(PortList)

    set LineName = "Line"
    DeleteRegTree $(ParametersKey) $(LineName)

    Ifstr $(PortList) != "{}"
       shell "" ExCreateRegKey $(ParametersKey) $(LineName)
       Ifstr(i) $($R0) != NO_ERROR
           Debug-Output "Error creating registry key!"
           set KeyHandle = $($R1)
           CloseRegKey $(BaseKey)
           goto fatal
       Endif
       set LineKey = $($R1)
    Endif

    ForListDo $(PortList)
       set PortObject = $($)
       set PortName = *($(PortObject),1)
       set PortDosDevices = *($(PortObject),2)
       set PortInterface = *($(PortObject),3)
       Debug-Output "      "$(PortName)"  -> "$(PortDosDevices)
       shell "" ExCreateRegKey $(LineKey) $(PortName)
       Ifstr(i) $($R0) != NO_ERROR
           Debug-Output "Error creating registry key!"
           set KeyHandle = $($R1)
           CloseRegKey $(LineKey)
           goto fatal
       Endif
       set PortKey = $($R1)
       SetRegValue $(PortKey) {DosDevices,$(NoTitle),$(!REG_VT_SZ),$(PortDosDevices)}
       SetRegValue $(PortKey) {EIA422,$(NoTitle),$(!REG_VT_DWORD),$(PortInterface)}
    EndForListDo
;---------------------------------------------------- VIV  8/18/1993 end

    EndWait
    goto successful

bindingadapter = +
    Debug-Output "******************Entering bindingadapter******************"
    LoadLibrary "x" io8pconf.dll IO8PCONF_HANDLE
    set Error = "Binding: Sorry, not yet implemented."
    goto fatal

removeadapter = +
    read-syms DebugOptions
    Debug-Output "******************Entering removeadapter******************"
    Debug-Output "OEMNACL.INF: removeadapter"
    Debug-Output "OEMNACL.INF: Removing Hardware Components"
    Debug-Output "OEMNACL.INF: ProductSoftwareNameHdwDriver = "$(ProductSoftwareNameHdwDriver)
    Debug-Output "OEMNACL.INF: NTN_RegBase = "$(!NTN_RegBase)
    Debug-Output "fRemoveACL: "$(fRemoveACL)

    ifstr(i) $(fRemoveACL) == FALSE
      install RemoveFiles
      goto removeadapterExit
    endif

;DEL    LoadLibrary "x" aclconf.dll ACLCONF_HANDLE

    Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
        $(ProductSoftwareNameHdwDriver), $(!NTN_RegBase)
    Debug-Output "OEMNACL.INF: RemoveHardwareComponent return value = "$($R0)

    Ifstr(i) $($R0) != NO_ERROR
        Debug-Output "OEMNACL.INF: RemoveHardwareComponent != NO_ERROR"
    Endif
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "ShellCode error"
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        Debug-Output "fatal registry error"
        goto fatalregistry
    endif

    install RemoveFiles

removeadapterExit = +
    Debug-Output "OEMNACL.INF: Exiting removeadapter"
    goto end

UpgradeSoftware = +
    Debug-Output "******************Entering UpgradeSoftware******************"
	set SrcDir = $(!SourceDir)
;    Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
;    Ifint $($ShellCode) != $(!SHELL_CODE_OK)
;        Debug-Output "Shell code error: DoAskSource"
;        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
;        set CommonStatus = STATUS_USERCANCEL
;        Goto successful
;    Endif
;    Set SrcDir = $($R1)
	install Correct-SrcDir
;    Shell $(UtilityInf), GetBusTypeNum
;    set BusTypeNum = $($R1)
;DEL pd    LoadLibrary "c" $(SrcDir)aclconf.dll ACLCONF_HANDLE

;VIV    ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
    Debug-Output "ProductKeyNameHdwDriver = "$(ProductKeyNameHdwDriver)
    Debug-Output "NTN_RegBase = "$(!NTN_RegBase)

    ifstr(i) $(ProductKeyNameHdwDriver) == $(!NTN_RegBase)
; We will never get here - VD
;VIV        OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
;DEL        OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyNameHdwDriver) $(MAXIMUM_ALLOWED) KeyProduct
;DEL        Ifstr $(KeyProduct) != $(KeyNull)
;DEL            GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
;DEL            set Version = *($(VersionInfo), 4)
;DEL            Split-String $(!NTN_Infname), "\", FilenameList
;DEL            QueryListSize ListSize $(FilenameList)
;DEL            set !UG_Filename = *($(FilenameList), $(ListSize))
;DEL            install "Install-Update"
;DEL            ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
;DEL                goto fatal
;DEL            endif
;DEL            SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
;DEL            SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
;DEL;VIV            ifint $(Version) != $(ProductVersion)
;DEL            ifint $(Version) != $(ProductVersionHdwDriver)
;DEL            endif
;DEL            CloseRegKey $(KeyProduct)
;DEL        else
;DEL            goto fatalregistry
;DEL        endif
    else
        OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
              $(MAXIMUM_ALLOWED) NetworkCardKey
        Ifstr(i) $(NetworkCardKey) != $(KeyNull)
            GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
            set ServiceName = *($(ServiceNameInfo), 4)
            OpenRegKey $(NetworkCardKey) "" "NetRules" +
                $(MAXIMUM_ALLOWED) NetRuleKey
            Ifstr $(NetRuleKey) != $(KeyNull)
            else
                goto fatalregistry
            endif
            CloseRegKey $(NetRules)
            CloseRegKey $(NetworkCardKey)
        else
            goto fatalregistry
        endif
        OpenRegKey $(!REG_H_LOCAL) "" +
              $(!NTN_ServiceBase)"\"$(ServiceName) +
              $(MAXIMUM_ALLOWED) ServiceKey
        Ifstr $(ServiceKey) != $(KeyNull)
        	;
        	; Expand and copy files to the windows directory
        	;
        	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
		LoadLibrary "d" $(!STF_WINDOWSSYSPATH)"\"aclconf.dll ACLCONF_HANDLE
		;
		; Copy the Control Programs that have already been expanded
		; to the Registry
		;
    		LibraryProcedure Result, $(ACLCONF_HANDLE), +
							ACLPutCPDataToRegistry, +
							$(!STF_WINDOWSSYSPATH)"\", +
							$(ParamKeyName), +
							$(BusTypeNum)
		;
		; Remove the Control Programs from windows directory
		;
		set RemoveList = {}
		set CPList = ^( Files-CP, 2 )
	   	ForListDo $(CPList)
	    	    set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)\$($))
	   	EndForListDo
		ForListDo $(RemoveList)
	            LibraryProcedure Status , $(!LIBHANDLE), DelFile $($)
		EndForListDo

            CloseRegKey $(ServiceKey)
			set AddCopy = YES
			set DoCopy = YES
;DEL pd        	install "Install-Option"
;	   		Debug-Output "OEMNACL.INF: STF_INSTALL_OUTCOME = "$(STF_INSTALL_OUTCOME)
;DEL pd        	ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
;DEL pd          		Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
;DEL pd          		ifint $($ShellCode) != $(!SHELL_CODE_OK)
;DEL pd              		goto ShellCodeError
;DEL pd          		endif
;DEL pd          		set Error = $($R0)
;DEL pd          		goto fatal
;DEL pd        	endif
        else
            goto fatalregistry
        endif
    endif
    goto end

successful = +
    Debug-Output "******************Entering successful******************"
    goto end

; ---------------------------------------------------- VIV  8/18/1993 begin
; abandon = +
;     Debug-Output "******************Entering 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
;
;     goto end
;---------------------------------------------------- VIV  8/18/1993 end

warning = +
    Debug-Output "******************Entering 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 = +
    Debug-Output "******************Entering nonfatalinfo******************"
    Set CommonStatus = STATUS_USERCANCEL
    Set Severity = STATUS
    goto nonfatalmsg

nonfatal = +
    Debug-Output "******************Entering nonfatal******************"
    Set Severity = NONFATAL
    goto nonfatalmsg

nonfatalmsg = +
    Debug-Output "******************Entering 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 = +
    Debug-Output "******************Entering fatalregistry******************"
    Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
       Debug-Output "fatalregistry: shell to find RegistryErrorString failed."
       goto ShellCodeError
    endif
    set Error = $($R0)" - service "$(IO8PSpecificString)"."
    ifstr(i) $(fRemoveIO8P) == TRUE
        read-syms AbortMessage$(!STF_LANGUAGE)
        set Error = $(Error)$(!LF)$(!LF)$(AbortText)
    endif
    goto fatal

fataldetect = +
    Debug-Output "******************Entering fataldetect******************"
    Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "ShellCode error: cannot get an error string."
        goto ShellCodeError
    endif
    set Error = $($R0)
    Goto fatal

fatal = +
    Debug-Output "******************Entering fatal******************"
    Debug-Output "OEMNIO8P.INF: ---- fatal called"
    Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "fatal: shell to SetupMessage failed."
        goto ShellCodeError
    endif
    goto setfailed

ShellCodeError = +
    Debug-Output "******************Entering 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 = +
    Debug-Output "******************Entering setfailed******************"
    set CommonStatus = STATUS_FAILED
    ifstr(i) $(fRemoveIO8P) == TRUE
        set fRemoveIO8P = FALSE
        goto removeadapter
    endif
    goto end

end = +
    Debug-Output "******************Entering end******************"
    goto term

term = +
    ifstr(i) $(ACLCONF_HANDLE) != $(HandleNull)
      FreeLibrary $(ACLCONF_HANDLE)
    endif
    Debug-Output "******************Entering term -- GoodBye!!!******************"
    Return $(CommonStatus)

[RemoveFiles]
	Debug-Output "******************Entering [RemoveFiles]******************"
	set RemoveList = {}
	set RenameList = {}
	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyNameHdwDriver) +
           	$(MAXIMUM_ALLOWED) KeyProductHdwDriver
	Debug-Output "ProductKeyNameHdwDriver = "$(ProductKeyNameHdwDriver)
	Debug-Output "KeyProductHdwDriver = "$(KeyProductHdwDriver)
	ifstr $(KeyProductHdwDriver) == $(KeyNull)
   		CloseRegKey $(KeyProductHdwDriver)
	   	set RenameList = >($(RenameList), $(!STF_WINDOWSSYSPATH)"\drivers\"$(AdapterHardwareDriver)".sys")

;---------------------------------------------------- VIV  8/18/1993 begin
;      set RenameList = >($(RenameList), $(!STF_WINDOWSSYSPATH)"\aclconf.dll")
		set ResList = ^( Files-Resource, 2 )
	   	ForListDo $(ResList)
    		set RenameList = >($(RenameList), $(!STF_WINDOWSSYSPATH)\$($))
	   	EndForListDo

;      set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\io8pconf.hlp")
;		set CPList = ^( Files-CP, 2 )
;	   	ForListDo $(CPList)
;    		set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)\$($))
;	   	EndForListDo
    	set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\drivers\"$(AdapterHardwareDriver)".old")
;---------------------------------------------------- VIV  8/18/1993 end
	endif

;---------------------------------------------------- VIV  8/18/1993 begin
;   OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) +
;              $(MAXIMUM_ALLOWED) KeyProduct
;   ifstr $(KeyProduct) == $(KeyNull)
;      CloseRegKey $(KeyProduct)
;      set RenameList = >($(RenameList), $(!STF_WINDOWSSYSPATH)"\drivers\"$(ProductSoftwareName)".sys")
;      set RenameList = >($(RenameList), $(!STF_WINDOWSSYSPATH)"\io8pconf.dll")
;      set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\io8pconf.hlp")
;   endif
;---------------------------------------------------- VIV  8/18/1993 end

   Debug-Output "RemoveList = "$(RemoveList)
   Debug-Output "RenameList = "$(RenameList)

   ForListDo $(RemoveList)
       Debug-Output "Removing "$($)
       LibraryProcedure Status , $(!LIBHANDLE), DelFile $($)
       Debug-Output "Status is "$(Status)
   EndForListDo

   ForListDo $(RenameList)
       Debug-Output "RenameList entry = "$($)
       Split-String $($) "\" FilePath
       QueryListSize PathLen $(FilePath)
       Split-String *($(FilePath),$(PathLen)) "." FullFileName
       Set FileName = *($(FullFileName),1)
       Debug-Output "FileName is "$(FileName)
       LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
       Debug-Output "CheckFile Status = "$(STATUS)
       ifstr(i) $(STATUS) == YES
           LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
           Debug-Output "Delfile Status = "$(STATUS)
           LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $($)
           Debug-Output "Delfile Status = "$(STATUS)
;       endif
       else-Ifstr(i) $(fRemoveACL) == TRUE
         Debug-Output "Renaming from "$($)
         Debug-Output "Renaming to "$(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
         LibraryProcedure Status1 , $(!LIBHANDLE), RenFile $($), $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
         Debug-Output "Status is "$(Status1)
         AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
       endif
   EndForListDo

   exit

[ExCreateRegKey]
;    Debug-Output "******************Entering [ExCreateRegKey]******************"
    set ECR_Result          = NO_ERROR
    set ECR_BaseKeyHandle   = $($0)
    set ECR_NewPath         = $($1)
    set KeyNull         = ""
    set MAXIMUM_ALLOWED   = 33554432
;    Debug-Output "ExCreateRegKey - ECR_BaseKeyHandle = "$(ECR_BaseKeyHandle)
;    Debug-Output "                 ECR_NewPath = "$(ECR_NewPath)
;    Debug-Output "                 MAXIMUM_ALLOWED = "$(MAXIMUM_ALLOWED)
;    Debug-Output "                 KeyNull = "$(KeyNull)
    OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_NewPath) $(MAXIMUM_ALLOWED) +
               ECR_BaseKey
;    Debug-Output "ECR_BaseKey = "$(ECR_BaseKey)
;    Debug-Output "    OpenRegKey returned "$($R0)
    Ifstr $(ECR_BaseKey) == $(KeyNull)
;        Debug-Output "ECR_BaseKey == KeyNull"
    Else
;        Debug-Output "ECR_BaseKey != KeyNull"
        set ECR_KeyHandle = $(ECR_BaseKey)
        goto  ECR_Return
    Endif
    set ECR_TmpPath = ""
    Split-String $(ECR_NewPath) "\" ECR_PList
;    Debug-Output "ECR_PList = "$(ECR_PList)
    ForListDo $(ECR_PList)
        Ifstr(i) $($) != "\"
            Ifint $(#) == 1
                set ECR_TmpPath = $($)
            Else
                set ECR_TmpPath = $(ECR_TmpPath)"\"$($)
            Endif
;            Debug-Output "Determining if "$(ECR_TmpPath)" exists"
            OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_TmpPath) $(MAXIMUM_ALLOWED) ECR_BaseKey
            Ifstr $(ECR_BaseKey) == $(KeyNull)
 ;               Debug-Output "Creating "$(ECR_TmpPath)
                CreateRegKey $(ECR_BaseKeyHandle)  {$(ECR_TmpPath),0,GenericClass} "" $(MAXIMUM_ALLOWED) "" ECR_KeyHandle
                Ifstr(i) $(ECR_KeyHandle) == $(KeyNull)
                    set ECR_Result = $($R0)
                    goto ECR_Return
                Endif
            Endif
        Endif
    EndForListDo
ECR_Return = +
    return $(ECR_Result) $(ECR_KeyHandle)

[DebugExternalGlobals]
    Set InfName = "OEMNACL.INF"
    Debug-Output $(InfName)" NTN_Origination = "$(!NTN_Origination)
    Debug-Output $(InfName)" NTN_InstallMode = "$(!NTN_InstallMode)
    Debug-Output $(InfName)" NTN_RegBase = "$(!NTN_RegBase)
    Debug-Output $(InfName)" NTN_SoftwareBase = "$(!NTN_SoftwareBase)
    Debug-Output $(InfName)" NTN_ServiceBase = "$(!NTN_ServiceBase)
    Debug-Output $(InfName)" STF_NTPATH = "$(!STF_NTPATH)
    Debug-Output $(InfName)" STF_NTWINDOWSSYSPATH = "$(!STF_WINDOWSSYSPATH)
    Debug-Output $(InfName)" STF_CWDIR = "$(!STF_CWDIR)
    Debug-Output $(InfName)" STF_LANGUAGE = "$(!STF_LANGUAGE)
    Debug-Output $(InfName)" STF_NCDETECT  = "$(!STF_NCDETECT)
    Debug-Output $(InfName)" STF_NCOPTION  = "$(!STF_NCOPTION)
    Debug-Output $(InfName)" STF_NCDETCARD = "$(!STF_NCDETCARD)
    Debug-Output $(InfName)" STF_NCDETINFO = "$(!STF_NCDETINFO)
    Debug-Output $(InfName)" STF_INSTALL_MODE = "$(!STF_INSTALL_MODE)
    Debug-Output $(InfName)" STF_CONTEXTINFNAME = "$(!STF_CONTEXTINFNAME)
    return

;DEL [DebugConfiguration]
;DEL     Set InfName = "OEMNIO8P.INF"
;DEL     Debug-Output $(InfName)" **CONFIGURATION STATE: "$($0)
;DEL     Debug-Output $(InfName)" IRQ_Level is "$(!p:IRQ_Level)
;DEL     Debug-Output $(InfName)" IOBaseAddrValue is "$(!p:IOBaseAddrValue)
;DEL     Debug-Output $(InfName)" TransceiverValue is "$(!p:TransceiverValue)
;DEL     Debug-Output $(InfName)" MemBaseAddrDec is "$(!p:MemBaseAddrDec)
;DEL     Debug-Output $(InfName)" MappedValue is "$(!p:MappedValue)
;DEL     return

[AdapterSettings-aclser]
	set IRQDefault = 5
	set-hextodec IODefault = 200
;	set DnlPath = "\Device\Harddisk1\Partition2\WINNT\"
	set-hextodec MemWinDefault = 0xEC000
	set MemSizeDefault = 16
	set PortListDefault = 	{						+
								{ Port1, COM3 },    +
								{ Port2, COM4 }     +
							}
	Exit

[GetDownloadPath]
	set STF_INSTALL_OUTCOME = STF_FAILED
    set KeyName = "System\CurrentControlSet\Control\hivelist"
    OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MAXIMUM_ALLOWED) KeyHandle
    Debug-Output "Opening key "$(KeyName)
    Ifstr $(KeyHandle) == $(KeyNull)
        Debug-Output "Unable to open "$(KeyName)" key!!!!"
    Else
		set Value = "\REGISTRY\MACHINE\SYSTEM"
        GetRegValue $(KeyHandle), $(Value), SystemPathList
		ifstr $(SystemPathList) == ""
	        Debug-Output "Cannot get value for "$(Value)
		else
	        Debug-Output "SystemPathList = "$(SystemPathList)
			set SystemPath = *($(SystemPathList), 4)
	        Debug-Output "SystemPath = "$(SystemPath)
            Split-String $(SystemPath), "\", PathPartsList
			set DnlPath = ""
    		ForListDo $(PathPartsList)
        		Ifstr(i) $($) == CONFIG
					goto PathDone
        		Endif
				set DnlPath = $(DnlPath)$($)
    		EndForListDo
PathDone = +
;			set DnlPath = $(DnlPath)\
	        Debug-Output "DnlPath = "$(DnlPath)
			set STF_INSTALL_OUTCOME = STF_SUCCESS
		endif
        CloseRegKey $(KeyHandle)
    Endif

	Exit


[BindingInfo-aclser]
BindingInfo     = {+
                  $(AdapterHardwareDriver)"Driver "$(AdapterHardwareDriver)"Adapter non exclusive 100" +
                  }

;---------------------------------------------------- VIV  8/31/1993 begin
;[InstallResources]
;    set STF_VITAL = ""
;    Debug-Output "OEMNIO8P.INF: [InstallResources]"
;    AddSectionFilesToCopyList Files-Resource $(!SourceDir) $(!STF_WINDOWSSYSPATH)
;    CopyFilesInCopyList
;    Debug-Output "OEMNIO8P.INF: [InstallResources] - Exiting"
;    exit
;---------------------------------------------------- VIV  8/31/1993 end

;-----------------------------------------------------------------------
; Copy Files from installation disk.
;-----------------------------------------------------------------------
[Install-Option]
    set STF_VITAL = VITAL
    Debug-Output "OEMNACL.INF: SystemPath = "$(!STF_WINDOWSSYSPATH)
    AddSectionFilesToCopyList Files-CP $(SrcDir) $(!STF_WINDOWSSYSPATH)
    ifstr(i) $(AddCopy) == "YES"
        AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
        AddSectionFilesToCopyList Files-Resource $(SrcDir) $(!STF_WINDOWSSYSPATH)
    endif
;DEL    ifstr(i) $(DoCopy) == "YES"
	    set !STF_NCPA_FLUSH_COPYLIST = TRUE
		Debug-Output "OEMNACL.INF: About to copy files"
		CopyFilesInCopyList
;DEL	endif
    ifstr(i) $(DoConfig) == "YES"
    endif
    Exit

[Source Media Descriptions]
    1  = ""
;DEL    1  = "" , TAGFILE = disk1
;DEL    2  = "Windows NT Setup CD-ROM Disk"  , TAGFILE = disk2

[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386

;DEL [Files-Inf]
;DEL 2,	oemsetup.inf,	 SIZE=1000,	RENAME=$(!UG_Filename)

[Files-aclser]
1,	aclser.sys 	, SIZE=90664

[Files-Resource]
1,	ACLCONF.DLL , SIZE=93760
1,	ACLCONF.HLP , SIZE=20760
;DEL 1,	STARGATE.BMP , SIZE=21760

[Files-CP]
1,	acl.cp 		, SIZE=5460
1,	acl2.cp 	, SIZE=5482
1,	acl2r.cp 	, SIZE=5366
1,	aclmc.cp 	, SIZE=5366
1,	a100m.cp 	, SIZE=5366
1,	a100e.cp 	, SIZE=5366
1,	a100i.cp 	, SIZE=5366
1,	aclmcp.cp 	, SIZE=5366

[OptionsTextENG]
    aclser          = "Star Gate ACL/Avanstar Family Adapter"

[FileConstantsENG]
    ProCaption   = "Star Gate Setup"
    ProCancel    = "Cance&l"
    ProCancelMsg = "Star Gate Adapters and/or Drivers are not correctly installed. "+
                   "Are you sure you want to cancel copying files?"
    ProCancelCap = "Star Gate Setup Message"
    ProText1     = "Copying:"
    ProText2     = "To:"
    Error         = "Unable to determine proper source disk location; copy cannot be performed."
    FunctionTitle   ="Star Gate Setup"
    ProductSoftwareDescriptionHdwDriver = "StarGate "$(AdapterTitle)" Driver"
    ProductSoftwareTitleHdwDriver = "StarGate "$(AdapterTitle)" Driver"
    ConfigurationTitle = "Star Gate "$(AdapterTitle)" Adapter Setup"
    ProductHardwareDescription      = "StarGate "$(AdapterTitle)" Adapter"
    ProductHardwareTitle        = "StarGate "$(AdapterTitle)" Adapter"

[DialogConstantsENG]
    Help        = "&Help"
    Exit        = "E&xit"
    OK          = "OK"
    HelpContext = ""
    Continue    = "C&ontinue"
    Cancel      = "C&ancel"

[UpdatingConfigurationENG]
    UpdatingConfiguration      = "Updating new configuration..."

[AbortMessageENG]
  AbortText  =  "Aborting Specialix Setup. Please reboot the system "+
                "to fix the problem."

; Terminates SrcDir with '\' if it isn't
[Correct-SrcDir]
Debug-Output "OEMNACL.INF: SrcDir was "$(SrcDir)
split-string $(SrcDir) "\" SrcList
QueryListSize SrcListSize $(SrcList)
Debug-Output "OEMNACL.INF: List = "$(SrcList)
Debug-Output "OEMNACL.INF: ListSize = "$(SrcListSize)
Debug-Output "OEMNACL.INF: LastItem = "*($(SrcList), $(SrcListSize) )
ifstr *($(SrcList), $(SrcListSize) ) != "\"
	set SrcDir = $(SrcDir)\
endif
Debug-Output "OEMNACL.INF: SrcDir is "$(SrcDir)
exit
