<!DOCTYPE article PUBLIC "-//Davenport//DTD DocBook V3.0//EN">

<!-- This is the dosemu HOWTO, SGML source -- >

<!-- Mike Deisher, deisher@dspsun.eas.asu.edu -->
<!-- Uwe Bonnes, bon@elektron.ikp.physik.tu-darmstadt.de -->
<!-- Now David Hodges, davidhodges@altavista.iname.com -->
<!-- Last edited: Time-stamp: <2003/09/27 bart@dosemu.org> -->

<!-- Changelog -->
<!-- 2003/09/27: prepared for upcoming 1.2 release. -->
<!-- 2000/02/26: changed 'blabla' to `blabla' to avoid formatting errors,
                 prepared for upcoming 1.0 release. -->
<!-- 99/04/12: Added sections What operating systems does dosemu work
               under?, What processors does dosemu work on?, What if I have
               a DEC Alpha/Sparc/other non-Intel CPU?, Can I run Microsoft
               Windows programs under dosemu?, I want to run something
               that won't run under dosemu or Wine,
               mention that lredir doesn't work under FreeDOS -->
<!-- 99/04/11: removed developers mailing list since the dosemu website
               says it's invitation only -->
<!-- 99/04/11: updated mailing list address, web and ftp addresses,
               latest version number, dosemu no longer needs to run as root -->
<!-- 97/08/12: Changes for mailing list at suse.com -->
<!-- 97/05/05: Voyetra's great DOS MIDI -->
<!-- 97/04/27: No .386 with winemu -->
<!-- 97/04/17: Greg's corrections for my typos -->
<!-- 97/04/08: Hans changes to common errors -->
<!--         : tips to restore console -->
<!--         : Tips for Foxpro 2.6 -->
<!-- 97/04/03: Don't use Dos 4.01 -->
<!-- 97/3/07: Msdos.sys settings to boot Dos7 -->
<!-- 97/2/28: Considerations on command.com and different Dos-Versions -->
<!--          Numbering scheme -->
<!-- 97/2/17: Tell about use_sigio -->
<!-- 97/2/16: Section for hints with games, date change -->
<!-- 97/2/15: Tell about present sound efforts -->
<!-- 97/2/13: Installing windows -->
<!-- 97/2/13: Some xdos fonts hints -->
<!-- 97/2/12: Some typos Hans noticed -->
<!--          Hints for configure -->
<!-- 97/2/11: Changes from Hans (diff) and Erik Mouw incorporated -->
<!--          Tell explicit some security issues -->
<!--          Tips for winemu/progman -->

<article>

<artheader>

<title>The dosemu HOWTO</title>

<author>
<firstname>
Mike Deisher.
 Updated by Uwe Bonnes for dosemu-0.64.4, 15 March 1997.
 Updated by David Hodges, <emphasis><ulink
 url="mailto:davidhodges@altavista.iname.com">davidhodges@altavista.iname.com</ulink></emphasis>
</firstname>
</author>

<pubdate>For dosemu-1.2, 27 September 2003</pubdate>

<abstract>

<para>
This is the `Frequently Asked Questions' (FAQ) / HOWTO document for
dosemu.  The most up-to-date version of the dosemu-HOWTO may be found
at <emphasis><ulink url="http://www.dosemu.org">http://www.dosemu.org</ulink></emphasis>.
</para>

</abstract>

</artheader>

<sect1>
<title>The preliminaries</title>

<sect2>
<title>What is dosemu, anyway?</title>

