Background & Problem
All of this started when I discovered an old TurboC 3D graphics program of mine in my archives that I wrote in 1995 - I just grabbed TurboC 2.01 from the Internet, DOSBox, and was up and running like it was 1995 in no time!
However, back in 1995 I was already a proud owner of a full 486-DX50 (not the half-speed DX/2!), and my 3D Torus (US version: Donut!) graphics program ran at a decent speed of a few frames per second (FPS) - needless to say, this thing flies on DOSbox:
You can find my 3d graphics test programs here, and attached to this project as well (see Files section).
Sadly, I don't own a 486 DX any longer (or any "AT" PC clone from that era). But, given my recent Euro PC acquisition and extensive repair marathon 2 years ago (heck, I even had to design my own Mylar keyboard replacement PCB for it!), I knew this machine would come in handy some day, and that it only waited for its chance to shine by running my old 3D Torus program. After all, my Euro PC is already quite a bit turbo-charged anyhow, as it is fully equipped with an external CGA/VGA card, XT CF Lite "harddisk emulator", MPU401 with Waveblaster Soundmodule for MIDI, an 1 MB RAM card, and even an Adlib clone (yes, think Monkey Island!) All of this is connected to an external industrial ISA bus backplane which makes this possible - I am calling this "The World's most Upgraded Euro PC" for a reason; note that I needed to shield the ISA cable (using a fiberglass-aluminum-braid tape) in order to have the machine run stable at 9.54 MHz, which is the max speed:

And then, with all this compute power (!), imagine my disappointment when I found that my donut program runs at 0.05 FPS on the 8088 Euro PC @ 9.54 MHz! Even the wire-frame version runs at only 0.1 FPS. The ~ 5 FPS that I remembered from my 486-DX50 in 1995 had dropped to about 0.05 FPS (one frame every 20 seconds)! I did not expect this to be such a dramatic difference in compute. Wow!
Given the floating point intensive nature of the 3D graphics program, an obvious solution came to mind: an 8087 had to be added - unfortunately, the Euro PC doesn't have a socket for one! Bummer!
The 8087 was a real game changer back in the day for floating point operations. An 8087 is thus highly desirable for the Euro PC, and is realized with
this project:With the new 8087, I then measured a speed-up of a factor of 10 for my graphics program. Still not super fast, but the wire-frame only version of the 3D graphics program now runs at ~1.0 FPS. This was well worth the effort.
Next, I replaced the 8088 with a NEC V20, and gained another ~ 0.2 FPS - the first version of the board was using a shielded ribbon cable, and although this version was running fine at 7.14 MHz, it failed to run stable at 9.45 MHz (the BIOS offers three CPU frequencies: 4.77 MHz, 7.14 MHz, and 9.54 MHz):


In my final version I now use a NEC V20 and the 8087-2 at 9.54 MHz, and it runs stable without any issues in my Euro PC at about 1.2 FPS:

BIOS Display 9.54 MHz and Intel 8087 Diagnostics Program:
Solution & Printed Circuit Board
I analyzed the differences between the Euro PC and Euro PC II, and determined that it should be straight-forward to add an 8087.
Euro PC CPU Section and FE2010A Controller
Euro PC II CPU Section and FE2010A Controller
Analysis & Board Schematics
As we can see, both machines use the same Faraday FE2010A IBM XT chipset. All signals are available directly from the CPU socket in both machines, with one difference - the NPINT FE2010 output is connected to the 8087 NPINT pin in the Euro PC II, whereas it is connected to GND in the Euro PC (over a PCB solder jumper). I hence added an NPINT pin header to the extension board to give users the option to manually route an NPINT cable from the extension board to the FE2010A pin if required:
However, in my setup and...
Read more »
glad you liked it! Yes, they are neat little machines 😀