The invisible work of preparing PC BIOSes for the year 2000

Some time ago, I told stories of the anxiety on the evening of December 31, 1999 at Microsoft and at Microsoft Press.

This prompted a now-retired colleague of mine to share a story about the run-up to the year 2000.

The core kernel team had wrapped up their Windows 2000 work well before the end of the year 1999.¹ But instead of the traditional next step of having them start working on the next version of Windows, this group of really smart people were put to work on gnarly low-level problems related to the year 2000 problem.

Testing revealed that a lot of machines could not boot Windows after December 31, 1999 due to BIOS errors that dated back to the early 1990's. Microsoft contacted the manufacturers of these BIOSes with details of the problems, but some of them could not be fixed because the offending code was burned into a ROM that was not flashable. Or because the machines were so old that the manufacturers no longer supported them. Or because the manufacturers went out of business.

In the cases where no fix was forthcoming from the manufacturer, those smart people made changes to the Windows kernel to work around the buggy BIOSes.

Disaster averted. Computers continued to boot successfully on January 1, 2000.

Y2K was boring because the period of time leading up to it was very non-boring.

¹ This is not particularly surprising. The lowest layer of the operating system is at the bottom of the dependency chart, so you want it to stabilize first, so that other layers can build atop it confidently.

Comments (19)
  1. Software Engineers are the modern day Roadie. If we’re doing our job correctly, you’ll wonder if we’re doing anything at all.

  2. Eric W says:

    Out of curiosity, can you give an example of how you work around a BIOS that doesn’t support dates after 12/31/99? Do you have to repeatedly lie to it about the current date/time while maintaining some sort of internal offset so that you can remember the “real” date?

    1. I don’t know. I’m not that smart.

    2. Joshua says:

      I’m pretty sure you swap 1900 for 2000. Works until 2100 because you know Windows 2000 isn’t coming out before 2000.

      1. Um, Windows NT 4 Service Pack 5 came out in May 1999 and included Y2K fixes. Service Pack 6 came out later that year and included refinements to those fixes. Because duh: What’s the point of releasing Y2K fixes after January 1, 2000?

    3. Rosyna says:

      The date of zero was treated as a sentinel value by certain BIOSes to indicate the CMOS battery had failed. When the BIOS detected this condition, it would reset the date to the epoch date (1980).

      This “fix” is basically to skip exactly midnight on January 1st, 2000 so the date never hits the sentinel value.

  3. Daniel Neely says:

    Even today wouldn’t a fix to a major BIOS/UEFI flaw almost have to be a kludge in the OS itself? Outside of hardcore geeks no one updates the BIOS after purchase.

    1. Darran Rowe says:

      That is completely in an it depends category
      Support calls could end up with a BIOS update, and not all major flaws in a BIOS implementation are fixed by the OS.
      I have personally seen people get help for a problem that was a BIOS problem and the only way to fix the problem was an update.

    2. voo says:

      Considering that only hardcore freaks update their OS on their own, that’s not really a problem I’d say.

      Standard customers only get an update if it is sanctioned by the manufacturer and they’re pointed towards it, and even then that’s a minority. Most PCs are never updated after all.

      1. IInspectable says:

        Automatic updates are enabled by default on Windows 10. People that update their PCs are no longer a minority. In fact, it’s the hardcore freaks now, that disable automatic updates.

        1. Cube 8 says:

          Automatic updates are enabled by default on Windows XP and later.
          They are *enforced* on Windows 10.

          1. smf says:

            Only on Windows 10 Home, they aren’t enforced on Windows 10 Pro.

  4. Yuhong Bao says:

    I wonder if the bug was failing to increment the century byte in the CMOS.

    1. smf says:

      I had to add an application work round for that on an embedded platform, because the bios or os couldn’t be updated.

  5. Out of curiosity, can you share what workarounds are in the kernel for Y2K bugs?

    1. I don’t know what they are. This was just a story from a friend, not a research paper.

    2. jpa says:

      I wonder how the fixes were distributed. In my memory, I wasn’t particularly interested in downloading service packs in 1999 modem speeds. I’d probably rather have just changed date backwards in BIOS and lived with it.

      1. Windows NT 4 targeted businesses, which have things like support contracts.

      2. Yuhong Bao says:

        Of course, many of the Y2K fixes was also available as separate hotfixes.

Comments are closed.

Skip to main content