[Michael Wessel] found some of his old DOS 3D graphics software and tried to run it on an 8088 PC. The tale of adding an 8087 co-processor to speed up the rendering was anything but straightforward, resulting in a useful little project.
There was a point around the end of the 1980s when the world of PCs had moved on to the 386, but the humble 8086 and 8088 hung around at the consumer end of the market. For Europeans that meant a variety of non-standard machines with brand names such as Amstrad and Schneider, and even surprisingly, later on Sinclair and Commodore too.
Of these the Schneider Euro PC was an all-in-one design reminiscent of an Amiga or Atari ST, packing a serviceable 8088 PC with a single 3.5″ floppy drive. A cheap machine like this was never thought to need an 8087, and lacked the usual socket on the motherboard, so he made a small PCB daughter board for the 8088 socket with space for both chips.
It’s a surprisingly simple circuit, as obviously the two chips were meant to exist together. It certainly had the desired effect on his frame rate, though we’re not sure how many other Euro PC users will need it. It does make us curious though, as to how quickly a modern microcontroller could emulate an 8087 for an even faster render time. Meanwhile if you’re curious about the 8087, of course [Ken Shirriff] has taken a look at it.
Iirc that’s how 8087 (and 80287) upgrades were frequently sold, as a daughter board that occupied the original CPU socket, and you moved the CPU to the daughter board.
I love to see that these little “Euro PCs” are still out there working. I have mine in a closet with a few tracks burned by the battery fluid :( I hope one day I will have the time and patience (and eyesight) to resurrect it.
A fpga could be used to merge both chips into one. Couldn’t it?
I worked at Amstrad, and had a totally upgraded PC1512 (RAM, HDs, VGA, Transputer, and anything else that went through R&D) with coprocessor, and a V30 so I could compile CP/M stuff on it natively for the Z80 machines.
It did not have or need a fan. Sir Allan made a press statement (slightly censored here) Along the lines of “If they want a fan on it, we’ll put a fan on it. If they want pink spots on it, we’ll put …ing pink spots on it.”
My machine promptly aquired a folded paper fan, and a quantity of stick-on pink spots.
He referred to me fondly as “that …ing hairy hippie on the 6th floor.” Well, referred anyway.
🤣 thanks for sharing – you gotta love Lord Sugar, such a “sweet” man. I will forever be grateful to him, Roland Perry, and Mark-Eric Jones – for bringing us the Amstrad CPC, my first 8bit home computer (rebuffed as Schneider CPC in Germany).
Should read “rebranded as Schneider CPC”
I bought an Amstrad pc1512 from someone selling them at my university. He had flyers up in the hallways that I noticed. Had just taken my first programming class and was hooked. Took out a $1000 loan, and went to this person’s house where he was selling them off the dining room table.
I too added the v30, and a ridiculously slow 30MB HDD stretched from 20MB using RLL.
Great machine. I graduated and 38 years later still programming.
Love the comment! Reading this brings back fond memories of my teenage years. I, 8088 and also ran 2 Atari 800xl’s and a 10MB MFM hard drive using a mail order external interface.
More than 50 years of labor went into the design/implementation of the 8087, I was told by the designer.
Pohlman, was it?
So, fully burdened, call it $10M development in present-day dollars. Not at all crazy for a development program.
Roughly speaking, they’d need to have sold 100k of them to call the project a success. I wonder how many were actually made/sold?
I would say they sold a lot more than 100k. In the early 90’s it was very common to find a few 8087s floating around in the desk drawers of many IT technicians (that was still a time when IT departments were kitted out with EEPROM programmers, UV erasers, logic analyzers, oscilloscopes, etc). Even then they were considered as scrap, and only kept around in case an old XT crept out of the woodwork. In hindsight, I really wish I kept many of those old chips.
Has a similar XT+ I built from a blank pcb. Mostly discrete hand soldered. Only cpu, ram, and boot rom were socketed. Reprogrammed the addressing prom to support the ‘full’ 640K in 4 banks too!
When “building a PC” was al little more involved.
And what you have in the picture is another interesting twist. The NEC V20 was an Intel 8088 clone with a faster clock speed.
Yep! It doesn’t do miracles, but ~20 % or so are possible for some apps.
No decoupling caps?
On a different not, have you seen the price of 8087 chips on digikey?
Worth their weight in gold.
Well, these prices are obviously nuts… mine are from eBay, ~ 20 $ for a 8087-2, about 35 $ for a 8087-1 (10 MHz certified). Decoupling caps are overrated, and the main CPU socket itself already has one ;-)
Skipping on decoupling caps is like not putting your seatbelt on.
The risk of a crash may be low, but the cost is high.
Dealing with intermittently failure is not fun.
Just like putting your seatbelt on, sticking decoupling caps on everything makes good habits.
“sticking decoupling caps on everything makes good habits.”
Within reason, and with sensible engineering guidance.
I have a device that is powered by a buck regulator with some capacitance in it. Running off a 13.8 V battery it works fine. Running directly off the 14.4 V charger is fine. Turning it on when the battery is being charged is fine. But plugging the charger into the board while it is powered by the battery promptly resets it, but only sometimes.
When that connection is made there’s enough ringing between the charger output cap and the buck regulator input cap that the voltage excursion is enough to cause a reset. (or RFI generated or regulator not keeping up with the fast transition, or maybe something else)
Sprinkling caps around without consideration of how the ringing will get damped can ALSO lead to hard-to-diagnose intermittent failures.
I need to figure out the least invasive way to suppress the ringing. It might be as simple as a small resistor in series in the charger power line, or perhaps a NTC inrush limiter or a diode. It’s hard to reproduce reliably, so one of those PITA things to fix.
Maybe you should remove a cap instead?
Usually, I add them to me PCBs. Forgot them this time.
Back then I wrote a Mandelbrot graphics program that performed all the calculations on the 8087. I wrote the code in assembler so that all the calculations were “in stack”. The resulting performance allowed me to zoom in and explore Mandelbrot space displayed on a 1024 x 768 resolution screen. Without the 8087, rendering would have taken over a week for one screen.
Nice! Would love to try it… do you have the code somewhere? AFAIK, Fractint is doing without 8087, but I am sure there must be other programs around that rely heavily on the 8087, like yours does. Would love to get some more number crunching software for the machine.
Seeing how fast a modern microcontroller would emulate an 8088 or 8087 or both in drop-in form would indeed be interesting. There’s some Amiga upgrades now that do this, it drops into the Motorola 680×0 socket and is (as I recall) using the cpu emulator from uae (unix amiga emulator) and i guess code so it frobs the right pins on the 68k socket. My recollection is since the Amiga already had a ‘weird’ setup with chip ram and slow ram (something like that… my pre-pc use was with Atari 8-bits…) that it could use system ram while also presenting the free ram on the Raspberry Pi or whatever as additional RAM for the Amiga’s use.