update dosbox docs for shim
This commit is contained in:
parent
e42f274c9b
commit
a4a8651b3c
1
.gitignore
vendored
1
.gitignore
vendored
@ -82,3 +82,4 @@ utils/reset_pass/reset_pass
|
|||||||
.vscode
|
.vscode
|
||||||
last10v2.dat
|
last10v2.dat
|
||||||
utils/filecenter/filecenter
|
utils/filecenter/filecenter
|
||||||
|
utils/dosbox_shim/shim
|
||||||
|
@ -38,47 +38,54 @@ These commands will compile and install DosBox into /usr/local/bin.
|
|||||||
|
|
||||||
## Create Configuration File
|
## Create Configuration File
|
||||||
|
|
||||||
Next you will need to create a config file which enables the serial port for socket inheritance, and also mounts drives so that DosBox can access both your doors and your BBS drop files.
|
Next you will need to create a config file which enables the serial port, and also mounts drives so that DosBox can access both your doors and your BBS drop files.
|
||||||
|
|
||||||
An example setup is here: [dosbox.conf](https://gist.github.com/apamment/98e42db83c452105b3e21a8bc062c5c3)
|
An example setup is here: [dosbox.conf](https://gist.github.com/apamment/2e5b00eda2f304f2bc7d298a0487bd9b)
|
||||||
|
|
||||||
In this example, drive C: is the location where my doors are stored, dropfiles will be copied to the door directory.
|
In this example, drive C: is the location where my doors are stored, dropfiles will be copied to the door directory.
|
||||||
|
|
||||||
|
Be sure to change the port for each door. In this example the port is 9999.
|
||||||
|
|
||||||
## Create Shell Script to Invoke DosBox
|
## Create Shell Script to Invoke DosBox
|
||||||
|
|
||||||
The shell script you need will vary from system to system, but basically, you want to:
|
The shell script you need will vary from system to system, but basically, you want to:
|
||||||
|
|
||||||
* ensure no one else is using the door before you start it
|
|
||||||
* Copy the dropfile to the door directory
|
* Copy the dropfile to the door directory
|
||||||
* make DosBox not use an X11 window,
|
* make DosBox not use an X11 window,
|
||||||
* ensure that the dropfiles have DOS line endings
|
|
||||||
* launch DosBox with the command to start the batch file in the next section.
|
* launch DosBox with the command to start the batch file in the next section.
|
||||||
|
|
||||||
Here is an example script I use for Freshwater Fishing:
|
Here is an example script I use for Freshwater Fishing:
|
||||||
|
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
export SDL_VIDEODRIVER="dummy"
|
export SDL_VIDEODRIVER="dummy"
|
||||||
NODE=$1
|
NODE=$2
|
||||||
SOCKET=$2
|
PORT=$1
|
||||||
|
|
||||||
trap '' 2
|
trap '' 2
|
||||||
|
|
||||||
if [ ! -e /home/pi/MagickaBBS/doors/ffs.inuse ]; then
|
cp /home/pi/MagickaBBS/node${NODE}/door.sys /home/pi/MagickaBBS/doors/ffs/
|
||||||
touch /home/pi/MagickaBBS/doors/ffs.inuse
|
/usr/local/bin/dosbox -c "C:\ffs\ffs.bat ${NODE}" -conf /home/pi/MagickaBBS/doors/dosbox-ffs.conf
|
||||||
cp /home/pi/MagickaBBS/node${NODE}/door.sys /home/pi/MagickaBBS/doors/ffs/
|
|
||||||
/usr/local/bin/dosbox -socket $SOCKET -c "C:\ffs\ffs.bat ${NODE}" -conf /home/pi/MagickaBBS/doors/dosbox.conf
|
|
||||||
rm /home/pi/MagickaBBS/doors/ffs.inuse
|
|
||||||
fi
|
|
||||||
|
|
||||||
trap 2
|
trap 2
|
||||||
|
|
||||||
|
|
||||||
This will just dump the user back to the BBS if the door is in use. You could get fancy and use the 'inuse' door I created which will display an in-use message and then quit ([INUSE Door](https://github.com/apamment/inuse)), but that is outside the scope of this document.
|
|
||||||
|
|
||||||
You will also need to make the bash script executable:
|
You will also need to make the bash script executable:
|
||||||
|
|
||||||
chmod +x ffs.sh
|
chmod +x ffs.sh
|
||||||
|
|
||||||
|
## Create Shell Script to Invoke the DosBox Shim
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ! -e /home/pi/MagickaBBS/doors/ffs.inuse ]; then
|
||||||
|
touch /home/pi/MagickaBBS/doors/ffs.inuse
|
||||||
|
/home/pi/MagickaBBS/utils/dosbox_shim/shim 9999 $NODE /home/andrew/MagickaBBS/doors/ffs.sh
|
||||||
|
rm /home/pi/MagickaBBS/doors/ffs.inuse
|
||||||
|
fi
|
||||||
|
|
||||||
|
This will just dump the user back to the BBS if the door is in use. You could get fancy and use the 'inuse' door I created which will display an in-use message and then quit ([INUSE Door](https://github.com/apamment/inuse)), but that is outside the scope of this document.
|
||||||
|
|
||||||
|
Again be sure to change the port to match the dosbox config for this door.
|
||||||
|
|
||||||
## Create Batch File to Start Door
|
## Create Batch File to Start Door
|
||||||
|
|
||||||
Please note, you will need to setup your doors using DosBox in the normal fashion, either you set them up on a machine where you have a monitor attached and transfer the files over, or you run DosBox directly from your PI with either remote X11 or a local monitor.
|
Please note, you will need to setup your doors using DosBox in the normal fashion, either you set them up on a machine where you have a monitor attached and transfer the files over, or you run DosBox directly from your PI with either remote X11 or a local monitor.
|
||||||
@ -101,13 +108,13 @@ This loads BNU, then launches the door with the drop file.
|
|||||||
|
|
||||||
## Setup BBS
|
## Setup BBS
|
||||||
|
|
||||||
Finally, you will want to setup your BBS to call the script you made in Step 6. You also need to pass the node number and socket handle.
|
Finally, you will want to setup your BBS to call the dosbox shim script.
|
||||||
|
|
||||||
In doors.ini, something like
|
In doors.ini, something like
|
||||||
|
|
||||||
[Freshwater Fishing]
|
[Freshwater Fishing]
|
||||||
command = /home/pi/MagickaBBS/doors/ffs.sh
|
command = /home/pi/MagickaBBS/doors/ffs-shim.sh
|
||||||
stdio = false
|
stdio = true
|
||||||
codepage = CP437
|
codepage = CP437
|
||||||
|
|
||||||
Then, add a command to your doors menu:
|
Then, add a command to your doors menu:
|
||||||
|
Reference in New Issue
Block a user