Next Previous Contents

2. Runtime Configuration Options

This section of the document by Hans, <lermen@fgan.de>. Last updated on June 16, 1997.

Most of DOSEMU configuration is done during runtime and per default it expects the system wide configuration file /etc/dosemu.conf, optionally folowed by the users  /.dosrc and additional configurations statements on the commandline (-I option). The builtin configuration file of a DEXE file is passed using the -I technique, hence the rules of -I apply.

However, the first file expected (and interpreted before) is /etc/dosemu.users. Within /etc/dosemu.users the general permissions are set:

This is done via setting configuration variables.

After /etc/dosemu.users /etc/dosemu.conf is interpreted, and only if its really this file (not a -F one) access to all configuration options is allowed.

The /etc/dosemu.conf may check for the configuration variables, that are set in /etc/dosemu.users and optionaly include further configuration files. But once /etc/dosemu.conf has finished interpretation, the access to secure relevant configurations is (class-wise) restricted while the following interpretation of .dosrc and -I statements.

For an example of a 'sophisticated' configuration look at the end of this readme. For an example of a general configuration look at ./etc/config.dist. The later behaves insecure, when /etc/dosemu.users is a copy of ./etc/dosemu.users.easy and behave 'secure', when /etc/dosemu.users is a copy of ./etc/dosemu.users.secure.

2.1 Format of /etc/dosemu.users

Each line corresponds to exactly _one_ valid user count:

  loginname [ c_strict ] [ classes ...] [ c_dexeonly ] [ other ]

where the elements are:

loginname

valid login name (root also is one) or 'all'. The later means any user not mentioned in previous lines.

c_strict

Do not allow -F option (/etc/dosemu.conf can't be replaced)

c_dexeonly

Only allow execution of DEXE files, forbid any other use.

classes

One or more of the following:

c_all

no restriction

c_normal

normal restrictions, all but the following classes: c_var, c_boot, c_vport, c_secure, c_irq, c_hardram.

c_var

allow (un)setting of variables

c_nice

allow 'HogThreshold' setting

c_floppy

allow floppy access

c_boot

allow definition of boot file/device

c_secure

allow setting of 'secure off'

c_vport

allow setting of 'allowvideoportaccess'

c_dpmi

allow DPMI setting

c_video

allow 'video' setting

c_port

allow 'port' setting

c_disk

allow 'disk' settings

c_x

allow X support settings

c_sound

allow sound settings

c_irq

allow 'irqpassing' statement

c_dexe

allow 'dexe' settings

c_printer

allow printer settings

c_hardram

allow 'hardware_ram' settings

other

Here you may define any variable, that you want to test in /etc/dosemu.conf (or .dosrc, -I), see 'ifdef', 'ifndef' When this variable is intended to be unset in lower privilege configuration files (.dosrc, -I), then the variable name has to be prefixed with 'u_'.

A line with '#' at colum 1 is treated as comment line. When only the login name is given (no further parameters, old format) the following setting is assumed:

  if 'root'  c_all
  else       c_normal

Other than with previous DOSEMU versions, the /etc/dosemu.users now is mandatory. Also note, that you may restrict 'root' doing something silly ;-)

2.2 Format of /etc/dosemu.conf (.dosrc, -I option)

The configuration files are not line oriented, whitespaces are removed and all behind a '#' up to the end of the line is treated as comment.

Conditional statements

You may control execution of configuration statements via the following conditional statement:

  ifdef <variable>
or
  ifndef <variable>
    ...
  else
    ...
  endif

The 'else' clause may be ommitted and 'ifndef' is the opposite to 'ifdef'. The <variable> can't be tested for its contents, only if it is set or not. Clauses also may contain further if*def..endif clause up to a depth of 15. All stuff in /etc/dosemu.users behind the 'loginname' in fact are variables that are set. Hence, what you set there, can be tested here in the config file. Further more you may set/unset variables in the config files itself:

  define <variable>
  undef  <variable>

