home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 August / Chip_1999-08_cd.bin / zkuste / Y2K / FPro / EXPLAIN.TXT < prev    next >
Text File  |  1998-02-16  |  11KB  |  228 lines

  1. MILLENNIUM PROBLEMS EXPLAINED
  2.  
  3. Contents:
  4.  
  5. 1. Brief History
  6. 2. The Power On Rollover Test
  7. 3. The Power Off Rollover Test
  8. 4. The Power Off Hold Test
  9. 5. Leap Year Tests
  10. 6. Power on, rollover CMOS test
  11. 7. Summary
  12.  
  13. <PAGE>
  14. 1. Brief History
  15. ----------------
  16.  
  17. The Year 2000 hardware problem in PCs has its roots in the early 1980s when
  18. the IBM model AT was designed. This was the first IBM "Personal Computer"
  19. to have the time and date function included as part of the system. Until
  20. then, its predecessors, the PC and the XT required that the user enter the
  21. time and date as part of the "Boot Up" sequence.
  22.  
  23. To overcome this irritating feature, and also to allow other configuration
  24. information about the system to be retained whilst the PC is switched off,
  25. the 'CMOS' was added as part of the new design. The CMOS is a small but
  26. smart memory chip that contains a Real Time Clock (RTC) running
  27. independently of the rest of the PC. In articles and books this chip is
  28. sometimes referred to as CMOS, sometimes RTC and sometimes CMOS/RTC. This
  29. can be confusing until one realises that they all refer to the same chip on
  30. the motherboard. The easiest way of understanding what this chip does is
  31. to visualise half the chip as a clock generating time and date, and the
  32. other half as a storage space which holds the system setup information
  33. (i.e. all the parameters that are lost should the battery be disconnected
  34. or fail).
  35. <PAGE>
  36. To generate the time and date function, the designers selected a RTC/CMOS
  37. chip which unfortunately only had two digits to represent the year. As the
  38. year 2000 seemed then an impossibly long time in the future, they neglected
  39. to include code in the BIOS (Basic Input Output System) to manage the
  40. century roll over when the Real Time Clock reached the end of the year 99.
  41.  
  42. This absence of instructions for handling the roll over can result in the
  43. date in some PC clocks resetting to 1980 or sometimes a random date.
  44.  
  45. Experienced users will have noticed a similar phenomenon when the backup
  46. battery is disconnected or fails.
  47. <PAGE>
  48. In most PCs, the two digits required for the century (i.e. 19 or 20) are
  49. stored in one of the memory locations (32H) which must be updated by the
  50. main processor (CPU). This is because the Real Time Clock only updates two
  51. digits for the year (i.e. 97 or 98) automatically.
  52.  
  53. The BIOS was a design feature of the IBM range of PCs. This provides an
  54. interface to allow any type of operating system (e.g. MS-DOS, UNIX and OS/2)
  55. to find the system information it requires (e.g. time, date, disk operations
  56. and some video functions). These information access points in the BIOS are
  57. referred to by programmers as "software interrupts". The idea behind the
  58. BIOS is not only to allow the use of varying operating systems but also to
  59. enable the hardware components to be changed or upgraded without re-writing
  60. the operating system code.
  61. <PAGE>
  62. Interestingly, the BIOS maintains a separate clock from the CMOS/RTC and
  63. this is available for the operating system (OS) should it wish to use it.
  64. This clock in the BIOS counts in "ticks" that are generated 18.207 times a
  65. second from a different source to the RTC. This "tick" counter is reset to
  66. zero at midnight every day and at this point the operating system must
  67. update its record of the date. This was the original clock used in the PC
  68. and XT models which of course had no RTC/CMOS. Instead of the user entering
  69. the time and date for this clock when the PC is switched on, the "starting
  70. information" is obtained from the stored information in the RTC/CMOS. These
  71. "ticks" are often referred to as "DOS ticks" since some operating systems,
  72. notably MS-DOS, use them to maintain a third (OS) clock.
  73.  
  74. The [7 software shows three distinct clocks and their behaviour when
  75. the range of tests is run.
  76.  
  77. <PAGE>
  78. 2. The Power On Rollover Test
  79. -----------------------------
  80.  
  81. As the Real Time Clock (in most systems) only has the last two digits for
  82. the year, the first two digits i.e. the century, has to be generated and 
  83. stored in a separate location within the CMOS memory (which is the battery-
  84. backed storage area integral to the Real Time Clock chip). This is the
  85. reason why the century data is not automatically updated by the Real Time
  86. Clock as its two digit year rolls over from 99 to 00.
  87.  
  88. The usual cause of rollover non-compliance is when the BIOS does not
  89. recognise the end of a century. Although all BIOSs should present the year
  90. as four digits, the offending BIOSs always return '19' as the first two
  91. century digits when the last two digits have rolled over. This means that
  92. when the date changes to the year 2000, a non-compliant BIOS may tell the
  93. operating system that the date is 1st Jan 1900.
  94.  
  95. With power applied, most operating systems maintain their own clock and do
  96. not continuously check the date reported by the BIOS. In these cases, the
  97. date may appear to be correct initially but when, eventually, the operating
  98. system reads the date from the BIOS it will read the year 1900.
  99. <PAGE>
  100. Most operating systems do not understand dates before 1980; this can cause
  101. unpredictable results. Usually the operating system will interpret the date
  102. 1st Jan 1900 as 4th Jan 1984 although a completely random date is sometimes
  103. generated.
  104.  
  105. The basic concept of the RTC generating the date and time, passing it to the
  106. BIOS, which in turn passes it to the operating system, which in turn passes
  107. it to software applications is an oversimplification. Some software 
  108. applications do obtain their date and time from the operating system, 
  109. however, other software applications (quite legitimately) bypass the
  110. operating system and obtain their date and time from the BIOS.
  111.  
  112. We suspect that the writers of application software would not (until
  113. recently) have considered the future impact of the non-compliant rollover.
  114.  
  115. The result of software applications reading the year 1900 directly from the
  116. BIOS is totally unpredictable. 
  117.  
  118. This testing software checks at year 2000 rollover (with power applied) that:
  119. 1. the operating system provides the correct date and time, and
  120. 2. the BIOS provides the correct date and time.
  121. <PAGE>
  122. 3. The Power Off Rollover Test
  123. ------------------------------
  124.  
  125. It is necessary to perform the power off rollover test so as to
  126. check if the date is corrected during the initialisation of the BIOS.
  127.  
  128. At boot up, the BIOS performs additional functions which involves the 
  129. initialisation of the RTC/CMOS. This cannot be checked by the power on
  130. rollover test.
  131.  
  132. Some BIOSs will check the date at this stage for a valid value, although
  133. the rules used to determine validity vary depending on manufacturer.
  134.  
  135. It is important to note that most systems do not perform a complete boot
  136. unless the power switch is switched off and then on again (A "soft boot"
  137. using CTRL-ALT-DEL performs an abbreviated boot which does not reset all
  138. components). It has also been observed that in a few systems a complete
  139. boot is only performed if the PC is switched off for several minutes.
  140. For the technically minded, this phenomenon may be attributed to charge
  141. retention in the main memory area coupled with poor checks on data integrity
  142. during initialisation.
  143. <PAGE>
  144. 4. The Power Off Hold Test
  145. --------------------------
  146.  
  147. In systems that do not rollover correctly, it may be that if the user sets
  148. the date manually, then the correct date will be held. However, not all
  149. systems will allow the date to be set to 2000 at all, as during the boot
  150. sequence the century resets to a hard code '19'.
  151.  
  152. This software checks for the ability of the year 2000 to be set and held.
  153.  
  154. Please note that it is still possible for your PC to be manually rolled over
  155. to the year 2000 correctly and then some (badly written) application
  156. software could subsequently reset the date to a year prior to 2000.
  157. <PAGE>
  158. 5. Leap Year Tests
  159. ------------------
  160. We have yet to find a Real Time Clock chip fitted to any PC which will
  161. function incorrectly with respect to leap years until the year 2099.
  162.  
  163. The basic rule used to determine which years are "Leaps" is that Leap years
  164. are divisible by four. The second rule (or exception to the first rule) is
  165. that years divisible by 100 are NOT Leap years. A third rule (or exception
  166. to the second rule) is that years divisible by 400 ARE Leap years.
  167.  
  168. This means that since the year 2000 IS a leap year, the Real Time Clock
  169. correctly inserts the 29th February. The BIOS should not care about
  170. Leap years and should merely report the date according to the Real Time
  171. Clock.
  172.  
  173. Many scare stories have been circulated about the so called "Leap year
  174. problem" but clearly, as far as the hardware is concerned, there is no Leap
  175. year problem until the year 2100.
  176.  
  177. Nevertheless, tests are included within this software so as to provide the
  178. user with the confidence that the Leap years are handled correctly by the
  179. system.
  180. <PAGE>
  181. 6. Power on, rollover CMOS test
  182. -------------------------------
  183.  
  184. Some application software ignores conventional rules and ignores both the
  185. operating system and the BIOS, and reads the date and time directly from the
  186. Real Time Clock and CMOS. This is generally regarded as bad practice.
  187. However, several existing pieces of commercially available software do just
  188. this.
  189.  
  190. This will only be a problem in a limited number of situations where the PC
  191. is left switched on over the rollover period and is running software which
  192. accesses the CMOS directly. 
  193.  
  194. To correct this rare situation, the BIOS or "fix" must monitor the CMOS
  195. directly and rollover the century digits correctly.
  196. <PAGE>
  197.  
  198. A specific location has become the standard for storing the century digits.
  199. However, some systems introduced recently are using a new Real Time Clock
  200. chip which uses four digits for the year with century digits located in a
  201. different location. Any software which directly accesses the CMOS may not
  202. be able to find the new location of the century data and a myriad of
  203. problems can be foreseen.
  204.  
  205. Therefore, a test is provided in this software to check for the CMOS rollover
  206. at the standard location.
  207. <PAGE>
  208. 7. Summary
  209. ----------
  210.  
  211. All of the above tests, together with the ability to examine the BIOS data
  212. gives the user a 100% method of determining whether their PC is year 2000
  213. compliant.
  214.  
  215. The [7 software allows the user to assess whether they need to fit a 
  216. [1 MILLENNIUM BIOS BOARD.
  217.  
  218. Try running the test software with and without the card.
  219.  
  220.  
  221.  
  222.  
  223.  
  224. (IBM, XT and AT are registered trademarks of IBM Ltd. MS-DOS is a registered
  225. trademark of Microsoft Ltd. All other trademarks and copyrights are 
  226. acknowledged.)
  227.  
  228. <17/FEB/1998>