-
Notifications
You must be signed in to change notification settings - Fork 2
Guide:CPU settings in DOSBox‐X
Back to the DOSBox-X Wiki Welcome page.
You can change the emulated CPU type in DOSBox-X either from the DOSBox-X config file (dosbox-x.conf by default), or from the DOSBox-X command line or the menu bar.
This is based on: https://www.vogons.org/viewtopic.php?p=905713#p905713 and extended/modified for DOSBox-X.
8086 | 8086 prefetch | 80186 | 80186 prefetch | 80286 | 80286 prefetch | 386 | 386 prefetch | 486old | 486old prefetch | 486 | 486 prefetch | auto | pentium | pentium mmx | ppro slow | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
386 CPUID |
x |
x |
||||||||||||||
486 CPUID |
x |
x |
x |
x |
x |
|||||||||||
Pentium CPUID |
x |
|||||||||||||||
386 specific page access level calculation |
x |
x |
||||||||||||||
486 specific page access level calculation |
x |
x |
x |
x |
||||||||||||
loose (fast) page privilege check |
x |
x |
||||||||||||||
tight (slow) page privilege check |
x |
|||||||||||||||
BSWAP |
x |
x |
x |
x |
x |
x |
x |
x |
||||||||
CMPXCHG |
x |
x |
x |
x |
x |
x |
x |
x |
||||||||
XADD |
x |
x |
x |
x |
x |
x |
x |
x |
||||||||
INVD |
x |
x |
x |
x |
x |
x |
x |
x |
||||||||
WBINVD |
x |
x |
x |
x |
x |
x |
x |
x |
||||||||
RDTSC |
x |
x |
x |
x |
||||||||||||
486 specific CR register behaviour |
x |
x |
x |
x |
||||||||||||
Pentium specific CR register behaviour |
x |
|||||||||||||||
Prefetch queue emulation |
x |
x |
x |
x |
x |
x |
8086 | 8086 prefetch | 80186 | 80186 prefetch | 80286 | 80286 prefetch | 386 | 386 prefetch | |
---|---|---|---|---|---|---|---|---|
386 CPUID |
x |
x |
||||||
386 specific page access level calculation |
x |
x |
||||||
loose (fast) page privilege check |
x |
x |
||||||
tight (slow) page privilege check |
||||||||
Prefetch queue emulation |
x |
x |
x |
x |
486old | 486old prefetch | 486 | 486 prefetch | auto | pentium | pentium mmx | ppro slow | |
---|---|---|---|---|---|---|---|---|
486 CPUID |
x |
x |
x |
x |
x |
|||
Pentium CPUID |
x |
|||||||
486 specific page access level calculation |
x |
x |
x |
x |
||||
loose (fast) page privilege check |
||||||||
tight (slow) page privilege check |
x |
|||||||
BSWAP |
x |
x |
x |
x |
x |
x |
x |
x |
CMPXCHG |
x |
x |
x |
x |
x |
x |
x |
x |
XADD |
x |
x |
x |
x |
x |
x |
x |
x |
INVD |
x |
x |
x |
x |
x |
x |
x |
x |
WBINVD |
x |
x |
x |
x |
x |
x |
x |
x |
RDTSC |
x |
x |
x |
x |
||||
486 specific CR register behaviour |
x |
x |
x |
x |
||||
Pentium specific CR register behaviour |
x |
|||||||
Prefetch queue emulation |
x |
x |
Vanilla DOSBox has a few other cputype options not available in DOSBox-X
-
386_slow
-
486_slow
-
pentium_slow
How are these handled (mapped) in dosbox-x, or are they disregarded?
Q: The 8088 is what IBM used in the original IBM PC’s. So why is there no 8088 option?
A: Because there is no difference in terms of emulation between a 8086 and 8088.
Intel released the 8086 first as a 16-bit CPU, and later released the 8088 to reduce cost.
The difference is that the 8086 uses both 16-bit internal and external to the CPU, while the 8088 is 16-bit internal but only 8-bit external to reduce cost.
The only practical difference with regards to emulation, is that a 8088 is a little slower because of this, but that can be compensated for using the cycles=
setting.
Q: Does DOSBox-X emulate the CPUs cycle accurate?
A: No. This would just slow down the emulation, and is practical never needed for emulating PCs.
On a legacy PC the amount of cycles it takes to complete an instruction can vary depending on the type of instruction and the CPU generation and vendor.
DOSBox and by extension DOSBox-X instead completes one instruction per emulated-cycle.
As such the cycles=
value has no direct relation to the clock frequency or the amount of flops of the emulated system.
For many legacy systems, cycle accurate emulation is desirable. But this does not apply to emulating PCs. Due to the vast amount of clone systems and CPU options produced, software developers could not rely on the amount of time it takes to complete a given instruction. And therefore used other timing methods, and therefore cycle accurate emulation is simply not needed.
If for some reason cycle accurate emulation is required, we suggest you use the PCem emulator.