Viewing revision r1 of DOS Door Recipe — saved 2026-08-03 01:34 EDT .
“Initial seed content”
Jump to current version Full history

DOS Door Recipe

Concrete recipe for getting a DOS door (e.g. LORD)
running under DOSBox-staging on Linux behind ANetBBS.

Ingredients

There's no DOSBox config file, nullmodem port, or command line to
write by hand — ANetBBS generates all of that per launch from a few
admin-form fields. If you're expecting to hand-write a .conf file
like on a bare-metal DOSBox setup, that's not how this works; skip
straight to "Register the door" below.

Steps

1. Drop the door into place

sudo mkdir -p /opt/anetbbs/doors/lord
sudo chown anetbbs:anetbbs /opt/anetbbs/doors/lord
sudo -u anetbbs cp -a /path/to/lord/* /opt/anetbbs/doors/lord/

(substitute your real service user / install dir if different from
the defaults above)

2. Register the door

/admin/games/Add Game, type door_dos:

Field Value
Name LORD
Description Legend of the Red Dragon
Executable Path /opt/anetbbs/doors/lord/LORD.EXE
Working Directory /opt/anetbbs/doors/lord/
Drop File Type door.sys (or door32.sys)
Drop File Path E:\
Max nodes 1
Time limit 30 min
Idle timeout 5 min

At launch, ANetBBS picks a free bridge port itself, mounts C: =
your working directory, D: = its bundled FOSSIL driver bundle, E:
= a per-node scratch directory holding the drop file, loads
BNU.COM on COM1, then runs LORD.EXE. LORDCFG runs the first
time to write NODE1.DAT into the working directory — leave that
file alone once it exists.

3. First test

Play it from your sysop account first. Watch
journalctl -u anetbbs -f (telnet, SSH, and rlogin all run inside
this one unified service — there are no separate anetbbs-telnet /
anetbbs-ssh units) — you should see bridge connect/byte-count/exit
lines. If you see zero bytes in either direction, DOSBox isn't
talking back — check that the executable path is actually correct
and that LORD.EXE isn't itself configured to expect COM1=stdio
instead of a real port (DOOR.SYS line 1 should read COM1:, which
ANetBBS writes correctly by default).

4. Ship it

If the test works, make sure the user-side path works too — log
in as a regular user and play it.

See also