This is an old revision of the document!
Table of Contents
DOSEMU2
Synchronet has run DOS Doors under Linux for years using DOSEMU. Many Sysops find that it meets their needs very well and is stable. However, DOSEMU has not been maintained, has controversial licensing terms, and not every DOOR program works well with it. This page will detail the modifications made to get DOSEMU2 running under Synchronet for Linux with DOS-based DOORS.
Motivation
My primary motivation is to get Tradewars 2002 ver 3.09 running under Synchronet for Linux, something I have not been able to do with Dosemu.
Progress
I have set up a test BBS conveniently named “Dosemu2 Test BBS” which can be accessed by telnet or ssh at dosemu2.mystic.dog So far I have gotten 4 versions of Tradewars 2002 running under Dosemu2.
They are Tradewars 2002 versions:
- 1.03d
- 2.0 wide beta 8
- 2.0 wide beta A
- 3.09
In addition, I have Global Wars, Freshwater Fishing Simulator, Legend Of The Red Dragon ver 3.55, Scrabble, and Stack'Em running under Dosemu2 on the test BBS.
Overview Of The Problem
The primary issue with Dosemu2 and Synchronet is that it has different command line options than dosemu, and the external.bat called by Synchronet does not work with dosemu2. Coming very soon will be my modifications to external.bat and dosemu.ini that work for me so far. In time I hope that dosemu2 will be fully supported by Synchronet. That may very well happen before I get this page finished...
Reaching Me
The best way to prompt me to quicker action is nag Hobo in #synchronet on the Synchronet IRC. Or leave me a message on the Dosemu2 Test BBS.
Installation of DOSEMU2
There are multiple methods of installing DOSEMU2 to include building from source and through a repository. Taking a simpler approach and ensuring you have the latest build, we will use the DOSEMU2 repository hosted on Gitlab.
The general procedure to install dosemu2 is as follows: First, add the repository,
sudo add-apt-repository ppa:dosemu2/ppa
Then update and install,
sudo apt update
sudo apt install dosemu2
NOTE: Starting with dosemu2 build 2.0~pre9-7811-4373124b9+202301020131, dosemu2 seems to have a problem with the “$_xms = (1024(” setting in dosemu.conf that is included with Synchronet. Additionally, even after commenting out that line in dosemu.conf, TradeWars 2002 no longer seems to run with that build of dosemu2. Perhaps other doors also might not work (not tested).
dosemu2 2.0~pre9-7807-4e99cf2c5+202301010131 was the last build that worked with the “_xms = (1024)” setting and TradeWars 2002. I (Nightfox) have placed a download link for that build of dosemu2 for 64-bit Ubuntu 22.04.1 here. If you are using another Linux distribution, you will likely need to find another package.
If you prefer to use the latest FreeDOS environment, change the second command, to read sudo apt install dosemu2 fdpp
. Once you accept the changes to your system, DOSEMU2 and FreeDOS will be installed.
Recommended Global Parameters
Two files exist to configure DOSEMU2 (and DOSEMU) for Synchronet for Linux. $SBBSCTRL/dosemu.conf
and $SBBSEXEC/dosemu.ini
. The configuration file, $SBBSCTRL/dosemu.conf
is the configuration file read by DOSEMU2 upon start and $SBBSEXEC/dosemu.ini
is for
DOOR customization parameters such as drive redirection, UART, etc. (more information can be found in Use DOS Doors with Synchronet on Linux and in the comments within $SBBSEXEC/dosemu.ini
).
As specified in Use DOS Doors with Synchronet on Linux Drive Letters, it is recommended to continue using D:, E:, F:, G:, and H:. To adjust, add a line to $SBBSCTRL/dosemu.conf
to read $_hdimage = “+0 -5 +1”
. This will ensure that DOSEMU2 will skip drives D: through H: and begin adding internal drives at drive I:.
(Added by Nightfox)
From this issue filed in GitLab, filed by Ragnarok, there are some recommendations for getting DOSEMU2 working with Synchronet.
Update the cmd settings in exec/dosemu.ini (note that lredir is deprecated according to the dosemu2 documentation; thus, drives are mapped on these command lines - lredir should now be unnecessary in external.bat):
cmd=/usr/bin/env $TERM HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR DOSDRIVE_E=$XTRNDIR DOSDRIVE_F=$CTRLDIR DOSDRIVE_G=$DATADIR DOSDRIVE_H=$EXECDIR NODEDIR=$NODEDIR $DOSEMUBIN -d $NODEDIR -d $XTRNDIR -I"video { none }" $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG [stdio] cmd=/usr/bin/env $TERM HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR DOSDRIVE_E=$XTRNDIR DOSDRIVE_F=$CTRLDIR DOSDRIVE_G=$DATADIR DOSDRIVE_H=$EXECDIR NODEDIR=$NODEDIR $DOSEMUBIN -d $NODEDIR -d $XTRNDIR -I"video { none }" -I'keystroke "\n"' $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG
In ctrl/dosemu.conf, add the following two lines (and change the path to sbbs to match what it is on your system):
$_hdimage = "+0 -2 /sbbs/ctrl /sbbs/data /sbbs/exec +1" $_lredir_paths = "/sbbs"
Also, in exec/external.bat, you can remove the lredir commands - the commands above for dosemu.ini use the command-line options to map drives. However, if you do decide to keep using lredir, it has been suggested to change the backslashes to forward slashes on the lredir lines:
@lredir D: linux/fs$NODEDIR >NUL @lredir E: linux/fs$XTRNDIR >NUL @lredir F: linux/fs$CTRLDIR >NUL @lredir G: linux/fs$DATADIR >NUL @lredir H: linux/fs$EXECDIR >NUL
In my (Nightfox) experience, removing the “linux/fs” portion seems to work:
@lredir -f E: $XTRNDIR >NUL @lredir -f F: $CTRLDIR >NUL @lredir -f G: $DATADIR >NUL @lredir -f H: $EXECDIR >NUL @lredir -f D: $NODEDIR >NUL