I continue to enjoy seeing what can be done with WSL (Windows Subsystem for Linux) but even more fun is combining CMD.exe (the Windows console), Ubuntu on Windows (WSL), and DOSBox (an x86 emulator that lets you run OLD programs in original DOS that no longer run natively on Windows). What kind of cool stuff can I do today?
I did a lightning talk this week at NDC London where I started with a text file that included a CR/LF, Git autocrlf, then talked about typewriters, what a Carriage really is, then the Teletype Model 33, the Altair 8800, the ASCII chart, then ANSI art, and finally moved on to BBS’s and BBS Door Games. I’ll do a more extensive post later and I’m going to turn this into a full conference talk, but for the demo I ran a few BBS Door Games under Windows 10. Why? Because it’s awesome and history is lovely.
You can try setting up what I’m going to describe in this post, or you can try telnet’ing to a BBS like the CaveBBS here: telnet://cavebbs.homeip.net. You might also want to telnet://towel.blinkenlights.nl for ASCII-based Star Wars! Originally we would call (like literally dial-up one to one) a BBS but ubiquitous internet added telnet as a nice option that persists today. Door Games were ASCII/ANSI games that the BBS would shell out to, passing the connection over. When the game extended, the BBS picked up the phone and kept the connection. TradeWars is/was the most well-known Door Game and we’d play it for months. TradeWars was the Elite Dangerous of the BBS set. 😉
So the question is, could we play DOS-based 16-bit Door Games today? Yes.
GameSrv can be used to bring your old DOS based BBS server into the new millennium. It’ll act as a front-end and accept telnet connections before passing them off to the DOS BBS software.
Rick Parrish has a BBS door game server for Windows and Linux that he’s written in open source C# called GameSrv. You may know Rick from his fTelnet browser based app. fTelnet lets you connect to Bulletin Board Systems from the comfort of your browser. A locally-run cross-platform option for connecting to BBS’s is SyncTERM.
Go get SyncTerm, Rick’s GameSrv Full, as well as DOSBox 0.73. You’ll be able to telnet into your BBS with Ubuntu’s (Bash on Windows/WSL) built in Telnet but you may run into issues with local echo (you’ll want to Ctrl-] then type “mode char”) as well as some missing extended ASCII characters that BBS’s loved to draw menus with. While WSL’s ANSI support is good, these missing characters cause hiccups. SyncTerm is totally custom with a whole host of Bitmapped fonts and a lot of custom work around extended control sequences. You should also try out EtherTerm, Qodem and NetRunner as other cool BBS-friendly terminal options.
NOTE: One of the major challenges of the conhost (console host – the thing that paints the console window and hosts and paints text and handles keyboard input for bash/cmd/powershell) is that while there’s lots of great console fonts, those fonts don’t often include some of the obscure extended ASCII DOS characters that BBS’s used to draw their menus. In order to find and render those glyphs, consoles will use “font fallback” and follow a tree of fonts, looking for the best glyph. As I understand it (I could be wrong) the current conhost – lovely as it is – doesn’t yet support this. I think it should in order to be a complete and effective solution for telnet/ssh/etc.
Run GameSrvConsole and it will listen on localhost by default. You could setup a VM in Azure and run it there to make your BBS and Door Games available to the public if you’d like! Then, either “telnet localhost” or run “syncterm localhost” to access your BBS. You can “ALT-ENTER” to put Sync Term full screen, which is awesome.
Once you sign up for your BBS with a new account, you can try out the Door Games menu. Selecting a Door Game will cause GameSrc to launch DOSBox and run the Door, while brokering the output back to your telnet client.
I’m heartened to see 20 year old BBS Door Games come to live on Windows 10. I’m going to see if my 10 and 12 year olds get a kick out of some of these adventure games.
Finally, and slightly related, try “curl wttr.in/portland” in a large WSL (Linux) console. Lovely. I love stuff like this. Perhaps I’m easily impressed, or I just miss ASCII art.
Sponsor: Get the latest JetBrains Rider for debugging third-party .NET code, Smart Step Into, more debugger improvements, C# Interactive, new project wizard, and formatting code in columns.