<para>
To quote the 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/DR-DOS in what we in the biz call a `DOS box.'  
The DOS box, a combination of hardware and software trickery, has these 
capabilities:
</para>

<itemizedlist>
<listitem>

<para>
 the ability to virtualize all input/output and processor control
instructions
</para>
</listitem>
<listitem>

<para>
 the ability to support the word size and addressing modes of the
iAPX86 processor family's "real mode," while still running within
the full protected mode environment
</para>
</listitem>
<listitem>

<para>
 the ability to trap all DOS and BIOS system calls and emulate such
calls as are necessary for proper operation and good performance
</para>
</listitem>
<listitem>

<para>
 the ability to simulate a hardware environment over which DOS
programs are accustomed to having control.
</para>
</listitem>
<listitem>

<para>
 the ability to provide DOS services through native Linux
services; for example, dosemu can provide a virtual hard disk
drive which is actually a Linux directory hierarchy.
</para>
</listitem>

</itemizedlist>

</sect2>

<sect2>
<title>What operating systems does dosemu work under?</title>

<para>
Dosemu is primarily written for Linux. At one time it also worked on NetBSD and
possibly FreeBSD, however the graphics emulation was unlikely to work
on NetBSD, which means that all DOS programs that use graphics mode
(most DOS programs) did not work under NetBSD.
</para>

</sect2>

<sect2>
<title>What processors does dosemu work on?</title>

<para>
Dosemu only works on Intel 80x86 processors, e.g. 80386, 80486, 
Pentium etc.
</para>

</sect2>

<sect2 id="nonintel">
<title>What if I have an Alpha/Sparc/Motorola/other non-Intel CPU?</title>

<para>
Dosemu only works on Intel 80x86 processors but there are alternatives:
Bochs (<ulink url="http://bochs.sourceforge.net">http://bochs.sourceforge.net</ulink>)
is an open source PC emulator that
runs on most Unixes (as well as MS-Windows).
DOSBox (<ulink
url="http://dosbox.sourceforge.net">http://dosbox.sourceforge.net</ulink>)
also emulates the CPU but specializes in DOS games.
QEMU (<ulink url="http://fabrice.bellard.free.fr/qemu/index.org.html">
http://fabrice.bellard.free.fr/qemu/index.org.html</ulink>)
can launch Linux processes compiled for one CPU on another CPU.
Wine and DOSEMU are the main targets for QEMU.
There are other
(non-free) alternatives - see the comp.emulators.misc FAQ, available via
usenet or <ulink
url="http://www.faqs.org/faqs/emulators-faq/">http://www.faqs.org/faqs/emulators-faq/</ulink>
</para>

</sect2>

<sect2>
<title>Do I need MS-DOS to use dosemu?</title>

<para>
No. You need some version of DOS but not necessarily MS-DOS.
The supplied FreeDOS will do for almost all DOS programs. One notable
exception is Windows 3.x. See also <xref linkend="whatdosversion">.
</para>

</sect2>

<sect2>
<title>Can I run Microsoft Windows programs under dosemu?</title>

<para>
Not easily. You would be better to use the Windows emulator
Wine (<ulink url="http://www.winehq.com"
>http://www.winehq.com</ulink>). If you insist on running Windows
under dosemu, see section 8 - dosemu and MS-Windows 3.1.
</para>

</sect2>

<sect2>
<title>I want to run something that won't run under DOSemu or Wine</title>

<para>
See <xref linkend="nonintel">, or try VMWARE at
<ulink url="http://www.vmware.com">http://www.vmware.com</ulink>
or Plex86 at <ulink url="http://www.plex86.org">http://www.plex86.org</ulink>
</para>

</sect2>

<sect2>
<title>Names and numbers</title>

<variablelist>
                        
<varlistentry><term>(xx/yy/zz)</term>
<listitem>

<para>

means day zz in month yy in year xx.

</para>
</listitem></varlistentry>

<varlistentry><term>winemu</term>
<listitem>
<para>

winemu mean WinOS/2 running in dosemu.

</para>

</listitem></varlistentry>

</variablelist>

</sect2>

<sect2>
<title>What version of Dosemu should I use?</title>

<para>
Dosemu uses the same numbering scheme as the kernel. Uneven second
numbers are for possible unstable developer releases, even second numbers
are for releases considered stable. At the time of writing, <literal>1.2.0</literal>
is the latest stable release, while <literal>1.3.0</literal> is the latest
developer's release. So if you just want to use dosemu, get the latest 
<emphasis>stable</emphasis> release. 
</para>

</sect2>

<sect2>
<title>What's the newest version of dosemu and where can I get it?</title>

<para>
The newest version of dosemu as of 2004/01/18 is
<emphasis>dosemu-1.2.0</emphasis> and can be obtained at

<ulink url="http://www.dosemu.org/">http://www.dosemu.org/</ulink>.
 
</para>

<para>
We just decided to leave BETA stage, however: there may be serious bugs
and very little documentation for new features. The development version 
is particularly likely to have bugs. Please use it only if you
like to do active development. Preferably fix bugs in the development
version instead of reporting them.
</para>

</sect2>

<sect2>
<title>Where can I ask questions?</title>

<para>
If you have problems regarding installing and running dosemu after
reading the documentation, first try to help yourself: Your question
has probably been asked and perhaps answered before. Try some search
engine on the internet to retrieve that information. E.g. you can ask

<ulink url="http://groups.google.com">http://groups.google.com</ulink>

to find all newsnet articles containing the keywords of your
question. Helping yourself will probably be faster than asking a well
known question. It also frees up the time of developers from answering
trivial questions and so helps the further development of dosemu.
</para>

</sect2>

<sect2>
<title>Where can I report bugs and ask questions?</title>

<para>
If you want to ask questions and report bugs regarding dosemu, you
should consider subscribing to the linux-msdos mailing list.
To subscribe, send mail to <ulink
url="mailto:Majordomo@vger.kernel.org">Majordomo@vger.kernel.org</ulink>
with the following command in the body of your email message:
</para>

<screen>
subscribe linux-msdos your_username@your.email.address
</screen>

<para>
If you ever want to remove yourself from the mailing list, you can
send mail to <ulink
url="mailto:Majordomo@vger.kernel.org">Majordomo@vger.kernel.org</ulink>
with the following command in the body of your email message:
</para>

<screen>
unsubscribe linux-msdos your_username@your.email.address
</screen>

<para>
(95/8/11). When you are subscribed to linux-msdos, you can send your
report as mail to linux-msdos@vger.kernel.org. There is a gate that
send mails to linux-msdos@vger.kernel.org as postings to the
newsgroup named <emphasis>linux.dev.msdos</emphasis>. If your News provider
doesn't carry that group, ask her(him) to add that group. 
Before you ask a question, you should carefully read all of the
documentation, including this HOWTO and check one of the mailing list
archives listed at
<ulink url="http://www.dosemu.org/mailinglist.html">
http://www.dosemu.org/mailinglist.html
</ulink> to see whether your
question has already been asked and answered.
</para>

<para>
Alternatively, use the SourceForge Bug Tracking System for DOSEMU at
<ulink
url="http://sourceforge.net/tracker/?atid=457447&amp;group_id=49784&amp;func=browse">
http://sourceforge.net/tracker/?atid=457447&amp;group_id=49784&amp;func=browse
</ulink>. The advantage of this system is that your bug is less likely
forgotten.
</para>
</sect2>

<sect2>
<title>What documentation is available for dosemu?</title>

<para>
Dosemu comes with documentation. The main documentation files
README.txt and README-tech.txt cover virtually all aspects of dosemu
and may be more up-to-date than this HOWTO.
</para>

<para>
The "dosemu Novice's Altering Guide" or DANG is a road map to the
inner workings of dosemu.  It is designed for the adventurous, those
who wish to modify the source code themselves.  The DANG is maintained
by Alistair MacDonald (<ulink url="mailto:alistair@slitesys.demon.co.uk">alistair@slitesys.demon.co.uk</ulink>) and is
found in the doc directory of the dosemu source tree.
</para>

<para>
The EMU failure list (<filename>EMUfailure.txt</filename>) is a partial list of programs known
<emphasis>not</emphasis> to work under dosemu. 
</para>

<para>
And then, of course, there is the dosemu FAQ/HOWTO.  But you already
know about that, don't you.  It is also posted once in a while to the
mailing list and found in the doc-directory.  The most recent version
can be found at <ulink url="http://www.dosemu.org">http://www.dosemu.org</ulink>.
</para>

</sect2>

<sect2 id="FailureNotInEmufailure">
<title>I have a program that fails, not listed in EMUfailure.txt</title>

<para>
First check, if the failure of your program is not caused by some
of the fundamental incapabilities of dosemu, listed in 
<filename>EMUfailure.txt</filename>. If
you think you have something new, please report to 
<ulink url="mailto:linux-msdos@vger.kernel.org">linux-msdos@vger.kernel.org</ulink>.
Perhaps it can be made going with the help others. Give detailed
information about your setup, tell the version of kernel, dosemu etc
and name the observed errors. You can use xdosemu to cut and paste the
error message into your report. But keep your report in a readable
form. We know the content of the commented out options. So only send the
active lines from your <filename>dosemu.conf</filename> and 
<filename>~/.dosemurc</filename>.
Try running dosemu with some or all
debug output turned on and scan through your debug output
and at first only send those parts you think are relevant. Few people
are willing to decode some long attachment to a mail, to do debugging
for others. But keep your logs at hand, in case others ask detailed
questions.
</para>

</sect2>

<sect2>
<title>How do I submit changes or additions to the HOWTO?</title>

<para>
The preferred method is to edit the file
<emphasis>dosemu-HOWTO-xx.x.sgml</emphasis> to incorporate the changes, create a
diff file by typing something like:
</para>

<screen>
diff -uw original-file new-file
</screen>

<para>
and send it to <ulink url="mailto:linux-msdos@vger.kernel.org">linux-msdos@vger.kernel.org</ulink>.
If you do not know SGML, that's ok.  Changes or new information in any
form will be accepted.  Creating the diff file just makes it easier on
the HOWTO maintainer.  :-)
</para>

</sect2>

<sect2>
<title>Message from Greg...</title>

<para>
Unless otherwise stated, Linux HOWTO documents are copyrighted by
their respective authors. Linux HOWTO documents may be reproduced and
distributed in whole or in part, in any medium physical or electronic,
as long as this copyright notice is retained on all copies. Commercial
redistribution is allowed and encouraged; however, the author would
like to be notified of any such distributions.
</para>

<para>
All translations, derivative works, or aggregate works incorporating 
any Linux HOWTO documents must be covered under this copyright notice. 
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux HOWTO
coordinator at the address given below.
</para>

<para>
In short, we wish to promote dissemination of this information through as
many channels as possible. However, we do wish to retain copyright on the
HOWTO documents, and would like to be notified of any plans to redistribute
the HOWTOs. 
</para>

<para>
If you have questions, please contact Greg Hankins, the Linux HOWTO 
coordinator, at gregh@cc.gatech.edu(95/8/11).
</para>

</sect2>

</sect1>

<sect1>
<title>Compiling and installing dosemu</title>

<sect2>
<title>Where are the installation instructions?</title>

<para>
The installation instructions are in the file <filename>INSTALL</filename>,
included in the distribution.
</para>

</sect2>

<sect2>
<title>Top problems while compiling and installing dosemu.</title>

<orderedlist>

<listitem>
<para>
Forgetting to read the <filename>README</filename> and
<filename>INSTALL</filename>.
</para>
</listitem>

<listitem>
<para>
Try to compile some old version of dosemu.
</para>
</listitem>

<listitem>
<para>
Use dosemu with a kernel that does not have <literal>IPC</literal> compiled in.
</para>
</listitem>

<listitem>
<para>
Compile with gcc older than 2.95.2, egcs older than 2.91.66 (1.1.2)
or glibc older than 2.1.3.
</para>
</listitem>

<listitem>
<para>
Forgetting to use a dosemu-freedos-bin tarball when no other DOS
is available on the system.
</para>
</listitem>

<listitem>
<para>
Run DOSEMU with partition access while they are already mounted.
</para>
</listitem>

</orderedlist>

</sect2>

<sect2>
<title>How do I make a.out binaries?</title>

<para>
 Starting with version <literal>0.64.4</literal> there is no a.out support any more.
If you absolutely need it, you must use version <literal>0.64.3.1</literal>.
The configure script then should take care for this, if your setup is a
standard setup. 
</para>

</sect2>

<sect2>
<title>How do I compile dosemu on a machine with low memory?</title>

<para>
Marty Leisner <email>leisner@sdsp.mc.xerox.com</email> reported (95/4/8) that:
</para>

<para>
If you have problems with running out of swap space you may want to
add <literal>CFLAGS+=-fno-inline</literal> after <literal>CFLAGS</literal> is defined in
<filename>src/dosext/dpmi/Makefile</filename>.  Be careful before you do this and check for
the existence of swap space.  I found Linux crashes at times when it
has no swap space.
</para>

</sect2>

<sect2>
<title>Compilation fails with some strange error regarding "slang"</title>

<para>
You probably have <literal>plugin_slang off</literal>
in your compiletime-settings file. You need to change it to
<literal>plugin_slang on</literal> and recompile.
</para>

</sect2>

<sect2>
<title>What configurable options are available?</title>

<para>
The <filename>compiletime-settings.help</filename> file describes the
options you can change
at compile time. <filename>README.txt</filename> describes the options you can
change at run time.
</para>

</sect2>

<sect2>
<title>Do I need to run dosemu as root?</title>

<para>
No. Although most of dosemu drops root privilege after initialization, it is still 
safer to not run dosemu as root. Most normal DOS applications don't need dosemu
to run as root, especially if you run dosemu under X. 
Thus you should not allow users to run a suid root copy of dosemu,
wherever possible, but only a non-suid copy. You can configure this on
a per-user basis using the <filename>dosemu.users</filename>
file, or setup a configuration using <application>sudo</application>
and use <command>dosemu -s</command> (see <filename>INSTALL</filename>).
</para>

<para>
Programs that require direct access to hardware ports (e.g. if the
program needs to talk to some unusual hardware that is not supported
by Linux and dosemu) require dosemu to run as root but printers,
serial ports, mice, video cards and sound are emulated by dosemu so
you won't usually need direct hardware access and won't need to
run as root to use these. 
Some programs are just too sneaky for
dosemu's hardware emulation to work properly though ...
</para>

<para>
You will <emphasis>need</emphasis> to edit <filename>dosemu.users</filename> (see
<filename>dosemu.users.example</filename>) for any suid-root/sudo
access beyond console graphics or run dosemu as root for hardware
access.
</para>

</sect2>

<sect2>
<title>How do I patch dosemu?</title>

<para>
If you do patch dosemu from one version to another, do 
&quot;<command>make pristine;./configure; make</command>&quot;. 
If you don't make pristine, at least the version
of the new executable will be wrong, if the whole thing compiles at
all (97/2/9).
</para>

</sect2>

<sect2 id="whatdosversion">
<title>What versions of DOS are known to run with dosemu?</title>

<para>
All versions of DOS should work with dosemu, with the following caveats:
</para>

<para>
DOS 4.01 had problems by itself, so it won't work reliably with dosemu 
either.
</para>

<para>
With <emphasis>MsDos-7</emphasis> aka <emphasis>Win95</emphasis> you must not start the graphic shell 
at bootup. If you make the hdimage bootable with the so called "Rescue Disk"
you are offered to make during the Windows installation, you get the right
settings. If you use your normal Win95 installation to transfer the system
files, have a look at the msdos.sys written on the hdimage and change the
settings under the section [Options] to have entries like:
</para>

<screen>
[Options]
Logo=0
BootGUI=0
</screen>

</sect2>

</sect1>

<sect1>
<title>Hard disk setup</title>

<sect2>
<title>How do I use my hard disk with dosemu?</title>

<para>
First, mount your dos hard disk partition as a Linux subdirectory.
For example, you could create a directory in Linux such as <filename role="directory">/dos</filename> (mkdir
-m 755 /dos) and add a line like:
</para>

<screen>
/dev/hda1       /dos     msdos   umask=022
</screen>

<para>
to your <filename>/etc/fstab</filename>.  (In this example, the partition is mounted
read-only.  You may want to mount it read/write by replacing "022"
with "000" and using the -m 777 option with mkdir).  Now <command>mount
/dos</command>.  
</para>

<para>
Now you can run (for instance)
<command>lredir f: linux\fs/dos</command>
at the DOS prompt to map drive F to /dos.
Re-redirecting C using <command>lredir c: linux\fs/dos</command> works too
but then you need to copy all your dosemu utilities (in 
<filename role="directory">c:\dosemu</filename>) to a place where they can still be
found.

If you want to boot via <filename role="directory">/dos</filename>, read on.
</para>

<para>
The <filename>README.txt</filename> says:
</para>

<para>
  you just can have a Linux directory containing all what you
  want to have under your DOS C:. Copy your IO.SYS, MSDOS.SYS or what
  ever to that directory (e.g. <filename role="directory">$HOME/.dosemu/bootdir</filename>), put
<literal>$_hdimage = "bootdir"</literal>
  into your <filename>$HOME/.dosemurc</filename>, and up it goes. 
Alternatively you can specify an absolute path such as
"/dos" or "/home/username/dosemu/freedos".
  DOSEMU makes a lredir'ed
  drive out of it and can boot from it. You can edit <filename>config.sys</filename> and
  <filename>autoexec.bat</filename> within this directory before you start dosemu.  Further more, you may have a more sohisticated setup. Given you want to
  run the same DOS drive as you normal have when booting into native
  DOS, then you just mount you DOS partition under Linux (say to
  <filename role="directory">/dos</filename>)
  and put links to its subdirectories into the boot dir. This way you
  can decide which files/directories have to be visible under DOSEMU and
  which have to be different. Here's a small and incomplete example
  bootdir setup:
</para>

<screen>
config.sys
autoexec.bat
command.com -&#62; /dos/command.com
io.sys -&#62; /dos/io.sys
msdos.sys -&#62; /dos/msdos.sys
dos -&#62; /dos/dos
bc -&#62; /dos/bc
windows -&#62; /dos/windows
</screen>

</sect2>

<sect2>
<title>How can I access the hdimage from Linux?</title>

<para>
Use mtools. With a line in <filename>/etc/mtools.conf</filename> like: 
</para>

<screen>
drive n:  file="/path/to/hdimage" MTOOLS_SKIP_CHECK=1 \
MTOOLS_LOWER_CASE=1 MTOOLS_NO_VFAT=1 partition=1 offset=128
</screen>

<para>
you can use the mtools on the hdimage, like "mdir n:". "mcopy
n:/config.emu /tmp" copies the config.emu file from the hdimage to
/tmp/config.emu. You can edit it there and copy it back. Use a drive
letter you find sensible. "N:" is only an example.
</para>

</sect2>

<sect2>
<title>Can I use my stacked/double-spaced/super-stored disk?</title>

<para>
At this time, compressed drives cannot be accessed via the
redirector (lredir or emufs) on a standard kernel. There is a patch
for the kernel to mount compressed files under the name "dmsdosfs".
Find it on ibiblio.org and its mirrors

<ulink
url="http://ibiblio.org:/pub/Linux/system/filesystems/dosfs/"
>http://ibiblio.org:/pub/Linux/system/filesystems/dosfs/</ulink>.

A good idea is also to look in <ulink
url="http://ibiblio.org:/pub/Linux/Incoming">http://ibiblio.org:/pub/Linux/Incoming</ulink>
for a newer version. 
The "wholedisk" option in older versions of dosemu is no longer
allowed in recent versions, however, a line like
</para>

<screen>
$_hdimage = "/dev/hda1"
</screen>

<para>
may work, if you have read and write access to this device and
at the risk that you could lose all data in that partition
on a dosemu crash. Also it is extremely dangerous to let
two dosemu sessions access the partition at the same time.
</para>

<para>
If your dos partition is already mounted with write access and you try
to run dosemu with partition access, dosemu will print a
warning message and abort.  This prevents DOS and Linux from making
independent writes to your disk and trashing the data on your dos
partition (95/8/11).
</para>

<para>
Holger Schemel <email>q99492@pbhrzx.uni-paderborn.de</email> reported
(94/2/10) that:
</para>

<para>
Works even fine under dosemu with MS-DOS 6.0. If you have problems, then
you have to edit the file `DBLSPACE.INI' manually and change the disk
letter to the letter your drive gets under dosemu.
</para>

