||This article includes a list of references, but its sources remain unclear because it has insufficient inline citations. (February 2014)|
|This article relies on references to primary sources. (February 2014)|
DOSEMU Running on C:\
|Initial release||September 1992|
|Stable release||1.4.0 / March 5, 2007|
DOSEMU, alternatively rendered dosemu, is a compatibility layer software package that enables MS-DOS systems, DOS clones such as FreeDOS or DR-DOS, and DOS software to run under Linux on x86-based PCs (IBM PC compatible computers).
It uses a combination of hardware virtualization features and strategic[clarification needed] emulation. It is thus able to achieve nearly native speed for 8086-compatible DOS operating systems and applications on x86 compatible processors, and for DPMI applications on x86 compatible processors as well as on x86-64 processors. DOSEMU includes an 8086 processor emulator for use with real-mode applications in x86-64 long mode.
DOSEMU is an option for people who need or want to continue to use legacy DOS software, in some cases virtualisation is good enough to drive external hardware such as EPROM programmers connected to the parallel port. According to its manual, "dosemu" is a user-level program which uses certain special features of the Linux kernel and the 80386 processor to run MS-DOS, FreeDOS or DR-DOS in a DOS box. The DOS box, relying on a combination of hardware and software, has these capabilities:
- Virtualize all input/output and processor control instructions
- Supports the word size and addressing modes of the iAPX86 processor family's "real mode", while still running within the full protected mode environment
- Trap all DOS and BIOS system calls and emulate such calls as are necessary for proper operation and good performance
- Simulate a hardware environment over which DOS programs are accustomed to having control.
- Provide DOS services through native Linux services; for example, dosemu can provide a virtual hard disk drive which is actually a Linux directory hierarchy.
- Packet driver API.