Windows 95 Boot: CONFIG.SYS and AUTOEXEC.BAT

During startup, Windows 95 handled CONFIG.SYS and AUTOEXEC.BAT primarily to ensure backward compatibility with legacy 16-bit MS-DOS software and hardware drivers. Although Windows 95 was architected as a 32-bit operating system utilizing protected-mode drivers, its bootstrap loader still executed real-mode configuration files sequentially during the early phases of the boot process before fully initializing the graphical environment and 32-bit Virtual Machine Manager.

The Role of the Unified IO.SYS

In Windows 95, MS-DOS components were merged. The startup process was initiated by a modernized IO.SYS, which combined the functions of the traditional MS-DOS IO.SYS and MSDOS.SYS.

To streamline booting and reduce the need for manual configuration, Windows 95 built core driver loading directly into IO.SYS. By default, IO.SYS automatically loaded essential real-mode drivers and settings into memory without requiring entries in CONFIG.SYS. These defaults included:

  • HIMEM.SYS (Extended memory manager)
  • IFSHLP.SYS (Installable File System Helper)
  • SETVER.EXE (MS-DOS version emulator)
  • Default configuration values for FILES, BUFFERS, STACKS, and SHELL

Processing CONFIG.SYS

If a CONFIG.SYS file existed in the root directory of the boot drive, IO.SYS parsed it immediately after applying its internal defaults.

During this step, any unique 16-bit real-mode drivers—such as proprietary SCSI adapters, legacy CD-ROM drivers, or specialized sound drivers—were loaded into conventional or upper memory blocks (UMBs). If a parameter in CONFIG.SYS overridden an internal default (such as a higher FILES= allocation), the value specified in CONFIG.SYS took precedence.

Executing AUTOEXEC.BAT

Once CONFIG.SYS processing concluded, IO.SYS launched the command processor specified by the shell (typically COMMAND.COM), which subsequently looked for and processed AUTOEXEC.BAT.

During the AUTOEXEC.BAT phase, the system executed:

  • Global environment variables, primarily PATH, PROMPT, and TEMP.
  • Real-mode Terminate-and-Stay-Resident (TSR) programs (e.g., DOSKEY, legacy mouse drivers, or MSCDEX for CD-ROM access).
  • Custom batch commands required prior to entering protected mode.

Transition to Protected Mode and Driver Hand-off

At the conclusion of AUTOEXEC.BAT, the system automatically launched WIN.COM to transition the processor from 16-bit real mode into 32-bit protected mode.

During this transition, the Windows 95 Virtual Machine Manager (VMM32.VXD) and peripheral virtual device drivers (VxDs) initialized. Windows inspected the hardware to see if 32-bit protected-mode drivers were available for the devices previously claimed by real-mode drivers in CONFIG.SYS or AUTOEXEC.BAT.

If a corresponding 32-bit driver existed (such as a 32-bit protected-mode IDE driver replacing a real-mode driver, or the 32-bit CDFS replacing MSCDEX.EXE), Windows 95 intercepted the hardware calls and placed the legacy 16-bit driver into a dormant state. If no protected-mode driver was available, Windows 95 maintained the real-mode driver, utilizing "MS-DOS compatibility mode" for that subsystem, which preserved backward compatibility at the expense of system performance.