However, use of define/undef is restricted to scope of /etc/dosemu.conf, as long as you don't 'define c_var' _within_ /etc/dosemu.conf. If you are under scope of a 'user config file' (e.g. outside /etc/dosemu.conf) you have to prefix the variable name with 'u_', else it will not be allowed to be set/unset (hence 'c_' type variables can't be unset out of scope of /etc/dosemu.conf).

There are some variables (besides the ones described above for dosemu.users) implicitely predefined by DOSEMU itself:

c_system

set while being in /etc/dosemu.conf

c_user

set while parsing a user configuration file

c_dosrc

set while parsing .dosrc

c_comline

set while parsing -I option statements

c_dexerun

set if a DEXE will be executed

h_<ownhost>

defined on startup as 'h_<host>.<domain>' of the host DOSEMU is running on. If <domain> can't be resolved, the pure hostname is taken. This makes sense only if a file system containing DOSEMU is mounted on diskless machines and you want restrict access. Note however, h_<ownhost> is set using gethostname/getdomainname. Hence, if the user on the diskless machine has root access, this is _not_ secure, because he could fake a valid address.

Also, you may define any 'u_' type variable at start of DOSEMU via the new option -u such as

# dos -u myspecialfun

this will then define the config variable 'u_myspecialfun' _before_ parsing any configuration file. You then may check this in your ./dosrc or /etc/dosemu.conf to do the needed special configuration.

If you for some reason want to bundle some major settings in a separate file you can include it via

  include "somefile"

If 'somefile' doesn't have a leading '/', it is assumed to be relative to /etc. Also includeing may be nested up to a max depth of 10 files. Note however, that the privilege is inherited from the main file from which is included, hence all what is included by /etc/dosemu.conf has its privilege.

Debug statement

This section is of interest mainly to programmers. This is useful if you are having problems with DOSEMU and you want to enclose debug info when you make bug reports to a member of the DOSEMU development team. Simply set desired flags to "on" or "off", then redirect stderr of DOSEMU to a file using "dos -o debug" to record the debug information if desired. Skip this section if you're only starting to set up.

  debug { config  off   disk    off     warning off     hardware off
        port    off     read    off     general off     IPC      off
        video   off     write   off     xms     off     ems      off
        serial  off     keyb    off     dpmi    off
        printer off     mouse   off     sound   off
  }

or simply (to turn off all debugging)

  debug { off }

Miscellaneous

The HogThreshold value determines how nice Dosemu will be about giving other Linux processes a chance to run. Setting the HogThreshold value to approximately half of you BogoMips value will slightly degrade Dosemu performance, but significantly increase overall system idle time. A zero value runs Dosemu at full tilt.

  HogThreshold 0

Want startup DOSEMU banner messages? Of course :-)

  dosbanner on

Timint is necessary for many programs to work.

  timint on

For "mathco", set this to "on" to enable the coprocessor during DOSEMU. This really only has an effect on kernels prior to 1.0.3.

  mathco on

For "cpu", set this to the CPU you want recognized during DOSEMU.

  cpu 80386

For "bootA"/"bootC", set this to the bootup drive you want to use. It is strongly recommended you start with "bootA" to get DOSEMU going, and during configuration of DOSEMU to recognize hard disks.

  bootA

During compile there will be a symbol map generated, this usually then is ./bin/dosemu.map. You may wnt to save it to an other places and let 'dosdebug' know where to find it:

  dosemumap /var/lib/dosemu/dosemu.map

Normally all debug logging is done _imediately_ (unbuffered). However, when dumping big amounts of logdata, the dynamic behave of DOSEMU may change, hence hiding the real problem (or causing a new one) Using the below switches buffering on and sets the buffer size.

  logbufsize 0x20000

When you want to abort DOSEMU from within a configuration file (because you detected something weird) then do

  abort
or
  abort "message text"

When you wnat just to warn the user use the following (the message will get printed to the log file via the debug-flag '+c')

  warn "message text"

Keyboard settings

With the "layout" keyword, you can specify your country's keyboard layout. The following layouts are implemented:

    finnish           us           dvorak       sf
    finnish-latin1    uk           sg           sf-latin1
    de                dk           sg-latin1    es
    de-latin1         dk-latin1    fr           es-latin1
    be                no           fr-latin1    portuguese
    it                sw
    hu                hu-cwi       hu-latin2

The us-layout is selected by default if the "layout" keyword is omitted.

The keyword "keybint" allows more accurate of keyboard interrupts, It is a bit unstable, but makes keyboard work better when set to "on".

The keyword "rawkeyboard" allows for accurate keyboard emulation for DOS programs, and is only activated when DOSEMU starts up at the console. It only becomes a problem when DOSEMU prematurely exits with a "Segmentation Fault" fatal error, because the keyboard would have not been reset properly. In that case, you would have to run kbd_mode -a remotely, or use the RESET button. In reality, this should never happen. But if it does, please do report to the dosemu development team, of the problem and detailed circumstances, we're trying our best! If you don't need near complete keyboard emulation (needed by major software package), set it to "off"

recommended:

  keyboard {  layout us  keybint on  rawkeyboard off  }
or
  keyboard {  layout de-latin1  keybint on  rawkeyboard on  }

If you want DOSEMU feed with keystrokes, that are typed in automagically, then you may define them such as

  keystroke "cd c:\\mysource\r"

You may have any number of 'keystroke' statements, they all will be concatenated.

This feature however doesn't make much sense _here_ in the configuration file, instead together with the commandine option -I you can start dosemu and execute any arbitrary dos command such as

  # dos -D-a -I 'keystroke "c:\rcd \\windows\rwinemu\r"'

For more details please look at ./doc/README.batch

Ah, but _one_ sensible useage _here_ is to 'pre-strike' that damned F8 that is needed for DOS-7.0, when you don't want to edit the msdos.sys:

 keystroke "\F8;"

Serial stuff

You can specify up to 4 simultaneous serial ports here. If more than one ports have the same IRQ, only one of those ports can be used at the same time. Also, you can specify the com port, base address, irq, and device path! The defaults are:

If the "com" keyword is omitted, the next unused COM port is assigned. Also, remember, these are only how you want the ports to be emulated in DOSEMU. That means what is COM3 on IRQ 5 in real DOS, can become COM1 on IRQ 4 in DOSEMU!

NOTE: You must have /usr/spool/uucp for LCK-file generation ! You may change this path and the lockfile name via the below 'ttylocks' statement.

Also, as an example of defaults, these two lines are functionally equal:

  serial { com 1  mouse }
  serial { com 1  mouse  base 0x03F8  irq 4  device /dev/cua0 }

If you want to use a serial mouse with DOSEMU, the "mouse" keyword should be specified in only one of the serial lines. (For PS/2 mice, it is not necessary, and device path is in mouse line instead)

Use/modify any of the following if you want to support a modem: (or any other serial device.)

  serial { com 1  device /dev/modem }
  serial { com 2  device /dev/modem }
  serial { com 3  device /dev/modem }
  serial { com 4  device /dev/modem }
  serial { com 3  base 0x03E8  irq 5  device /dev/cua2 }

If you are going to load a msdos mouse driver for mouse support use/modify one of the following

  serial { mouse  com 1  device /dev/mouse }
  serial { mouse  com 2  device /dev/mouse }

What type is your mouse? Use one of the following. Use the 'internaldriver' option to try Dosemu internaldriver. Use the 'emulate3buttons' for 3button mice.

  mouse { microsoft }
  mouse { logitech }
  mouse { mmseries }
  mouse { mouseman }
  mouse { hitachi }
  mouse { mousesystems }
  mouse { busmouse }
  mouse { ps2  device /dev/mouse internaldriver emulate3buttons }
  mouse { mousesystems device /dev/mouse internaldriver cleardtr }

For tty locking capabilities:

The serial lines are locked by dosemu via usual lock file technique, which is compatible with most other unix apps (such as mgetty, dip, e.t.c). However, you carefully need to check _where_ those other apps expect the lock files. The most common used (old) place is /usr/spool/uucp, but newer distributions following the FSSTND will have it in /var/lock. The dosemu default one is /usr/spool/uucp. The below defines /var/lock

  ttylocks { directory /var/lock }

Note: you are responsible for ensuring that the directory exists ! If you want to define the lock prefix stub also, use this one

  ttylocks { directory /var/lock namestub LCK.. }

If the lockfile should contain the PID in binary form (instead of ASCII}, you may use the following

  ttylocks { directory /var/lock namestub LCK.. binary }

Networking Support

Turn the following option 'on' if you require IPX/SPX emulation. Therefore, there is no need to load IPX.COM within the DOS session. The following option does not emulate LSL.COM, IPXODI.COM, etc. NOTE: YOU MUST HAVE IPX PROTOCOL ENABLED IN KERNEL !!

  ipxsupport off

Enable Novell 8137->raw 802.3 translation hack in new packet driver.

  pktdriver novell_hack

Terminals

This section applies whenever you run DOSEMU remotely or in an xterm. Color terminal support is now built into DOSEMU. Skip this section for now to use terminal defaults, until you get DOSEMU to work.

There are a number of keywords for the terminal { } configuration line.

charset

Select the character set to use with DOSEMU. One of ``latin'' (default) or ``ibm''.

color

Enable or disable color terminal support. One of ``on'' (default) or ``off''.

updatefreq

A number indicating the frequency of terminal updates of the screen. The smaller the number, the more frequent. A value of 20 gives a frequency of about one per second, which is very slow. However, more CPU time is given to DOS applications when updates are less frequent. A value of 4 (default) is recommended in most cases, but if you have a fast system or link, you can decrease this to 0.

escchar

A number that specifies the control character used as a prefix character for sending alt, shift, ctrl, and function keycodes. The default value is 30 which is Ctrl-^. So, for example, F1 is 'Ctrl-^ 1', Alt-F7 is 'Ctrl-^ 7'. For online help, press 'Ctrl-^ h'.

Use the following to enable the IBM character set.

  terminal { charset ibm  color on }

Use this for color xterms or rxvt's with no IBM font, with only 8 colors.

  terminal { charset latin  color on }

Use this for color xterms or rxvt's with IBM font, with only 8 colors.

  terminal { charset ibm  color on }

More detailed line for user configuration:

  terminal { charset latin  updatefreq 4  color on }

X Support settings

If DOSEMU is running in its own X-window (not xterm), you may need to tailor it to your needs. Valid keywords for the X { } config line:

updatefreq

A number indicating the frequency of X updates of the screen. The smaller the number, the more frequent. A value of 20 gives a frequency of about one per second, which is very slow. However, more CPU time is given to DOS applications when updates are less frequent. The default is 8.

display

The X server to use. If this is not specified, dosemu will use the DISPLAY environment variable. (This is the normal case) The default is ":0".

title

What you want dosemu to display in the title bar of its window. The default is "dosemu".

icon_name

Used when the dosemu window is iconified. The default is "dosemu".

keycode

Used to give Xdos access to keycode part of XFree86. The default is off.

NOTE:

Anyway, a cleaner way than using "keycode" is to let the X-server fiddle with keyboard translation and customize it via .xmodmaps.

blinkrate

A number which sets the blink rate for the cursor. The default is 8.

font

Used to pick a font other than vga (default). Must be monospaced.

sharecmap

Used to share the colormap with other applications in graphics mode. If not set, a private colormap is used. The default is off.

