8

In the setup of Windows 98 Second Edition, you can select everything but Dial-Up ATM Support:

enter image description here

Whether using the mouse or the keyboard, the item cannot be selected no matter what.

Was that a planned feature that didn't make it on time for release?

0

1 Answer 1

11

The ATM driver can be readily installed when the system is already in place, from the appropriate Control Panel applet:

Screenshot of the ‘Add/Remove Programs’ Control Panel applet, with the ‘Communications’ group opened and the ‘Dial-Up ATM Support’ item picked

In fact, this workaround was officially endorsed by Microsoft in KB article Q231910. The explanation offered by the article as to why this is needed in the first place is pretty vague, though:

This problem occurs due to problems in Windows 98 Second Edition.

Closer inspection reveals that installing the driver at this stage is blocked by a certain DLL containing a callback function invoked by the installer to validate the user’s selections. There is a relatively simple way to see this, assuming you have found a way to modify the contents of the installer’s CAB files, or to modify them right after they’re extracted0. The PRECOPY2.CAB archive contains the file RNA.INF; the installer usually unpacks it into C:\WININST0.400 and reads it from there. In the [ATM] section of that file, remove or comment out the following line:

ValidateProc= RNASETUP.DLL, RnaSetupCallback

After making the change, it becomes possible to select the component in the installer:

Windows 98 Setup, with the ‘Dial-Up ATM Support’ option enabled

Of course, it takes considerably less effort to just follow the official advice, so I am not offering this as a practical solution. This is merely to demonstrate the mechanism.

Disassembling RnaSetupCallback in the DLL reveals that it was probably a deliberate decision to block installation in this specific circumstance:

             ; obtain setup flags
code:02ae    lea       ax, [bp + setup_flags]
code:02b1    push      ss
code:02b2    push      ax
code:02b3    push      0
code:02b5    call      far SetupX!SUGETSETSETUPFLAGS

             ; if obtaining the flags failed, return 1 (reject)
code:02ba    or        ax, ax
code:02bc    jnz       return_1

             ; if NOT in Windows Setup, return 0 (allow)
code:02c0    test      byte [bp + setup_flags], SUF_INSETUP   ; = 0x10
code:02c4    jz        return_0_

             ; load the selector (DI contains the offset part already)
code:02c6    mov       es, word [bp + ?_component_info + 0x2]
             ; if bit 2 is set (user intends to install), return 1 (reject)
code:02c9    test      byte [es:di], 4                          
code:02cd    jnz       return_1_                                

As we can see, it has nothing to do with whether any hardware that would use the driver was detected; the choice is denied in Setup unconditionally. Even without seeing the disassembly, this would have been pretty doubtful: hardware detection is performed only after the installer reboots into the target drive, into a full Windows 98 environment.

I can only speculate as to the reason why picking this item is blocked. Perhaps internal testing at Microsoft has revealed that installing the ATM driver from pristine Setup did not work correctly, and only installation from the Control Panel applet worked. Or perhaps it was just a development mistake, like testing code inadvertently left in. Other than the laconic official docs, my only clues were online forum posts, of rather doubtful reliability. Perhaps we will never know the full answer.


0 For the record, I did the latter. I extracted the mini-Windows-3.10 environment from MINI.CAB and modified it using files from Windows 3.11 to be able to run programs of my choosing, other than the installer. Like the Program Manager, File Manager and Notepad.

1
  • Amazing answer, couldn't have hoped better than that!
    – aybe
    Nov 11, 2022 at 22:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .