Explaining Tcpser for VICE

Ubuntu Add 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.

5 Responses to “Explaining Tcpser for VICE”

  1. slygon Says:

    This is FANTASTIC! I have been looking for something to explain TCPSER a bit… this is a great start! I too am looking to setup a new Commodore BBS… I am one of the old C-Net/IMAGE BBS people… while there is some info about how to do it floating around, none of it is very pretty… this is perfect!



  2. jnichols Says:

    Thank you for the compliments. I had been looking for info on using Linux and everyone said the information was “out there” but never provided any links. In fact others had put up a BBS using Linux, but none seemed willing to chat about it. So since I posted this so I wouldn’t loose or forget the research I had done. I have never run anything other then Color64 and some free software from Q-Link that never seemed to work as well as Color64 did. But if you need help putting those online or just want to share the new number where we can reach a new board please let me know.

  3. slygon Says:

    I may hit you up as I start messing with Linux a bit more. I haven’t used Linux in a few years, and I never was an expert…. I tried your directions last night and managed to get stuck on trying to compile the VICE emulator… but I may have just screwed something up… downloading and setting up TCPSER per your directions went flawlessly.

    I agree on the information being “out there” too! I have done a lot of digging, and even e-mailed some of the people that have built the tools, and made things happen. I do get replies, and most people are very nice, but I don’t like bugging people, and a good, concise set of directions, especially with any explanation of what is happening just does not seem to exist. As more of us try to preserve the past, this type of info is critical, and your blog here is perfect!

    As for Color64, I believe I ran it for a short time as I was testing BBS Programs. In fact I found my copy last week as I was digging through my old floppy disks. Most of my friends were all moving to some flavor of C-Net at the time, so I made the switch then too, but I remember liking Color64!

    Thanks again!

  4. bubblesdee Says:


    I am new to Linux and I want to connect to a commodore 64 BBS. I have Linux lite 2.4 installed on an old laptop. I am running Vice for Linux (I also have Wine installed and have a copy of winvice on the machine as well.) I have a terminal program for the C64 emulator. I have been trying to get this to work but I cannot and I am getting a little frustrated.

    Here is what I have done so far;

    I installed TCPSER with
    sudo apt-get install tcpser

    Also made sure NETCAT was installed with
    sudo apt-get install netcat
    (I read somewhere that I need this)

    I then did this from a command window in linux
    nc 25232. I read that I had to initialize Netcat like this.

    Question 1: Why is the IP address should it not be the IP assigned to my Linux box by my internet router?

    Then I did this from a command window in linux
    tcpser -v 25232 -s 1200 -p 6400
    Question 2: I must leave this command window open while trying to connect. Is this correct?

    Then I opened Vice (Linux version)
    in settings under the RS232 settings menu: ◦Turn on “Userport RS232 emulation

    under “Userport RS232 baud rate set baud to 1200
    Under “Userport RS232 device” select “Exec process”.
    ◦Under “Program name to exec…” type | nc localhost 25232

    Question 3 : should I change localhost to the IP address assigned to my Linux box?

    I then saved my settings in Vice, closed vice and restarted it.

    I then opened my Terminal software (CCGMS 5.5) with vice and tried to dial a BBS IP address
    Question 4: should I try using striketerm instead?

    When I dial the BBS IP address, It just says no carrier
    The command window where I did the tcpser -v 25232 -s 1200 -p 6400 command doesn’t show anything, it doesn’t tell me that it is trying to connect.

    I can’t figure out what I am doing wrong.

    Can someone please help. I am going crazy here.

    Is it because the BBS I am dialing is not working.
    Do you have the IP of a known working BBS?

    Please help

    Thanks in advance

  5. jnichols Says:

    Sorry it has taken so long to respond. I want to make sure I am getting this right.

    In response to question 1, there is no need to use NC from Linux. You need to use NC in Vice under the “Program to Execute line.” (See for more information on using the NC command in that context.) When you follow those directions, you are putting all input and output bound for the Userport in Vice to your local machine (Hence the 127.0.01) on port 25232. From there you need something to pick up the packets from that port and move them to the destination. When you use both NC AND TCPSER like that you cause issues with where the packet is coming and going. In essence take out your first step of initializing NC in a window. All of the rest of the steps appear good.

    As for testing a BBS out just use Telnet. telnet BBS_IP BBS_PORT. Then you can close by using Ctrl-] and type close. For example the BBS I like to call is 64 Vintage Remix BBS. You should be able to use their name in the terminal with AT 64vintageremixbbs.dyndns.org (Not sure how he managed to keep that but kudos to him. I had to ditch dyndns when they chucked free accounts. I wasn’t even sure what I was getting by paying what seemed a high monthly fee to just point to my home server.) Or you can get their current IP by: ping 64vintageremixbbs.dyndns.org and using that IP with the AT command.

    To telnet to them you would telnet 64vintageremixbbs.dyndns.org 6400

Leave a Reply

You must be logged in to post a comment.

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