Recommended X statement:

  X { updatefreq 8 title "DOS in a BOX" icon_name "xdos" }

Video settings ( console only )

!!WARNING!!: A LOT OF THIS VIDEO CODE IS ALPHA! IF YOU ENABLE GRAPHICS ON AN INCOMPATIBLE ADAPTOR, YOU COULD GET A BLANK SCREEN OR MESSY SCREEN EVEN AFTER EXITING DOSEMU. JUST REBOOT (BLINDLY) AND THEN MODIFY CONFIG.

Start with only text video using the following line, to get started. then when DOSEMU is running, you can set up a better video configuration.

  video { vga }                    Use this line, if you are using VGA
  video { cga  console }           Use this line, if you are using CGA
  video { ega  console }           Use this line, if you are using EGA
  video { mda  console }           Use this line, if you are using MDA

Notes for Graphics:

It may be necessary to set this to "on" if DOSEMU can't boot up properly on your system when it's set "off" and when graphics are enabled. Note: May interfere with serial ports when using certain video boards.

  allowvideoportaccess on

Any 100% compatible standard VGA card MAY work with this:

  video { vga  console  graphics }

If your VGA-BIOS is at segment E000, this may work for you:

  video { vga  console  graphics  vbios_seg 0xe000 }

Trident SVGA with 1 megabyte on board

  video { vga  console  graphics  chipset trident  memsize 1024 }

Diamond SVGA (not S3 chip)

  video { vga  console  graphics  chipset diamond }

Cirrus SVGA

  video { vga  console  graphics  chipset cirrus }

ET4000 SVGA card with 1 megabyte on board:

  video { vga  console  graphics  chipset et4000  memsize 1024 }
or
  video { vga  console  graphics  chipset et4000  memsize 1024 vbios_size 0x8000 }

S3-based SVGA video card with 1 megabyte on board:

  video { vga  console  graphics  chipset s3  memsize 1024 }

Avance Logic (ALI) 230x SVGA

  video { vga  console  graphics  chipset avance }

For ATI graphic mode

  ports { 0x1ce 0x1cf 0x238 0x23b 0x23c 0x23f 0x9ae8 0x9ae9 0x9aee 0x9aef }

Memory settings

These are memory parameters, stated in number of kilobytes. If you get lots of disk swapping while DOSEMU runs, you should reduce these values.

umb_max is a new parameter which tells DOSEMU to be more aggressive about finding upper memory blocks. The default is 'off'.

To be more aggressive about finding XMS UMB blocks use this:

  umb_max on

