DOS(1)                         MS-DOS Emulation                         DOS(1)

       dos, xtermdos, dosdebug, xdos - run MS-DOS and MS-DOS programs under
       Linux and NetBSD

       dos [ -ABCcdkVNXtsgKm234O ] [ -F file ] [ -D flags ] [ -M size ] [ -e
       size ] [ -x size ] [ -P file ] [ -o file ] [ 2> debugfile ] [ -I
       config-options ]

       xtermdos [ -ABCcdkVNXtsgKm234O ] [ -F file ] [ -D flags ] [ -M size ] [
       -e size ] [ -x size ] [ -P file ] [ -o file ] [ 2> debugfile ] [ -I
       config-options ]


       xdos [ -ABCbdNtsK234O ] [ -F file ] [ -D flags ] [ -M size ] [ -e size
       ] [ -x size ] [ -P file ] [ -o file ] [ 2> debugfile ]

       dos invokes the Linux dos emulator, also known as DOSEMU.
       debugfile is an optional file into which all debugging output will be

       xtermdos brings up DOSEMU in an xterm (or one of its cousins:
       color_xterm, ansi_xterm, or rxvt).  It automatically 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.

       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 similar 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

       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 information on how to
       configure, compile, and boot DOSEMU.

       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 directory /pub/Linux/kernel/linux/v2.0/, or at
       various mirrors all over the world.

       -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)

       -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 configuration to stdout.
              If you have an alternate configuration 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 registers, it might be confused by
              BIOS functions.  If you think this is happening, use -2 to force
              DOSEMU into 286-mode.)

       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

       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.

       DOSEMU may be run on any tty device.  However, increased performance
       and functionality may be had by taking advantage of special features of
       the Linux console.  Those running DOSEMU on the console may wish to
       investigate the -c, -k, and -V switches, explained more thoroughly in
       QuickStart.  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 corresponding
       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.

       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 combination of ALT, CTRL, and SHIFT keys may be used to
       generate the odd keycodes expected by many DOS programs.

       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 directory.

       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 inconvenience.

       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 debugging 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 output 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 probably change between releases.  You can ensure which are
       set by always explicitly specifying them.

       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

       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

       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.

       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 <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
       <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 <lermen@fgan.de> is maintaining this
       funny software.

       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 detailing what program (and what
       version) you are using, what works and what doesn't, etc.

       The most recent public version of DOSEMU can be ftp'ed from
       tsx-11.mit.edu in the /pub/linux/ALPHA/dosemu directory.  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!

              The invoker program.
              The xterm wrapper.
              The X version.
              The actual emulator code as a shared library (when DOSEMU is
              compiled as a.out).
              Various files used by DOSEMU including debugger pipes.
              Various files used by DOSEMU including diskimages and disk
              config files.
              Main configuration file for DOSEMU.
              Contains the usernames that are allowed to use DOSEMU.
              Logging configuration file.

              Dosemu development team: Who is doing which part of the DOSEMU
              To help you hack DOSEMU code.
              Various documentation.
              To set up DOSEMU quickly.
              Changes in DOSEMU since the last release.
       MSDOS mailing list
              For more information, mail to

Version ALPHA 0.66.3            April 20, 1997                          DOS(1)