A how-to on getting DOSBox to work with Mystic BBS (Windows version)
Written by maskreet 12/3/2014

 

First of all, if you don't already have it, install Microsoft Visual C++ 2010 SP1. DOSBox requires this to run.

Standalone installer here

 

As of this writing, the latest stable release of DOSBox (v0.74) has a broken socket inheritance, so you're going to be grabbing an SVN release. I used EmuCR from

http://www.dosbox.com/wiki/SVN_Builds#Plain.2Fvanilla.2Fclean_SVN_builds

but you can use whichever you like, as long as socket inheritance is fixed in that version.

(**NOTE** Most of the links to download that particular flavor and version are fake adware pushers, so here's the real thing if you don't want to take your chances: link)

 

Next you'll be grabbing a Fossil driver. x00 or BNU will work, since they seem to be the easiest to load and use. I personally use BNU, but again, whichever you prefer. x00 v1.53 and BNU v1.70 are the last, stable releases. BNU can be found at http://pcmicro.com/bnu/, while x00 can be found with a Google search (local BNU file here, local X00 file here)

 

Now you're going to need DoorWay to Unlimited Doors (hereafter called DoorWay). The latest version is on the pcmicro.com website, but doesn't seem to have it listed on the main page. Either do a Google search for it, or head to http://pcmicro.com/doorway/download.html and download it from there. It's shareware, so it's limited to 10 minutes per use. I'd *highly* suggest registering (local DoorWay file here).

 

Now grab your games. I used http://www.myabandonware.com/ but any site that has them works. Keep in mind that you're going to be limited to text and ANSI colors, and the games can't be running in full-screen. A list of games I found that worked are:

Adventure!
The Adventures of Alice Who Went Through the Looking-Glass and Came Back Though Not Much Changed
A Mind Forever Voyaging
Amulet of Yendor
Ballyhoo
James Bond 007 - Goldfinger
James Bond 007 - A View to a Kill
Brimstone
Cyborg
Deadline
Enchanter
Forbidden Castle
Hack
The Hermit's Secret
Infidel
McMurphy's Mansion
Moonmist
Nethack
Leather Goddesses of Phobos
Suspended
Stephen King's The Mist
Trinity
Voodoo Island
The Wizard's Castle
Wishbringer
Zork 1
Zork 2
Zork 3

This isn't a complete list at all, just the ones I grabbed and ran.

Create a directory for whichever games you downloaded; I used C:\GAMES. Each game to its own directory inside the GAMES directory. Don't worry about directory naming conventions (8 characters or less), since DOSBox will be mounting each game to its own root directory when fired up. Now create a directory named !U_GAMES in your GAMES directory.

Before getting too involved with the rest of this how-to, run each game to make sure it works. It HAS to be in a window, and can't have anything other than text and ANSI graphics.

 

Create a directory somewhere on your hard drive for both DoorWay and DOSBox. I used C:\DOORWAY and C:\DOSBOX for mine. Also, create a directory in your DOORWAY directory named CFG. Uncompress them into their respective directories. Uncompress BNU into a temp directory, and just move BNU.COM over to your DoorWay directory.

 

Now, to the DOSBox config. I'm using Windows XP for my BBS, so DOSBox will create the default config file in:

C:\Documents and Settings\<account name>\Local Settings\Application Data\DOSBox\dosbox-SVN.conf

but you can see where it creates it on any version of Windows you run just by running DOSBox for the first time and looking at the DOSBox status window.

Once it's created, head to that directory and open it up. Go through the entire config and turn off anything that you won't be using. That includes all sound emulation, joystick, mouse, etc.

When you get near the bottom, you'll see a section named [serial]. Make sure serial 2, 3 and 4 are set to disabled. for serial 1, set it like this:

serial1=nullmodem inhsocket:1 telnet:1

and close the config, saving your changes.

Easy so far, right?

 

