Don't waste money on a math coprocessor they said
virtuallyfun.com
virtuallyfun.com
I have my own story of living happily without a math coprocessor for quite some time: from 1992 to 1997, I had an IBM PS/1000 with a "Blue Lightning" CPU which can be best described as a "486SX3" (25 MHz bus clock, 75MHz internal). Then I tried to run the Quake demo and found out that "real" 3D games need an FPU :(
Hint: Pentium FPU was faster
Unfortunately the trick doesn’t work on early AMD K5/6 nor Cyrix CPUs - although Cyrix CPUs probably had other more serious problems.
https://www.phatcode.net/res/224/files/html/ch63/63-02.html
Here a non perspective correction related Quake FPU code example https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac...
Lcliploop:
fld ds:dword ptr[0+0+esi]
fmul ds:dword ptr[0+0+ebx]
fld ds:dword ptr[0+4+esi]
fmul ds:dword ptr[0+4+ebx]
fld ds:dword ptr[0+8+esi]
fmul ds:dword ptr[0+8+ebx]
fxch st(1)
faddp st(2),st(0)
fld ds:dword ptr[0+0+edx]
fmul ds:dword ptr[0+0+ebx]
fld ds:dword ptr[0+4+edx]
fmul ds:dword ptr[0+4+ebx]
fld ds:dword ptr[0+8+edx]
fmul ds:dword ptr[0+8+ebx]
fxch st(1)
faddp st(2),st(0)
fxch st(3)
faddp st(2),st(0)
faddp st(2),st(0)
fsub ds:dword ptr[12+ebx]
fxch st(1)
fsub ds:dword ptr[12+ebx]
fxch st(1)
fstp ds:dword ptr[Ld0]
fstp ds:dword ptr[Ld1]
FXCH instruction is free (zero cycles) on Pentium for most instruction combinations, AMD caught up in late 1998 with CXT revision K6-2. http://www.azillionmonkeys.com/qed/cpuwar.htmlWe kind of marveled back then because MHz meant speed.
Some Pentium ran at 60, not 66.
And that's why it's first x86 that was superscalar.
EDIT: Present day, rocking a thread ripper with 48 logical cores. Still running Linux.
Edit: I just remembered one of them was "Eye of the Beholder III"
If it's any consolation, you didn't miss much - III was a wet rag compared to the majesty of the first two games!
Edit- Dune 2, not Dune 2000
a rather difficult game.
f16 however was a joy. happy days
It seems Weitek also had a coprocessor to go with 386.
By that era they appear to have mostly pivotted to their own 486 clones and VGA chipsets though.
edit: I just realised, it could have been like the Cyrix 487S which installed as a PCB carrier that plugged into the 486DX socket, and then had a socket on the carrier for the CPU itself, alongside the 487S chip.
Although the infocom 'boot' step suggests a race condition somewhere? Or some register not being properly set by the os.
To be sure, the author should remove and reinstall the coprocessor 10 times, testing after each. :)
When I pushed it into the socket it made such a loud “ker chunk” noise that I wouldn’t want to constantly pull out and reseat these chips. Especially since I don’t have the Intel “rake” like puller I had to use a pair of card edge blanks to gently rock it out of the socket.
Although I do appreciate the 10x humor of it.
It’s weird that so many people focus on the software, which runs perfectly fine in emulation, but seem to lose their minds that an $8,000 machine from 1987 shipped with a buggy CPU…
Hopefully this tbh t will encourage someone out there with a 386 to try to replicate this.
My best guess would be something of the following: The software tries to determine if the CPU has a 80(2/3)87 device some way. Thinks it does have it and then tries a FPU instruction to get the error signal firing and getting the eventual INT02 to blow up in it's face. But I'm not limited by any actual knowledge here so this might just as well be something completely different.
Also it looks like there may be some issues with FP/FP emulation on the OS/2 DOS extender host: https://www.os2museum.com/wp/floating-point-exceptions-and-d...
Poor though my memory is, it happens often enough that I have a decent chance.
There is no problem with the drive on dos, windows or os/2 1.2 so it’s something about it being an early 2.0 beta and probably an older 386 cpu.
I still don’t know why the addition of the math coprocessor helped so much
From what I remember, unlike the 386, for which both Intel and AMD models were available, the 387 was produced only by Intel, which meant that the cheaper and more performant 40MHz AMD processor had not a corresponding FPU, so if you needed floating point operations you had to spend more money for a slower CPU.
What he ended up doing instead, was to get a relative to assemble him a PC with a 40MHz AMD 386 and a 20MHz Intel 387. Surprisingly it did work, as long as one would remember to press the "Turbo" button to slow the 386 to 20MHz before using the CAD software otherwise it would crash.
The rest of the software would happily work at 40MHz
English Wikipedia isn't very helpful on the regard but I found a page in German [1] that lists a number of 387DX-compatible chips running at 40MHz, so maybe it was just a matter of price, local availability, or lack of trust in the brands.
[1] https://de.wikipedia.org/wiki/Liste_der_x86er-Koprozessoren
... one more!
If you plugged in a 387, it would disable the 386 chip and take over all the work of computation. Apparently, happened because the math coprocessor was where most of the manufacturing errors occurred so Intel just sold the defective chips as 386s in order to increase throughput
You're thinking of the 486.
The 80386DX was the first x86 CPU to be 32-bit and have an on-chip MMU. And nothing else: no cache, no FPU.
The FPU was a discrete part, the 80387DX.
Because OS/2 1.x didn't support the 80386, and so couldn't run DOS apps well, and so flopped, the 16-bit 80286 kept selling well. It ran DOS fast and it could run Windows 2/286 and Windows 3 in Standard Mode which was good enough. It could only address 16MB of RAM but that was fantastically expensive and it was more than enough for DOS and Windows 3.
So, because DOS still ruled, Intel made a cost-reduced version of the 80386DX, the 80386SX. This had a 16-bit data bus, so it could use cheaper 16-bit motherboards and 16-bit wide RAM, still limited to a max of 16MB. Still enough.
That needed a maths copro for hardware floating point, too: a different part, the 80387SX.
Then Windows 3 came along, which was also good enough, and started a move in PC apps to GUIs. Windows 3.1 (1992) was better still.
So Intel had a 2nd go at the 32-bit chip market with the 80486, marketed as the "486". This integrated a better 386DX-compatible CPU core with a few extra instructions, complete with MMU, plus a 387-style FPU, plus a small amount of L1 cache, all onto one die.
But it was expensive, and didn't sell well.
Also, all the 3rd party x86 makers leapt on the bandwagon and integrated the extra instructions into 16-bit bus 386SX compatible chips and branded them as 486s: the Cyrix and IBM "486slc" for instance. This ate into sales of the real 486.
So Intel came up with an ethically very dodgy borderline scam: it shipped 486s with the FPU disabled, calling them the "486DX" to reuse the branding that distinguished the 32-bit-bus models of 386 from the 16-bit-bus.
People don't understand stuff like bus widths or part numbers, as your post demonstrates, and I mean no offense. They don't.
So now there was a new model of 486, the 486SX with a disabled FPU, and the 486DX with it still turned on.
The "SX" model needed a new motherboard with a 2nd CPU socket that accepted a "floating point co-processor", called the "487", which was nothing of the kind. The "SX" was a lie and so was the "487 copro". The 487 was a 2nd complete 486 chip that disabled the original and took over.
But it reused the older branding, which is what you've remembered.
Later, briefly, Intel made a cheaper cost-reduced 486SX with a smaller die with no FPU present, but not many of them. The clock-doubled 486DX2 took over quite quickly and killed the 486DX and 486SX market.
Some commentators speculated that the 486DX vs 486SX marketing thing allowed Intel to sell defective 486s in which the FPU didn't work but if it did that was a tiny tiny number: a rounding error.
>> Some commentators speculated that the 486DX vs 486SX marketing thing allowed Intel to sell defective 486s in which the FPU didn't work but if it did that was a tiny tiny number: a rounding error.
It was a significant amount of chips at the time, since the 486 was still new and the FPU is somewhere around 30% of the die, it would come out to a lot of them. They was also an overlap of the DX die with FPU disabled and SX die both being shipped at the same time.
You're right -- but I can't fix it now. :-(
> It was a significant amount of chips at the time, since the 486 was still new
It might have been. If you have any pointers to numbers, I'm curious.
But when the 80486 first appeared, it was just the "486". The DX/SX thing came later, and the early 486SX units definitely had a full FPU on the die -- I remember X-rays, de-capping, and die-shots.
I just checked and the gap was longer than I realised:
(80386, 1985)
(386SX, 1988)
i486, 1989
(Windows 3.0, 1990)
486SX, 1991
486DX2, March 1992
(Windows 3.1, April 1992)
Just a year between the 486SX and the DX2, which rendered it largely irrelevant -- then, the budget option became a non-clock-doubled model, and the clock-doubled one became the premium product.
...is there any other kind anymore? Unless you work with microcontrollers, at least.
I kinda wondered why no one made RPG games in the BattleTech universe? The MechWarrior series was fine, but there's so much plot and intrigue that could be explored in this universe, and just _existing_ as a human around all these big machines could be pretty intense.
OTOH, who doesn't like to toy around with the power to do 100,000 floating point operations a second? ;)
I do hope the author figures out the cause. The issue is an interesting one.
https://ncsa30.ncsa.illinois.edu/wp-content/uploads/2016/02/...
The m68881 and m68882 are very good FPUs, and m68882s have continued to be made all the way through at least 2012, apparently. I recently bought one that was made in 2012 with Motorola, not Freescale, markings.
16-bit, discrete CPU, optional FPU, optional MMU.
32-bit, integrated CPU + MMU, optional FPU.
32-bit, integrated CPU + MMU + FPU.
32-bit, integrated CPU + MMU + FPU + L1 cache
32-bit, integrated CPU + MMU + FPU + L1 cache, on-package L2 cache.
32-bit, integrated CPU + MMU + FPU + L1 + L2 cache.
64-bit, integrated CPU + MMU + FPU + L1 + L2 cache.
64-bit, dual integrated CPU + MMU + FPU + L1 + L2 cache.
That's about where it starts to lose coherency. There were dual-core 32-bit chips and so on. I'm also eliding changes in core design such as scalar, superscalar, decomposition into micro-operations, micro-op resequencing, etc. because:
[1] it muddies the waters.
[2] if people can't remember the difference between a 387 and a 487 then this will go way over their heads. :-(
On a generic 286 you could swap out the stock ISA VGA video card for a Diamond SpeedStar and the improvement was crazy.
Rest assured it’s significantly faster full screen under OS/2. And faster again on native MS-DOS.
Maybe I'll try playing in dosbox and see what I was missing out on.
As I recall the "co-processor" slot on those boards was another CPU slot, with an extra pin; and when filled it took over and disabled the original CPU.
Edit: later 486SX may not have had FPU: https://retrocomputing.stackexchange.com/questions/12109/wer...
https://en.wikipedia.org/wiki/Product_binning#Semiconductor_...
http://www.os2museum.com/wp/lies-damn-lies-and-wikipedia/
My guess is that if there’s any truth to it that was early on before the process was fine-tuned. It’s hard to believe Intel would have tolerated a process producing that many errors since they could use the same die space to make more smaller chips.
intel used to sell cheap core solos back in the core duo days, which were just duos where one of the cores was faulty so they disabled it.
Same with the F model (no iGPU) chips today. People have done teardowns and found that more often than not its there on the die, just disabled because its faulty.
But you should have tried breeding on a 33 MHz 386SX. I think I had to let it run overnight.
My next computer was a Pentium 133. The difference in fish breeding was mind blowing.
My dad was not a computer person, so he was not very thrilled about us opening up this mysterious box. But, he agreed, and together we installed the chip. And the software worked!
One thing that was amazing back then was the step-function of upgrading your computer. At that point in Moore's Law, big updates weren't at such a ridiculous pace as they became over time, so if you had a 486, you had a 486 for a while. But add a SoundBlaster card (or the AdLib card for us lower-middle class folks), and suddenly your computer came to life in a way you didn't realize was possible.
It’s not very stable, although I don’t know if it was a flakey processor
The Model 80 was one of the first-gen PS/2 systems (which tried to replace the original IBM PC's fairly open industry standard architecture with things like MCA).
IIRC the Model 80 was also IBM's first '386 PC, though IBM had been beaten to the '386 PC (first by Compaq and Advanced Logic Research, IIRC).
Also, for a long time, MS-DOS games didn't necessarily work out of the box even on more conventional PCs, and you might have to mess with drivers, IRQs, etc.
It’s so much better with those 2 mechs
I got him an 8087 math coprocessor and it reduced the time to about 10 minutes. I think it cost around $500 at the time.
I made my first $50 in tech, an his business was demonstrably improved. What a thrill!
Lost me here. I developed several systems based on OS/2 (both 16 and 32 bit) and don't recall this kind of stability issue. Different use case, I guess. I was using IBM's C/C++ tool chain and did some scripting in REXX, no big DOS games.
I know everyone has super rose tinted glasses when it comes to OS/2, but try it on period hardware, with what shipped in 1987. Its terrible. And yes it runs great on Pentiums or anything new under emulation as clearly the larger fault is 1987 hardware, namely the 386.
I was using it on period H/W, and in at least one case it was an IBM PS/2 with an 8514 graphics adapter and writing to it using some graphics primitives. The only wonk thing I recall was that if I cranked up the compiler optimizations, it just drew lines at various angles all over the screen instead of the images I needed. IIRC there were a few cranky things about writing directly to the graphics but I don't recall problems otherwise.
PS/2 systems weren't fully "PC compatible", there was lots of stuff they would have trouble with. They had different port ranges and the BIOS had some infelicities as i recall.
Old DOS 5 ran fine along with OS/2 1.21. The upgrade to 6.123 went fine, it’s just something else weird .
Sadly I don’t know if any other 386 fans to give this a shot
The same demo with the same machine now equipped with a co-processor, it took just a few seconds.
As a kid, I knew nothing about FPU nor math co-processors but that incredible speed bump had a long lasting impression on me.
AutoCAD was 64-bit floating point (and sometimes 80-bit internally). Trying to do 80-bit floating point computations on a 16-bit CPU was painfully slow. Previous low-end CAD systems were 32-bit, and large drawings would have errors. That's why the Golden Gate Bridge drawing was a common AutoCAD demo. Zoomed out, you could see the whole bridge, and you could zoom in on the details. Big selling point.
(I did some of the early AutoCAD ports. Not all DOS machines were fully compatible with the IBM PC. There were many 80286 machines which were mostly-compatible. Each needed its own software. Every display, mouse, and plotter needed its own driver. Autodesk had a big room in Sausalito with one each of everything they supported. For a while, it looked like the Texas Instruments TI-Pro was going to win, because it had a color display good enough for text. But it was an awful computer. No memory parity and bad parts. I had to compile everything twice and compare the results.)
[0] https://www.intel.com/content/www/us/en/products/details/pro...
I think there are technical limitations re. die size and heat dissipation if we wanted to integrate a high end CPU and a high end GPU in the same package.
They are far from the best performers, of course. They are meant to run on low-ish power, especially compared to a desktop or server chip.
You can see a (small) annotated die shot of the M1 here:
https://www.tomshardware.com/news/apple-m1-vs-apple-m14-floo...
However, usually CPUs don't have enough cores and execution units to compete with GPUs, because they spend the transistors on out-of-order execution, cache and other features instead.
Intel Larrabee was the only attempt to actually make a CPU with a GPU-sized vector unit and they dropped it.
> Wifi was on chip set during the Centrino days
Except it did not:
https://www.amazon.com/Intel-Wireless-MiniPCI-Adapter-WM3B21...
> WinModems
Which were just firmware moved to software
> Wifi/BT/Audio/Kitchen sink on chip
Yes, but no: https://en.wikipedia.org/wiki/CNVi
>> The AC 9560 and 9460 family of wireless (Wi-Fi + Bluetooth) modules are the first generation of CNVi modules.[3] They are only compatible with systems running Intel Gen. 8 or 9 processor on adapted motherboards.