Por: Leon
ileongarcia@hotmail.com
BIOS vs. RTC: Will The Real Millennium Bug Please Stand Up?
So, youve replaced all your systems with new PCs, or youve 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 aint 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 wont have a problem with this RTC bug after all. Thats one
side of the debate, which says that PC hardware compliancy is a BIOS issue, and that
its 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 thats 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 wont 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 shouldnt 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.
Heres 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 systems 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.