Visual C++ 1.x has a problem with 287 synchronization on 80286 systems with 80287 co-processors - a timing problem which doesn't affect the 387 or 486 (chip detection is not the problem). This problem way show up in incorrect results from sin(), cos(), and tan() functions. The EMTRIGX.OBJ file in this directory contains an only partially tested fix for this problem with 80287 chips. The batch file, PATCH287.BAT, will patch the fix into the affected libraries. Note that this patch is not fully tested and Microsoft makes no guarantees for its useability or functionality. See the LEGAL.TXT file for more details. To install the patch: 1. Make a backup copy of your Visual C++ 1.x LIB subdirectory. 2. Copy the .BAT and .OBJ files into your Visual C++ LIB subdirectory. 3. Make sure that your Visual C++ BIN subdirectory is in the path, before any other directories containing older versions of LIB.EXE. 4. Run PATCH287.BAT. Sample Code to demonstrate this problem --------------------------------------- #include #include #include void main(void) { double x; x=1.0; printf("cos(x) :: %lf sin(x) :: %lf tan(x) :: %lf x :: %lf\n", cos(x), sin(x) tan(x), x); } This correct output was produced on a 286/287 with NO87=1. -------------- cos(x) :: 0.540302 sin(x) :: 0.841471 tan(x) :: 1.557408 x :: 1.000000 This incorrect output was produced on a 286/287 with NO87 not set. -------------- cos(x) :: 1.000000 sin(x) :: 2.000000 tan(x) :: 0.000000 x :: 1.000000