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
/sbbsbefore 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.
| File | Goes in | What it does |
|---|---|---|
dosemu.conf | /sbbs/ctrl | dosemu2 settings for doors run by the BBS. COM1 is virtual: it is wired to the caller. |
dosemu-local.conf | /sbbs/ctrl | Settings for the local DOS prompt (de). Same as above but without the virtual COM1, so programs draw on your screen. |
dosemu.ini | /sbbs/exec | The command line Synchronet uses to start dosemu2. A copy in a door's own directory overrides it for that door. |
external.bat | /sbbs/exec | The 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/.dosemu | A preconfigured dosemu2 boot environment (its drive_c is DOS drive C:). |
de | /sbbs/exec or /sbbs/bin | Opens 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.BATuses that file instead of the global one. Add thefossil.comline to it too. - Load only one FOSSIL driver. The package's
external.batwould also try to load X00 from aDOSUTILSdirectory, but only when there is noEMUSETUP.BATand that directory exists. - Without any
EMUSETUP.BATorDOSUTILS,external.batprints "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.
| Drive | Linux directory | Used for |
|---|---|---|
C: | /sbbs/ctrl/.dosemu/drive_c | dosemu2's own boot drive |
D: | /sbbs/node1, /sbbs/node2… | The caller's node directory: drop files (DOOR.SYS, DORINFO1.DEF…) |
E: | /sbbs/xtrn | The doors. /sbbs/xtrn/lordf is E:\LORDF |
F: | /sbbs/ctrl | Global EMUSETUP.BAT |
G: | /sbbs/data | BBS data |
H: | /sbbs/exec | BBS 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
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.Make sure the user Synchronet runs as owns the files:
chown -R <bbsuser> /sbbs/xtrn/bre. Doors write their data files as they run.Run the door's setup program under
de(see the local DOS prompt). Wherever it asks for paths, give DOS paths: the game directory isE:\BRE\, and the drop file is inD:\.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.bathas already changed to the start-up directory before it runs the command line.Run
scfg, go to External Programs → Online Programs (Doors), pick a section and add the door with the settings below.Log in to the BBS and run the door. Test entering, a few keys, and quitting back to the BBS.
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
| Setting | Value | Notes |
|---|---|---|
| Name | What callers see | |
| Internal Code | e.g. BRE | Up to 8 characters, unique |
| Start-up Directory | ../xtrn/bre | Relative 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 Line | e.g. bre.bat or start.bat %# | %# is the node number |
| Multiple Concurrent Users | Yes, if the door supports it | |
| I/O Method | FOSSIL or UART | Not Standard (stdio) |
| Native Executable/Script | No | No means "DOS program, use dosemu2" |
| Use Shell or New Context | Yes | |
| BBS Drop File Type | What the door reads | See below |
| Place Drop File In | Node Directory | The 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 choice | File | Typical doors |
|---|---|---|
| GAP (extended) | DOOR.SYS, 52 lines | TradeWars 2002, most 1990s doors |
| GAP (original) | DOOR.SYS, 31 lines | LORD (either works) |
| RBBS/QuickBBS | DORINFO1.DEF | Barren Realms Elite, Esterian Conquest |
| Mystic | DOOR32.SYS | Newer and native Linux doors |
| Others | CHAIN.TXT, CALLINFO.BBS, PCBOARD.SYS, SFDOORS.DAT, DOORFILE.SR | Doors 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:
| Setting | Value |
|---|---|
| Command Line | The full path to the program and its options |
| Native Executable/Script | Yes |
| I/O Method | Standard (stdio). Turn input echo off if the program echoes for itself |
| Use Shell or New Context | No |
Working examples
These are the door entries on Kalgoorlie Retro BBS, all in a section called "Games Hosted by Kalgoorlie Retro":
| Door | Start-up Directory | Command Line | Drop file | Type |
|---|---|---|---|---|
| LORD 4.06 | ../xtrn/lord4 | start.bat %# | GAP (original) | DOS |
| LORD FP (DOS) | ../xtrn/lordf | start.bat %# | GAP (original) | DOS |
| LORD FP (Linux) | ../xtrn/lordfp | /sbbs/xtrn/lordfp/lord -d %n -r %r | GAP (original) | Native |
| TradeWars 2002 | ../xtrn/tw2002 | tw.bat %# | GAP (extended) | DOS |
| Barren Realms Elite | ../xtrn/bre | bre.bat | RBBS/QuickBBS DORINFO1.DEF | DOS |
| Esterian Conquest | ../xtrn/EC | ec.bat | RBBS/QuickBBS DORINFO1.DEF | DOS |
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)
Make the game directory and unzip
LORDFP.ZIPinto it:mkdir /sbbs/xtrn/lordf cd /sbbs/xtrn/lordf unzip /path/to/LORDFP.ZIPRun the setup program under
de:$ de C:\> E: E:\> CD \LORDF E:\LORDF> LORDCFGThe first run writes
LORD.INIwith 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.DATand so on. Set up as many nodes as your BBS has.- Drop file type:
Still at the DOS prompt, type
START 0to try the game on the local screen. Node 0 is the sysop's local node and needs no setup.Add the door in SCFG:
Start-up Directory ../xtrn/lordfCommand Line start.bat %#Multiple Concurrent Users Yes I/O Method FOSSIL or UART Native Executable/Script No Use Shell or New Context Yes BBS Drop File Type GAP DOOR.SYS Place Drop File In Node Directory Log in and play.
START.BATloops: when a player enters an IGM, LORD ends with errorlevel 254,START.BATruns 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.
Back up the LORD directory.
Rename
LORD.EXEtoLORD406.EXEandLORDCFG.EXEtoLORDC406.EXE.From the zip, copy only
LORD.EXE,LORDFP.STR,LORDCFG.EXE,LORDTXT.LRD,FLOOKS.TXT,MLOOKS.TXTandGSTART.LRD. Leave out the LORD 4.06 files: your game already has them, perhaps changed. CopyLORDTXT.DATonly if yours is missing.Run
LORDCFGand 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 inLORDCFGexplains how. - Daily maintenance. After LORD's own daily maintenance, the first login of the day runs
MAINT.BATfrom the game directory, if there is one. IGMs put their upkeep there, for example Pawn Shop'sPSETUP /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 fieldsPLAYER.DAThas no room for),LORDFPS.DAT(game state) andLORDFPM.DAT(the dayMAINT.BATlast ran). - The full manual is
LORDFP.DOCin the zip. LORD 4.06's ownLORD.DOC,LADY.DOCandTROUBLE.TXTare 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)
Make the game directory and unzip
LORDFPL.ZIPinto it. The zip keeps the programs executable; check withls -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 permissionsRun the setup program from a shell:
./lordcfg. The first run writeslord.ini. Option 1 covers the game options, and option 8 shows the Synchronet settings.Try it locally:
./lord -lplays on your terminal, as$USERor the name given with-u.Add the door in SCFG:
Start-up Directory ../xtrn/lordfpCommand Line /sbbs/xtrn/lordfp/lord -d %n -r %rMultiple Concurrent Users Yes I/O Method Standard (stdio), input echo off Native Executable/Script Yes Use Shell or New Context No BBS Drop File Type DOOR32.SYS or GAP DOOR.SYS (any type the game reads works) Place Drop File In Node Directory -d %ngives the node directory, and the game finds the drop file there.-r %rpasses 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
| Setting | Meaning |
|---|---|
DOSGameDir | The game directory as DOS sees it. Blank means worked out from /sbbs/xtrn. |
PreCommands | DOS commands run before each IGM, separated by ;. Set it to fossil.com >NUL so IGMs that need a FOSSIL driver work. |
DOSemuCommand | How 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
Make a directory for the IGM inside the game directory, for example
igms/pawn, and unzip it there.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 asE:\LORDF\orE:\LORDFP\.Check
3RDPARTY.DAT: the installer usually adds its entry. Remove any older entry for the same IGM.If the IGM needs daily maintenance, check that
MAINT.BATruns it exactly once.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
Unzip
pawn340.zipinto/sbbs/xtrn/lordf/igms/pawn.Under
de:E:,CD \LORDF\IGMS\PAWN, thenPSETUP /C. Press I to install, and giveE:\LORDF\as LORD's directory and your BBS name. It writesPAWNSHOP.CFGandPSLIMITS.CFG, adds its line to3RDPARTY.DATand addsPSETUP.EXE /MtoMAINT.BAT.Check that
MAINT.BAThasPSETUP.EXE /Monly once.Pawn Shop 3.40 needs a FOSSIL driver: the global
EMUSETUP.BATfor the DOS version, orPreCommands=fossil.com >NULfor 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 see | Likely cause | Fix |
|---|---|---|
| The door hangs as soon as it starts | Wrong Start-up Directory, for example ../lord4 instead of ../xtrn/lord4 | Correct it in SCFG. It is relative to /sbbs/ctrl |
| Blank screen and a blinking cursor; LORD shows "HOLD ON.." and nothing after it | The door or IGM only talks through a FOSSIL driver and none is loaded | Add fossil.com: global EMUSETUP.BAT, or PreCommands for the Linux version |
| A door says someone is already playing, or won't start for a while | A 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 file | Drop file placed in the start-up directory, or the door's config points at a Linux path | Place Drop File In: Node Directory, and point the door at D:\ |
| The door's setup program shows nothing | Run with the BBS settings, whose virtual COM1 hides the local screen, or from a script | Run 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 file | The door's files belong to another user | chown -R them to the user the BBS runs as |
| A prompt seems to ignore a key | Some prompts need Enter after the letter (TradeWars' X to exit; EC's graphics question) | Press Enter after the key |
| Something else | Check 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.