Both sides previous revisionPrevious revisionNext revision | Previous revision |
howto:door:index [2011/07/19 18:13] – Fix for js->javascript rename bug. digitalman | howto:door:index [2024/10/15 15:38] (current) – Add 31-line DOOR.SYS, removed UTIDOOR.TXT digital man |
---|
BBS "doors" are external online programs, often games, that may be installed on a BBS system for its remote terminal users to use interactively. Doors are usually 16-bit DOS programs from "back in the day" and can be challenging to get working on the computers and operating systems of today. A little patience and the use of pages like this one can usually get them working however. | BBS "doors" are external online programs, often games, that may be installed on a BBS system for its remote terminal users to use interactively. Doors are usually 16-bit DOS programs from "back in the day" and can be challenging to get working on the computers and operating systems of today. A little patience and the use of pages like this one can usually get them working however. |
| |
| |
| |
| ==== Supported External Program Types ==== |
| |
| The following table should help you to identify what types of online external programs (doors, external editors, file transfer protocol drivers) are supported by Synchronet and in what environments: |
| |
| ^ I/O Method ^ Description ^ Examples ^ Typical Drop File Types ^ OS ^ |
| | [[ref:FOSSIL]] | 16-bit DOS BBS doors and external editors | TradeWars 2002, GlobalWar, LORD, FDSZ | DOOR.SYS and DORINFO#.DEF | Windows and [[howto:dosemu|Linux]]| |
| | COM/UART | 16-bit DOS BBS doors and external editors | DSZ, NukeWars | DOOR.SYS and DORINFO#.DEF | Windows | |
| | DOS Console | 16-bit Synchronet and WWIV doors and external editors | Food Fight! by Rigor Mortis, Dragon's Hoard, SBJ/SBL v2.x | CHAIN.TXT and XTRN.DAT | Windows | |
| | TCP/IP Socket | Native TCP/IP BBS doors and external editors | DoorMUD, PimpWars/Win32, Darkness/Win32, SBJ/SBL v3.x | DOOR32.SYS and XTRN.DAT | Windows and *nix | |
| | Standard | Native stdio/console programs (traditionally, UNIX) | PimpWars/Linux, Lord/X, "scfg -d", cmd.exe, bash, pico | DOOR32.SYS | Windows and *nix | |
| |
| ==== Supported Drop File Types ==== |
| Synchronet can create and read-back a variety of drop file types based on the requirements of the door program: |
| |
| ^ Software ^ Write File(s) ^ Read File(s) ^ |
| | Mystic | ''DOOR32.SYS'' | | |
| | GAP (original)| ''DOOR.SYS'' (31 lines) | ''DOOR.SYS'': Flags, SecLevel, ExpireDate, FileDLed, KBsDLed | |
| | GAP (extended)| ''DOOR.SYS'' (52 lines) | ''DOOR.SYS'': Flags, SecLevel, ExpireDate, FileDLed, KBsDLed, MinuteCredits | |
| | WWIV | ''CHAIN.TXT'' | | |
| | PCBoard 15.x | ''PCBOARD.SYS'' and ''USERS.SYS'' | ''USERS.SYS'': SecLevel and ExpireDate | |
| | QuickBBS | ''DORINFO#.DEF'' and ''EXITINFO.BBS'' | ''EXITINFO.BBS'': Flags and SecLevel | |
| | Wildcat! 2.x | ''CALLINFO.BBS'' | | |
| | SpitFire | ''SFDOORS.DAT'' | | |
| | TriBBS | ''TRIBBS.SYS'' | | |
| | Solar Realms | ''DOORFILE.SR'' | | |
| | Synchronet | ''XTRN.DAT'' | ''MODUSER.DAT'': Credits, SecLevel, Flags, ExpireDate, MinuteCredits | |
| |
| === CIOXTRN === |
| Through the use of Deuce's ''CIOXTRN.EXE'' program (similar to the old 16-bit DOS DoorWay program), DOS and Windows-native console I/O programs not intended to run on a BBS can also be run on Synchronet for Windows. |
| |
| === Modules === |
| Although technically not //external programs//, Synchronet also supports the interpretation and execution of external [[:module:|modules]] written in [[util:Baja]] or [[custom:JavaScript]] (preferred), on all currently supported platforms. |
| |
| **Note:** |
| There is an active movement within the Synchronet development community to port or re-write old BBS door games and utilities in JavaScript so that they may be run natively on all Synchronet-supported platforms without any compiling or communications issues. In fact, the latest Synchronet Installer (for Windows) release includes no 16-bit DOS programs and very few native external programs, replacing the traditionally pre-configured DOS door games and external editors with newer, better games and editors written in JavaScript. |
===== Installation ===== | ===== Installation ===== |
| |
| |
Some doors may require the sysop to run some sort of //setup// or //initialization// program before the door can be used, so be sure to read the door's documentation files (e.g. ''readme.1st'', ''sysop.txt'', ''*.doc'', etc.) first. Remember that most door documentation was written in the 1990's (or earlier), so take some instructions (specifically those referring to FOSSIL drivers) with a grain of salt. | Some doors may require the sysop to run some sort of //setup// or //initialization// program before the door can be used, so be sure to read the door's documentation files (e.g. ''readme.1st'', ''sysop.txt'', ''*.doc'', etc.) first. Remember that most door documentation was written in the 1990's (or earlier), so take some instructions (specifically those referring to FOSSIL drivers) with a grain of salt. |
| |
| ==== Automated Install ==== |
| |
| If the door is included with Synchronet, or Synchronet already has a configuration for it (in xtrn/3rdp-install), you can use the install-xtrn.js script to install your door. |
| |
| Run ''[[dir:exec]]/jsexec install-xtrn.js'' |
| |
| For more information, see [[module:install-xtrn|Install Xtrn]] |
| |
| ==== Manual Install ==== |
| |
If the door you're installing is listed in the following [[#how-to_install_specific_doors|How-To Install pages]], that might be all the instructions you need. | If the door you're installing is listed in the following [[#how-to_install_specific_doors|How-To Install pages]], that might be all the instructions you need. |
| |
=== DOSXTRN.EXE === | === DOSXTRN.EXE === |
This 16-bit DOS component of the Synchronet FOSSIL driver for Windows (all flavors) is called ''DOSXTRN.EXE'' and it is located in the Synchronet ''[[dir:exec]]'' directory. This program [[:faq:win#win64|will not work]] with 64-bit versions of Windows since Microsoft does not include a DOS virtual machine (NTVDM) with those versions of Windows. | The 16-bit DOS component of the Synchronet FOSSIL driver for Windows (all flavors) is called ''DOSXTRN.EXE'' and it is located in the Synchronet ''[[dir:exec]]'' directory. This program [[:faq:win#win64|will not work]] with 64-bit versions of Windows since Microsoft does not include a DOS virtual machine (NTVDM) with those versions of Windows. |
| |
=== Windows 9x === | === Windows 9x === |
The kernel component of the Synchronet FOSSIL driver for Microsoft Windows 95-based operating systems is called ''sbbsexec.vxd'' and it is loaded when needed by Synchronet automatically. This FOSSIL driver is not actively maintained but has worked well for many sysops and their BBSes for many years. This FOSSIL driver implements the FOSSIL interface only (i.e. does not emulate a physical UART or COM port), so the doors must support and be configured to use FOSSIL interrupts for input and output. | The kernel component of the Synchronet FOSSIL driver for Microsoft Windows 95-based operating systems (**no longer supported**) is called ''sbbsexec.vxd'' and it is loaded when needed by Synchronet automatically. This FOSSIL driver is not actively maintained but has worked well for many sysops and their BBSes for many years. This FOSSIL driver implements the FOSSIL interface only (i.e. does not emulate a physical UART or COM port), so the doors must support and be configured to use FOSSIL interrupts for input and output. |
| |
=== Windows NT === | === Windows NT === |
The kernel component of the Synchronet FOSSIL driver for Microsoft Windows NT-based operating systems (this includes XP, Vista, and Windows 7) is called ''[[faq:win#sbbsexecdll|sbbsexec.dll]]'' and it is loaded when needed by Synchronet automatically. | The kernel component of the Synchronet FOSSIL driver for Microsoft Windows NT-based operating systems (this includes XP, Vista, and Windows 7/8/10) is called ''[[faq:win#sbbsexecdll|sbbsexec.dll]]'' and it is loaded when needed by Synchronet automatically. |
| |
This FOSSIL driver is also a //virtual UART// driver so that external DOS programs that require COM/UART access for input and output (i.e. do not support FOSSIL), can still be used on the BBS. When supported, doors should be configured to use a FOSSIL interface instead of COM/UART for input and output (for better performance and compatibility). | This FOSSIL driver is also a //virtual UART// driver so that external DOS programs that require COM/UART access for input and output (i.e. do not support FOSSIL), can still be used on the BBS. When supported, doors should be configured to use a FOSSIL interface instead of COM/UART for input and output (for better performance and compatibility). |
===== Configuration ===== | ===== Configuration ===== |
| |
Add the program in SCFG [[util:SCFG:external programs:Online Programs]] under ''%%Available Online Programs...%%'' in a new or existing Online Program Section. | Add the program in SCFG [[util:SCFG:external programs:Online Programs]] under ''%%Online Programs...%%'' in a new or existing Online Program Section. |
| |
The most critical [[util:SCFG]] configuration options for successful installation of an online program (door) are: | The most critical [[util:SCFG]] configuration options for successful installation of an online program (door) are: |
- [[#Start-up Directory]] | - [[#Start-up Directory]] |
- [[#Command Line]] | - [[#Command Line]] |
- [[#Intercept I/O]] | - [[#I/O Method]] |
- [[#Native Executable]] | - [[#Native Executable/Script]] |
- [[#BBS Drop File Type]] | - [[#BBS Drop File Type]] |
| |
| |
When executing an in-process Baja module (''.bin'' file), the ''Start-up Directory'' is not used. | When executing an in-process Baja module (''.bin'' file), the ''Start-up Directory'' is not used. |
| |
| When executing an in-process JavaScript module (''.js'' file), the ''Start-up Directory'' is searched for the script to execute and the string is also placed in the global JavaScript property/variable: ''startup_dir''. |
| |
==== Command Line ==== | ==== Command Line ==== |
The most commonly used [[config:cmdline#Specifiers]] for use with external program command-lines are: | The most commonly used [[config:cmdline#Specifiers]] for use with external program command-lines are: |
| |
^Specifier ^Description ^ | ^Specifier ^Description ^ |
|''%f'' |Path to the drop file created by the BBS for this external program execution (e.g. ''C:\SBBS\NODE1\DOOR.SYS'')| | | ''%f'' |Path to the drop file created by the BBS for this external program execution (e.g. ''C:\SBBS\NODE1\DOOR.SYS'')| |
|''%n'' |Path to the current node directory (e.g. ''C:\SBBS\NODE1\'')| | | ''%s'' |Path to the program's startup directory, if specified (e.g. ''../xtrn/mygame/'') | |
|''%#'' |Current node number (1-255)| | | ''%n'' |Path to the current node directory (e.g. ''C:\SBBS\NODE1\'')| |
|''%h'' |Current socket descriptor | | | ''%#'' |Current node number (1-255)| |
|''%t'' |User's time remaining/available, in seconds (e.g. ''60'')| | | ''%h'' |Current socket descriptor | |
|''%.'' |Expands to ''.exe'' on Windows, nothing on other operating systems. Useful when hosting BBS nodes on multiple OSes with the same configuration files.| | | ''%t'' |User's time remaining/available, in seconds (e.g. ''60'')| |
| | ''%.'' |Expands to ''.exe'' on Windows, nothing on other operating systems. Useful when hosting BBS nodes on multiple OSes with the same configuration files.| |
| |
=== Modules === | === Modules === |
The ''Clean-up Command Line'' may contain Command Line [[config:cmdline#Specifiers]]. | The ''Clean-up Command Line'' may contain Command Line [[config:cmdline#Specifiers]]. |
| |
The [[#Native]], [[#Intercept I/O]], and [[#Use Shell To Execute]] options affect the execution of the ''Clean-up Command Line'' (if non-blank). | The [[#Native]], [[#I/O Method]], and [[#Use Shell or New Context]] options affect the execution of the ''Clean-up Command Line'' (if non-blank). |
| |
Most external programs do not require a ''Clean-up Command Line'' to be specified. | Most external programs do not require a ''Clean-up Command Line'' to be specified. |
Note: for multiple-user programs, it is highly recommended that the BBS drop file be created in the ''[[dir:node]]'' directory. | Note: for multiple-user programs, it is highly recommended that the BBS drop file be created in the ''[[dir:node]]'' directory. |
| |
==== Intercept I/O ==== | ==== I/O Method ==== |
| |
If this program requires the BBS to intercept standard console input and output operations, then this option should be set to ''Standard''. | |
| |
* Most BBS doors will require this option be set to ''No''. | If the program requires the BBS to intercept standard console input and output operations, then this option should be set to ''Standard''. |
* BBS Doors that use FOSSIL I/O must have this option set to ''No''. | |
* BBS Doors that use COM/UART I/O must have this option set to ''No''. | |
* BBS Doors that use Socket I/O must have this option set to ''No''. | |
| |
When executing an in-process module (Baja or JavaScript), the ''Intercept I/O'' option is not used. | * Most 16-bit (DOS) BBS doors will require this option be set to ''FOSSIL or UART'' (only available for 16-bit DOS programs). |
| * Most //native// (Win32 or *nix) BBS doors will require this option be set to ''Socket'' (only available for native programs). |
| * When executing an in-process module (Baja or JavaScript), the ''I/O Method'' option is not applicable. |
| |
==== Native Executable ==== | ==== Native Executable/Script ==== |
| |
If this program is native to the host operating system (e.g is **not** a 16-bit DOS program), then this option should be set to ''Yes''. | If this program is native to the host operating system (e.g is **not** a 16-bit DOS program), then this option should be set to ''Yes''. |
* BBS Doors that use Socket I/O are native (32-bit or 64-bit) programs and must have this option set to ''Yes''. | * BBS Doors that use Socket I/O are native (32-bit or 64-bit) programs and must have this option set to ''Yes''. |
| |
When executing an in-process module (Baja or JavaScript), the ''Native Executable'' option is not used (all modules are native). | When executing an in-process module (Baja or JavaScript), the ''Native Executable/Script'' option is not used (all //modules// are native). |
| |
==== Use Shell to Execute ==== | ==== Use Shell or New Context ==== |
| |
If this program requires a command shell (e.g. it's a *nix shell script, ''.sh'' file, or Windows ''.bat'' or ''.cmd'' file), then this option should be set to ''Yes''. | If this program requires an OS command shell (e.g. it's a *nix shell script, ''.sh'' file, or Windows ''.bat'' or ''.cmd'' file), then this option should be set to ''Yes''. |
| |
When executing an in-process module (Baja or JavaScript), this option is not used. | When executing a JavaScript module, enabling this option forces a new JS engine context (i.e. sandbox) to be created and used to execute the script. |
| |
==== Modify User Data ==== | ==== Modify User Data ==== |
* File Uploaded | * File Uploaded |
* File Downloaded | * File Downloaded |
| * Local/Sysop Chat |
| |
If an event is selected, you may also specify that the program may be executed **only** on that event and not purposely selected by the user from a menu for manual execution. | If an event is selected, you may also specify that the program may be executed **only** on that event and not purposely selected by the user from a menu for manual execution. |
| |
===== How-To Install Specific Doors ===== | ===== How-To Install Specific Doors ===== |
| Note: When using Linux with dosemu, specify full filename with extension under the Command Line option in the [[util:scfg]] External Programs settings, more specifically when using batch (.bat) files. For example LORD2 would be "lord2.bat %#" and not "lord2 %#" which is mentioned on the [[howto:dosemu|Use DOS Doors with Synchronet on Linux]] page. |
| |
{{indexmenu>.|tsort}} | {{indexmenu>.|tsort}} |
* [[:howto:doscmd]] | * [[:howto:doscmd]] |
* [[:howto:|How-To Pages]] | * [[:howto:|How-To Pages]] |
| * [[:howto:cioxtrn]] |
| * [[https://www.youtube.com/channel/UCcHJZZmXcXRtJjqCr9_W4eA|Door Game Review Videos]] |
| * [[https://if50.substack.com/p/1991-trade-wars-2002|Trade Wars 2002]] |
| |
{{tag>door fossil uart}} | {{tag>door fossil uart}} |
| |