Color64 BBS in Vice 2.4

BBS, Color 64, Commodore 64, Ubuntu Add 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.
  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
  5. Now when in the root of the VICE folder, Configure, Make, and install the VICE source code.
    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 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!!!

16 Responses to “Color64 BBS in Vice 2.4”

  1. Racer Says:

    First of all, this would be awesome if I can get it to work.

    Maybe I am missing something but here is a question I have

    In your instructions it says: Replace the rs232.c file in src/rs232drv/ this modified version.

    The problem I see is that you are linking to the rsucer.c file not a rs232.c file Is this correct?

  2. Racer Says:

    Nevermind. Had a brain fade. I guess it is time for sleep. Lol

  3. jnichols Says:

    Sorry to take so long to respond to this Racer. Still kind of learning about this stuff. I posted this as I was making the changes. With Ubuntu prompting me upgrade on my test machine and having issues with it rebooting I haven’t had the time to walk through my steps again. If I mislabeled those files please let me know. Were you able to get Color64 going? If so let me know the address and I will post it. I would love to see a resurgence of Color64 BBS’s and games running again. But if you are into other C64 BBS’s it’s all good either way. 🙂

  4. Racer Says:

    Your steps are fine. I just wasn’t reading it correctly.

    I really didn’t do it to get Color64 running, I wanted to see if it interfaced with TCPSER correctly and you are close but not quite perfect.

    The carrier detect now seems to work in Vice 2.4. The problem is with trying to do a file transfer. It gives constant errors. Here is my theory on what is happening and I hope this makes sense to you.

    I think TCPSER sends something like a $FF control character to determine the status of carrier, etc. What I think is happening is that the control character TCPSER is sending is actually getting passed through Vice and sent out over the RS232. Generally viewing text like on a BBS this is just going to be ignored from the terminal program but in the file transfer it is being added into the checksum calculations and thus making it invalid and giving transfer errors.

    Unfortunately, that is about as far as my knowledge goes or I could probably help out more. If you or someone could ever get a newer version of Vice working with file transfers you would be my hero!

    I’d love to run a BBS again, but I don’t want to do it on real hardware. The patched version of Vice 1.19 works but that version is very outdated right now.

    If there is anything I can do to help, please feel free to contact me.

  5. jnichols Says:

    That’s interesting. You are correct about it sending $FF. I noticed there were occasional errors in using 2400 baud as well. I guess maybe I need to go back to the code and find a way to detect just the $FF and pull the right one out.

  6. Racer Says:

    Yeah I guess that is the trick to find the $FF and the control character, not pass them through but still allow a regular $FF character through when needed. Unfortunately my C understanding is very basic and I can not help much. Would you mind if I linked your page to the Emulators section of Lemon64? Maybe someone there can be of much more help than I can.

  7. jnichols Says:

    Yeah that would be fine. I believe Jim Brain wrote tcpser and makes the source available. He might be able to know of a trick to “seperate” the $FF character in the stream. I have just never tore into the source before. In fact this was my first software hacking attempt.

  8. shrink501 Says:

    The trick here is to modify both TCPSER and the VICE code.. You tell TCPSER that when it gets a >real< $FF that it needs to send 2.. so $FF=$FF$FF and then tell the VICE code that if it sees $FF$FF together that it should forward a single $FF to the emulation. That way it doesn't lose a real $FF due to using it as the IAC. (This is how a lot of protocols handle such a situation).

  9. jnichols Says:

    That was how I was going with the fix. My logic must have been off as someone else was reporting it dropped $FF on file transfer. Which is really the only time it should see $FF. I planned on going back in and editing and testing but my copy of CGTerm on Mac stills needs work to get file transfer working before I can test.

  10. shrink501 Says:

    I’ve tried using this modification on WinVICE 2.4.20 and it still does not see the carrier detect.. Has anyone else tried compiling for the Windows version to get this to work? the 1.19 works but has a LOT of flaws… Several of us are interested in seeing a WinVICE with working DCD..

  11. jnichols Says:

    What BBS were you working with? After looking at the DCD line I began to wonder if Color64 was really reading that line or if it was just listening for “RING” to run across the line. But either way the version of TCPSer was working just fine. So maybe we just need a new compiled version for PC. Though I wish we could just merge it with the Vice source instead. Linux works great with this but the steps to use it on PC are a little too complex for my liking. I would much rather just load up communication software and run right out of the box.

  12. shrink501 Says:

    I’m working with Image BBS, but have also tried EBBS and All American and none of them see the DCD… The VICE team has in their notes a plan to add 1670 support directly to the VICE program, so it’s possible to do it “all in one” as a device.. That’d be the best solution.. The two I’d try to add are the Aprotek Minimodem C-24 (user port 2400 baud modem) and some Hayes mode ACIA.. I think the user port one would be easier to start with. I wish I was a better C programmer than I am. I can work in C-64 BASIC and 6510 assembly and Visual BASIC, but C has always escaped me somehow..

  13. jnichols Says:

    Well I can’t say I know assembly worth a dang. But I can say if you know assembly and VB, C is no problem. I think if they add 1670 they are fine. Most everything supported the 1670 anyway.

  14. shrink501 Says:

    Most things will work with a 1670, yes.. But at only 1200 baud.. Is why I was thinking the Minimodem C might be a better choice..

  15. statuszero Says:


    First, thanks very much for publishing this guide!

    I am trying to get Color BBS to accept calls. I am not having much success. I wanted to double check to see if I had miss understood a step when compiling Vice.

    Specifically, you suggest the following:

    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

    The file that is linked to is ruser.c, not rs232.c

    My question is, should I be replacing ruser.c instead of rs232.c?

    Thanks for the clarification!


  16. bigmanfrank Says:

    Do you have a complied version of this still? preferably on a mac?

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