Skip to content

Guide:CPU settings in DOSBox‐X

Robert de Rooy edited this page Oct 27, 2020 · 30 revisions

CPU settings in DOSBox-X

Overview

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.

Differences in emulated CPU types

This is based on: https://www.vogons.org/viewtopic.php?p=905713#p905713 and extended/modified for DOSBox-X.

Table 1. cputype options
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

Split table test - 8086 to 386

Table 2. cputype options
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

Split table test - 486 to ppro_slow

Table 3. cputype options
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

Other CPU types

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?

FAQ

Why is there no 8088 CPU option?

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.

Is DOSBox-X cycle accurate?

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.

Clone this wiki locally