</sect2>

<sect2>
<title>Creating your own hdimage file.</title>

<para>
There is an extra util program called mkfatimage16 which
allows for creating a hdimage file headers.  The full information is in the
manpage (man/mkfatimage16.1) included in your distribution.
</para>

<para>
To create a hard disk image file with a geometry corresponding to that of a
real hard disk of 32 megabytes run:
</para>

<screen>
mkfatimage16 -k 32768 &#62; hdimage
</screen>

<para>
This is probably too large for most needs; if you need this much
space, consider using the disk redirector.
</para>

<para>
Usually it is a good idea to format the drive after it.
</para>

</sect2>

</sect1>

<sect1>
<title>Parallel ports, serial ports and mice</title>

<sect2>
<title>Port access worked with older version, but doesn't work now!</title>

<para>
Read <filename>README.txt</filename>  and the port-section 
in <filename>dosemu.conf</filename>.
</para>

</sect2>

<sect2>
<title>Port access was faster with older versions!</title>

<para>
To have a chance to log port access, by default every port access
produces an exception out of vm86-mode. This takes some time. 
If you don't want to log port access, use the keyword <literal>fast</literal> in the
appropriate port statement.
</para>

</sect2>

<sect2>
<title>Where are the (microsoft compatible) mouse drivers?</title>

