← LORD FP project · Kalgoorlie Retro Gaming
Kalgoorlie Retro BBS · Sysop guide

LORD FP on Synchronet

How to set up dosemu2 for Synchronet on Linux, install DOS and Linux door games, and install both versions of LORD FP (Legend of the Red Dragon, Free Pascal edition) with their In-Game Modules.

Before you start

LORD FP is a port of lord.js, the JavaScript LORD that ships with Synchronet, to Free Pascal. One source tree builds two versions:

DOS version · LORDFP.ZIP

A complete DOS LORD game: unzip it into an empty directory, run LORDCFG, and it is ready to play. It keeps LORD 4.06's file formats, so it can also be dropped into an existing LORD 4.06 game, whose players and IGMs carry on. On Synchronet for Linux it runs under dosemu2, like any DOS door.

Linux version · LORDFPL.ZIP

A complete native Linux LORD game: unzip it, run lordcfg, and add it to Synchronet. It reads and writes the same files as lord.js, so it can also take over an existing lord.js game. DOS LORD IGMs run from it under dosemu2.

Both zips are complete games that install from scratch. Nothing else is needed: each one includes LORD 4.06's stock files (screens, scripts, docs and the data files IGMs look for), and the source (LORDSRC.ZIP) is inside each one. Upgrading an existing LORD 4.06 or lord.js game is optional and covered separately.

Download the zips from the Heisenbergs Files file area on the Kalgoorlie Retro BBS: telnet to bbs.theiguru.au (port 23). Each zip also includes this guide as INSTALL.TXT.

What you need

  • Synchronet BBS on Linux, installed in /sbbs. This guide was written against Synchronet 3.21 on Ubuntu and 3.22 on Debian 13.
  • dosemu2, for the DOS version, for any other DOS door, and for DOS IGMs in the Linux version.
  • A shell login as the user Synchronet runs as. Door files must be owned by, or writable by, that user.
  • A backup of /sbbs before you change anything.

Paths. Everything below assumes Synchronet lives in /sbbs, with doors under /sbbs/xtrn. If yours is elsewhere, change the paths in the dosemu files as well.

Part 1dosemu2 for Synchronet

This part follows Nigel Reed's dosemu2 setup for Synchronet (original work by Eric Oulashin), with notes added from running it on two BBSes. His files are a complete, working setup: a set of config files plus a ready-made DOS boot environment.

Install dosemu2

Ubuntu

sudo add-apt-repository ppa:dosemu2/ppa
sudo apt update
sudo apt install dosemu2

Debian 13 (trixie)

Debian has no dosemu2 package, but the Ubuntu 24.04 (noble) PPA builds install on Debian 13. Two extra steps are needed. Debian's signature checker rejects the PPA key as Launchpad serves it, because of an old SHA-1 binding, so take the key from the Ubuntu keyserver instead. Then pin the PPA low, so it only supplies the packages Debian doesn't have.

# the signing key, from the Ubuntu keyserver
sudo mkdir -p /etc/apt/keyrings
curl -s "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x6D9CD73B401A130336ED0A56EBE1B5DED2AD45D6" \
  | sudo tee /etc/apt/keyrings/dosemu2-ppa.asc >/dev/null

# /etc/apt/sources.list.d/dosemu2-ppa-noble.sources
Types: deb
URIs: https://ppa.launchpadcontent.net/dosemu2/ppa/ubuntu/
Suites: noble
Components: main
Signed-By: /etc/apt/keyrings/dosemu2-ppa.asc

# /etc/apt/preferences.d/dosemu2-ppa
# Debian packages always win; the PPA only fills in what Debian lacks
Package: *
Pin: origin ppa.launchpadcontent.net
Pin-Priority: 100

sudo apt update
sudo apt install dosemu2

Copy the setup files

Nigel Reed's package contains these files. Put each one where the table says, then restart the BBS.

