How to connect to BBS’s from Linux or Mac

BBS, Ubuntu No Comments »

If you are like me, you might have wanted to dive back into the wonderful world of BBS’s but have come up short on walk through’s or posts. Most discussions simply point to another URL that is sort of like your question but not exactly. Only to have the answer point you to another URL and another and before you know it you have jumped down too many rabbit holes and crashed Chrome.

Too many rabbit holes huh?

Too many rabbit holes huh?

Here is a quick rundown on tools to connect to a BBS or diagnose if the owner has yanked his board yet again or if the issue is not knowing how to connect.

First of all we need an IP address for the board. Most boards listed will have a Domain Name. However most boards are run on home connections which may not be static. Recently the popular Dyn DNS service chose to stop offering free accounts. Which means a few BBS’s may have been knocked offline. So before beginning it might be useful to run down the IP first. If you can’t get the IP you may have to dig to see if the name changed or they simply gave up. I use PING to find the IP of systems I want to call.

ping 64vintageremixbbs.dyndns.org -c 1

We are only sending 1 packet as we just want to see the IP. There are other ways to look up the IP but getting to know PING is a good idea. In this case the server at 64vintageremixbbs.dyndns.org won’t return a ping packet. That’s perfectly normal. It doesn’t mean his BBS is offline. It just means that the server either isn’t responding to pings or a firewall has blocked that port. The only real way is to try to connect.

Let’s first try to connect directly from the terminal window. Mac/Linux/Windows can all use Telnet.

telnet 64vintageremixbbs.dyndns.org 6400

We are giving telnet the domain name (you can also put in the IP directly here) and telling it to connect on port 6400. Most BBS’s are hosted on an empty port. Commodore 64 BBS’s frequently use port 6400. So if the BBS you are trying to connect to doesn’t list a port, try 6400. Once you are connected, your terminal will tell you what the ‘Escape character’ is. In my case it was ‘^]’. Which, not being familiar with these commands meant Control Key and ]. That gets me into the place where I can issue command like quit to close and exit or close to just close and stay in telnet.

One thing to remember with telnet is that the implementations I have run across all default to ‘Line Mode’. What this means is that they don’t send anything until you hit the Enter key. Old school BBS’s used ‘Character Mode’ meaning they sent any keypress as soon as it was typed. So if the BBS you are calling is behaving weird or not responding they likely are expecting Character mode. Type your control keys and at the telnet prompt change modes with mode character I ran into that while trying to write a Telnet server to act like a Color64 BBS. Commodore BBS’s were not intended to run on the Internet and don’t issue any commands or detect modes.

If the BBS you are trying to reach is on or compatible with Commodore 64 I would recommend using a terminal program. The best native terminal program I have found is CGTERM. It appears to have been abandoned as the Mac binary doesn’t seem to run with OS X 10.7 and above and I wasn’t able to find enough information to compile it. If someone has compiled it I would be happy to put it on my blog as I love using this on Linux. I haven’t used actual Commodore hardware to connect to a BBS over the Internet but I have used software in Vice to connect. But that’s a post for a different day. Let me know if you have any questions. I want as many users back on BBS’s as I can!

UPDATE (1-22-2015): I was able to compile CGTerm to run on a Mac in OS X 10.9 or greater. See my post here for more details and the download.

Apache 2.22 Websocket Proxying on Ubuntu with mod_proxy_wstunnel

Apache, BBS, Server, Ubuntu No Comments »

OK, so I am going to go geeky and deep on this one. But as part of my Color64 BBS project I needed to use a WebSocket proxy tunnel to the Color64 BBS software. It turns out Ubuntu isn’t up to the newest version of Apache. A little Googling and I came across this post.

The only problem is that it’s on someone else’s blog, which means I might forget where I found it should my server crash. 🙂 And the code for the exact steps need to be altered. So here goes with the modified steps for Apache 2.22:

# Check apache version (should be 2.2.22 as of writing, if not adjust the next step to the right version)
dpkg -s apache2

# Checkout apache source
svn checkout http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.22/ httpd-2.2.22

# Get patch and apply it
wget http://cafarelli.fr/gentoo/apache-2.2.24-wstunnel.patch
cd httpd-2.2.22
patch -p1 < ../apache-2.2.24-wstunnel.patch

# Build Apache 
svn co http://svn.apache.org/repos/asf/apr/apr/branches/1.4.x srclib/apr
svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/1.3.x srclib/apr-util
./buildconf
./configure --enable-proxy=shared --enable-proxy_wstunnel=shared
make

# Copy the module and recompiled mod_proxy (for new symbols) to the ubuntu apache installation and update the permissions to match the other modules
sudo cp modules/proxy/.libs/mod_proxy{_wstunnel,}.so /usr/lib/apache2/modules/
sudo chmod 644 /usr/lib/apache2/modules/mod_proxy{_wstunnel,}.so
echo -e "# Depends: proxy\nLoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so" | sudo tee -a /etc/apache2/mods-available/proxy_wstunnel.load

# Enable the module (also make any configuration changes you need)
sudo a2enmod proxy_wstunnel
sudo service apache2 restart

