Frequently Asked Questions
The MajorBBS Emulation Project
What is The MajorBBS / Worldgroup?
The MajorBBS (later renamed to Worldgroup) is Bulletin Board Software originally written by Tim Stryker and first released in 1986 for DOS by Galacticomm Inc. Originally the software
was written as a demonstration of the Galacticomm Software Breakthrough Library (GSBL), which was a library written entirely in x86 Assembly which allowed many simultaneous serial connections
to be managed by a single software instance without the need for a 3rd Party Multi-Tasker such as Windows.
It was the ability to handle multiple phone lines which made The MajorBBS so revolutionary and why it's remembered so fondly today. For many individuals, systems running The MajorBBS (or Worldgroup) were their first experiences interacting with other people, real-time, over a digital medium. The MajorBBS made software such as Chat Rooms and Multi-User Text Dungeons (MUDs) household names.
Why does The MajorBBS or Worldgroup need a dedicated Emulator?
While The MajorBBS was powerful software at the time, it is showing its age at over 30 years old. DOS versions of The MajorBBS and Worldgroup were compiled using a 16-bit version of Borland C++ (with the exception of WG3 for DOS, which is 32-bit -- and broke everything). These versions require DOS or an early version of Windows to run properly. Additionally, micro-optimizations at the x86 Assembly level cause issues for psudo-emulated DOS environments (such as DOSBox), so the only option is to run the software in a full virtual machine using VMWare or VirtualBox. Once you have the software installed, you have to configure not only the environment but MajorBBS/Worldgroup to work with TCP/IP to enable telnet connectivity. There are steps beyond this - but the goal here was to explain why MBBSEmu was created: to eliminate these requirements, and easily unlock access to all this great software without the need of MajorBBS and Worldgroup.
Why not just build off Worldgroup 3.30 for Windows?
Worldgroup 3.x for Windows NT is a 32-bit application built for 32-bit Windows. This specific version of Worldgroup, while the most "recent", was also the last version to come towards the end of the BBS era. Most modules people remember and love
were from the DOS versions of MajorBBS 6.25 through Worldgroup 2.0. While some modules were ported/upgraded to work with this new 32-bit version of Worldgroup (MajorMUD, T-LORD, Tradewars 2002), Worldgroup 3.x didn't have the same level
of support from ISV's because by the time of its release the Internet was also taking over.
Additionally, if an effort was undertaken to upgrade Worldgroup 3.x to modern 64-bit operating systems, it would no longer be compatible with existing Modules as they're compiled to 32-bit. Because of technical differences, 32-bit DLLs are unable to be called by a 64-bit process and vice versa. Along with a reliance on a 32-bit host process, these Modules also rely upon 32-bit calls to the Windows Kernel. The only way an updated version of Worldgroup 3.x to a modern operating system/platform would be of any value was also if all the available modules were also recompiled from source and upgraded as well.
Because of these and other technical limitations, the only viable method to continue enjoying the MajorBBS and Worldgroup modules we love and remember is through full emulation of the Modules in their current, 16-bit/32-bit form.
How does MBBSEmu work?
MBBSEmu is an emulator inside an emulator. First, the Module itself (16-bit NE Windows 3.0 Format DLL File) is disassembled and decoded. Then the disassembled x86 is executed on an emulated Intel 16-bit 80286 processor, with external calls to MajorBBS and Worldgroup APIs
being routed to the second layer of the emulator, which emulates the host software. APIs for both The MajorBBS and Worldgroup (over 1300+!) need to be emulated as well as those APIs included in the Galacticomm Software Breakthrough Library. This is where the lions share of
work lies. The diagram on the left visualizes how the x86 Code and The MajorBBS Emulator components interact with one another.
As more APIs and Opcodes are implemented, and additional x86 Opcodes supported, more modules will be functional within MBBSEmu. So check back frequently for updates!
Does MBBSEmu support Btrieve?
Yes! While it took several months over the beginning of the project, MBBSEmu now has a very robust Btrieve engine that is able to not only extract information from the original Btrieve .DAT files included with MajorBBS & Worldgroup modules, but also has full support for the Btrieve API. This means modules that made extensive use of Btrieve will eventually be fully supported
within MBBSEmu as additional functionality is continually added.
MBBSEmu supports Btrieve by converting the original .DAT files to a more friendly JSON format using the .EMU extension. This means a PLAYERS.DAT file will be converted to a PLAYERS.EMU file the first time the file is opened, and the .EMU file will be used from thereafter. This leaves original Btrieve files copied in from backups or from other sources in their original state without having to worry about maintaining backwards compatibility. Additionally, because MBBSEmu stores the Btrieve data in an easily accessed JSON format, it's even easier now for Sysops and players to access and modify the information without having to rely on decades old tools or being Btrieve Wizards themselves! 🧙
What technology does MBBSEmu utilize?
MBBSEmu is written in C# using .Net Core. This allows MBBSEmu to be cross-platform and support multiple operating systems such as Windows and Linux, as well as multiple hardware platforms such as x86-64 and ARM. This means you'll be able to host your favorite MajorBBS or Worldgroup modules on even a Raspberry Pi!
Is MBBSEmu Open Source?
Yes! MBBSEmu is Open Source and on GitHub for the entire community to help grow! You can check us out on GitHub!
Why does The MajorBBS Emulation Project need financial support?
Unfortunately, the tools required for such a project are not cheap to come by. The professional Disassembler we use (IDA) is $400 annually for a license alone! While time we're willing to contribute, there is a not insignificant financial burden taking on such a project. Our hope is that others in the BBS Community are as passionate about this project as we are and are willing to help out.
When will Module XYZ be supported?
In time. As more APIs are added to MBBSEmu and additional x86 Opcodes are supported, more and more Modules will be able to run. Through our Modules section, we give as much detail as to the level of support for the given Module and if it's officially supported. Once official support has been confirmed, we'll update the status on the Module page. If you'd like to help get your favorite module supported, run it in MBBSEmu and file an Issue over on GitHub.