In the setup of Windows 98 Second Edition, you can select everything but Dial-Up ATM Support:
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?
Retrocomputing Stack Exchange is a question and answer site for vintage-computer hobbyists interested in restoring, preserving, and using the classic computer and gaming systems of yesteryear. It only takes a minute to sign up.
Sign up to join this communityThe ATM driver can be readily installed when the system is already in place, from the appropriate Control Panel applet:
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:
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.