BIOS


 

 

 

 

 

When the computer is switched on, during the boot up sequence, the BIOS reads the RTC, and sets the date and time in the operating system.

Thereafter, neither the operating system nor the BIOS consult the RTC about the time and date.

The BIOS drives the date and time in the operating system through a counter which is driven at 18.2 times per second, and this forms what is known as the system clock.

Because the system clock only looks at the RTC at boot up, the two clocks run independently as long as the PC is running - and in fact if the computer is switched on for a long time, the two clocks can drift apart.

The problem with year 2000 compliance comes from the fact that the RTC outputs only two digits for the year - it does not therefore indicate to the BIOS what the century is. The BIOS has to work this out for itself, or obtain the information from elsewhere.

In the past, it was quite acceptable to assume that the date given by the RTC was 19**, however as from midnight on 1999-12-31, the RTC will output a year date that looks like 00, and the BIOS might assume this to be 1900.

Some PC`s already have the capability to advise the BIOS what the century is - two techniques are used :-

  • Byte 50 is used in the CMOS chip to store century information - on boot up the BIOS reads the RTC and this byte, and puts the two together to form the century + year to set the system clock.

    This is fine at boot up, but no use once the PC is running.

  • The BIOS incorporates a software routine which enables a procedure which is known as century inferencing, windowing, or pivoting.

    A pivot date is decided upon - say 85.

    If the year output of the RTC is above this value, then the BIOS assumes that the century is 19**.

    And if the output of the RTC is below this value, then the BIOS assumes that the century is 20**.

    So for example, if the RTC output is 98, the BIOS assumes 1998; if the RTC output is 03, the BIOS assumes 2003.

    This process might either be run continuously within the BIOS as time passes, or else might only be done during the boot up sequence.

The century data that is stored in byte 50 of the CMOS RAM has to be entered by one of the following methods :-

  1. It can originate by a user entering CMOS set up during the boot up sequence, and entering the date.

  2. It can originate by a user entering the date via DOS or Windows - DOS feeds the BIOS, and the BIOS feeds byte 50.

  3. It can be originated by the BIOS, which has worked out which century it currently is, by looking at the two digits coming from the RTC, and applying the pivot technique to deduce the correct century, but only at boot up.

  4. It can be originated by the BIOS applying the pivot technique to deduce the correct century on an ongoing basis.

------------------------------

If method 4 works in any particular PC, then that PC is year 2000 compliant.

If the PC is powered on through midnight on 1999-12-31, the BIOS will immediately detect that the two digit year data from the RTC has rolled over from 99 to 00, apply the pivot technique, and update the CMOS RAM.

------------------------------

If method 3 works in any particular PC, then the PC is not strictly year 2000 compliant, as the PC has to be rebooted before it knows that the year is 2000.

However if the operating system above the BIOS has its own clock that is compliant, most applications will not be aware that the BIOS has not updated byte 50, and will work normally after midnight on 1999-12-31.

During the next reboot, the BIOS will run the pivoting technique, update the CMOS RAM byte 50, and pass the correct date up to the operating system.

------------------------------

If the BIOS in a particular PC does not have a pivoting technique within it, the only way that the century data in byte 50 can be updated is by manually typing in the correct date, either by entering CMOS set up during the boot up sequence, or by using the appropriate routines in the operating systems.

Note however that DOS versions before 3.2 do not update the CMOS RAM contents, it has to be done through CMOS set up.

PC`s in this category can be described as compatible with the year 2000 - they have to be manually told that the century has changed, but thereafter they remember it.

It is probable that PC`s with this kind of BIOS can be upgraded by the application of a software fix which adds a pivot technique routine to the BIOS. This can enable the PC to go from the compatible category to the compliant category. However not all BIOS respond to this.

------------------------------

Finally, note that the possibility exists of BIOS which is so badly designed that it always puts the number 19 into byte 50, even if the number 20 is entered manually.

A PC with such a BIOS will always indicate the year as 19**, and the operating system clock will show a spurious date.

The only cure for this is to replace the BIOS.

 


© 1999 Ron Turner


Return to the Year 2000 index page