VOGONS

Common searches


First post, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Ripped from the Wish List Thread:

Great Hierophant […]
Show full quote

Great Hierophant

Actually, there is something that DosBox should emulate, but doesn't. I see DosBox's as a truly configurable emulator except for one thing. You can't set set the processor to be used. DosBox emulates its own x86 compatible processor that emulates every instruction in one clock cycle. I am not partial to this method as it simply wasn't what Dos games were written for. They were written for a bunch of individual processor types running at set speeds. (This was well before the days of overclocking.)

I think DosBox should be able to emulate the four families of CPU,
8088/8086
80286
80386DX/SX
80486DX/DX2/DX4

and be able to select whether the FPU for each is enabled. Few DOS games before the Pentium required a FPU, so making ts emulation optional could save performance. I also note there is virtually no difference between the 8087 and the 80287.

As far as the individual PCs go, the only difference between the 8088 and the 8086 was the external bus. The 386 and 486 should be very similar in emulation terms, although 486s had the ability to access cache which would have to be emulated.

The basic instruction set of the 8086 was added to with each generation of processors by a few instructions, but it is well-documented which chips support which instructions. Also documented is how many cycles a particular processor will take to perform an instruction. Cycle accuracy is performance demanding but hardly a new concept in computer emulation. 6502 and Z-80 based machines often require it. However, except for the 8088 I would guess that few applications require such critical accuracy. Also, bus widths, internal and external must be compensated for.

A 8088 cannot feasibly address more than 1MB of memory, so the system with that processor selected should not support more than that. (One of the reasons why the Apple Lisa failed is because it came with 1 MB of RAM, largely seen as overkill at the time for a workstation machine and contributing to its $10,000.00 price tag. However, with an Expanded Memory board that limit could be circumvented, but XMS and Extended Memory is out of the question.) Ditto the 80286 and 80386SX and the 16MB RAM limit. (As for the 386DX and 486s, today's motherboards max out at 4GB as a practical maximum, but even today that is overkill for a consumer machine. However, it won't be in the future so I see no reason why DosBox couldn't address close to that amount of RAM, overhead permitting.)

I don't advocate emulating "marginal" CPUs, the V20, V30 or the 386SLC of AMD's DX5 unless their emulation is easy to accomplish. But these processors were sold and run at set speeds, and I advocate emulating them at released cycles. An 8088 only runs at 4.77 and 8 MHz, 286 from 6-20, a 386 from 16-40, a 486 from 25-120 (2x and 3x the system bus for the DX2 and DX4).

While emulating a 486DX4 can run Windows 3.1 at a decent clip, it may not be sufficient for the last DOS games like Quake, System Shock, Grand Theft Auto,Fallout or Tomb Raider. Well, for those games a dynamic core, using a real x86 processor would likely be best.

`Moe` […]
Show full quote

`Moe`

What exactly are you expecting?

You know that DosBox's goal is to run games (only)? And it does quite well? There's probably no DOS game that needs such a detailed emulation. C64 games were totally different: There was exactly 1 hardware variant, and because of that, games depended on it. When other variations appeared, like newer models of the C64, even the "original" hardware didn't work in some cases.
PCs come in hundreds of flavours. That's why no game could rely on instruction timing. Thus, for once, we have an easier job.
Also, did you know that DosBox already has a dynamic CPU mode?

How To Ask Questions The Smart Way
Make your games work offline

Reply 1 of 1, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Especially between 8086/80286, and 80286/80386 there
are some significant differences that make it very hard
to implement their behaviour.
Bochs has this ability (although some aspects are
missing), so you can use bochs for whatever you need
the different cpu emulation for.