LORD FP on Synchronet - Sysop Guide =================================== 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 Part 1 dosemu2 for Synchronet Part 2 Installing doors in Synchronet Part 3 LORD FP for DOS Part 4 LORD FP for Linux Part 5 In-Game Modules Part 6 Troubleshooting Credits 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. 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 1 - DOSEMU2 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 list says, then restart the BBS. 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 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. 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 2 - INSTALLING 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 /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 ---------------------------- 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) Native Executable/Script No ("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: 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: 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": LORD 4.06 ../xtrn/lord4 start.bat %# GAP (original) LORD FP (DOS) ../xtrn/lordf start.bat %# GAP (original) LORD FP (Linux) ../xtrn/lordfp /sbbs/xtrn/lordfp/lord -d %n -r %r (native) GAP (original) TradeWars 2002 ../xtrn/tw2002 tw.bat %# GAP (extended) Barren Realms Elite ../xtrn/bre bre.bat DORINFO1.DEF Esterian Conquest ../xtrn/EC ec.bat DORINFO1.DEF 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 3 - LORD 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 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 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 4 - LORD 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 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 %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 [-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 -i show what the drop file says lordcfg [-p gamedir] setup lordcfg -406 -p 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 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., OUT., NODE.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 5 - IN-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 6 - TROUBLESHOOTING ======================== 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: the global EMUSETUP.BAT (Part 1), or PreCommands for the Linux version (Part 4). 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. The drop file is placed in the start-up directory, or the door's config points at a Linux path. Set Place Drop File In: Node Directory, and point the door at D:\. The door's setup program shows nothing. It was 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/dosemu_boot.log for DOS doors error.log and igmnode/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 (c) 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. Written October 2026 against Synchronet 3.21 and 3.22, dosemu2 2.0pre9.