FileGoes inWhat it does
dosemu.conf/sbbs/ctrldosemu2 settings for doors run by the BBS. COM1 is virtual: it is wired to the caller.
dosemu-local.conf/sbbs/ctrlSettings for the local DOS prompt (de). Same as above but without the virtual COM1, so programs draw on your screen.
dosemu.ini/sbbs/execThe command line Synchronet uses to start dosemu2. A copy in a door's own directory overrides it for that door.
external.bat/sbbs/execThe DOS batch file run for every DOS door: it changes to the door's directory, loads drivers and runs the door's command line.
sbbs/ctrl/.dosemu/sbbs/ctrl/.dosemuA preconfigured dosemu2 boot environment (its drive_c is DOS drive C:).
de/sbbs/exec or /sbbs/binOpens a local DOS prompt with the same drives the BBS uses, for running door setup programs. Make it executable and put its directory on your PATH.
scfg.txt(reference)A sample SCFG entry for a DOS door.

Settings in sbbs.ini

In /sbbs/ctrl/sbbs.ini, check these lines in the [BBS] section:

UseDOSemu = true
DOSemuPath = /usr/bin/dosemu
DOSemuConfPath = /sbbs/ctrl/dosemu.conf

Note. The path is /usr/bin/dosemu, the launcher script, not dosemu.bin.

Restart Synchronet after copying the files. On a systemd install that is sudo systemctl restart sbbs.

The FOSSIL driver

A FOSSIL driver is the standard DOS interface doors use to talk to a serial port. dosemu2 has one built in, but it only becomes active when its fossil.com is run inside DOS before the door starts. It is not loaded just because dosemu2 is running.

Many doors work without it, because when no FOSSIL driver is loaded they talk to the virtual COM port directly. LORD 4.06, LORD FP, TradeWars 2002, Barren Realms Elite and Esterian Conquest all work either way. Some doors only use a FOSSIL driver. The Pawn Shop 3.40 IGM is one: without the driver it shows the caller nothing.

external.bat looks for a file called EMUSETUP.BAT, first in the door's own directory, then in /sbbs/ctrl (drive F:). To load the FOSSIL driver for every DOS door, create /sbbs/ctrl/EMUSETUP.BAT:

REM Global DOS door setup, CALLed by Synchronet's external.bat before each
REM DOS door (a door's own EMUSETUP.BAT in its folder is used instead).
REM FOSSIL driver: dosemu2's fossil.com, for doors that need one.
fossil.com >NUL
  • Save it with DOS line endings (CR LF).
  • A door with its own EMUSETUP.BAT uses that file instead of the global one. Add the fossil.com line to it too.
  • Load only one FOSSIL driver. The package's external.bat would also try to load X00 from a DOSUTILS directory, but only when there is no EMUSETUP.BAT and that directory exists.
  • Without any EMUSETUP.BAT or DOSUTILS, external.bat prints "ERROR: No emusetup.bat" and carries on. That message is harmless.

DOS drive letters

When the BBS starts a DOS door, dosemu.ini maps the Synchronet directories to these drives. Door configuration files must use these DOS paths, not Linux paths.

DriveLinux directoryUsed for
C:/sbbs/ctrl/.dosemu/drive_cdosemu2's own boot drive
D:/sbbs/node1, /sbbs/node2…The caller's node directory: drop files (DOOR.SYS, DORINFO1.DEF…)
E:/sbbs/xtrnThe doors. /sbbs/xtrn/lordf is E:\LORDF
F:/sbbs/ctrlGlobal EMUSETUP.BAT
G:/sbbs/dataBBS data
H:/sbbs/execBBS programs

dosemu2's own commands, including fossil.com, are already on the DOS PATH.

The local DOS prompt

Most DOS doors have a setup program that has to be run once on the local screen. Run de from a shell: it opens a DOS prompt with the drives above, using /sbbs/node1 as D:. Then change to the door and run its setup:

$ de
C:\> E:
E:\> CD \LORDF
E:\LORDF> LORDCFG
...
E:\LORDF> exitemu

Run de from a real terminal. dosemu2 needs a terminal with a known size. It draws nothing when started from a script or a terminal that doesn't report its size.

Part 2Installing doors in Synchronet

Synchronet calls doors "external programs". Each one gets a directory under /sbbs/xtrn and an entry in SCFG, under External Programs → Online Programs (Doors), inside a program section such as "Games".

A DOS door, step by step

  1. Make a directory for the door under /sbbs/xtrn, with a short name that is also a valid DOS name (8 characters or fewer, no spaces), for example /sbbs/xtrn/bre. Unzip the door into it.

  2. Make sure the user Synchronet runs as owns the files: chown -R <bbsuser> /sbbs/xtrn/bre. Doors write their data files as they run.

  3. Run the door's setup program under de (see the local DOS prompt). Wherever it asks for paths, give DOS paths: the game directory is E:\BRE\, and the drop file is in D:\.

  4. If the door expects a batch file to start it (most do), check that it changes to the door's directory or doesn't need to. external.bat has already changed to the start-up directory before it runs the command line.

  5. Run scfg, go to External Programs → Online Programs (Doors), pick a section and add the door with the settings below.

  6. Log in to the BBS and run the door. Test entering, a few keys, and quitting back to the BBS.

  7. If the door has a daily maintenance program, add it as a timed event (SCFG → External Programs → Timed Events) or use the door's own "run maintenance at first login" option.

SCFG settings for a DOS door

SettingValueNotes
NameWhat callers see
Internal Codee.g. BREUp to 8 characters, unique
Start-up Directory../xtrn/breRelative to /sbbs/ctrl, so it starts with ../xtrn/. A wrong path here is the most common cause of a door that hangs at start
Command Linee.g. bre.bat or start.bat %#%# is the node number
Multiple Concurrent UsersYes, if the door supports it
I/O MethodFOSSIL or UARTNot Standard (stdio)
Native Executable/ScriptNoNo means "DOS program, use dosemu2"
Use Shell or New ContextYes
BBS Drop File TypeWhat the door readsSee below
Place Drop File InNode DirectoryThe door finds it on D:\

Drop file types

The drop file tells the door who the caller is, their time left and their terminal. Pick the one the door's documentation asks for:

SCFG choiceFileTypical doors
GAP (extended)DOOR.SYS, 52 linesTradeWars 2002, most 1990s doors
GAP (original)DOOR.SYS, 31 linesLORD (either works)
RBBS/QuickBBSDORINFO1.DEFBarren Realms Elite, Esterian Conquest
MysticDOOR32.SYSNewer and native Linux doors
OthersCHAIN.TXT, CALLINFO.BBS, PCBOARD.SYS, SFDOORS.DAT, DOORFILE.SRDoors written for those BBS packages

A native Linux door

A Linux program that talks to the caller on standard input and output needs no dosemu2. The differences in SCFG:

SettingValue
Command LineThe full path to the program and its options
Native Executable/ScriptYes
I/O MethodStandard (stdio). Turn input echo off if the program echoes for itself
Use Shell or New ContextNo

Working examples

These are the door entries on Kalgoorlie Retro BBS, all in a section called "Games Hosted by Kalgoorlie Retro":

DoorStart-up DirectoryCommand LineDrop fileType
LORD 4.06../xtrn/lord4start.bat %#GAP (original)DOS
LORD FP (DOS)../xtrn/lordfstart.bat %#GAP (original)DOS
LORD FP (Linux)../xtrn/lordfp/sbbs/xtrn/lordfp/lord -d %n -r %rGAP (original)Native
TradeWars 2002../xtrn/tw2002tw.bat %#GAP (extended)DOS
Barren Realms Elite../xtrn/brebre.batRBBS/QuickBBS DORINFO1.DEFDOS
Esterian Conquest../xtrn/ECec.batRBBS/QuickBBS DORINFO1.DEFDOS

Their batch files, for reference:

REM tw.bat - TradeWars 2002
@ECHO OFF
SET RTM=EXTMAX 1024
TW2002 TWNODE=%1 SHARE VIDEO=SLOW > TWERR%1.LOG

REM bre.bat - Barren Realms Elite
@ECHO OFF
E:
CD \BRE
SRDOOR
BRE

REM ec.bat - Esterian Conquest (game in a subdirectory)
@ECHO OFF
CD GAME01
..\ECGAME D:\DORINFO1.DEF
CD ..

Part 3LORD FP for DOS

The DOS version runs under dosemu2, the same way LORD 4.06 does. Set up dosemu2 first (Part 1). LORDFP.ZIP is a complete game, so a new install needs nothing else: you don't need a copy of LORD 4.06.

New game (from scratch)

  1. Make the game directory and unzip LORDFP.ZIP into it:

    mkdir /sbbs/xtrn/lordf
    cd /sbbs/xtrn/lordf
    unzip /path/to/LORDFP.ZIP
  2. Run the setup program under de:

    $ de
    C:\> E:
    E:\> CD \LORDF
    E:\LORDF> LORDCFG

    The first run writes LORD.INI with the default game options. Check them with 1, then set up each BBS node with N:

    • Drop file type: DOORSYS (matches GAP DOOR.SYS in SCFG)
    • Drop file location: D:\ (the node directory)
    • COM port: leave it to the drop file

    This writes NODE1.DAT, NODE2.DAT and so on. Set up as many nodes as your BBS has.

  3. Still at the DOS prompt, type START 0 to try the game on the local screen. Node 0 is the sysop's local node and needs no setup.

  4. Add the door in SCFG:

    Start-up Directory../xtrn/lordf
    Command Linestart.bat %#
    Multiple Concurrent UsersYes
    I/O MethodFOSSIL or UART
    Native Executable/ScriptNo
    Use Shell or New ContextYes
    BBS Drop File TypeGAP DOOR.SYS
    Place Drop File InNode Directory
  5. Log in and play. START.BAT loops: when a player enters an IGM, LORD ends with errorlevel 254, START.BAT runs the IGM and then starts LORD again, which puts the player back where they were.

Optional: upgrading an existing LORD 4.06 game

Skip this for a new install. If you already run LORD 4.06 and want to keep its players, LORD FP can replace its programs: it uses LORD 4.06's player file, mail, news, node files and IGM list as they are.

  1. Back up the LORD directory.

  2. Rename LORD.EXE to LORD406.EXE and LORDCFG.EXE to LORDC406.EXE.

  3. From the zip, copy only LORD.EXE, LORDFP.STR, LORDCFG.EXE, LORDTXT.LRD, FLOOKS.TXT, MLOOKS.TXT and GSTART.LRD. Leave out the LORD 4.06 files: your game already has them, perhaps changed. Copy LORDTXT.DAT only if yours is missing.

  4. Run LORDCFG and check the game options and the node setup.

To go back to LORD 4.06, rename LORD406.EXE and LORDC406.EXE back.

Good to know

  • Registration. LORD 4.06 checks its own registration code, so it is entered with LORDC406.EXE. Option G in LORDCFG explains how.
  • Daily maintenance. After LORD's own daily maintenance, the first login of the day runs MAINT.BAT from the game directory, if there is one. IGMs put their upkeep there, for example Pawn Shop's PSETUP /M. LORD 4.06 does the same.
  • Memory. The game needs about 600K of conventional memory.
  • The game's files. LORD FP adds LORDFPX.DAT (the player fields PLAYER.DAT has no room for), LORDFPS.DAT (game state) and LORDFPM.DAT (the day MAINT.BAT last ran).
  • The full manual is LORDFP.DOC in the zip. LORD 4.06's own LORD.DOC, LADY.DOC and TROUBLE.TXT are included.

Part 4LORD FP for Linux

The Linux version is a native door. It needs no dosemu2 to run, only to run DOS IGMs from Other Places. LORDFPL.ZIP is a complete game, so a new install needs nothing else.

New game (from scratch)

  1. Make the game directory and unzip LORDFPL.ZIP into it. The zip keeps the programs executable; check with ls -l lord lordcfg.

    mkdir /sbbs/xtrn/lordfp
    cd /sbbs/xtrn/lordfp
    unzip /path/to/LORDFPL.ZIP
    chmod 755 lord lordcfg      # only if unzip dropped the permissions
  2. Run the setup program from a shell: ./lordcfg. The first run writes lord.ini. Option 1 covers the game options, and option 8 shows the Synchronet settings.

  3. Try it locally: ./lord -l plays on your terminal, as $USER or the name given with -u.

  4. Add the door in SCFG:

    Start-up Directory../xtrn/lordfp
    Command Line/sbbs/xtrn/lordfp/lord -d %n -r %r
    Multiple Concurrent UsersYes
    I/O MethodStandard (stdio), input echo off
    Native Executable/ScriptYes
    Use Shell or New ContextNo
    BBS Drop File TypeDOOR32.SYS or GAP DOOR.SYS (any type the game reads works)
    Place Drop File InNode Directory

    -d %n gives the node directory, and the game finds the drop file there. -r %r passes the caller's screen rows.

Optional: taking over an existing lord.js game

Skip this for a new install. The Linux version uses lord.js's data files in the same format: player.bin, state.bin, lord.ini, lordtxt.lrd and the other .lrd screens. Point it at an existing lord.js game directory with -p, or copy lord and lordcfg into it. Players are matched to BBS users by the real name in the drop file, as lord.js does.

Command line

lord -d <drop file or node dir> [-r rows] [-n node] [-p gamedir]
lord -l [-u name] [-p gamedir]       # sysop local play
lord 0                               # local play as node 0, as LORD 4.06
lord -d <drop file> -i               # show what the drop file says
lordcfg [-p gamedir]                 # setup
lordcfg -406 -p <LORD 4.06 dir>      # player editor for a DOS LORD 4.06 game

Drop files read: DOOR32.SYS, DOOR.SYS, DORINFOx.DEF, CHAIN.TXT, CALLINFO.BBS, SFDOORS.DAT, PCBOARD.SYS and EXITINFO.BBS (name only).

Setting up DOS IGMs

The Linux version starts DOS IGMs under dosemu2 itself, with the caller attached. It doesn't go through external.bat, so the global EMUSETUP.BAT is not used. The settings are in the [IGM] section of lord.ini:

[IGM]
DOSGameDir=   E:\LORDFP\
PreCommands=  fossil.com >NUL
SettingMeaning
DOSGameDirThe game directory as DOS sees it. Blank means worked out from /sbbs/xtrn.
PreCommandsDOS commands run before each IGM, separated by ;. Set it to fossil.com >NUL so IGMs that need a FOSSIL driver work.
DOSemuCommandHow dosemu2 is started. The default matches the Synchronet setup in Part 1, so it normally isn't in the file. %d is the node directory, %b the batch file's DOS path and %n the node.

For each IGM visit the game writes the LORD 4.06 files IGMs expect: PLAYER.DAT, INFO.<node>, OUT.<account>, NODE<n>.DAT, TIME.DAT, LOGNOW.TXT and the rest, plus a DOOR.SYS in the node directory. Afterwards it reads back what the IGM changed: player stats, the fairy, mail, new Daily Happenings lines and Violet's marriage.

MAINT.BAT is run the same way, once a day at the first login after the daily maintenance, as LORD 4.06 does. Its output is hidden from the caller, and it adds a few seconds to that first login.

Part 5In-Game Modules

IGMs are separate DOS programs that add places to LORD's "Other Places" menu. Both versions of LORD FP run LORD 4.06 IGMs, listed in 3RDPARTY.DAT in the game directory: two lines per IGM, the DOS command line (* is replaced by the node number) and then the name players see, with LORD colour codes.

;-=-=-=-= LORD'S INTERNAL 3RD PARTY SOFTWARE OPTION =-=-=-
E:\LORDF\IGMS\VAULT\VAULT.EXE * E:\LORDF\ 1
`0The `@Dragon `0Vault
E:\LORDF\IGMS\PAWN\PAWNSHOP.EXE /N* /GE:\LORDF\
`@THE PAWN SHOP `0v3.40

The Linux version's lordcfg has an "Other Places" screen that adds and removes entries.

General steps

  1. Make a directory for the IGM inside the game directory, for example igms/pawn, and unzip it there.

  2. Run the IGM's install or setup program under de, from the IGM's directory. Most ask for LORD's directory: give the DOS path of this game, such as E:\LORDF\ or E:\LORDFP\.

  3. Check 3RDPARTY.DAT: the installer usually adds its entry. Remove any older entry for the same IGM.

  4. If the IGM needs daily maintenance, check that MAINT.BAT runs it exactly once.

  5. Test it: go to Other Places, enter the IGM, and quit back to LORD.

One game per IGM install. IGMs keep their own configuration naming LORD's directory. If two games share one IGM directory, they share and overwrite its data. Give each game its own copy.

Example: The Pawn Shop 3.40

  1. Unzip pawn340.zip into /sbbs/xtrn/lordf/igms/pawn.

  2. Under de: E:, CD \LORDF\IGMS\PAWN, then PSETUP /C. Press I to install, and give E:\LORDF\ as LORD's directory and your BBS name. It writes PAWNSHOP.CFG and PSLIMITS.CFG, adds its line to 3RDPARTY.DAT and adds PSETUP.EXE /M to MAINT.BAT.

  3. Check that MAINT.BAT has PSETUP.EXE /M only once.

  4. Pawn Shop 3.40 needs a FOSSIL driver: the global EMUSETUP.BAT for the DOS version, or PreCommands=fossil.com >NUL for the Linux version.

Pawn Shop's documentation warns that PSETUP /M has crashed some older LORD versions at maintenance with a "player.dat is corrupted" message. Watch the first daily maintenance after installing it.

Part 6Troubleshooting

What you seeLikely causeFix
The door hangs as soon as it startsWrong Start-up Directory, for example ../lord4 instead of ../xtrn/lord4Correct it in SCFG. It is relative to /sbbs/ctrl
Blank screen and a blinking cursor; LORD shows "HOLD ON.." and nothing after itThe door or IGM only talks through a FOSSIL driver and none is loadedAdd fossil.com: global EMUSETUP.BAT, or PreCommands for the Linux version
A door says someone is already playing, or won't start for a whileA caller dropped carrier and the door left its "in use" file (Pawn Shop: LOCKFILE.DAT; BRE: INUSE.FLG)When nobody is in the door, delete the file
The door can't find the drop fileDrop file placed in the start-up directory, or the door's config points at a Linux pathPlace Drop File In: Node Directory, and point the door at D:\
The door's setup program shows nothingRun with the BBS settings, whose virtual COM1 hides the local screen, or from a scriptRun it with de, which uses dosemu-local.conf, from a real terminal
Files can't be written; the game says it can't open a fileThe door's files belong to another userchown -R them to the user the BBS runs as
A prompt seems to ignore a keySome prompts need Enter after the letter (TradeWars' X to exit; EC's graphics question)Press Enter after the key
Something elseCheck the logs/sbbs/node<n>/dosemu_boot.log for DOS doors; error.log and igmnode<n>/dosemu_igm.log in the LORD FP Linux game directory; Synchronet's own log (journalctl -u sbbs on systemd)

Credits

  • Legend of the Red Dragon by Seth Robinson. LORD 4.06 © Robinson Technologies / Metropolis Gameport.
  • lord.js, the JavaScript LORD that LORD FP follows, by Deuce; it ships with Synchronet BBS.
  • dosemu2 setup for Synchronet by Nigel Reed (End of the Line BBS), from original work by Eric Oulashin (Nightfox).
  • Synchronet BBS by Rob Swindell (Digital Man).
  • The Pawn Shop by Chris MacPherson, updated by Donald Tidmore and Charlie Wardick.
  • LORD FP, the Free Pascal port, from Kalgoorlie Retro BBS.