To be more secure use 'secure on'. If "on", then it disables DPMI access to dosemu code and also disables execution of dosemu supplied 'system' commands, which may execute arbitrary Linux-commands otherwise. The background is, that DPMI clients are allowed to create selectors that span the whole user space, hence may hack into the dosemu code, and (when dosemu runs root or is suid root) can be a security hole. "secure on" closes this hole, though this would very likely also disable some dos4gw games :(. Therfore NOTE: You may not be able to run some DPMI programs, hence, before reporting such a program as 'not running', first try to set 'secure off'.

  secure on                # "on" or "off"

The below enables/disables DPMI and sets the size of DPMI memory.

  dpmi 4086                # DPMI size in K, or "off"

XMS is enabled by the following statement

  xms 1024                 # XMS size in K,  or "off"

For ems, you now can set the frame to any 16K between 0xc800..0xe000

  ems 1024                 # EMS size in K,  or "off"
or
  ems { ems_size 1024 ems_frame 0xe000 }
or
  ems { ems_size 2048 ems_frame 0xd000 }

If you have adapters, which have memory mapped IO, you may map those regions with hardware_ram { .. }. You can only map in entities of 4k, you give the address, not the segment. The below maps 0xc8000..0xc8fff and 0xcc000..0xcffff:

  hardware_ram { 0xc8000 range 0xcc000 0xcffff }

With the below you define the maximum conventional RAM to show apps:

  dosmem 640

IRQ passing

The irqpassing statement accepts IRQ values between 3..15, if using the { .. } syntax each value or range can be prefixed by the keyword use_sigio to monitor the IRQ via SIGIO. If this is missing the IRQ is monitored by SIGALRM.

Use/modify one of the below statements

  irqpassing off    # this disables IRQ monitoring
  irqpassing 15
  irqpassing { 15 }
  irqpassing { use_sigio 15 }
  irqpassing { 10  use_sigio range 3 5 }

Port Access

WARNING: GIVING ACCESS TO PORTS IS BOTH A SECURITY CONCERN AND SOME PORTS ARE DANGEROUS TO USE. PLEASE SKIP THIS SECTION, AND DON'T FIDDLE WITH THIS SECTION UNLESS YOU KNOW WHAT YOU'RE DOING.

These keywords are allowable on a "ports" line.

range addr1 addr2

This allow access to this range of ports

ormask value

The default is 0

andmask value

The default is 0xffff

rdonly|wronly|rdwr

This specifies what kind of access to allow to the ports. The default is "rdwr"

fast

Put port(s) in the ioperm bitmap (only valid for ports below 0x400) An access doesn't trap and isn't logged, but as vm86() isn't interrupted, it's much faster. The default is not fast.

device name

If the ports are registered, open this device to block access. The open() must be successfull or access to the ports will be denied. If you know what you are doing, use /dev/null to fake a device to block

  ports { 0x388 0x389 }   # for SimEarth
  ports { 0x21e 0x22e 0x23e 0x24e 0x25e 0x26e 0x27e 0x28e 0x29e } # for jill

Speaker

These keywords are allowable on the "speaker" line:

native

Enable DOSEMU direct access to the speaker ports.

emulated

Enable simple beeps at the terminal.

off

Disable speaker emulation.

Recommended:

  speaker off

Hard disks

WARNING: DAMAGE MIGHT RESULT TO YOUR HARD DISK (LINUX AND/OR DOS) IF YOU FIDDLE WITH THIS SECTION WITHOUT KNOWING WHAT YOU'RE DOING!

The best way to get started is to start with a hdimage, and set "bootC" and "disk {image "var/lib/dosemu/hdimage.first" }/" in /etc/dosemu.conf. To generate this first working and bootable hdimage, you should use "setup-hdimage" in the dosemu root directory. This script extracts your DOS from any native bootable DOS-partition and builts a bootable hdimage. (for experience dosemu users: you need not to fiddle with floppies any more) Keep using the hdimage while you are setting this hard disk configuration up for DOSEMU, and testing by using DIR C: or something like that. Whenever possible, use hdimage, mount your DOS partition under Linux and "lredir" it into dosemu. Look at Using Lredir, Running as a user, QuickStart etc. on how to use "lredir".

As a last resort, if you want DOSEMU to be able to access a DOS partition, the safer type of access is "partition" access, because "wholedisk" access gives DOSEMU write access to a whole physical disk, including any vulnerable Linux partitions on that drive!

IMPORTANT

You must not have LILO installed on the partition for dosemu to boot off. As of 04/26/94, doublespace and stacker 3.1 will work with wholedisk or partition only access. Stacker 4.0 has been reported to work with wholedisk access.

Please read the documentation in the "doc" subdirectory for info on how to set up access to real hard disk.

These are meanings of the keywords:

image

specifies a hard disk image file.

partition

specifies partition access, with device and partition number.

wholedisk

specifies full access to entire hard drive.

readonly

for read only access. A good idea to set up with.

bootfile

to specify an image of a boot sector to boot from.

Use/modify one (or more) of the folling statements:

  disk { image "/var/lib/dosemu/hdimage" }      # use diskimage file.
  disk { partition "/dev/hda1" readonly }       # 1st partition on 1st IDE.
  disk { partition "/dev/hda1" bootfile "/var/lib/bootsect.dos" }
                                                # 1st partition on 1st IDE
                                                # booting from the specified
                                                # file.
  disk { partition "/dev/hda6" readonly }       # 6th logical partition.
  disk { partition "/dev/sdb1" readonly }       # 1st partition on 2nd SCSI.
  disk { wholedisk "/dev/hda" }                 # Entire disk drive unit

Recommended:

  disk { image "/var/lib/dosemu/hdimage" }

DOSEMU boot

Use the following option to boot from the specified file, and then once booted, have bootoff execute in autoexec.bat. Thanks Ted :-). Notice it follows a typical floppy spec. To create this file use:

dd if=/dev/fd0 of=/var/lib/dosemu/bdisk bs=16k

  bootdisk { heads 2 sectors 18 tracks 80 threeinch file /var/lib/dosemu/bdisk }

Specify extensions for the CONFIG and AUTOEXEC files. If the below are uncommented, the extensions become CONFIG.EMU and AUTOEXEC.EMU. NOTE: this feature may affect file naming even after boot time. If you use MSDOS 6+, you may want to use a CONFIG.SYS menu instead.

  EmuSys EMU
  EmuBat EMU

Floppy disks

This part is fairly easy. Make sure that the first (/dev/fd0) and second (/dev/fd1) floppy drives are of the correct size, "threeinch" and/or "fiveinch". A floppy disk image can be used instead, however.

FOR SAFETY, UNMOUNT ALL FLOPPY DRIVES FROM YOUR FILESYSTEM BEFORE STARTING UP DOSEMU! DAMAGE TO THE FLOPPY MAY RESULT OTHERWISE!

Use/modify one of the below:

  floppy { device /dev/fd0 threeinch }
  floppy { device /dev/fd1 fiveinch }
  floppy { heads 2  sectors 18  tracks 80
           threeinch  file /var/lib/dosemu/diskimage }

If floppy disk speed is very important, uncomment the following line. However, this makes the floppy drive a bit unstable. This is best used if the floppies are write-protected. Use an integer value to set the time between floppy updates.

  FastFloppy 8

Printers

Printer is emulated by piping printer data to a file or via a unix command such as "lpr". Don't bother fiddling with this configuration until you've got DOSEMU up and running already.

NOTE: Printers are assigned to LPT1:, LPT2:, and LPT3: on a one for one basis with each line below. The first printer line is assigned to LPT1:, second to LPT2:, and third to LPT3:. If you do not specify a base port, the emulator will setup the bios to report 0x378, 0x278, and 0x3bc for LPT1:, LPT2:, and LPT3: respectively.

To use standard unix lpr command for printing use this line:

  printer { options "%s"  command "lpr"  timeout 20 }

And for any special options like using pr to format files, add it to the options parameter:

  printer { options "-p %s"  command "lpr"  timeout 10 }     pr format it

To just have your printer output end up in a file, use the following line:

  printer { file "lpt3" }

If you have a DOS application that is looking to access the printer port directly, and uses the bios LPT: setting to find out the port to use, you can modify the base port the bios will report with the following:

  printer { options "%s"  command "lpr"  base 0x3bc }

Be sure to also add a port line to allow the application access to the port:

  ports { device /dev/lp0 0x3bc 0x3bd 0x3be }

NOTE: applications that require this will not interfere with applications that continue to use the standard bios calls. These applications will continue to send the output piped to the file or unix command.

Sound

The sound driver is more or less likely to be broken at the moment.

sb_base

base address of the SB (HEX)

sb_irq

IRQ for the SB

sb_dma

DMA channel for the SB

sb_dsp

Path the sound device

sb_mixer

path to the mixer control

mpu_base

base address for the MPU-401 chip (HEX) (Not Implemented)

Use this to disable sound support even if it is configured in

  sound_emu off

