How Windows 98 Handled Legacy ISA Cards at Startup

When booting up, Microsoft Windows 98 faced the challenge of managing legacy Industry Standard Architecture (ISA) expansion cards alongside modern Plug and Play (PnP) devices. Because legacy ISA cards lacked self-identifying mechanisms and relied on manual physical jumpers or DIP switches, Windows 98 could not automatically query them at runtime without risking system instability. To manage these devices safely during startup, the operating system relied on a structured boot sequence involving the Configuration Manager, saved Registry resource maps, pre-allocated resource arbitration, and real-mode driver hand-offs.

During the initial phase of the boot sequence, the system BIOS initialized the fundamental components necessary to load the operating system. If legacy ISA devices required real-mode drivers—such as older sound cards or network adapters—they were initially initialized via CONFIG.SYS and AUTOEXEC.BAT.

Once Windows 98 transitioned from 16-bit real mode into 32-bit protected mode, the Virtual Machine Manager (VMM32.VXD) and the Configuration Manager took control of system hardware. Unlike PCI or ISA PnP cards, which could dynamically report their vendor IDs, device IDs, and resource requirements, standard legacy ISA cards were completely silent. The Configuration Manager could not safely probe the bus at every startup, as writing to unmapped I/O ports or querying unknown memory ranges could freeze the system or corrupt hardware.

To solve this, Windows 98 handled legacy ISA cards during startup using static configuration data:

  1. Registry Lookup: The Configuration Manager checked the Windows Registry under HKEY_LOCAL_MACHINE\Enum\Root. Any legacy ISA card that had been previously installed manually or detected through the "Add New Hardware" wizard had its specific resource settings—Input/Output (I/O) port ranges, Interrupt Requests (IRQs), Direct Memory Access (DMA) channels, and memory addresses—stored here as static entries.

  2. Resource Arbitration: Before configuring any Plug and Play devices, the Windows 98 Resource Arbitrators locked down the static resources claimed by legacy ISA devices. Because the jumpers on legacy cards physically wired them to specific IRQ lines and I/O bases, these allocations were treated as non-negotiable and immutable.

  3. Dynamic PnP Allocation: After the legacy ISA devices were granted their hardwired resources, the Configuration Manager dynamically assigned the remaining free resources to PnP-compliant ISA and PCI devices. This strict prioritization prevented resource conflicts that would otherwise render legacy devices inoperable.

  4. VxD Driver Initialization: With resources successfully partitioned, Windows 98 loaded the corresponding protected-mode virtual device drivers (VxDs) tied to the legacy hardware entries. The drivers took over device management from any 16-bit real-mode drivers loaded earlier.

If a new legacy card was inserted without user intervention, Windows 98 did not attempt intrusive auto-detection during standard bootup. Instead, the card remained inactive or conflicted with existing hardware until the user ran the Add New Hardware wizard, which executed guarded, isolative detection scripts to safely locate the device and write its static map to the Registry for subsequent boots.