Skip to main content
5 of 9
added 890 characters in body
user3840170
  • 25.5k
  • 4
  • 101
  • 163

Yes, just barely.

The basic problem is twofold:

  • MS-DOS, and therefore versions of Windows based on it, will assume the presence of a floppy drive even if one is not reported as present by the firmware. This is because DOS was originally written for systems which definitely had at least one floppy drive, but not necessarily any interrupt services for probing drive presence and type (interrupt 0x13 service 0x15 and service 8). Therefore, if the firmware reports there is no floppy drive present, DOS will simply interpret this as the respective firmware services not being reliable and will assume the presence of one 40-track 5¼″ drive. This assumption has not been updated in later versions, since even by the time of Windows 9x floppy-less systems were a relative rarity.
  • Windows 9x, though it has its own native, protected-mode disk drivers, can still fall back to using DOS drivers if no native driver successfully reclaims responsibility for a given disk drive. Therefore if no native floppy drivers successfully load, Windows will simply continue using DOS drivers to access the drive that DOS claims to exist.

As such, the goal is to disable the DOS floppy driver before Windows starts. To that end, you should be able to assemble my NOFDD program on your machine and run it from DOS mode to disable the floppy drive. I am not sure if this counts as an ‘additional tool’; although it is not a binary that comes with the stock system, it’s also not something you have to download or copy from somewhere else, but a program you can generate yourself entirely on your machine, using only utilities coming with a vanilla Millennium installation.

There is a complication, though: Windows Millennium in particular has been designed to make it very hard to run DOS software before Windows starts. To actually get the NOFDD program to run at system startup, you will have to hack the system to make it process CONFIG.SYS and AUTOEXEC.BAT and invoke the utility from either (preferably, from an INSTALL= directive in CONFIG.SYS). Though patching the system in the usual way usually involves external tools, for the most part that can be side-stepped by extracting versions of IO.SYS and COMMAND.COM found inside the CAB file TOOLS\NETTOOLS\FAC\LTOOLS.DTA found on the Windows Millennium installation CD. Extracting those files can be done with Microsoft’s own EXTRACT.EXE, which also comes with Windows itself. There is also REGENV32.EXE to take care of, but you can patch it using MS-DOS Editor’s binary file mode: create a backup copy of C:\WINDOWS\SYSTEM\REGENV32.EXE, then in a command prompt launch EDIT /78 C:\WINDOWS\SYSTEM\REGENV32.EXE and replace occurrences of _:\AUTOEXEC.BAT and _:\CONFIG.SYS with other file paths of exactly the same length.

I suppose writing a VxD driver would be a cleaner solution for that particular version of Windows, but that would be more involved, and definitely violate your ‘no additional tools’ requirement.

The same NOFDD executable can be used with Windows 95 and 98, though those versions don’t need to be hacked to process CONFIG.SYS, so the process is much simpler: you just add the INSTALL= directive there once and forget about it.

user3840170
  • 25.5k
  • 4
  • 101
  • 163