<para>
Tom Kimball <email>tk@pssparc2.oc.com</email> reported (93/11/24) that:
</para>

<para>
Several people said to use a different mouse driver and suggested
some.  I found a couple that seem to work fine.
</para>

<screen>
oak.oakland.edu:/pub/msdos/mouse/mouse701.zip   (mscmouse)
oak.oakland.edu:/pub/msdos/mouse/gmous102.zip   (gmouse)
</screen>

<para>
Normally you can use dosemu's internaldriver, so you don't need any
additional mousedriver in dosemu outside winemu (97/2/10).
</para>

</sect2>

<sect2>
<title>Why doesn't the mouse driver work?</title>

<para>
Mark Rejhon <email>mdrejhon@magi.com</email> reported (95/4/7) that:
</para>

<para>
If you start the mouse driver and it just hangs (it might actually
take 30-60s), but if you are waiting longer than a minute for the
mouse driver to start, try specifying the COM port that the mouse
is on, at the mouse driver command line.
</para>

</sect2>

<sect2>
<title>Why does dosemu clobber COM4?</title>

<para>
Rob Janssen <email>rob@pe1chl.ampr.org</email> reported (94/3/24) that:
</para>

<para>
According to <email>jmorriso@bogomips.ee.ubc.ca</email>, "dosemu still
clobbers COM4 (0x2e8, IRQ 5). 0x2e8 isn't in ports{} in config.  I
have to run setserial /dev/ttyS3 irq 5 on it after dosemu exits."
</para>

<para>
This is caused by your VGA BIOS.  I have found that by enabling the IO
port trace and seeing where it was clobbered.
</para>

<para>
Disable some ports in config and it will
work fine.  When you then have problems with the video, try to enable
more selective ranges of IO addresses (e.g., 40-43).
</para>

</sect2>

<sect2>
<title>How do I use dosemu over the serial ports?</title>
<para></para>
</sect2>

<sect2>
<title>How can I switch between dosemu and a shell over the serial line?</title>

<para>
John Taylor <email>taylor@pollux.cs.uga.edu</email> reported (94/5/25)
that:
</para>

<para>
I am running Linux 1.1.13 and want to point out a great feature that
should be protected and not taken out (IMHO). With the 52 version, I
can run the program, "screen."  From screen, i can invoke dosemu -D-a.
What is really great (IMHO) is the screen commands (the CTRL-A cmds)
still work. This means I can do a CTRL-A C and add another unix shell,
and switch between the two (DOS / UNIX).  This allows me to use dosemu
over the serial line really well, because switching is made easy.
</para>

<para>
You may also consider using <command>dosemu -dumb</command>. In this
case the escape sequences from the DOS applications go directly to the
terminal.
</para>

</sect2>

<sect2>
<title>How can I get the parallel ports to work?</title>

<para>
The dosemu.conf has lines at the end to redirect printers to either
lpr or a file.  If you want direct access to the bare metal, comment
out these emulation lines, and add the line:
</para>

<screen>
$_ports = "device /dev/lp0 fast range 0x3bc 0x3bf" # lpt0
</screen>

<para>
for the "monitor card" printer port (corresponds to /dev/lp0), or:
</para>

<screen>
$_ports = "device /dev/lp1 fast range 0x378 0x37f" # lpt1
</screen>

<para>
or:
</para>

<screen>
$_ports = "device /dev/lp1 fast range 0x278 0x27f" # lpt2
</screen>

<para>
for LPT1 (/dev/lp1) or LPT2 (/dev/lp2) respectively(97/2/9).
</para>

<para>
Hans Lermen <email>lermen@dosemu.org</email> writes:
</para>

<para>
But NOTE: these lines should not be _added_ simply, the string should
be concatenated such as:
</para>