Here we're going to create the batch file. Create a new one in your DoorWay directory. I named mine DOOR.BAT, but you can name it whatever you like. Mine is a bit clunky, but it works. If you can polish yours to be more streamlined, go for it. If your setup so far is exactly like mine, you'll need to put this in it:

@echo off

C:
IF EXIST C:\games\!u_games\%4\%1\NUL GOTO EXISTS
IF NOT EXIST c:\games\!u_games\%4\NUL GOTO NOUSERDIR
IF NOT EXIST c:\games\!u_games\%4\%1\NUL GOTO NOGAMEDIR

:NOUSERDIR
c:
CD\games\!u_games
MD %4
GOTO NOGAMEDIR

:NOGAMEDIR
c:
CD\games\!u_games\%4
MD %1
xcopy c:\games\%1\*.* c:\games\!u_games\%4\%1 /e /y /i
GOTO EXISTS

:EXISTS

c:
cd\doorway

echo /CD>CFG\%1.cfg
echo /H:>>CFG\%1.cfg
REM echo /D:>>CFG\%1.cfg
REM echo /G:ON>>CFG\%1.cfg
echo /O:T>>CFG\%1.cfg
echo /S:f:\>>CFG\%1.cfg
echo /V:D>>CFG\%1.cfg
echo /K:180>>CFG\%1.cfg
echo /RB>>CFG\%1.cfg

if %1==ADVENT goto ADVENT

:ADVENT
echo /P:d:\advent.exe>>CFG\%1.cfg
echo /B:M>>CFG\%1.cfg
GOTO COMMAND

:COMMAND
c:
cd\dosbox
dosbox.exe -c "mount d c:\games\!u_games\%4\%1" -c "mount e c:\doorway" -c "mount f c:\mystic\temp%3" -c "e:" -c "bnu /f" -c "DOORWAY.EXE SYSF CFG\%1.cfg" -c "exit" -securemode -socket %2

REM %1 = config file / directory name
REM %2 = socket
REM %3 = node number
REM %4 = user's number