Edit: Ubuntu may have upgraded Apache to allow for WebSocket Proxies. So I am simply posting this as a reference at this point until I update and confirm that these steps aren’t needed.

Color64 BBS in Vice 2.4

BBS, Color 64, Commodore 64, Ubuntu 16 Comments »

Finally! I have been searching, and searching, and searching for a way to put an instance of the Color64 BBS online for some time now. My goal really was to be able to play Nuke Em again. Unfortunately after scouring the Internet I haven’t been able to find any mods for Color64. The only mods I have been able to find were for Image BBS. As I was never an Image BBS Sysop, they only interest me as to make a conversion of the game play.

Not finding any original mods didn’t dampen my desire to run a Color64 BBS again. Several people are doing that but they are either using a real Commodore 64 or a few of them are running them on an emulator hosted in Windows on winVICE. After trying to learn servers and web programming on the Windows environment years ago I gave up when I wasn’t able to pay Microsoft thousands of dollars or rent space on a web server that had enough permissions to actually learn something. I moved over to a Mac. Even Apple wanted to charge a premium for their web server though. Even if it wasn’t the thousands Microsoft wanted it was still too much considering Apple now wants you to upgrade every year and charge you for upgrading the web server software.

Enter Linux. Since most of the world is running on Linux with other part running Microsoft I figured I would give that a try. And I was very impressed with the capabilities. No longer did I need an expensive license to learn and host a website. Or to remotely manage my system at home. I could even run a trusty Commodore again.

But I digress. The moral of the story is that I found out how to get Color64 working VICE 2.4 with Ubuntu 12.04.4 Linux. The hack I put into place should work with winVICE on Windows as well as Mac. I haven’t tested on these platforms so don’t quote me. The hack involves replacing one file in the VICE source code and compiling.

