Dear Noddy, there are some basic factual inconsistencies. I append the "truth" as I understand it. To avoid endless argument and pointless recriminations you have to be clinically precise. >On the motherboard is a chip (don't try and taste it, >it's disgusting, trust me) that is called the CMOS >RTC - Real Time Clock. Nope. More correctly CMOS/RTC combination. Two separate components working in collaboration. There are four separate components. RTC, CMOS, BIOS and a main memory area containing the system (e.g. DOS) date. CMOS is battery backed memory to store startup information during a poweroff. Updated by the RTC every complete second. Nonvolatile. Only Accurate to approximately one complete second. The CMOS contains the low order year digits and the high order digits (albeit at different locations). The generic problem is where the high order digits at CMOS location x'32' are not maintained. e.g. NT 4 The Y2k Tickover problem occurs where x'32' is not changed from "19" to "20" by the BIOS. In theory, the hardware is capable of operating in the range 0000-01-01 thru 9999-12-31. But the Operating system interferes and imposes restrictions. CMOS Contents x'00' Seconds x'02' Minutes x'04' Hours x'06' Day of week x'07' Day e.g. 30 x'08' Month e.g. 01 x'09' Year (lower order digits) e.g. 98 x'32' Year (high order digits) e.g. 19 The RTC is a separate device, it functions as a battery operated clock and every complete second updates the CMOS memory. Continues to operate when main power is off. Generally only used at boot time to set the System clock. Some (very few) applications read RTC direct. The BIOS is a read only memory chip containing the program code specific to the manufacturer which (inter alia): 1) Provides a manual facility (usually by pressing DEL after boot) to update CMOS date and time and other parameters) 2) to provide standard "hooks" for the OS Int routines. Nonvolatile. SYSTEM DATE resident in main memory, used by applications, varies by OS, and is set up at boot time by reading RTC via BIOS. Accurate to approximately one hundredth of a second. Accessed by Operating system Int 21 calls. Volatile. > the date was stored in two chips - one has the year >portion in a century and the other has the century. Nope. CMOS mirrors the RTC. BTW using the VIEWCMOS freebie from www.rightime.com allows you to see all this happen visually. > CMOS automatically >sets the RTC date to 1980-01-04. Nope. The RTC and CMOS mirror) actually goes back to 1900 (because x'32' is not being set to "20" in a "non-compliant" BIOS.) DOS sees the 1900, freaks, sets to zero, and because 1980 is the DOS "seed" date i.e. equal to zero, displays as 1980-01-01 or 1980-01-04. To DOS, 1980 equals Zero. DOS limits the high and low order dates because of maxima that can be stored in a FAT formatted directory structure. Nothing to do with hardware. A FAT directory entry contains 7 bits (range of values 0-127) for year and defines the year field as "year + 1980", so zero is 1980 and the maximum value is 1980+127=2107. Other Operating systems have different constraints. >Most times, the RTC date can be set using the DOS >"DATE" and "TIME" commands. Even under Windows. DATE correctly sets the CMOS x'32' position to "20". And once set, the machine will operate correctly until 2099. (Limitation in DATE command). > Somewhere, in the nether regions of >the operating system, it stores the number of days that >have elapsed since the "birth date". Interrupt 1A,A, Read System day counter, "Count of days since 1980-01-01" Very rare and limited usage. Not used to set System date. The 1A series of interrupts are to do with reading/setting the Real Time clock. Int 1A,02 gives hours, minutes,seconds Int 1A,4 gives century, year, month,day But these are only accurate to 1 second. Not sufficient for system use. RTC is used for setting the date on Boot and not much else. The RTC is used for "Alarm Clock" settings. The most common method is to use Int 21, which reads the System Clock and writes to both CMOS and the System Clock. Int 21,2A gives day of week, four-digit year, month, day Int 21,2C gives hours, minutes, seconds, hundredths of seconds From the above it can be seen that DOS is essentailly compliant because the internal binary forms it uses to read and write directories can and do work correctly into 2000 and beyond. Display is another issue. >Most applications that need the date will get it from >DOS. Some, though who knows which, actually get the >date from the RTC. Use DEBUG to scan for Int 1a B>) >See the problem? If the PC's BIOS does not update the >RTC century, then any application that reads the RTC >for the date will get the wrong date after 31 >December 1999. Not true. Int 1A gets century, IF CORRECTLY SET. What they do with it of course is a different matter B>) > And those applications that read the DOS date will >also get the wrong date after the PC is switched off. >Why? Because when you switched the PC off, then on >again, DOS read the RTC, which had reset to 1980 and >so on. DOS resets to 1980. See above. Also Not true if CMOS is correctly set for century. i.e. using DATE command >You convert it to different formats when you display >or print it. For example, we typically write 5 March >1953 as 5/3/53. Our government tends to write it as >53/03/05. The Germans would write it as 5.3.53. The >Americans would write it as 3/5/53 and so on. The cure is to use full ISO8601 YYYY-MM-DD format (1953-03-05) in all spreadsheets and databases and everywhere short form dates are used. With a US keyboard, set country=002 in config.sys. Set YMD, century on, leading zero day, month, separator "-", 24hour time in Windows. The crucial test is: set 2000-01-01 using DATE, power off, power on. If date is not correct then replacement is the only option. Thankfully very rare. If date is correct then the tickover tests can be run to determine IF you need to do a DATE command on 2000-01-01 (to condition CMOS x'32') or not. Excellent start. Big Ears.