DOS(1)
NAME
dos, xdos, dosexec, dosdebug - run MS-DOS and MS-DOS pro-
grams under Linux
SYNOPSIS
dos [ -ABCcdkVNXtsgKm234O ] [ -F file ] [ -L dexefile ] [
-u confvar ] [ -D flags ] [ -M size ] [ -e size ] [ -x
size ] [ -P file ] [ -o file ] [ 2> debugfile ] [ -I con-
fig-options ]
dosexec [ -ABCcdkVNXtsgKm234O ] [ -F file ] [ -u confvar ]
[ -D flags ] [ -M size ] [ -e size ] [ -x size ] [ -P file
] [ -o file ] [ 2> debugfile ] [ -I config-options ] dexe-
file
xtermdos [ -ABCcdkVNXtsgKm234O ] [ -F file ] [ -L dexefile
] [ -u confvar ] [ -D flags ] [ -M size ] [ -e size ] [ -x
size ] [ -P file ] [ -o file ] [ 2> debugfile ] [ -I con-
fig-options ]
dosdebug
xdos [ -ABCbdNtsK234O ] [ -F file ] [ -L dexefile ] [ -u
confvar ] [ -D flags ] [ -M size ] [ -e size ] [ -x size ]
[ -P file ] [ -o file ] [ 2> debugfile ]
DESCRIPTION
dos invokes the Linux dos emulator, also known as DOSEMU.
debugfile is an optional file into which all debugging
output will be redirected.
xtermdos brings up DOSEMU in an xterm (or one of its
cousins: color_xterm, ansi_xterm, or rxvt). It automati-
cally detects the IBM VGA font, and the best xterm to run,
and then runs the xterm with the proper parameters
required to run DOSEMU.
dosdebug is used to control or debug an already running
DOSEMU.
xdos starts DOSEMU in it's own X window. This is the same
as dos -X
dosexec starts DOSEMU and executes a DEXE file. This is
the same as dos -L
Although this program is known as the DOS emulator, it is
actually a virtual machine for MS-DOS, allowing DOS and
programs written for DOS to operate in an environment sim-
ilar to a standard IBM PC/AT or compatible with an Intel
80x86 processor in real mode. DOSEMU provides emulation
of such services as BIOS video, disk, keyboard, serial,
and printer; CMOS memory for configuration information; a
real time clock; memory allocation through the XMS 3.0
specification, EMS 4.0 and DPMI 0.9.
Because DOSEMU is not really a DOS emulator, a copy of MS-
DOS 3.3-7.00 is required. (Future versions of MS-DOS may
run, but have of course not been verified. DR-DOS 6.0 has
also been reported to work.)
See the files QuickStart, ChangeLog, doc/announce, and the
Makefile contained in the source distribution for informa-
tion on how to configure, compile, and boot DOSEMU.
KERNEL REQUIREMENTS
At present, you will need Linux 2.0.28 or above with the
SYSV IPC option (System V InterProcess Communication
facilities, see ipc(2)) compiled. SYSV IPC is an option in
the configuration setup during a Linux kernel compile.
Starting with dosemu version 0.64.3 full feature dosemu is
the default. For details see doc/README.vm86plus. For a
low feature dosemu you need to configure with --enable-
novm86plus
If you use 1.2.13, please upgrade to the latest stable
kernel. At the time of writing, it was Linux 2.0.28,
available with anonymous ftp at ftp.funet.fi in the direc-
tory /pub/Linux/kernel/linux/v2.0/, or at various mirrors
all over the world.
OPTIONS
-A boot from floppy disk A (does not need to be a real
floppy disk, see below)
-B boot from floppy disk B (does not need to be a real
floppy disk, see below)
-C boot from hard disk C (does not need to be a real
hard disk or even a msdos filesystem, see below)
-c use direct Console video (must be at the console,
requires that dos is suid root)
-d detach from current virtual console or tty and
attach to the first free virtual console
-V use VGA specific video optimizations
-k use RAW console Keyboard (must be at the console)
-F Parse this config-file instead of /etc/dosemu.conf
(you need to run as root for this)
-u set a user configuation variable. An u_ is prefixed
to the name to avoid name clashes. This variable
then can be checked in /etc/dosemu.conf to do some
special configuration.
-L Load and start a DEXE file (special preconfigured
bootable hdimage containing just one DOS applica-
tion)
-I Parse the string behind -I with the same syntax as
/etc/dosemu.conf or .dosrc such as
dos ... -I 'video { mda }'
This is usefull if you just want to override a
given configuration parameter temporary. You also
may have a generic configuration by executing a
script such as
dos ... -I "`myconf.sh`"
where myconf.sh is a script writing the configura-
tion to stdout. If you have an alternate configura-
tion file besides .dosrc,
dos ... -I "`cat myother.conf`"
will do the job. Note however, that you have to
quote the parameter behind -I because it is
expected to be one argument.
-D specify which Debugging messages to allow/suppress
-O use stderr for output of Debugging messages
-o use this file for output of Debugging messages
-M set base memory to SIZE Kilobytes
-m enable internal mouse-support
-P copy debugging output to FILE
-2,3,4 choose 286, 386, or 486 processor (BE CAREFUL!
DOSEMU is not yet 32-bit clean, so if your program
detects a 386 or 486 processor and uses 32-bit reg-
isters, it might be confused by BIOS functions. If
you think this is happening, use -2 to force DOSEMU
into 286-mode.)
HARD DISKS
DOSEMU supports four methods of supplying DOS with hard
disks:
1. a virtual disk file residing on a Linux filesystem
which emulates a hard drive.
2. direct access to an MS-DOS partition through a raw
disk device (i.e. /dev/hda, /dev/hdb, /dev/sdX).
3. direct access to an MS-DOS partition through single
partition access (i.e. /dev/hda1, /dev/hdb2,
/dev/sdxx). You need to run the program mkpartition
to enable DOSEMU to access your DOS-partitions with
SPA.
4. access to a Linux filesystem as a "network" drive
using the driver emufs.sys supplied with DOSEMU in
commands/emufs.sys.
This is explained more thoroughly in QuickStart.
Configuration of DOSEMU's hard disk resources is done by
editing /etc/dosemu.conf before running DOSEMU. You find
an example in etc/config.dist
FLOPPY DISKS
DOSEMU supports two methods of supplying DOS with floppy
disks:
1. a virtual disk file residing on a Linux filesystem
which emulates a floppy drive
2. direct access to a physical floppy through a raw
disk device (i.e. /dev/fd0, /dev/fd1).
This is also explained more thoroughly in QuickStart.
Configuration of DOSEMU's floppy disk resources is done by
editing the /etc/dosemu.conf before running DOSEMU.
VIDEO
DOSEMU may be run on any tty device. However, increased
performance and functionality may be had by taking advan-
tage of special features of the Linux console. Those run-
ning DOSEMU on the console may wish to investigate the -c,
-k, and -V switches, explained more thoroughly in Quick-
Start. There is also some brief documentation in the file
etc/config.dist, which can be copied to /etc/dosemu.conf
and edited for your needs.
In brief, proper use of the console device and the corre-
sponding switches allows the user to view a DOS program in
its original color and font, with none of the periodic
screen update problems with the generic tty output code.
KEYBOARD
Those using DOSEMU on the Linux console may also wish to
use the RAW keyboard support. This mode of operation,
selected by the -k switch, provides the user with access
to the entire keyboard accessible under DOS. Any combina-
tion of ALT, CTRL, and SHIFT keys may be used to generate
the odd keycodes expected by many DOS programs.
PRINTING
The BIOS printer services are emulated through standard
UNIX file I/O to a set of files, dosemulpt1, dosemulpt2,
and dosemulpt3, corresponding to the DOS printer devices
LPT1, LPT2, and LPT3. All characters sent to LPTx will be
redirected to the file dosemulptx in the current direc-
tory.
WARNING! DOSEMU does not keep the file buffers flushed;
therefore, the state of these files is undefined until you
actually exit the DOS emulator. Please excuse the incon-
venience.
DEBUG MESSAGES
Debug messages can be controlled either at the command
line or in the configuration file. Take a look at the
documentation inside the config.dist file included with
DOSEMU in the examples subdirectory, for debugging
options. At the command line, you may specify which
classes of messages you wish dos to allow. The syntax of
this is DOSEMU takes an option "-D FLAGS", where FLAGS is
a string of letters which specify which options to print
or suppress. DOSEMU parses this string from left to
right.
+ turns the following options on (initial state)
- turns the following options off
a turns all the options on/off, depending on flag
0 turns all options off
1 turns all options on
# where # is a letter from the valid class list,
turns that option off/on depending on the
+/- state.
Message Classes:
d disk R disk read W disk write
D int 21h C cdrom v video
X X support k keyboard i port I/O
s serial m mouse # default ints
p printer g general c configuration
w warning h hardware I IPC
E EMS x XMS M DPMI
n IPX network P Pkt-driver S SOUND
r PIC T IO-tracing
Any debugging classes following a + character, up to a -
character, will be turned on (non-suppressed). Any after
a - character, up to a + character, will be suppressed.
The character a acts like a string of all possible debug-
ging classes, so +a turns on all debugging messages, and
-a turns off all debugging messages. The characters 0 and
1 are also special: 0 turns off all debugging messages,
and 1 turns on all debugging messages.
There is an assumed + at the beginning of the FLAGS
string. Some classes, such as error, can not be turned
off. In case you didn't redirect stderr, nearly all out-
put to stderr goes to /dev/null.
Some examples:
"-D+a-v" or "-D1-v" : all messages but video
"-D+kd" : default + keyboard and disk
"-D0+RW" : only disk READ and WRITE
Any option letter can occur in any place. Even pointless
combinations, such as -D01-a-1+0, will be parsed without
error, so be careful. Some options are set by default,
some are clear. This is subject to my whim, and will prob-
ably change between releases. You can ensure which are
set by always explicitly specifying them.
SPECIAL KEYS
In RAW keyboard mode (see the -k option), DOSEMU responds
to certain key sequences as control functions.
ctrl-scrlock = show 0x32 int vectors
alt-scrlock = show the vm86 registers
rshift-scrlock = generate an int8 (timer)
lshift-scrlock = generate an int9 (keyboard)
ctrl-break = ctrl-break as under DOS.
ctrl-alt-pgup = reboot DOS. Don't trust this!
ctrl-alt-pgdn = exit the emulator
Use <LEFT CTRL>-<LEFT ALT>-<Function key> to switch to
another virtual console.
MEMORY
The XMS memory support in DOSEMU conforms to
Lotus/Intel/Microsoft/AST extended memory specification
3.0. I have implemented all XMS functions except function
0x12 (Reallocate Upper Memory Block).
While I have implemented the UMB functions, they are
extremely stupid and will almost always act suboptimally.
The next release of DOSEMU should have saner UMB support.
DOSEMU 0.66 also supports EMS 4.0 and implements DPMI 0.9
(1.0 partially).
LOGGING
DOSEMU is able to log all use with email or syslogd(8).
The file /etc/dosemu.loglevel contains information about
the logging facilities. Read doc/README.loglevel for more
details.
AUTHOR
DOSEMU (comprised of the files dos and libdosemu ) is
based on version 0.4 of the original program written by
Matthias Lautner (no current address that I know of).
Robert Sanders lt;gt8134b@prism.gatech.edu was maintaining
and enhancing the incarnation of DOSEMU with which this
man page was originally distributed. During about 4 years
James B. MacLean lt;macleajb@ednet.ns.ca was the restless
leader of the dosemu team, implementation of DPMI (which
made Windows-3.1, dos4gw, djgpp, e.t.c running) happened
during his 'governement' and brought the project near to
Beta-state. Now Hans Lermen lt;lermen@fgan.de is maintain-
ing this funny software.
BUGS
There are too many to count, much less list.
Please report bugs to the author. I'd also like to hear
about which programs DO work. Just send me a note detail-
ing what program (and what version) you are using, what
works and what doesn't, etc.
AVAILABILITY
The most recent public version of DOSEMU can be ftp'ed
from tsx-11.mit.edu in the /pub/linux/ALPHA/dosemu direc-
tory. If you want to keep up on private developer pre-
releases, join the DOSEMU developer team - even just good
detailed debug reports are all you need!
FILES
/usr/bin/dos
The invoker program.
/usr/bin/xtermdos
The xterm wrapper.
/usr/bin/xdos
The X version.
/usr/lib/libdosemu
The actual emulator code as a shared library (when
DOSEMU is compiled as a.out).
/var/run/dosemu.*
Various files used by DOSEMU including debugger
pipes.
/var/lib/dosemu/*
Various files used by DOSEMU including diskimages
and disk config files.
/etc/dosemu.conf
Main configuration file for DOSEMU.
/etc/dosemu.users
Contains the usernames that are allowed to use
DOSEMU.
/etc/dosemu.loglevel
Logging configuration file.
doc/DPR
Dosemu development team: Who is doing which part of
the DOSEMU project?
doc/DANG
To help you hack DOSEMU code.
doc/README.*
Various documentation.
QuickStart
To set up DOSEMU quickly.
ChangeLog
Changes in DOSEMU since the last release.
MSDOS mailing list
For more information, mail to
linux-msdos@vger.rutgers.edu