LWN.net Logo

DOSEMU reaches version 1.4.0

The DOSEMU project allows MS-DOS applications to be run under Linux:

DOSEMU stands for DOS Emulation, and allows you to run DOS and many DOS programs, including many DPMI applications such as DOOM and Windows 3.1, under Linux.

DOSEMU runs under Linux, NetBSD and (possibly) FreeBSD according to the HOWTO document. DOSEMU only works on X86 compatible hardware. It is able to access the host system's graphics display, mouse, serial ports, parallel ports, game port, network port, removable drives, and sound card via a Sound Blaster 16 emulator. DOSEMU also includes DPMI (DOS Protected Mode Interface) support. In short, DOSEMU encapsulates a 1980s vintage DOS machine inside of a modern operating system running on modern hardware.

DOSEMU can run an authentic version of Microsoft DOS, the commercial DR-DOS or an open-source DOS equivalent such as FreeDOS, which is packaged with DOSEMU:

FreeDOS is a free DOS-compatible operating system for IBM-PC compatible systems. FreeDOS is made of up many different, separate programs that act as "packages" to the overall FreeDOS Project.

DOSEMU has been around for a long time, it can be considered a mature project. Releases have been infrequent in recent years. This has changed with the announcement of version 1.4.0. The DOSEMU developers have apparently been very busy adding new capabilities to the software.

A few highlights of this release include:
  • A new native 64-bit port for the x86-64 architecture.
  • The FreeDOS boot process no longer requires user interaction.
  • The X window system interface is now the default.
  • It is possible to reboot the virtual machine with Ctrl-Alt-Del, other Ctrl-Alt key combos are also supported.
  • Linux commands can be run within DOSEMU using the unix.com utility.
  • Numerous improvements have been made to the DPMI system.
  • Numerous improvements have been made to the CD-ROM system.
  • Windows 3.1 is now natively supported.
  • External himem drivers like himem.sys are now supported.
  • Long filename support has been added.
  • Numerous bug fixes and performance improvements have been added.
  • Security fixes have been added.

Just for fun, your author downloaded the new versions of DOSEMU and FreeDOS, dusted off some old floppies and tried out some old DOS applications. A few simple text-mode .exe applications were run without any trouble.

Getting more adventurous, your author decided to try running the old Z80mu CP/M (8080 architecture) emulator under DOSEMU. The example screen shows one emulator running another, Z80mu was able to assemble an old macro assembly language file with no troubles. On a 3 Ghz Athlon 64 processor, the double emulation process ran quite a bit faster than it used to on a native 4 Mhz Z80 system.

The test of the graphics and sound capabilities was not as successful, an early version of Leisure Suit Larry in the Land of the Lounge Lizards crashed DOSEMU with: ERROR: EMU86: error 103. No fun was to be had for Larry. The official DOSEMU screenshots page shows that it is possible to run more advanced graphical applications, but your author had no other titles handy for testing.

If you have some old DOS applications that you just can't live without, DOSEMU can be a useful tool. An entire 1980s DOS system can easily be encapsulated and stored in a small part of a modern computer's disk system. Binaries and source code for DOSEMU and FreeDOS are available for download here.


(Log in to post comments)

DOSEMU reaches version 1.4.0

Posted May 10, 2007 5:38 UTC (Thu) by jimparis (subscriber, #38647) [Link]

Consider DOSBox as well. It's platform- and architecture-independent and has a very high compatibility rate with old games.

DOSEMU reaches version 1.4.0

Posted May 10, 2007 6:28 UTC (Thu) by bartoldeman (subscriber, #4205) [Link]

Thanks for the review and the bug report...
Yes, the CPU emulator is still not as widely tested as many other parts of DOSEMU. But you can run Larry using $_cpu_emu="vm86sim" or like this
dosemu__cpu_emu=vm86sim dosemu

Which gives a simulated CPU instead of JIT translation, a truely 80s experience with 286 (perhaps 386)-style speeds. The following one-liner also fixes the problem (beware of tabs and line wraps).

--- src/emu-i386/simx86/sigsegv.c (revision 1769)
+++ src/emu-i386/simx86/sigsegv.c (working copy)
@@ -510,7 +510,7 @@
* linked by Cpatch will do it */
/* ACH: we can set up a data patch for code
* which has not yet been executed! */
- if (InCompiledCode && Cpatch(scp))
+ if (InCompiledCode && !e_querymark((void *)_cr2) && Cpatch(scp))
return 1;
/* We HAVE to invalidate all the code in the page
* if the page is going to be unprotected */

DOSEMU reaches version 1.4.0

Posted May 10, 2007 8:27 UTC (Thu) by grouch (subscriber, #27289) [Link]

DOSEMU saved my butt for years before it reached 1.0 (specifically, dosemu-0.64.3, then 0.98.4 and 0.99.10). It allowed me to move a small, local business off of the monopoly. The only "app" they couldn't do without that had no native Linux equivalent was Reflex 2.0. The people who depended on it were tickled to see their familiar screen and data pop up with a single-click, special button on their custom desktops. DOSEMU made the transition possible, painless and made the advantages immediately apparent. Bart Oldeman, Hans Lermen and the previous dosemu maintainers saved immeasurable frustration for those folks over the course of 8 years.

DOSEMU reaches version 1.4.0

Posted May 10, 2007 22:08 UTC (Thu) by oak (subscriber, #2786) [Link]

I've earlier tested many (game etc) demos, freeware programs and even
bought some DOS games (e.g. Worms1, when one could still buy DOS games as
new) for Dosemu and DosBox. Both emulators have their pros and cons and
different programs work / don't work with them. DosBox is more games
oriented, but on the other hand 3D in SW in games works much faster in
Dosemu (as it virtualizes most of the computer instead of emulation one).

At some point it was possible to run Dosemu on top of Qemu, but I think(?)
Qemu is currently broken in this regard.

DOSEMU reaches version 1.4.0

Posted May 11, 2007 1:34 UTC (Fri) by drag (subscriber, #31333) [Link]

Although I used DOSBox in the past I'd probably rather use Qemu with Kqemu acceleration nowadays or Kvm.

Is there any significant advantages of Dosbox over VM machines?

DOSEMU reaches version 1.4.0

Posted May 12, 2007 23:39 UTC (Sat) by calica (subscriber, #25185) [Link]

I haven't used Dosemu in over a decade so I can't comment. I have used dosbox recently. Dosbox integrates very nicely with you existing environment. Just cd to you exe and "dosbox foo.exe". Dosbox with treat the pwd as C:\ and start foo.exe. With Qemu you have to create a drive image for C: and it is harder to move files in/out of that image.

WRT performance, Qemu is probably faster. kvm doesn't support real mode so will revert to straight qemu. Not sure about kqemu. That last Dosemu I used (last decade) used vm86 for near native speed.

DOSEMU reaches version 1.4.0

Posted May 14, 2007 9:20 UTC (Mon) by dufkaf (subscriber, #10358) [Link]

"Is there any significant advantages of Dosbox over VM machines?"
Both Dosemu and Dosbox allows you to tune CPU speed. This can make something which runs too fast or consuming 100%CPU needlessly to run in more sane way.

Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.