Man Linux: Main Page and Category List


       dosemu.bin, dosdebug - run DOS and DOS programs under Linux


       dosemu.bin  [  -234ABCcdKkmNnOpSstVwX  ]  [  -h  level  ] [ -F file ] [
       --Fusers file ] [ --Flibdir directory ] [ --Fimagedir directory ] [  -f
       file  ]  [  -L  dexefile ] [ -u confvar ] [ -D flags ] [ -M size ] [ -e
       size ] [ -x size ] [ -P file ] [ -o file  ]  [  2>  debugfile  ]  [  -I
       config-options  ]  [  -i[bootdir] ] [ -U inpipe[:outpipe] ] [ [-E] dos-
       command ]



       dosemu.bin is the binary wrapped by the script dosemu (1) which invokes
       the Linux dos emulator, also known as DOSEMU.
       debugfile  is  an optional file into which all debugging output will be

       dosdebug is used to control or debug an already running DOSEMU.

       Although this program is known as the DOS emulator, it  is  actually  a
       virtual  machine  for 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 0.9.

       Because DOSEMU is not really a DOS  emulator,  a  copy  of  FreeDos  is
       required,  which  now is pre-configured and part of the official DOSEMU
       binary distribution.  In addition any currently  available  proprietary
       DOS  (such  as  MS-DOS,  PC-DOS,  DR-DOS)  can be booted, when properly


       At present, you will need Linux 2.0.28  or  above  with  the  SYSV  IPC
       option  (System  V  Inter-Process Communication facilities, see ipc(2))
       compiled. SYSV IPC is an option in the  configuration  setup  during  a
       Linux kernel compile.


              choose 286, 386, 486 or 586 processor to simulate.

       -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 an msdos filesystem, see below)

       -c     use direct Console video  (must  be  at  the  console,  requires
              special privileges, and -s ).

       -d     detach  from  current  virtual  console or tty and attach to the
              first free virtual console

       [-E] dos-command
              Run DOS command when starting DOSEMU, and, if ’-E’ is not given,
              exit  DOSEMU  after running the command. The command can also be
              given     with     a      Linux      path      (for      example
              /home/joeuser/dosemu/freedos/bin/xcopy.exe).   Note:  this  only
              works if your autoexec.bat contains a "unix -e" command.

       -k     use RAW console Keyboard (must be at the console)

       -F     Parse this config-script instead  of  the  built-in  global.conf
              file (you need to run as root on suid DOSEMU for this)

              Bypass  dosemu.users  and  take this file instead (only accepted
              when dosemu.bin is not suid-root).

              Bypass  the  default  DOSEMU_LIB_DIR  (as   maybe   defined   in
              dosemu.users) and use this directory instead.

              Bypass  the  default  directory  for  bootdirectory and hdimages
              (DOSEMU_HDIMAGE_DIR) and use this directory instead.

       -f     Parse this config-file instead of .dosemurc

       -n     Bypass (don’t use) dosemu.users and dosemu.conf  (only  accepted
              when dosemu.bin is not suid-root).

       -u     set a user configuration variable. An u_ is prefixed to the name
              to avoid name clashes. This variable  then  can  be  checked  in
              dosemu.conf or global.conf to do some special configuration.

       -L     Load  and  start  a  DEXE  file  (special preconfigured bootable
              hdimage containing just one DOS application)

       -I     Parse the string behind -I with the same syntax  as  global.conf
              or .dosemurc such as

                 dos ... -I ’video { mda }’

              This   is   useful   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 "‘‘"

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

              launched  as  part  of  a  systemwide  installation, this option
              (re-)installs a DOS that is used in  DOSEMU  (this  can  be  the
              DOSEMU  distributed  FreeDOS   or  any proprietary DOS, which is
              bootable via fatfs).  bootdir is the base name of  a  directory.
              The symbolic link ~/.dosemu/drives/c will be changed to point to
              this directory.  Re-installing is only rarely  necessary,  since
              in  practise  the  symbolic  link(s) will automatically point to
              updated files.

       -D     specify which Debugging messages to allow/suppress

       -h     dump configuration to stderr and exit (implicit sets -D+c). This
              is  useful  for debugging configuration files, you should use -O
              too to direct the +c type messages to stderr. ‘level’ can be  0,
              1  or  2  and  controls the amount of configuration parser debug
              output:  No  parser  debug   (0),   parser   loop   debug   (1),
              if_else_endif debug (2).

       -H     specify  the  dosdebug  support  flags, currently only ‘1’ is is
              reasonable.  with  -H1  you  force  dosemu  to  wait  until  the
              dosdebug  terminal  has  connected. Hence to debug a DOS session
              from the very beginning you first start dosemu with -H1 and then
              start  dosdebug.   DOSEMU will then lock before jumping into the
              loaded  bootsector  waiting  for  dosdebug  to   connect.   Once
              connected  you are in ‘stopped’ state and can set breakpoints or
              single-step through the bootstrap code.

       -M     set base memory to SIZE Kilobytes

       -m     toggle internal mouse-support

       -O     use stderr for output of Debugging messages

       -o     use this file for output of Debugging messages

       -P     copy debugging output to FILE

       -p     stop for prompting  if  a  non-fatal  configuration  problem  is

       -S     run using SDL

       -s     super-user/full  feature  mode:  enable  direct hardware access.
              Use this switch if you wish to use graphics on the console, need
              direct  port  access, hardware interrupts or raw network access.
              Implies -V and -k by default.


       -t     terminal mode: run using the S-Lang library

       -U     define inpipe and outpipe for  asynchronous  control  of  DOSEMU
              from  another  process.  The  format  is  (without whitespace in


              where ‘:outpipe’ can be omitted. In the latter case no  feedback
              from DOSEMU can be expected.

              For  security  reasons  DOSEMU  does  not create the named pipes
              itself, so the user is responsible to set the permissions of the
              pipes  correctly. Note that when using this options, the foreign
              process can  control  your  DOSEMU  session  (such  as  entering
              keystrokes).  This option should therefor only used by frontends
              (such as kdos), which first create the proper  named  pipes  and
              then launch DOSEMU.  A special control command ( ack on ) can be
              used to force DOSEMU returning handshake tags via ‘outpipe’ such
              that  the frontend knows when the control command has started or
              finished and whether it was  successful.   The  format  of  this
              tagging is

                 SYN: <commandname>

                 <any output from the command>

                 ACK: code=n

              where  n  is  0 for success.  A tiny control terminal, which can
              serve as example, is the supplied dosctrl program. It takes just
              the  two  pipes  as  arguments  and  you  may then enter control
              commands, which of them ‘help’ is the most important one;-) Note
              that dosctrl does not launch DOSEMU, you have to do it yourself.

       -V     use direct console video with VGA graphics and  use  the  native
              graphics  card’s  BIOS (must be at the console, requires special
              privileges, and -s ).

       -w     toggle windowed/fullscreen mode in X

       -X     run in an X Window


       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 a DOS partition through a raw disk device (i.e.
              /dev/hda, /dev/hdb, /dev/sdX).

       3.     direct access to  an  DOS  partition  through  single  partition
              access (i.e. /dev/hda1, /dev/hdb2, /dev/sdxx).

       4.     access  to  a  Linux  filesystem  as a "network" drive using the
              driver emufs.sys supplied with DOSEMU in  commands/emufs.sys  or

       Configuration  of  DOSEMUs  hard  disk  resources  is  done by editing
       dosemu.conf   or   .dosemurc   before   running   DOSEMU.    Look    at


       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 README.txt.

       Configuration  of DOSEMUs floppy disk resources is done by editing the
       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
       README.txt.  There is also some very brief documentation  in  the  file
       dosemu.conf, which can be 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
       though  temporary files which are then periodically spooled by LPR or a
       different  print  client,   as   defined   by   $_printer_commands   in


       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-9 sets the debug level, the higher, the more output
          #   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       Z  PCI-BIOS
        A  ASPI driver     Q  mapping driver

       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-9  are
       also  special: 0 turns off all debugging messages, and 1-9 turns on all
       debugging messages, but set the debug level too.

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

       DOSEMU also supports EMS 4.0 and implements DPMI 0.9 (1.0 partially).


       DOSEMU (comprised of the files dosemu.bin and  dosemu  )  is  based  on
       version  0.4  of  the  original program written by Matthias Lautner (no
       current address that I know of).

       Robert Sanders <> was maintaining and enhancing
       the  incarnation  of  DOSEMU  with  which  this man page was originally
       distributed.    During    about    4    years    James    B.    MacLean
       <>  was  the  restless  leader  of the dosemu team,
       implementation of DPMI (which made  Windows-3.1,  dos4gw,  djgpp,  etc.
       running) happened during his ’governement’ and brought the project near
       to Beta-state. Hans Lermen <> took over and released  the
       first  1.0  version.  Now Bart Oldeman <> 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  obtained  from;         a        fast        mirror        is        at  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 binary
              The wrapper script, it is recommended not to  invoke  dosemu.bin
              Same, but invoking DOS in an X window.
              Per  user DOSEMU local directory. This will be created silently,
              if not existing.
              All temporary file creation happens here, we  do  not  use  /tmp
              Various files used by DOSEMU including debugger pipes.

              Bootdirectory containing the FreeDos part.
              or  (only  if  /etc/dosemu.users exists) /etc/dosemu.conf
              Main configuration file for DOSEMU.  which is included by
              global.conf  (global.conf  is  included  in dosemu.bin by
              Per-user configuration file.
              For suid-root  or  sudo  running  binaries:  Defines  the
              access rights to DOSEMU on a per user basis and sets some
              vital  configuration.  This  is  the  only   fix-location
              configuration    file,    DOSEMU    first    looks    for
              /etc/dosemu.users  and,  if  this  is  not   found,   for
              /etc/dosemu/dosemu.users     .      Via    the    keyword
              default_lib_dir=   in   dosemu.users    the    systemwide
              DOSEMU_LIB_DIR  directory  may  be  moved elsewhere.  For
              more information see /usr/share/doc/dosemu/README.txt
              IPX configuration file.

              To help you hack DOSEMU code.
              Various documentation.
       QuickStart, README and INSTALL
              To set up DOSEMU quickly.
              Changes in DOSEMU since the last release.
              Information on how to use the DOSEMU/FreeDos ready-to-use
              binary distribution.
       MSDOS mailing list
              For more information, mail to


       dosemu(1), mkfatimage16(1)