Testing PC`s for compliance


 

 

 

 

 

Testing PC`s for year 2000 compliance means testing the RTC, the CMOS RAM, and the BIOS, and the interaction between them.

It can be done by using low level software techniques, which look directly at the output of the RTC and the data stored in the CMOS RAM, and then work out how the PC will react to the year 2000.

Or it can be done by sitting on a software layer above the BIOS, and performing actual tests on the PC, by setting dates and times, and noting results, and then doing rebooting tests, and noting the results.

The software layer most commonly used for this is DOS.

However there are software packages available which work through windows, and some which work through a network environment, enabling PC`s to be tested remotely by a system administrator.

 

Power on roll-over and reboot test

Testing roll-over from just before midnight on 1999-12-31 through to 2000-01-01 is usually the first test to be done on all testing programmes.

Just before midnight, the RTC, and the CMOS RAM will hold the data 12-31-99, and byte 50 of the CMOS RAM will hold the value 19 as the century value.

Just after midnight, the RTC and CMOS RAM will hold the data 01-01-00.

The value in byte 50 may now say 19, or 20, depending on whether the BIOS has correctly determined that the century has changed.

If the PC is now rebooted, this value of 19 or 20 may be read by the BIOS, or the BIOS may work out what century it is, and pass this information up to DOS.

Four different cases can exist -

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

In case 1, the BIOS has within it a routine which runs continuously, and which uses the pivoting technique to set byte 50 appropriately.

So whilst the RTC has the year output set to 99, the BIOS puts the value of 19 into byte 50.

When the year output of the RTC changes to 00, the BIOS puts the value of 20 into byte 50.

If the PC is then rebooted, the BIOS sends the correct century value of 20 up to DOS, and the PC is fully compliant with the year 2000 - during the power-on roll-over, the BIOS updated the century data to 20, and after the reboot the century value of 20 was maintained.

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

In case 2, the routine within the BIOS to do century pivoting does not run continuously, it only runs as part of the boot-up sequence.

So after the power-on roll-over, the century data in byte 50 is not changed - it stays at 19 - the BIOS has not worked out that the century has changed.

The RTC is showing the year information as 00, and byte 50 is showing the century information as 19 - so if the year and century data is read from the CMOS RAM, the year 1900 is passed on.

However as DOS only reads this information at boot-up, the seperate DOS clock ignores this wrong information, and provides the correct information to application software sitting above it.

If, however, the PC is now rebooted, the pivoting routine in the BIOS runs once, and updates the century information in byte 50 from 19 to 20.

This value of 20 is passed up to DOS as part of the boot-up sequence, and the PC is now in the twenty first century.

So although the PC is not strictly compliant, it is effectively compliant provided it is running DOS and Windows, as the first time the PC is rebooted after the roll-over, it sets itself up correctly.

Note that testing software that looks directly at the output of the BIOS and or the RTC, and does not do a reboot test, will always fail this kind of BIOS, and state that the PC is not compliant.

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

In case 3, the BIOS does not contain any kind of routine which looks at the century value, either dynamically or at boot-up.

This kind of PC will always fail the above test, however the PC is quite useable after the start of 2000-01-01, provided the date is entered manually.

To ascertain if a PC fits in to this case, the next test can be performed :-

 

Manual date reset and reboot

If the PC has failed the above tests, ie, it is not compliant, the next test can ascertain whether the PC is compatible with the year 2000.

For this test, the date is preset to the year 2000. This can be done by entering CMOS set up during boot up, but is more commonly done by using the date command within DOS, or within Windows.

The date entered through DOS or Windows feeds down to the BIOS, and the BIOS sets byte 50 within the CMOS RAM to the value of 20.

Then when the PC is rebooted, the BIOS reads the CMOS RAM, gets the value 20, sends that up to DOS, and the PC is now functioning normally.

As the value of 20 is now stored in byte 50, every subsequent time the PC is rebooted, this value of 20 is sent up to DOS, and the PC will function normally thereafter.

The PC is therefore compatible with the year 2000 - once it is set, it works normally.

The essential essence of this kind of PC is that the BIOS does not contain any kind of century pivoting routine, and in fact does no century data processing of any kind - it merely transfers through itself the century data from some other source.

 

If a PC fails all these tests

This is case 4.

As shown on the previous webpage, it is possible to get a BIOS that just insists on putting the value of 19 into byte 50 of the CMOS RAM.

Such a BIOS will always send the value of 19 up to DOS, and DOS will always set itself to 1980.

PC`s with this kind of BIOS will fail all these tests, and are neither compliant nor compatible with the year 2000.

 

Leap year tests

The neccessity of doing leap year testing on PC`s appears to be a matter of opinion - some testing programmes include it, and some argue that it is not rquired.

Leap year testing usually examines whether the year 2000 is treated as a leap year, and is done by rolling over from 2000-02-28 to 2000-02-29.

Some testing programmes add a test for roll-over from 2000-02-29 to 2000-03-01.

Some testing programmes add other tests such as whether the year 2004 is treated as a leap year, or whether years such as 1999, 2001, 2002, 2003, 2005, etc, are not treated as leap years.

Any leap year tests done where it is not possible to examine the output of the RTC or CMOS RAM must include a reboot for each date tested - otherwise it is the performance of DOS or Windows which is being tested, not the performance of the RTC.

 


© 1999 Ron Turner


Return to the Year 2000 index page