BugFix ver, 4.0 Please read the operating instructions and notes before using this product. *************************************************************************** This program is intended to run on IBM or IBM compatible P.C.s with MS DOS 3.3 or above, Windows3.x, Windows95 or Windows98 operating systems. BugFix will: Test the BugFix executable file for infection by virus. Test your P.C. for Millennium compliance by ensuring that the date provided by the P.C. clock will automatically roll-over to the correct date at the turn of the century, the 28th of February 2000 and the 28th of February 2040. Test all years between 1999 and 2041 for date recognition and retrieval. Ensure the system clock recognizes all leap years between 1999 and 2041. Provide an optional power off/on date retention test for maximum security. Install a permanent fix into non compliant P.C.s. Record individual test results on the P.C.s hard disk. (MM?INFO.TXT) Produce a millennium compliance certificate. Displays the test result on your computer screen. This document is divided into the following sections. 1: Operating instructions 2: Post installation messages 3: Power off/on date retention test. 4: General notes (including important reformat information) 5: Mm?info.txt file description 6: The meaning of time and how it all began. 7: BIOS patch information 8: BugFix test sequence 9: Virus protection ******************** [1] Operating Instructions. This product consists of the following files GO.EXE, GO.PIF, README.TXT and Y2kORDER.TXT, you can download them from a web site and copy them as often as you like, you can even run BugFix and test any IBM compatible personal computer free of charge if you adhere to the following conditions. 1: You must read and accept the licensing and disclaimer statement. 2: You may not re-sale or in any way profit from the re-sale of this product. 3: You must purchase a key for each and every computer you intend to repair by installing the BIOS patch incorporated within this product. This product can be installed on floppy disk, hard disk or network server. To start the program, type "GO" from the directory containing the program files or use the Windows RUN option. You will be asked to accept the license conditions by entering the key. Keys can be obtained from the web site and will allow you to run the program as often as you like on one computer. If you would rather test the computer prior to purchasing a key (recommended) enter 9999 and the program will perform a test (but not a fix) free of charge. The program will run, test and assuming you have purchased a fix, repair non compliant computers. ******************** [2] Post installation messages. When the P.C. is re-started it may display a message, informing the user of the equipment's hardware compliance level. The message will appear in one of two colors, and remain visible for three seconds. Usually a green message indicating the P.C. is millennium compliant, will be displayed. A red message will indicate a possible hardware compliance problem. Equipment that required the installation of a software patch to make it millennium compliant will be tested to ensure the patch is installed and operational. In the unlikely event that this proves not to be the case, the normal compliance message will not be displayed. Note: The green compliance message will only be displayed if all tests (including the power off/on date retention test) is successfully completed. A yellow reminder label will be displayed during the power off/on test, for more information refer to the following section. ******************** [3] Power off/on date retention test. An optional test for date retention during the power off/on phase is included with this product. This test will set the computer RTC date to the same month and day in the year 2000 and then ask the computer user to switch the computer off and then on again. The test program is re-run, the date is checked for compliance and the correct date is restored. This option will be offered if previous tests found the computer to be compliant. As a precautionary measure, if you have programs with license expiry dates before the 1st of January 2001 please ensure they are not running and will not be run during the power off/on re-boot cycle. You are strongly advised to run this test as certain BIOS irregularities cannot be detected by any other method. Please adhere to the sequence shown in the five steps, failure to do so may produce erroneous results. ******************** [4] General notes. If you are using a multiple application operating system such as windows please ensure all other applications have terminated. All printouts use standard ASCII characters and are formatted for 64 lines per page with a carriage return at the end of each line and a form feed on the 64th line. WARNING!!! REFORMATTING THE HARD DISK WILL DISABLE THE BUGFIX SOFTWARE ACTIVATION KEY. You must make a backup copy of the following files C:\CONFIG.SYS, C:\MM_INFO.TXT and C:\MM_PATCH.COM (the underscore in the file name may be replaced with a number from 1 to 9) before you reformat the disk. On completion of the disk format, restore these files. ******************** [5] MM_INFO.TXT file description This file is written to the hard disk of the P.C. under test, and remains there as a permanent record of the test results. MM_INFO.TXT contains the following information. P.C. ID number: Test Date and time: Power off/on test status: BIOS creation date: Test results: ******************** [6] The meaning of time and how it all began. When the P.C. was first produced it did not contain a time of day clock, instead, the user was required to enter the date and time when the P.C. was switched on. To provide the P.C. with date and time functions the date and time you entered was converted to a number, which corresponded to the elapsed time since time zero, which to a P.C., is the 1st of January 1980 at 00:00 hours ( try setting your P.C. date to 1979 ). This number is regularly updated by an internal clock pulse as long as the P.C. remains switched on. When a program requires to know the date or time, it merely requests the operating system to convert this number into the correct date/time format and supply it to the calling program. This clock is generally known as the System or DOS Clock and most, but not all, programs derive their date and time from this source. From the launch of the IBM PC/AT, P.C.s have been equipped with a time of day clock, which is known as the Real Time Clock or RTC. This clock is powered by an internal battery which maintains the date and time even when the P.C, is switched of. When the P.C. is switched on instead of asking you to enter the date and time, it asks the RTC to provide it. This is a somewhat simplified version, in actual fact the RTC regularly updates specific locations in what is known as non volatile memory or CMOS RAM, and these locations are read by instructions issued by BIOS, which in turn may be answering a request from the operating system (DOS) to provide this information. The BIOS (Basic Input Output System) is a set of routines which convert the commands issued by the operating system into commands that the hardware can understand, you might consider BIOS as a translator between standard operating system requests and the continually evolving P.C. hardware. Most but not all BIOS routines reside in a chip or chips on the P.C. mother board, and in modern P.C.s can be re-written to provide updates or correct errors in previous versions. So if that's how it works, what's the problem ? There are lots of problems but they all stem from two basic facts. 1: The programmer has access to two sources of date and time which may or may not be the same. 2: Software programmers, BIOS programmers and hardware designers have all taken the century part of the date for granted and neglected to consider the implications of getting it wrong. Consider the following. To the BIOS the initial source of date and time is actually the CMOS RAM, which stores time and date as a set of binary coded decimal numbers in various predefined locations. These locations can be read one at a time by BIOS issuing in/out instructions. To save time the BIOS may not bother reading byte 50 (the century byte) but instead assume it to be 19, or the RTC may decide that this byte is always 19 and not update it, or the RTC may update it but only at power on time (not so good for P.C.s that are never switched off), or the BIOS may in fact read all information, but fail to update the system clock correctly. Add to this the possibility that the programmer may have decided to use the RTC as his source of date and time instead of the system clock, (BugFix uses both) and you have some idea of the possible sources of error. Further complications arise from the fact that the year 2000 is actually a leap year so the 29th of February 2000 must also be recognized as a valid date. Now on the practical side you might think that a P.C. of one manufacturer and model will be the same as the next, so if one is millennium compliant then so must the next ! Not so ! Manufacturers may use completely different mother boards or BIOS in seemingly identical P.C.s and seemingly identical board may use different chip vendors. The only way to test a P.C. for millennium compliance is to test each and every one of them with a program such as BugFix. Setting dates by hand, switching them off, waiting a few minutes and them switching them on again is both time consuming and inaccurate (RTCs that update the CMOS RAM century byte only at power on time, would not be detected using this method and you run the risk of immobilizing your P.C. by exceeding program expire dates). ******************** [7] BIOS patch information Most non-compliant computers can be made compliant by installing the BIOS patch supplied with this software. WARNING !!! The BIOS patch file MM_PATCH.COM is tailored to run on individual computers, you must use BugFix to install this patch, do NOT copy this file to another computer. Technical information on BIOS patching (simplified): MM_PATCH.COM is actually a Device Driver with a small memory resident portion of approximately 400 bytes, which remains in memory and intercept system calls to the RTC (Real Time Clock). Date information returned by the RTC is examined by mm_patch. If the date is between 1900 and 1979 the century is assumed to be wrong and is changed to 20 before returning it to the operating system. The rational for this is any date prior to 1980 will be considered illegal by DOS and the most likely explanation is the century byte has not been changed by the RTC or that BIOS has failed to retrieve the century byte from CMOS RAM. Patch installation notes and problems: BugFix will add the "device=mm_patch.com" command to the end of the config.sys file and save the original file as config.qct. The patch will not be installed if: 1: It does not fix the problem. 2: It is already installed. 3: The computer has no hard disk (networked diskless P.C.s). 4: The 9999 key is used to test the computer. ******************** [8] BugFix test sequence: Computers are checked in the following way using ROM and System BIOS interrupts. 1: The Real Time Clock is set to one second before midnight on the 31/12/1999 2: Two seconds later the Real Time Clock is read and compared with 01/01/2000 These two steps ascertain whether the Real Time Clock is capable of rolling over to the next century and whether BIOS is capable of setting and retrieving the correct date. If this test is OK then go to step 5: otherwise, 3: The Real Time Clock is set to 01/01/2000 4: The Real Time Clock is read and compared with 01/01/2000 This is to ascertain whether the Real Time Clock century byte can be manually set and whether BIOS will report the change. If this test fails then go to step 14: otherwise. 5: The Real Time Clock is set to one second before midnight on the 28/02/2000 6: Two seconds later the Real Time Clock is read and compared with 29/02/2000 These two steps ascertain whether the Real Time Clock is capable of rolling over to the 29th of February 2000 and whether BIOS is capable of setting and retrieving the correct date. If this test is OK then go to step 9: otherwise. 7: The Real Time Clock is set to 29/02/2000 8: The Real Time Clock is read and compared with 29/02/2000 This is to ascertain whether the Real Time Clock can be manually set to the 29th of February 2000 and whether BIOS will report the change. Go to step 14: 9: The Real Time Clock is set to one second before midnight on the 28/02/2040 10: Two seconds later the Real Time Clock is read and compared with 29/02/2040 These two steps ascertain whether the Real Time Clock is capable of rolling over to the 29th of February 2040 and whether BIOS is capable of setting and retrieving the correct date. If this test is ok then go to step 13: otherwise. 11: The Real Time Clock is set to 29/02/2040 12: The Real Time Clock is read and compared with 29/02/2040 This is to ascertain whether the Real Time Clock can be manually set to the 29th of February 2040 and whether BIOS will report the change. go to step 14: 13: If steps 2, 6 and 10 were OK then test the ability of RTC/CMOS memory to save and retain century information, thus ensuring compatibility with programs that use direct R.T.C. calls. 14: The System Clock Counter and the Real Time Clock are set to the same day and month in the year 1999. 15: The System Clock and Real Time Clock are read and compared with the reference date. If this test is ok, the previous two steps are repeated for each year from 2000 until 2041. This ensures the System Clock and Real Time Clock can be set to, and will return correct dates for each year in the range 1999 to 2041 and the system clock will recognize all leap years within that range. 16: Depending on the results of the previous tests BugFix may install a BIOS patch and re-test the computer. If so the previous fifteen steps are repeated with the patch installed. 17: Update mm_info.txt and restore all times and dates to their correct values. 18: Depending on certain conditions you may be given the option of running an additional power off/on date retention test, please refer to section [3] for more information. ******************** [9] Virus protection The in-built virus detection software supplied with this product is intended to reduce the possibility of spreading viruses by comparing the BugFix executable file with a known good check code. A message indicating no virus was found will be displayed prior to program execution. Should the virus detection software detect a problem, a message to that effect will be displayed and BugFix will be terminated. Use a suitable virus removal program to clear the virus from BugFix, do not attempt to re-run BugFix until the virus has been removed. END.