<screen>
$_ports = "...."
$_ports = $_ports, " device /dev/lp0 fast range 0x3bc 0x3bf"
=
This blank is important
</screen>

<para>
Note: newer kernels don't have hardcoded dependencies between
<filename>/dev/lp*</filename> and ioports. Check
<filename>/proc/ioports</filename> for lines such as
<literal>0378-037a : parport0</literal>.
</para>

</sect2>

</sect1>

<sect1>
<title>Multiple users and Non-interactive sessions</title>

<sect2>
<title>Can I use dosemu on a multi-user system?</title>

<para>
Yes, you can configure dosemu on a per-user basis. See README.txt for
details.
</para>

</sect2>

<sect2>
<title>How can I run dos commands non-interactively?</title>

<para>
  
You can do any of the following:
</para>

<orderedlist>

<listitem>
<para>
use the keystroke configuration option and the -input command line option
as described in the manual page to specify keystrokes on the command
line that will act exactly as if you had typed them within dosemu.
</para>
</listitem>

<listitem>
<para>
Use the <command>dosemu [-E] dos-command</command> and 
<command>unix -e</command> as your
last line in <filename>autoexec.bat</filename>.
The specified dos command is executed. If '-E' is not given, then
DOSEMU exits after running  the  command.
</para>
</listitem>

</orderedlist>

<para>
Here are some additional alternatives:
</para>

<para>
Daniel T. Schwager <email>danny@dragon.s.bawue.de</email> reported
(94/7/2) that:
</para>

<para>
You can use different dosemu.conf files (and different hd-boot-images
with different autoexec.bat's) and call dosemu like:
</para>

<screen>
$ dosemu -f my_quicken_q_exe_dosemu.conf
</screen>

<para>
---------------------
</para>

<para>
Dietmar Braun <email>braun@math20.mathematik.uni-bielefeld.de</email>
reported (94/7/4) that:
</para>

<para>
This is no problem at all when you use the redirector of dosemu.  It
is possible to redirect a drive letter to a linux path given by an
environment variable.
</para>

<para>
So I have a shell script named "<emphasis>DOS</emphasis>" which does something like: 
</para>

<screen>
mkdir /tmp/dos.$$
DOSTMP=/tmp/dos.$$; export DOSTMP
</screen>

<para>
and then a little trick to get "<emphasis>echo $* &#62;
$DOSTMP/startup.bat</emphasis>" really working (actually a small C Program 
which turns `/' in `<emphasis>\</emphasis>' and terminates lines correctly for
messy dos with cr/lf pairs and adds <literal>^Z</literal> at the end of the
file), creates startup files, links and so on in this directory, and
then starts dosemu. Within "<filename>autoexec.bat</filename>" drive c: is
redirected from hdimage to this tmp-directory, which has links for
<envar>$HOME</envar> and <envar>$PWD</envar>.
</para>

<para>
So if I want to see my filenames shortened to 8.3 I can type "<emphasis>DOS
dir</emphasis>" and I get my current directory listing.  So I have full DOS
multi user (I don't have any DOS partition and redirecting to Linux
preserves user permissions) and multi tasking. (dosemu sessions 
are completely independent).  I did this once to be able to use a dos
driver for my printer. My printcap df is actually a DOS program. So
you can even make DOS executables act as lpr filters. 
</para>

</sect2>

</sect1>

<sect1>
<title>dosemu and Netware</title>

<sect2>
<title>How do I get Netware access from dosemu?</title>

<para>
As always, access through the Linux filesystem is preferred. Mount
your Netware drives with Caldera's Netware utilities or Volker
Lendecke's free ncpfs utility 
<ulink
url="ftp://ftp.gwdg.de:/pub/linux/misc/ncpfs"
>ftp://ftp.gwdg.de:/pub/linux/misc/ncpfs</ulink>.
If you need real IPX access,
e.g. to run Novell's "syscon", read <filename>doc/NOVELL-HOWTO.txt</filename>.
You probably can not currently access Netware from FreeDOS.
</para>

</sect2>

</sect1>

<sect1>
<title>dosemu and X-windows(97/2/9).</title>

<sect2>
<title>How do I obtain fullscreen mode in xdosemu?</title>
<para>
Toggle between windowed and fullscreen mode using
<keycap>Ctrl-Alt-F</keycap>.
</para>
</sect2>

<sect2>
<title>Can I run dosemu in console mode while running X?</title>

<para>
Ronald Schalk <email>R.Schalk@uci.kun.nl</email> reported (94/1/17)
that:
</para>

<para>
Yes, no problem.  Just remember to use <keycap>ctrl-alt-&lt;Fn&gt;</keycap> to go to
a Virtual Console (VC), and you can run any Linux application (dosemu
is a linux-application).  I've got almost always WP5.1 in a dos
session.
</para>

<para>
<literal>[</literal>Note:  Use ctrl-alt-F7 to switch back to X from dosemu, if X
runs on VC7.<literal>]</literal>
</para>

</sect2>

<sect2>
<title>Is it possible to run dosemu in a window in X-windows?</title>

<para>
If you have X installed and you have successfully compiled dosemu
and run it successfully outside X-windows, you should be able to
run <application>xdosemu</application> or <command>dosemu -X</command> right away to bring up a dosemu
window.  If this does not work, make sure:
</para>

<orderedlist>
<listitem>
<para>
Dosemu has X support compiled in. This is default, however
if you you have compiled dosemu with "x off" in the
compiletime-settings file you don't have X support. So changing
"x off" to "x on" in the compiletime-settings file, followed by
"make pristine; make; make install" should build 
you a dosemu-executable with X support, if you have the 
X-libraries installed in <filename role="directory">/usr/X11R6</filename>.
</para>
</listitem>
<listitem>
<para>
You might need to fix backspace and delete; but nowadays this is
rarely necessary. In that case, set up your X key-mappings.  In an xterm, type
<command>xmodmap -e "keycode 22 = 0xff08"</command>, and then <command>xmodmap -e "keycode 107 = 0xffff"</command>.
</para>
</listitem>
<listitem>
<para>
Configure the X-related configuration options in
<filename>~/.dosemurc</filename>.
</para>
</listitem>
</orderedlist>

<para>
Alternatively, you can run dosemu inside a color xterm,
which is not recommended because many color xterms have buggy
support for the complex text display capabilities of dosemu.
This does not require <literal>X_SUPPORT</literal> to be compiled into dosemu.
However, if you really want to do this, do the following steps:
</para>

<orderedlist>
<listitem>
<para>
If necessary set up your X key-mappings as explained above.
</para>
</listitem>
<listitem>
<para>
Configure the terminal-related (not X-related) settings in
<filename>~/.dosemurc</filename>.
</para>
</listitem>
</orderedlist>

<para>
Marty Leisner <email>leisner@sdsp.mc.xerox.com</email> reported (95/3/31)
that:
</para>

<para>
I have xrdb log the following resources
</para>

<screen>
dosxterm*Font:  vga
dosxterm*geometry:      80x25
dosxterm*saveLines: 25
</screen>

<para>
or I alias <command>dosxterm</command> to 
<command>term -fn vga -title dosxterm -geometry 80x25 -sl 25</command>.
</para>

<para>
If you use the xrdb method, all you have to do is run
<command>xterm -name dosxterm</command>.
</para>

</sect2>

<sect2>
<title>Xdosemu does not work on a remote X-display!</title>