The batch first checks if each user's custom directory exists based on their BBS user number. If it doesn't, it creates it. It moves on to the next step, which is to see if the game they're calling from the BBS exists in their user number directory. It creates that as well if it doesn't exist, then xcopies the source game to their personal directory. Then it creates a custom CFG file in the CFG directory for DoorWay to use, based on the game name passed from the BBS menu. After that, it looks to see which game is being called, adds the last two CFG lines (which I'll discuss a bit later), and finally starts DOSBox. DOSBox fires up, creates the mounted directories inside it, starts the Fossil driver, starts DoorWay, and runs the game. After quitting the game, either through user interaction, BBS disconnect or a 3 minute timeout, it passes control back to the BBS.

 

The DOSBox command line is:

-c Tells DOSBox that you want to pass a command; preface any command you want with a -c and enclose in quotes
-c "mount d c:\games\!u_games\%4\%1" Tells DOSBox to mount the user's game directory as the D: drive in DOSBox
-c "mount e c:\doorway" Tells DOSBox to mount the DoorWay directory as the E: drive in DOSBOx
-c "mount f c:\mystic\temp%3" Tells DOSBox to mount Mystic's temp<node> directory as the F: drive; needed by DoorWay for DOOR.SYS
-c "e:" Changes to the DOSBox mounted E: directory
-c "bnu /f" Loads BNU Fossil driver inside DOSBox with the default configuration
-c "DOORWAY.EXE SYSF CFG\%1.cfg" Starts DoorWay with the custom config file in the CFG directory
-c "exit" Passes an EXIT command to DOSBox (used as one of the ways to close DOSBox; /RB commandline parameter for DoorWay is another in the DoorWay config file)
-securemode Tells DOSBox to not allow any additional setting or messing with the intial drive mountings in DOSBox
-socket %2 Tells DOSBox you want to pass the socket to it from the BBS; %2 is the batch files' interpretation of the socket passed from the BBS command

 

The DoorWay commands are:

/CD Goes to the game's directory and runs it from there
/H: Keeps the user from being able to shell to DOS (if possible in the game, which I haven't seen but you can't be too careful)
/D: Keeps the user from being able to write to the system (not really needed, was using this in an older setup that wasn't sandboxed in DOSBox; also keeps the user from being able to save their games, which defeats the purpose of the whole thing)
/G:ON ANSI graphics mode. Seems to work without this.
/O:T Skips the default "DOORWAY TO UNLIMITED DOORS" full screen loading message
/S:f:\ Points DoorWay to where your BBS DOOR.SYS is located; in the DOSBox command line, this will be drive F:
/V:D Direct video writes
/K:180 Keyboard timeout in seconds; change to whatever you like
/RB Reboot after exit of DoorWay; some games need this to exit properly. Won't reboot your system, only closes DOSBox

 

The four lines in your Adventure! example are:

:ADVENT The target label called by "if %1==ADVENT GOTO ADVENT" earlier in the batch file. HAS TO MATCH THE SOURCE GAME DIRECTORY!
/P:d:\<game executable> /P: is the command that tells DoorWay what needs to be run when invoked. d:\<game executable> is the name of the game that it runs. IT MUST BE A .COM OR .EXE FILE! Batch files won't work with this setup.
/B:M /B: deals with the bottom line of the game. M will move the characters to the line above (line 24). Some games can be configged to whichever amount of lines you like, which means you'd be able to remove this from that particular game. Others don't and require it. It's up to you to figure out which is needed.
GOTO COMMAND Tells the batch file to go to the COMMAND label and run DOSBox.

 

Now that that's all setup, we'll be creating the Mystic menu commands to run the games.

I have mine setup where going to the DOORS menu from the MAIN menu gives a listing of games in categories. I have one for InterBBS games, one for card games, one for single-player games, one for these DOS games, etc. It doesn't really matter where they're accessible, just that they're accessible. No fun playing them by yourself, right? =)

Create a new menu for your game. Configure it however you like when presented to the user. For the commands, basic setup looks like this:

Command Access Data
(GD) Display a file s50 c:\games\advent\help_advent.txt (OPTIONAL - create and display if the game has something that the user might need to know)
(NA) Set node action s50 Playing Adventure! (OPTIONAL - sets the Who's Online listing with what they're doing)
(DG) Exec door s50 c:\doorway\door.bat ADVENT %0 %3 %# (The text after door.bat MUST have those four commands in that exact order!)
(GT) Display a line of text s50 s50 |CR|CR|PA (OPTIONAL - two carriage returns, pauses after the game quits back to the BBS)

 

The help text files should look similar to this:

|CL
Use the spacebar to advance past the PAUSE prompts in game
|PA

For the DG command:

It creates a DOOR.SYS file that DoorWay needs to read to set time limits and ANSI settings (time limits only in registered version, otherwise 10 minute limit each time)

ADVENT is the name of the game. IT HAS TO MATCH THE NAME OF THE BASE GAME DIRECTORY YOU CREATE AND GOTO LABEL IN THE DOOR.BAT FILE! Make sure all three are the EXACT same, or it won't work.

%0 is the socket handle that's passed to DOSBox

%3 is the node the user is currently on; used to tell DOSBox where to mount one of the drives for the DOOR.SYS file to be read by DoorWay

%# is the user number, used to create the user directory and/or pass the info to DOSBox to mount one of the drives.

 

Now that everything's setup, test it out. If it works, great! Easiest way to create new menu entires is to copy/paste, and edit a couple relevant things. Be sure each menu entry command has the directory and NAME changed to whichever game it is; everything else on the DG command line can, and should be left the same.

If it doesn't work, then make sure the game name as your game directory, labels in the DOOR.BAT file and menu command are all the same. Also, look for any typos anywhere.

Any comments or questions can be directed at sysop@throwbackbbs.com, or in an email on the BBS.