Steps to running Color64:

  1. Download tcpser. Tcpser serves as the bridge between VICE and the Internet. Once again, thank you Jim Brain for such a wonderful piece of software.
    sudo apt-get install tcpser
  2. Next download the VICE source code. I used version 2.4 but with some modifications I am sure newer or older versions will work.
    http://sourceforge.net/projects/vice-emu/files/releases/vice-2.4.tar.gz/download
  3. Expand the tarball to your Desktop or other directory.
    tar xf vice-2.4.tar.gz
  4. Replace the rs232.c file in src/rs232drv/ with this modified version. I have commented out the one changed line and commented the inserted two functions and one variable. The changes were found from modified files at gcns.com.
  5. Now when in the root of the VICE folder, Configure, Make, and install the VICE source code.
    ./configure
    
    make
    
    sudo make install

    Should you make any mistake or if you need to start over, you can uninstall by going to the same root of the folder in VICE and uninstalling VICE.

    sudo make uninstall

    There is another nice tutorial at the Ubuntu Forums that has helped in figuring out how to compile and install VICE.

    • When compiling on x86 I had no problems. When compiling on an x64 system I had to make a link in order for VICE to find the kernal. I am sure there is a configure option needed I just didn’t find it when I made this post. Until then if VICE complains that it can’t find the kernal use this command.
      ln -s /usr/local/lib64/vice/ /usr/local/lib/vice
  6. Assuming the build and install process went well, we now need to invoke tcpser. Tcpser will act as the modem taking calls from the internet and putting them on the rs232 port in VICE. Open a terminal and invoke it with this command.
    tcpser -v 25232 -p 6400 -tSs  -l 7  -i "k0" -s 1200

    If you would like a little more information about tcpser and how this works with VICE, see this post.

  7. Now we need to setup VICE to communicate with tcpser. I like to run VICE from a command window so I can watch the output and any errors that might come up. Either way we need to make the following changes to settings under the RS232 settings menu:
    • Turn on “Userport RS232 emulation”
    • Select “1200 baud” under “Userport RS232 baud rate”. (This can be changed in the middle of a session without a rest. Just remember that the speed tcpser reports can’t.)
    • Under “Userport RS232 device” select “Exec process”.
    • Under “Program name to exec…” type | nc localhost 25232 (Be sure to include the pipe “|” char at the begining. This command will send all input and output normally being sent to/from the VICE userport to “localhost” (if you have issues you can use the IP of the machine tcpser is running on. Normally localhost is an alias for 127.0.0.1) on port 25232. This is the IP and port of tcpser, our “virtual modem” interface.
  8. Once we have VICE and tcpser setup we need to attach the BBS software to drive 8 and run setup. Make sure to uncheck “True drive emulation” under the “Drive settings” menu. That will speed up operation of the board a ton. You can get a copy of the Color64 disks here. All of the documentation I have read states that the author (Greg Pfountz) has released  the software into the public domain. Thank you Greg. It’s refreshing to see a copyright holder allow us to keep the software alive. The best way I know of to avoid the dreaded disk swap is to take all of the software on the D64 disks and put them in one D81. Right now the best way I know of is to use Style’s DirMaster. It only works on Windows. Hopefully in a little bit I will be able to update this to add an online tool I am working on that will let you do that and more. It will really be helpful for Sysops.
  9. Next we need to run the setup. I suggest if you haven’t run Color64 before, or if you are like me and haven’t run it since before my kids were born, that you read the manual. The best manual I was able to find was here.
  10. I won’t go into the settings much in this post, maybe in another post I will detail them. But for now the important changes are to these settings:
    • ‘Normal or Inverted hook’ = n
    • ‘User bit 32 = High Speed’ = y
    • ‘Use ‘AT’ modem commands’ = n (Very important. It appears that without this the BBS will always try to start at 300 baud. We want to run at 1200 baud. Either way, the BBS uses AT commands.)
  11. Once setup is run it’s time to start it up. Settings will automatically load the board if you allow it. Once it’s setup we need to make a few ‘adjustments’ before it will accept calls hands free.
    • First we need to use a terminal to connect. See this post for more information on connecting from Telnet or CGTerm.
    • Watch the connection as you connect. You will see a screen like this. Bad Connection
    • The garbage above Last Caller indicates the speed isn’t right. Switch the Userport RS232 baud rate to 300, you should see a ring message where the garbage was. Then you should see a ‘connect 1200’ message and your terminal will show junk. Now you change the Userport RS232 baud rate back to 1200 and you should be good to go.
    • If it still won’t connect at 300 or you didn’t start the BBS with 1200 you should reset everything. Close and reload tcpser. Then do a hard reset on VICE and load the BBS again.
  12. The final step is to forward the 6400 (or whatever port you set -p to in step 6.) port on your router to the computer running tcpser.

Now tell the world that yet another Commodore BBS rises from the grave! You can start by going to Commodore BBS Listings or post an announcement on the Lemon64 forums. And by all means, please let me know to!!!

Explaining Tcpser for VICE

Ubuntu 5 Comments »

Recently I decided that I wanted to run another Color64 BBS. I don’t have any of my Commodore hardware nor do I have room in the junk room my wife calls my “office”. So I went looking for a way to emulate it. I needed to use what I had around me. Which in this case was a machine I had running Vista that was flaky. So I put Linux on it. Low and behold, the issues I had with Windows disappeared. That and suddenly I had access to software that wasn’t easy to setup in Windows.

People kept telling me that others had run a BBS in emulators but I wasn’t able to find hardly any information on how to do it. The only information I found was how to hook a real C64 up to a PC or how to use a hacked version of VICE on Windows machines. Both ways referred to using a program called “tcpser” with some commands you had to go on blind faith that they would work. They didn’t explain those commands. Tcpser on Linux has a man page, but there are still mysteries on how to use it properly with an emulator. So let me explain what I have found out.

This information should work for all versions of tcpser. My examples will be with Ubuntu 12.04 distribution of Linux. First we need to download it. Ubuntu bundles everything we need for it. Just use sudo apt-get install tcpser

Next we run the command in a terminal window. The window has to stay open the whole time the BBS is running. Unless you detach the process with something like tmux. But that’s something for a different day. 🙂

tcpser -v 25232 -p 6400 -tSs  -l 7  -i "k0" -s 1200 -N "/tmp/noanswer.txt" -B "/tmp/busy.txt"

Let me explain what this command is doing. It doesn’t seem to be documented well enough for a newbie to understand it well. 🙂

  • -v 25232   This is the port tcpser will present a virtual modem to VICE on. In this case we chose 25232. This can be any port as long as it is free.
  • -p 6400   Tells tcpser what port to listen for incoming “calls” on. In this case we chose 6400. Once again, it can be any open port that other services aren’t using. This is the port the caller will be connecting to.
  • -tSs  Activates the S & s Trace flags. This is entirely optional. The ‘S’ is to put modem output to stdout. The ‘s’ sends modem input to stdout.
  • -l 7 This is the logging level. In this case we chose the most verbose of 7 just to see how it works. You can also choose 0 which is the default of no logging, or 1 which only shows fatal errors. Those three levels were the only I could find in the documentation.
  • -i “k0”  This is the initialization string. It takes most of the commands in the Hayes ‘AT’ command set. In this case we are only setting flow control to none. If the BBS software doesn’t know how to answer an incomming call (I don’t know why it wouldn’t. But you never know right. 🙂 ) you could also put “s0=1” to answer on the first ring.
  • -s 1200  This will report the incoming call as 1200 baud all of the time. Make sure VICE is set to that baud rate. If not you will get Frame Errors and probably be frustrated as to why this doesn’t work.
  • -N “/tmp/noanswer.txt”  This command points to a text file that will be sent to the caller if the software on the receiving port fails to issue the ata command. Make sure tcpser has permissions to read this file. I chose /tmp/ as everyone should have access to that folder. You might want to chose /etc or /var though.
  • -B “/tmp/busy.txt”  Points to a text file to be sent if the server is already taking a call. This way someone trying to access your board knows at least that you are up and haven’t crashed or abandoned your hobby. The same permissions and folder warnings apply for this as the -N command above.

Armed with this information you should be able to set up your “modem” to either call other BBS’s or setup your own BBS. If you discover my settings to be wrong or have new insight I overlooked please add it to the comments or send me an email. It took some time for me to figure out how to use tcpser correctly, hopefully this will save someone just a little time.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in