PROBLEMA DEL AŅO 2000


Por: Leon
ileongarcia@hotmail.com


BIOS vs. RTC:  Will The Real Millennium Bug Please Stand Up?

So, you’ve replaced all your systems with new PCs, or you’ve run one of the many available Y2K compliance tests, and it gave your machines a pass.  That should take care of the Y2K bug for you, at least on the hardware side of things, right?  Well, like the song says, “It ain’t necessarily so”.  There is a major debate in the industry these days about just what constitutes compliance for a PC

This debate could have important repercussions for you and your business.  Enormous amounts of money are at stake, not the least of which is the billions of dollars in litigation predicted as a consequence of this “Y2K Bug”.  Anywhere you find that much heat, you can expect a lot of smoke, as well.  The debate centers around a single byte of information, located in the CMOS memory of your computer.  This byte contains the number 19, and hopefully next year, it will contain the number 20.  How and when it gets changed from 19 to 20 is the subject of this article.

There is a small chip on the motherboard of each computer called the Real Time Clock, usually abbreviated as the RTC.  This chip generates a high frequency signal, which it divides down into seconds, minutes, years, etc., and it stores this data in a particular section of the memory known as the CMOS, often located on the same chip.   However, nearly all the RTC chips in existence only provide the last two digits of the year, but not the century digits.  In the beginning this was no problem, of course.  The century was 19.  Everybody knew it, and nobody questioned it.    When the Y2K issue began to be addressed a few years ago, the easiest solution for this particular aspect of it was to change the BIOS, those basic computer instructions that allow a computer to boot itself up.  Just add a few lines of code, so the BIOS can keep track of the century.  The BIOSes would need to be upgraded anyway, and it was certainly easier than re-designing the motherboard to accommodate an RTC with two more digits.  A BIOS that properly makes the transition from 19 to 20 is considered to be “Y2K compliant”, and a computer with such a BIOS can also be considered compliant.  Or not, depending who you ask.

The problem that still remains has to do with those application programs that use dates, and just how they get those dates.  Most of the popular off-the-shelf programs will just ask the BIOS for the date. This is now considered the “acceptable” programming procedure.  There is a standard interrupt built into the system for this that an application can use.  Whenever this interrupt is called, the Y2K-compliant BIOS will check to see whether a century rollover has occurred, update the CMOS, and return the proper date to the application which requested it. 

However, many specialty and custom programs will get the date directly from the RTC.   There is no law against it, and the natural inclination of many programmers has been to get the necessary data with as few intervening lines of code as possible.   From this perspective, it made complete sense to use the RTC rather than the BIOS as a date source.  There are even some very well-known and wide-spread operating systems that do this, which shall remain nameless in this article. 

With the benefit of hindsight, and knowing that most RTCs cannot update the century byte, you may sense a potential disaster in the making, and you may well be right.   However, saving the day for many of us is the fact that each time the computer boots up, a compliant BIOS will test for the rollover and update the CMOS accordingly.   The simple solution then (as long as you are sure your BIOS is compliant) is to turn your computers off next New Years Eve.  When you turn them back on in the Year 2000, you might want to do a little test run on any of your date-sensitive operations before you get down to real business, just for insurance.  But this means that many of us, perhaps most, really won’t have a problem with this RTC bug after all.   That’s one side of the debate, which says that PC hardware compliancy is a BIOS issue, and that it’s already solved.  This viewpoint is heartily endorsed by virtually all of the manufacturers and vendors of computers, motherboards and BIOS upgrades, as well as a host of Y2K plug-in solutions known as “BIOS boards”.   All of these parties claim their products are Y2K-compliant, but if you read their compliancy statements you will find very carefully worded qualifications such as “applications must use standard date/time interrupts” or “must get dates from the BIOS, not from the RTC”.

The other side of the debate says that’s all well and good for you, but what about the rest of us?  No one is sure exactly how many applications are out there that use the RTC directly, but many of these custom programs are also the most mission-critical, and quite a few run on servers, process-control or other real-time systems which cannot be conveniently shut down overnight.  What can people do in these situations?   Replacing the PCs won’t necessarily do it, because the new machines will almost certainly still have non-compliant RTCs.  A large variety of software Y2K patches and “BIOS boards” are available, but these all basically correct the BIOS, not the RTC. 

Many of the Y2K compliance tests, free and otherwise, are provided by these same suppliers.  It shouldn’t come as too much of a surprise to learn that most of these tests only check the BIOS, not the RTC.  To be really useful, a test must have separate clearly-defined routines for the BIOS and for the RTC, and should explain the significance of failures in either component.

Fortunately, there are a couple of inexpensive plug-in Y2K solutions that have their own RTC chips, and can take over those functions from the motherboard.  One of the most popular of these for PCs is called the Centurion.  Information and a free Y2K test can be found at www.micro2000.com.  The other alternative is to change the software, either modifying it to call the BIOS for dates, or switching to a more compliant off-the-shelf package, if one is available.  If your software uses 2-digit date fields instead of 4-digit, you may need to do this anyway no matter what your BIOS and RTC are doing.

Here’s a battleplan for you. 
1. Find a good test that looks at both the RTC and BIOS, and test all of your systems.  
2. List out what software is running on each system, and determine which is date-critical.
3. If possible, set a system’s date to next year and take the programs for a trial run.
4. Determine which systems need help, and which of these fixes is the most appropriate:
a. Replace the system.
b. Upgrade the BIOS (or the whole motherboard).
c. Install a BIOS-only correction card or software patch.
d. Install an RTC / BIOS correction card (such as Centurion)
e. Just turn the machine off during the century roll-over.
f. Upgrade or replace the application software.
g. Hold hands and pray.
5. Get your chosen solutions installed, preferably months before New Years.
6. Shortly before New Years, do a full back-up of each mission-critical system.
7. After New Years, carefully check dates in all computer-generated documents.
8. Get on with life in the new millennium.