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:
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.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.
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.
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.