Affiliate Disclosure: By buying the products we recommend, you help keep the lights on at MakeUseOf. Read more.
Once computers started using the modern 64-bit architecture, users soon realized that running those old 16-bit applications wasn’t going to work. Why can’t 64-bit machines run 16-bit apps?
The answer to that question can be confusing, depending who you ask. For one thing, it isn’t actually impossible to run 16-bit apps. It’s just difficult. Secondly, the reason for this difficulty lies in both the CPU architecture and the operating system.
Confused yet? Don’t worry, you aren’t alone. But by the time you get to the end of this article, you won’t be confused anymore.
The History of CPU Architecture
I know, the last thing you want to read is a history lesson, right? Don’t worry, this is a short one. It’s also critical to understanding why 64-bit systems can’t run 16-bit apps natively.
If you lived through the 80s and the 90s, then you probably remember those old 16-bit dinosaurs that everyone at the time believed was bleeding-edge technology.
At the time, it was. Those old machines ran the Intel 8086 processor in 1978. The processor was able to access an address space of 1Mb using 16-bit addressing. With earlier machines running off 64 Kb of memory, this was a tremendous advancement and marked the beginning of a new age in personal computing.
In this mode (called Real mode), a portion was reserved for RAM, and the rest was utilized by the BIOS and computer hardware like the graphics card.
A little later came a further advancement in CPU architecture with the 80286 processor, capable of addressing 16Mb using 16-bit addressing. With the 286 architecture came “Protected mode,” with features that not only allowed for the addressing of more memory, but also multitasking. Running older 16-bit applications in “real mode” wasn’t always easy, but it was possible.
The End of 16-Bit, Sort Of…
In 1985, Intel introduced it’s next generation processor: the Intel 386. This was Intel’s first CPU that could address memory using 32-bits at a time, and could access a whopping 4 Gb of addressible memory. At the time, this seemed to computer users like a major breakthrough. PC gaming was about to enter its heyday.
Along with the advent of 32-bit architecture came an extended version of Protected mode that not only allowed for the ability to access more memory, but it included a set of features where software could flag to the system whether it was 16-bit or 32-bit code. This was made possible by what’s known as Virtual 86 mode, which was essentially a built-in virtualized 8086 system.
As you can see, from one evolution of CPU architecture to the next, both the hardware (CPU programming) and the software (operating systems and applications), maintained backwards compatibility for all of those users who still had very old software that they wanted to run. For individual computer users, this was useful, but for many corporations and small businesses, it was critical for legacy systems.
64-Bit Architecture Ruined Everything
The limit of 4GB of addressable memory remained a crutch for 32-bit systems for many years. However, with the invention of 64-bit processors came another breakthrough. These systems included a new mode (known as Long mode) capable of addressing up to 16 million terabytes of memory. It’ll probably be a long time before this becomes a limiting factor for computer applications.
However, with this tremendous advancement came a significant tradeoff. When users attempted to run 16-bit applications that required the long-supported “real mode” or “virtual 8086 mode,” they discovered an error message that read, “Program.exe is not a valid Win32 application.”
It was frustrating, but it wasn’t the end of the world. Users could use emulators or install virtual machines running 32-bit architecture and operating systems capable of supporting legacy 16-bit applications.
So while it’s “impossible” for 64-bit systems to run 16-bit MS-DOS applications, it isn’t impossible for users to do it using a workaround. But why did this happen?
64-Bit Architecture Removes the NTVDM
In every generation of 32-bit processor through the years, there was a lot of effort put into the operating system for the system to handle older 16-bit DOS applications. It was accomplished using what’s known as the NTVDM, or NT Virtual DOS Machine.
This 32-bit application ran in the Windows operating system and simulated a 486 architecture capable of handling 16-bit addressing using virtual 8086. Unfortunately, “long-mode” addressing couldn’t accomodate this safely. Instead, it would have required emulating a full 8086 processor simply to support running DOS applications.
Microsoft clearly made a decision to ditch this effort in order to support the prompt release of its first 64-bit operating system. On its support page, Microsoft clearly states that “16-bit MS-DOS and Microsoft Windows 3.x utilities will not start.”
No apologies. It’s simply not supported.
With the plethora of virtualization products on the market capable of accomplishing this anyway, Microsoft clearly didn’t feel that it was in its best interest to reinvent the wheel.
How to Run 16-Bit Applications on 64-Bit Systems
Just because running 16-bit DOS applications isn’t supported natively on 64-bit Windows systems, that doesn’t mean it’s impossible. You just need to install some extra tools to set things up.
If you enjoy classic DOS games or use any other retro applications from the good old days of computing, there are options. Here are four ways you can run them on your new Windows machine.
1. Play Retro Games With DOSBox
One of the easiest ways to run old DOS apps on your PC is to use an emulator. One of the most popular of those is DOSBox.
Christian detailed how to install and configure DOSBox to run old retro games on your Windows machine.
The great thing about this is that most of these games are so old that they’re considered abandonware, so you can legally download and play them for free.
2. Run Apps Inside VirtualBox
Since operating systems like Windows XP and Windows 7 could run 16-bit applications natively, you can run the same applications on your 64-bit system by building a virtual machine with one of those operating systems on it.
Just make sure to choose the right operating system to install. Stick with Windows 7 or earlier, and you can download and install old DOS apps on your virtual system in no time.
3. Use Linux
Say what you will about Linux, one thing that most Linux distros have right is support for 16-bit applications. Distros with the PAE kernal, you aren’t limited to the 4GB of 32-bit systems, so running a proper Linux distro as a dual-boot on your system is another option.
4. Use Emulators
DOSBox isn’t the only emulator available for the purpose of running old DOS apps. There are lots of great emulators out there that work just as well. This is especially true if you’re a gamer.
This is just the tip of the iceburg. If you search online you’ll find a whole library of different emulators out there that’ll let you run just about any retro app you can imagine. Microsoft might have given up on old 16-bit applications from back in the day, but you still have options.
Don’t Give Up on 16-Bit
There is no reason whatsoever that you should think it’s impossible to run 16-bit applications on a 64-bit machine. It may be impossible natively, but as you can see there are lots of solutions to accomplish the task.