<para>
At present, dosemu is set up to use the MIT shared memory
extensions. This extension only works on a local display. If you want
to run xdosemu on a remote display, you might need to set
<literal>$_X_mitshm=(off)</literal> in your
<filename>dosemu.conf</filename>
or <filename>.dosemurc</filename>.
</para>

</sect2>

<sect2>
<title>Xdosemu does not find the VGA font</title>

<para>
Check that the vga fonts you installed are listed in the font.dir of the
directory you installed the fonts in:
</para>

<screen>
hertz:~&#62; grep misc /usr/X11R6/lib/X11/XF86Config
FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
hertz:~&#62; grep vga /usr/X11R6/lib/X11/fonts/misc/fonts.dir 
vga.pcf vga
vga11x19.pcf vga11x19
hertz:~&#62; ls /usr/X11R6/lib/X11/fonts/misc/vga*
/usr/X11R6/lib/X11/fonts/misc/vga.pcf
/usr/X11R6/lib/X11/fonts/misc/vga11x19.bdf
/usr/X11R6/lib/X11/fonts/misc/vga11x19.pcf

</screen>

<para>
If you installed some X-fonts, like you did when you installed dosemu with
X-Support for the first time,  "mkfontdir" and then "xset fp rehash" needs
to be run. The dosemu install should take care for "mkfontdir" and tells you
about "xset fp rehash". Tell us if it doesn't work for you.
(97/2/13)
</para>

</sect2>

<sect2>
<title>The vga font is very small on my high resolution display</title>

<para>
Set <literal>$_X_font="vga11x19"</literal>.
</para>

</sect2>

<sect2>
<title>Dosemu compilation fails with some strange error regarding X!</title>

<para>
As stated above, dosemu uses the MIT shared memory extensions by
default. Under XFree86 they are only available with Version 3.1.2 and
above. If you have an older version, consider to upgrade, or configure
dosemu to not use this extension by setting <literal>mitshm
off</literal> in <filename>compiletime-settings</filename> (97/2/9).
</para>

</sect2>

<sect2>
<title>Does ansi emulation work properly?</title>

<para>
Marty Leisner <email>leisner@sdsp.mc.xerox.com</email> reported (95/3/31)
that:
</para>

