home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1999 August
/
Chip_1999-08_cd.bin
/
zkuste
/
Y2K
/
FPro
/
EXPLAIN.TXT
< prev
next >
Wrap
Text File
|
1998-02-16
|
11KB
|
228 lines
MILLENNIUM PROBLEMS EXPLAINED
Contents:
1. Brief History
2. The Power On Rollover Test
3. The Power Off Rollover Test
4. The Power Off Hold Test
5. Leap Year Tests
6. Power on, rollover CMOS test
7. Summary
<PAGE>
1. Brief History
----------------
The Year 2000 hardware problem in PCs has its roots in the early 1980s when
the IBM model AT was designed. This was the first IBM "Personal Computer"
to have the time and date function included as part of the system. Until
then, its predecessors, the PC and the XT required that the user enter the
time and date as part of the "Boot Up" sequence.
To overcome this irritating feature, and also to allow other configuration
information about the system to be retained whilst the PC is switched off,
the 'CMOS' was added as part of the new design. The CMOS is a small but
smart memory chip that contains a Real Time Clock (RTC) running
independently of the rest of the PC. In articles and books this chip is
sometimes referred to as CMOS, sometimes RTC and sometimes CMOS/RTC. This
can be confusing until one realises that they all refer to the same chip on
the motherboard. The easiest way of understanding what this chip does is
to visualise half the chip as a clock generating time and date, and the
other half as a storage space which holds the system setup information
(i.e. all the parameters that are lost should the battery be disconnected
or fail).
<PAGE>
To generate the time and date function, the designers selected a RTC/CMOS
chip which unfortunately only had two digits to represent the year. As the
year 2000 seemed then an impossibly long time in the future, they neglected
to include code in the BIOS (Basic Input Output System) to manage the
century roll over when the Real Time Clock reached the end of the year 99.
This absence of instructions for handling the roll over can result in the
date in some PC clocks resetting to 1980 or sometimes a random date.
Experienced users will have noticed a similar phenomenon when the backup
battery is disconnected or fails.
<PAGE>
In most PCs, the two digits required for the century (i.e. 19 or 20) are
stored in one of the memory locations (32H) which must be updated by the
main processor (CPU). This is because the Real Time Clock only updates two
digits for the year (i.e. 97 or 98) automatically.
The BIOS was a design feature of the IBM range of PCs. This provides an
interface to allow any type of operating system (e.g. MS-DOS, UNIX and OS/2)
to find the system information it requires (e.g. time, date, disk operations
and some video functions). These information access points in the BIOS are
referred to by programmers as "software interrupts". The idea behind the
BIOS is not only to allow the use of varying operating systems but also to
enable the hardware components to be changed or upgraded without re-writing
the operating system code.
<PAGE>
Interestingly, the BIOS maintains a separate clock from the CMOS/RTC and
this is available for the operating system (OS) should it wish to use it.
This clock in the BIOS counts in "ticks" that are generated 18.207 times a
second from a different source to the RTC. This "tick" counter is reset to
zero at midnight every day and at this point the operating system must
update its record of the date. This was the original clock used in the PC
and XT models which of course had no RTC/CMOS. Instead of the user entering
the time and date for this clock when the PC is switched on, the "starting
information" is obtained from the stored information in the RTC/CMOS. These
"ticks" are often referred to as "DOS ticks" since some operating systems,
notably MS-DOS, use them to maintain a third (OS) clock.
The [7 software shows three distinct clocks and their behaviour when
the range of tests is run.
<PAGE>
2. The Power On Rollover Test
-----------------------------
As the Real Time Clock (in most systems) only has the last two digits for
the year, the first two digits i.e. the century, has to be generated and
stored in a separate location within the CMOS memory (which is the battery-
backed storage area integral to the Real Time Clock chip). This is the
reason why the century data is not automatically updated by the Real Time
Clock as its two digit year rolls over from 99 to 00.
The usual cause of rollover non-compliance is when the BIOS does not
recognise the end of a century. Although all BIOSs should present the year
as four digits, the offending BIOSs always return '19' as the first two
century digits when the last two digits have rolled over. This means that
when the date changes to the year 2000, a non-compliant BIOS may tell the
operating system that the date is 1st Jan 1900.
With power applied, most operating systems maintain their own clock and do
not continuously check the date reported by the BIOS. In these cases, the
date may appear to be correct initially but when, eventually, the operating
system reads the date from the BIOS it will read the year 1900.
<PAGE>
Most operating systems do not understand dates before 1980; this can cause
unpredictable results. Usually the operating system will interpret the date
1st Jan 1900 as 4th Jan 1984 although a completely random date is sometimes
generated.
The basic concept of the RTC generating the date and time, passing it to the
BIOS, which in turn passes it to the operating system, which in turn passes
it to software applications is an oversimplification. Some software
applications do obtain their date and time from the operating system,
however, other software applications (quite legitimately) bypass the
operating system and obtain their date and time from the BIOS.
We suspect that the writers of application software would not (until
recently) have considered the future impact of the non-compliant rollover.
The result of software applications reading the year 1900 directly from the
BIOS is totally unpredictable.
This testing software checks at year 2000 rollover (with power applied) that:
1. the operating system provides the correct date and time, and
2. the BIOS provides the correct date and time.
<PAGE>
3. The Power Off Rollover Test
------------------------------
It is necessary to perform the power off rollover test so as to
check if the date is corrected during the initialisation of the BIOS.
At boot up, the BIOS performs additional functions which involves the
initialisation of the RTC/CMOS. This cannot be checked by the power on
rollover test.
Some BIOSs will check the date at this stage for a valid value, although
the rules used to determine validity vary depending on manufacturer.
It is important to note that most systems do not perform a complete boot
unless the power switch is switched off and then on again (A "soft boot"
using CTRL-ALT-DEL performs an abbreviated boot which does not reset all
components). It has also been observed that in a few systems a complete
boot is only performed if the PC is switched off for several minutes.
For the technically minded, this phenomenon may be attributed to charge
retention in the main memory area coupled with poor checks on data integrity
during initialisation.
<PAGE>
4. The Power Off Hold Test
--------------------------
In systems that do not rollover correctly, it may be that if the user sets
the date manually, then the correct date will be held. However, not all
systems will allow the date to be set to 2000 at all, as during the boot
sequence the century resets to a hard code '19'.
This software checks for the ability of the year 2000 to be set and held.
Please note that it is still possible for your PC to be manually rolled over
to the year 2000 correctly and then some (badly written) application
software could subsequently reset the date to a year prior to 2000.
<PAGE>
5. Leap Year Tests
------------------
We have yet to find a Real Time Clock chip fitted to any PC which will
function incorrectly with respect to leap years until the year 2099.
The basic rule used to determine which years are "Leaps" is that Leap years
are divisible by four. The second rule (or exception to the first rule) is
that years divisible by 100 are NOT Leap years. A third rule (or exception
to the second rule) is that years divisible by 400 ARE Leap years.
This means that since the year 2000 IS a leap year, the Real Time Clock
correctly inserts the 29th February. The BIOS should not care about
Leap years and should merely report the date according to the Real Time
Clock.
Many scare stories have been circulated about the so called "Leap year
problem" but clearly, as far as the hardware is concerned, there is no Leap
year problem until the year 2100.
Nevertheless, tests are included within this software so as to provide the
user with the confidence that the Leap years are handled correctly by the
system.
<PAGE>
6. Power on, rollover CMOS test
-------------------------------
Some application software ignores conventional rules and ignores both the
operating system and the BIOS, and reads the date and time directly from the
Real Time Clock and CMOS. This is generally regarded as bad practice.
However, several existing pieces of commercially available software do just
this.
This will only be a problem in a limited number of situations where the PC
is left switched on over the rollover period and is running software which
accesses the CMOS directly.
To correct this rare situation, the BIOS or "fix" must monitor the CMOS
directly and rollover the century digits correctly.
<PAGE>
A specific location has become the standard for storing the century digits.
However, some systems introduced recently are using a new Real Time Clock
chip which uses four digits for the year with century digits located in a
different location. Any software which directly accesses the CMOS may not
be able to find the new location of the century data and a myriad of
problems can be foreseen.
Therefore, a test is provided in this software to check for the CMOS rollover
at the standard location.
<PAGE>
7. Summary
----------
All of the above tests, together with the ability to examine the BIOS data
gives the user a 100% method of determining whether their PC is year 2000
compliant.
The [7 software allows the user to assess whether they need to fit a
[1 MILLENNIUM BIOS BOARD.
Try running the test software with and without the card.
(IBM, XT and AT are registered trademarks of IBM Ltd. MS-DOS is a registered
trademark of Microsoft Ltd. All other trademarks and copyrights are
acknowledged.)
<17/FEB/1998>