WARNING: THE FILES IN THE ITEM ARE OFFERED "AS-IS", WITHOUT ANY WARRANTY, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE PROGRAMS IN THIS ITEM CAN CHANGE OTHER PROGRAMS; THEREFORE, IT IS HIGHLY RECOMMENDED THAT THE USER OF THESE PROGRAMS BACKUP ANY PROGRAMS USED IN CONJUNCTION WITH THE PROGRAMS PRESENTED IN THIS ITEM. This item contains a patch to the Pentium FDIV bug. This patch was created by Wolfram Research, Inc. There are two other files in this item besides this README: Pentium.ma PFIX.ZIP Pentium.ma is a Mathematica notebook that presents an in-depth analysis of the Pentium bug, and discusses the patch created by WRI. PFIX.ZIP is a PKZip archive that contains the patch. This archive contains 7 files: DIV.C DIV.DLL DIV.MAK HB.C HB.EXE HB.MAK PFIX.EXE The primary components of this patch are DIV.DLL and PFIX.EXE. To use these two files, follow these steps: 1. Place DIV.DLL in one of the standard places for DLLs (your Mathematica installation directory and your Windows directory are both appropriate). 2. Use PFIX.EXE as a "wrapper" to guard the programs you wish to run from the Pentium bug. PFIX can be used in "active" mode and in "passive" mode. Passive mode ------------ PFIX can be used as a buffer between a program and the Pentium processor, to intercept every FDIV call the program makes. When run in this way, PFIX does not alter the program being run. To use PFIX in this manner, use the following command wherever you used to run the program alone: PFIX progname -progflags where progname is the name of the program, and progflags is the command-line flags given to the program. For example, to run the Mathematica kernel, use the following command: PFIX MATH Running PFIX in passive mode can take several minutes. To see the progress of PFIX while it pre-scans the program executable, PFIX can be given a -v flag, as in: PFIX -v MATH Since PFIX does not change the program executable when run in passive mode, it is necessary for PFIX to prescan the program executable each time the program is to be run in this manner. Active Mode ----------- PFIX can also be used to change a program executable, so that future scans are unnecessary. To use PFIX in this manner, use the following command: PFIX -patch OLDNAME.EXE NEWNAME.EXE This will create NEWNAME.EXE from OLDNAME.EXE. NEWNAME.EXE will not require pre-scanning by PFIX to be run, and will thus load roughly as quickly as OLDNAME.EXE did without PFIX. To use NEWNAME.EXE, use the following command: PFIX -run NEWNAME For example, the following commands will make a copy of MATH.EXE, create NEWMATH.EXE from MATH.EXE, and run NEWMATH.EXE: copy MATH.EXE MATH_BKP.EXE PFIX -patch MATH.EXE NEWMATH.EXE PFIX -run NEWMATH.EXE --------------- Some important notes about PFIX.EXE: - PFIX will work only on Win32 binaries; that is, those programs which are compiled and linked to be run in the Windows NT/Win32s operating environments. - The division algorithm implemented in DIV.DLL is not complete. Some errors can occur when working on the boundaries of machine precision. - Currently, not all the subcodes of the FDIV OP are implemented. Only those subcodes that are most often generated by the Microsoft compiler and those most important for the Mathematica kernel were implemented. ------------------------------------------------------------------------ Also included in the PFIX.ZIP archive are the source and makefile for DIV.DLL (DIV.C and DIV.MAK); and the source, makefile, and executable for a sample test program (HB.C, HB.MAK, and HB.EXE). Refer to Pentium.ma for a detailed description of PFIX.EXE and DIV.DLL.