<para>
Yes.  I use <literal>nnansi.com</literal> under X windows.  I find 25, 43 and 50
line mode work properly, however 50 line mode is difficult to use on a
1024x768 screen (unless smaller fonts are used or you use a bigger
screen.  43 line mode will resize the <literal>xterm</literal> window to use 43 lines.
</para>

<para>
<literal>DEVICE=c:\bin\nansi.sys</literal> in FreeDOS'
<filename>config.sys</filename> works too, except in "dumb" mode.
</para>

</sect2>

</sect1>

<sect1>
<title>dosemu and MS-Windows 3.1</title>

<sect2>
<title>Is it possible to run MS-Windows 3.1 under dosemu?</title>

<para>
Yes, it is possible to boot WINOS2 (the modified version of Windows 3.1
that OS/2 uses) under DOSEMU+MSDOS (not FreeDOS). 
Many kudos to Lutz &amp; Dong!
But with some restrictions, and YOU NEED BOTH LICENSES, for
WINDOWS-3.1 as well OS/2! for more details see
<filename>README.txt</filename>.
</para>

</sect2>

<sect2>
<title>Can I run 32bit stuff with winemu</title>

<para>
Sorry, no you can't.
Win32s needs stuff running in ring 0. That's a "nono" with Linux.
(97/04/27)
</para>

</sect2>

<sect2>
<title>Errormessage: Cannot find the vdtapi.386 file when starting dosemu</title>

<para>
As explained above, winemu can't handle 32 bit stuff. All drivers ending in
386 are 32bit. So to run winemu, you have to delete all references to .386
drivers in your <filename>win.ini</filename>.
(97/04/27)
</para>

</sect2>

<sect2>
<title>Windows 3.x in xdosemu:</title>

<para>
As of version 0.64.3, DOSEMU is able to run Windows in xdosemu.
it is safer then starting windows-31 on the console, because 
<emphasis>when</emphasis> it
crashes, it doesn't block your keyboard or freeze your screen.
</para>

<para>
Hints:
</para>

<orderedlist>
<listitem>
<para>
Get Dosemu &#38; Linux source.
</para>
</listitem>
<listitem>
<para>
Unpack dosemu.
</para>
</listitem>
<listitem>
<para>
Run "./configure" to configure Dosemu (it will enable vm86plus as a
default).
</para>
</listitem>
<listitem>
<para>
Type "make" to compile.
</para>
</listitem>
<listitem>
<para>
For faster graphics (256 colors instead of 16 is faster in xdosemu),
get a Trident SVGA drivers for Windows. The files are tvgaw31a.zip
and/or tvgaw31b.zip. They are available at garbo.uwasa.fi in
/windows/drivers (any mirrors?).
</para>
</listitem>
<listitem>
<para>
Unpack the Trident drivers.
</para>
</listitem>
<listitem>
<para>
In Windows setup, install the Trident "800x600 256 color for 512K
boards" driver.
</para>
</listitem>
<listitem>
<para>
Do the things described above to get and install OS2WIN31.
</para>
</listitem>
<listitem>
<para>
Start xdosemu.
</para>
</listitem>
<listitem>
<para>
In Dosemu, go to windows directory and start winemu.
</para>
</listitem>
<listitem>
<para>
Cross your fingers.
</para>
</listitem>

</orderedlist>

</sect2>

<sect2>
<title>Can I install windows from within dosemu?</title>

<para>
<emphasis>No</emphasis>, you can't. Dos will tell you something like:
</para>

<screen>
The XMS driver you have on your system is not
compatible with Windows...
</screen>

<para>
You need to install windows from Dos. You can copy the windows tree to
somewhere on your Linux Filesystem and use lredir to mount it on the
same place as it is in dos. Example:
</para>

<screen>
You have windows in d:\windows
You have d:\ mounted as /dosc in Linux
You copy the windows tree to Linux, 
e.g. <command>cp -a /dosd/windows /usr/share</command>
Inside dosemu you redirect the copied tree like
<command>lredir d: linux\fs\dosd</command>
</screen>

<para>
Now dosemu can't mess around in you windows directory, but changes in the
windows directory aren't seen by dosemu too. If you want to do the
same with windows on drive c:&gt; look in this FAQ how to redirect c:.
</para>

<para>
But you can use "setup" from inside the windows directory to install drivers
and change some settings.
(97/2/1497)
</para>

</sect2>

<sect2>
<title>Notes for the mouse under win31-in-xdosemu:</title>

<orderedlist>
<listitem>
<para>
Use the mouse driver "mouse.drv" from WinOS2
</para>
</listitem>

<listitem>
<para>
In order to let the mouse properly work you need the following in your
<filename>win.ini</filename> file:
</para>

<screen>
[windows]
MouseThreshold1=0
MouseThreshold2=0
MouseSpeed=0
</screen>
 
</listitem>
<listitem>
<para>
The mouse cursor gets not painted by X, but by windows itself, so it depends
on the refresh rate how often it gets updated, though the mouse coordinates
movement itself will not get delayed.
In fact you have 2 cursors, but the X-cursor is given an `invisible'
cursor shape while within the DOS-Box.
</para>

</listitem>
<listitem>
<para>
Because the coordinates passed to windows are interpreted relatively, we
need to calibrate the cursor. This is done automatically whenever you
enter the DOS-Box window: The cursor gets forced to 0,0 and then back
to its right coordinates. Hence, if you want to re-calibrate the cursor,
just move the cursor outside and then inside the DOS-Box again.
(97/2/10) 
</para>
</listitem>
</orderedlist>

</sect2>

<sect2>
<title>Why did my Icon disappear from the Program manager?</title>

<para>
MS-Windows and WinOS2 handle the program manager group differently. While
MS-Win store the setup in progman.ini, WinOS2 wants the contents of
progman.ini in system.ini. Here's a tip from Todd
T. Fries <email>friest@acm.org</email>:
</para>

<screen>
cat progman.ini &gt;&gt; system.ini
</screen>

<para>
Be sure to use &gt;&gt;. &nbsp; :-)
</para>

</sect2>

</sect1>

<sect1>
<title>Video and sound</title>

<sect2>
<title>Can I run 32-bit video games under dosemu?</title>

<para>
Mark Rejhon <email>mdrejhon@magi.com</email> reported (95/4/8) that:
</para>

<para>
With the recent DPMI improvements that has gone into 0.60, you can now
run some 32-bit video games in dosemu.   If the game is compatible in
an OS/2 DOS box, there are chances that it will work in dosemu.
(Example 32-bit games include Descent, Dark Forces, Mortal Kombat 2, 
Rise of The Triad, which have all successfully been tested in recent 
dosemu releases).
</para>

<para>
Before you attempt to run a video game on the console,
you must have the keyboard configured in raw keyboard mode,
and enabled VGA graphics modes, in
<filename>dosemu.conf</filename> or run <command>dosemu -kV</command>.
Moreover you must run DOSEMU as root, execute it via sudo or make
<filename>dosemu.bin</filename> suid root.
</para>

<para>
Alternatively try running the game in xdosemu; press
<keycap>Ctrl-Alt-F</keycap> to toggle fullscreen mode. Root
permissions are unneeded and in almost
all cases no configuration is necessary, but the speed may be
slower than on the console, and a few games still exhibit glitches.
Use <command>speed 0</command> or
some high value instead of 0 at the DOS prompt to temporarily set 
your HogThreshold to run DOSEMU
at full tilt. After exiting the game use <command>speed 1</command>
or exit DOSEMU to give the CPU some rest.
</para>

<para>
Note that game timers can be a little bit slow, due to
Linux multitasking and lack of high-frequency timer support.  So the
games may run from anywhere from 5 to 100 percent speed.  Typically,
the speed is approximately 50 percent in recent dosemu releases and is
expected to improve eventually.
</para>

<para>
Who knows, it might even work. If you can't get it to work, check
EMUfailure.txt if the program is listed there, or falls in a category of
programs that at present don't or probably never work with dosemu. If
you think, it should be listed in <filename>EMUfailure.txt</filename>, report to
<email>linux-msdos@vger.kernel.org</email>.
</para>

</sect2>

<sect2>
<title>Exiting from dosemu on the console gives me a screen full of garbage.</title>

<para>
 (95/4/8)
The problem is that the font information for the VGA text screen is
not being saved.  Get a copy of the svgalib package.  The current
source is in:
</para>

<screen>
ibiblio.org:/pub/Linux/libs/graphics/svgalib-1.4.3.tar.gz
</screen>

<para>
It may also be available as a pre-compiled package in your favorite
Linux distribution (e.g., Slackware, etc.).  Use <literal>savetextmode</literal> to
save the current text mode and font to a file in <filename role="directory">/tmp</filename> before
running dosemu.  Then run <literal>textmode</literal> upon exiting dosemu to restore
it.
</para>

<para>
Addition from <email>lermen@elserv.ffm.fgan.de</email> (97/2/11):
</para>

<para>
Have a look also at <filename>README-tech.txt</filename>, where it
is explained how <application>dosdebug</application> can aid you recovering.
</para>

<para>
If you use a graphical framebuffer console (but not vesafb) then
<command>/usr/sbin/fbset "1400x1050-60"</command>
or whatever your normal resolution and frequency are may help.
</para>

</sect2>

<sect2>
<title>Why doesn't my soundcard software work with dosemu?</title>

<para>
Dosemu includes a Sound Blaster 16 emulator called SBemu. See
sound-usage.txt for information on setting this up. It may not
work for everything. Programs that are known to work are Impulse
Tracker and most games. One that is known not to work well is
FastTracker II.
</para>

<para>
If you have trouble getting sound to work at all, make sure you
have a working OSS driver and have configured everything properly
as described in sound-usage.txt. If most of your sound software
works but some programs don't detect sound, make sure your BLASTER
environment variable is set properly. Finally, make sure you are
aware of the difference between digital sound, FM, and MIDI; it
may be, for example, that you have digital sound working but MIDI
isn't set up properly.
</para>

<para>
If you believe DOSEMU really is having trouble with a specific
program, and it isn't a configuration error on your part, then
please, submit a bug report! Have a look at sound-usage.txt for
information on getting debugging output.
</para>

</sect2>

</sect1>

<sect1>
<title>Problems and fixes</title>

<sect2>
<title>Security issues</title>

<para>
A full featured Dosemu needs to be suid root, e.g to access ports. 
Most dos programs don't need this however so when running under X you
usually do not need to run dosemu as root.
Dosemu runs as suid "root" only at the initialization stage, and drops
this right thereafter, except in a forked "port server" (where necessary).
But with DPMI, the Dos client program can access the whole user
space, hence also can modify the dosemu code itself.
This cannot lead to privilege elevation but may crash DOSEMU.
There are several other important security considerations discussed in the 
Security section of <filename>README.txt</filename>.
</para>

</sect2>

<sect2>
<title>dosemu says "ERROR: general protection" and terminates when I run some program</title>

<para>
This will happen if your program uses DPMI and you do not have DPMI
enabled. Try changing the line:
</para>

<screen>
$_dpmi = (off)
</screen>

<para>
in <filename>dosemu.conf</filename> to:
</para>

<screen>
$_dpmi = (nnnn)
</screen>

<para>
where <literal>nnnn</literal> is the number of kilobytes of memory you wish to give to
the DOS program (e.g. Doom requires about 4000 kilobytes).
</para>

<para>
Another likely cause is that your program uses VCPI (see
<filename>EMUfailure.txt</filename>
for more details) or some other means of switching to protected mode 
(other than DPMI), in which case it will never work under dosemu.
</para>

<para>
If none of these is the case, see <xref linkend="FailureNotInEmufailure">.
</para>

</sect2>

<sect2>
<title>Dosemu dies when booting. I have Win95 installed.</title>

<para>
Dosemu relies that the Dos-Version on the hdimage and the Drive you map
to contain command.com are the same. If not, dosemu will crash sooner or
later. With the dual boot option Win95 offers when pressing the 
<keycap>F4</keycap>, <keycap>F5</keycap> and
<keycap>F8</keycap> keys with the "Starting Win95" text, versions on the Win95 drive may
swap. Take special care for command.com. Let your shell variable in
config.emu point to the correct static version of command.com, e.g.:
<literal>shell=c:\win95\command.com c:\ /P /E:1024</literal> (97/02/28)
</para>

</sect2>

<sect2>
<title>Dosemu hangs! How can I kill it?</title>

<para>
Switch to another console and type dosdebug, then type kill (it may
take a while but will work eventually).
</para>

</sect2>

<sect2>
<title>Dosemu crashed and now I can't type anything.</title>

<para>
Daniel Barlow <email>jo95004@sable.ox.ac.uk</email> reported (95/4/8) that:
</para>

<para>
If you have no terminal or network access that you can use to log in,
you may have to press the reset button.  If you can still get a usable
shell somehow, run <command>kbd_mode -a</command> to switch the keyboard out of
raw mode, and/or <command>stty sane</command> on the console so that you can see
what you're typing.
</para>

<para>
A useful thing to do is to use a script to run dosemu, and run
<command>kbd_mode -a</command> automatically right after dosemu.  When dosemu
crashes, the script usually will resume running, and execute
<command>kbd_mode -a</command>.
</para>

<para>
Alternatively, if the magic SysRq key is enabled in the Linux kernel,
you can use <keycap>Alt-SysRq-r</keycap> to switch to xlate mode, and
use <keycap>Alt-Fn</keycap> to switch to any other console (including
X, if your screen display is thoroughly broken).
</para>

</sect2>

<sect2>
<title>I've enabled EMS memory in dosemu.conf but it does not help.</title>

<para>
Rob Janssen <email>rob@pe1chl.ampr.org</email> reported (94/7/11):
Don't forget to load the provided <filename>ems.sys</filename> from
<filename>config.sys</filename>.
</para>

</sect2>

<sect2>
<title>How do I get rid of all those annoying "disk change" messages?</title>

<para>
(94/8/11)
Grab and install <application>klogd</application>.  Try:
</para>

<screen>
ibiblio.org:/pub/Linux/system/Daemons/sysklogd1.2.tgz
</screen>

</sect2>

<sect2>
<title>Why won't dosemu run a second time after exiting in console mode?</title>

<para>
 Aldy Hernandez <email>aldy@sauron.cc.andrews.edu</email> reported (94/7/8):
You should disable your video and/or BIOS caching.
</para>

</sect2>

<sect2>
<title>Why will dosemu run in a term but not in the console?</title>

<para>
JyiJiin Luo <email>jjluo@casbah.acns.nwu.edu</email> reported
(94/4/19):
I experienced exactly the same problem before. I figured out all the
video shadow in my AMI BIOS must be disabled. Now dosemu runs fine on
my system. 
</para>

</sect2>

<sect2>
<title>How can I speed up dosemu?</title>

<para>
In some cases it is useful to play with the value of the
<literal>HogThreshold</literal> variable in your <filename>dosemu.conf</filename> file.
</para>

<para>
Daniel Barlow <email>jo95004@sable.ox.ac.uk</email> reported
(95/4/8):
<literal>HogThreshold</literal> should now be set to approximately half of the BogoMips
value that the system reports on boot.
</para>

</sect2>

<sect2>
<title>How do I see debugging output?</title>

<para>
Daniel Barlow <email>jo95004@sable.ox.ac.uk</email> reported (95/4/8):
As of dosemu 0.60, debugging output is redirected to a file specified
on the command line.  Use <command>dosemu -D+a -o /tmp/debug</command> to log all
debug output to <filename>/tmp/debug</filename>.  There should no longer be any
need to redirect <literal>stderr</literal>.
</para>

</sect2>

<sect2>
<title>Why are my keystrokes echoed ttwwiiccee??</title>

<para>
Nick Holloway <email>alfie@dcs.warwick.ac.uk</email> reported (94/2/22)
that:
</para>

<para>
After running dos after playing with some stty settings, I was getting
doubled key presses.  I can now reveal what the reason is!
</para>

<para>
It only happens when dos is run on the console with `istrip' set.  This is
(I think) because the raw scancodes are mutilated by the `istrip',
so that key release events look like key press events.
</para>

<para>
So, the input processing needs to be turned off when using the scan
codes on a console (it wouldn't be a good idea to do it for tty lines).
</para>

</sect2>

<sect2>
<title>Dosemu scrambles my screen?</title>

<para>
 For those graphics cards not fully supported in dosemu, with allowed
console graphics a dosemu crash may leave your console in a scrambles and
nearly unusable way. To prepare for that situation, Spudgun
<email>spudgun@earthlight.co.nz</email> posted the following solution. First save your
registers when running on the console
~&gt; cat /usr/bin/savetextmode
~&gt; restoretextmode -w /etc/textregs
~&gt; restorefont -w /etc/fontdata
Then, when a crash happened, run following script:
restoretextmode -r /etc/textregs
restorefont -r /etc/fontdata
restorepalette
</para>

<para>
If it doesn't fix it nothing will!
I also found having an X server running sometimes put my Vid card's
registers into a strange state where this script made things worse
I think since changing X servers and/or running savetextmode on a vt while X
was running helped. (97/04/08)
</para>

</sect2>

<sect2>
<title>MS FoxPro 2.6 won't run</title>

<para>
FoxPro 2.6 doesn't run on network drives. Alexey Naidyonov
<email>growler@growler.tsu.tula.ru</email> states on that problem:
And I guess your FoxPro files are on lredir'ed disk, yeah? The matter is that
FoxPro doesn't run on such disk, but when I said $_hdimage="/dev/hda? ..." in
<filename>dosemu.conf</filename>, it runs. 
</para>

</sect2>

</sect1>

<sect1>
<title>Contributing to the dosemu project</title>

<sect2>
<title>Who is responsible for dosemu?</title>

<para>
Dosemu is built upon the work of Matthias Lautner and Robert Sanders.
Bart Oldeman <email>bart@dosemu.org</email> is responsible for
organizing the latest releases of dosemu.

</para>

<screen>
History of dosemu
Version    Date                Person           
-------------------------------------------------
0.1        September 3, 1992   Matthias Lautner
0.2        September 13, 1992  Matthias Lautner
0.3        ???                 Matthias Lautner
0.4        November 26, 1992   Matthias Lautner
0.47       January 27, 1993    Robert Sanders
0.47.7     February 5, 1993    Robert Sanders
0.48       February 16, 1993   Robert Sanders
0.48pl1    February 18, 1993   Robert Sanders
0.49       May 20, 1993        Robert Sanders
0.49pl2    November 18, 1993   James MacLean
0.49pl3    November 30, 1993   James MacLean
0.49pl3.3  December 3, 1993    James MacLean
0.50       March 4, 1994       James MacLean
0.50pl1    March 18, 1994      James MacLean
0.52       June 16, 1994       James MacLean
0.60       April 9, 1995       James MacLean
0.64.4     February 9,1997     Hans Lermen
0.66.3     April 20, 1997      Hans Lermen
0.98.1     December 9, 1998    Hans Lermen
0.98.6     March 21, 1999      Hans Lermen
1.0.0      March 6, 2000       Hans Lermen
1.2.0      January 18, 2004    Bart Oldeman
</screen>

</sect2>

<sect2>
<title>I want to help.  Who should I contact?</title>

<para>
Please join the linux-msdos and dosemu-devel lists; see
<ulink url="http://www.dosemu.org/mailinglist.html">
http://www.dosemu.org/mailinglist.html
</ulink> for more information.
</para>
</sect2>

</sect1>

</article>