Linux defaults

  sound_emu { sb_base 0x220 sb_irq 5 sb_dma 1 sb_dsp /dev/dsp
               sb_mixer /dev/mixer mpu_base 0x330 }

NetBSD defaults

  sound_emu { sb_base 0x220 sb_irq 5 sb_dma 1 sb_dsp /dev/sound
              sb_mixer /dev/mixer mpu_base 0x330 }

DEXE support

These are the setting for DEXE type DOS application, which are executed by DOSEMU via the -L option. ( for what DEXE is look at ./doc/README.dexe

set the below to force 'secure on', when -L option is used _and_ the user isn't root.

  dexe { secure }

set the below, if you want that a dexe may be allowed to have additional disks. Normally the hdimage containing the DOS app (the .dexe itself) is the only available disk, all other 'disk {}' statement are ignored.

  dexe { allowdisk }

set the below, if you want a DEXE to be forced to 'xdos', when X available. This mainly is intended for beeing included into the configuration of a DEXE file (see mkdexe). e.g. when the application needs graphic it should not run on slang-terminal.

  dexe { forcexdos }

set the below, if you want a DEXE _only_ running on X (because it otherwise would not run)

  dexe { xdosonly }

2.3 Example Configuration

A simple example for a privately used machine can be found in ./etc/config.dist. However a more sophisticated configuration is described here.

/etc/dosemu.users

  root c_all
  hans c_normal c_var
  alistair want_sound
  jim want_sound c_all
  all guest

/etc/dosemu.conf

  ifdef want_sound
    define c_normal
    define c_sound
    include "dosemu.normal.conf"
    irqpassing off speaker off
    sound_emu { sb_base 0x220 sb_irq 5 sb_dma 1 sb_dsp /dev/dsp
                sb_mixer /dev/mixer mpu_base 0x330 }
  else
    ifdef guest
      include "dosemu.guest.conf"
    else
      include "dosemu.norm.conf"
    endif
  endif

/etc/dosemu.normal.conf

  debug { off }
  dosbanner on  timint on  HogThreshold 0
  ifdef c_sound
    disk { image "/var/lib/dosemu/hdimage.sound" }
  else
    disk { image "/var/lib/dosemu/hdimage" }
  endif
  bootC
  floppy { device /dev/fd0 threeinch }  
  keyboard {  layout us  keybint on  rawkeyboard on  }
  serial { com 2  device /dev/cua1 }
  mouse { mousesystems device /dev/mouse internaldriver }
  ipxsupport off
  terminal { charset latin  updatefreq 4  color on }
  X { updatefreq 8 title "DOS in a BOX" icon_name "xdos" }
  allowvideoportaccess on
  video { vga  console  graphics  chipset s3  memsize 2048 vbios_size 0x8000}
  ports { 0x1ce 0x1cf 0x238 0x23b 0x23c 0x23f 0x9ae8 0x9ae9 0x9aee 0x9aef }
  mathco on  cpu 80386
  dpmi 0x4000  xms 1024
  ems { ems_size 1024 ems_frame 0xe000 }
  hardware_ram { range 0xcc000 0xcffff }
  sillyint { use_sigio 10 use_sigio 8 } # wd8013
  ports { range 0x280 0x29f } # for WD8013
  ports { range 0x70 0x71 }   #RTC
  speaker emulated

/etc/dosemu.guest.conf

  define c_dexeonly
  debug { off } dosbanner on
  sound_emu off
  timint on HogThreshold 1
  keyboard {  layout us  keybint on  rawkeyboard off  }
  ipxsupport off
  terminal { charset latin  updatefreq 4  color on }
  X { updatefreq 12 title "guest DOS in a BOX" icon_name "xdos" }
  video { vga }
  mathco on cpu 80386
  dpmi off xms 1024 ems 1024
  irqpassing off speaker off
  dexe { secure }
  # we don't allow anything weird anymore
  undef c_all
  define c_x
  define c_nice


Next Previous Contents