Why can’t new hardware simply run old software?

319 views

I downloaded an old PC game onto my laptop and had to use DOS Box to run it, because Windows 11 wouldn’t allow a 16-bit application to run.

Why is it that a much more powerful laptop can’t deal with software my PC had no problems with 20 years ago? Same thing with backwards-compatible video games.

In: 3

12 Answers

Anonymous 0 Comments

Many others said it is purely OS problem, but it is not exactly the case.

Most old DOS programs depend on Virtual 8086 mode of the CPU. However, the CPU will not enter this mode, if the 64-bit Long Mode was enabled. As far as I’m aware – this is purely artificial limitation, that AMD invented when they designed Long Mode. Why they did that? It is unknown. Maybe they hope, that limiting some modes will allow to remove them entirely in future CPUs?

It is still possible to enter that mode with Virtualization Technology (not all CPUs support, different between Intel and AMD), or by disabling Long Mode (very awkward and slow – requires to disable a lot of good stuff that OS uses). Most OSes don’t bother.

Surprisingly, 16 bit protected mode is alive and well – so Windows 3.x programs should run. However, now it is Microsoft who decided to burn the bridge. Knowing that part of 16 bit is nuked, they decided to nuke the rest.

DOSBox uses full software emulation to run programs. It even supports running on a completely different CPUs – like ARM. As disadvantage, it always runs several times slower than native programs. For many games this is actually an advantage – they cannot handle the full speed of the modern CPUs.

Anonymous 0 Comments

When Intel CPUs are running in long mode (64 bit mode) they can execute 32 bit protected mode instructions and 16 bit protected mode instructions by placing the processor in a compatibility mode but they cannot execute 16 bit real mode instructions without also making use of a virtual machine monitor or emulation layer.

When 16 bit protected mode was introduced with the 80286 it came with an enormous performance penalty that was only marginally improved with the introduction of 32 bit protected mode on the 80386. Ergo, most software intended to run on MSDOS continued to run in real mode even if it was run in a protected mode environment such as Windows 3.1.

Microsoft has chosen to not provide a compatibility environment for 16 bit applications (real or protected) on 64 bit versions of Winsows, either through a virtual machine or through emulation. This is likely motivated by the fact that there are multiple free offerings available which suit this purpose quite well.