BBSing on the C64 VICE Emulator
Introduction
While I have an Ultimate 64 where I can BBS via the Ethernet port, it's not always hooked up so I wanted to get BBSing working in VICE. I found this post a while back but it left a few questions unanswered so I dove into VICE, tcpser, and ncat on my own. Hopefully this will help others.
Requirements
For this effort, I needed 5 things...
- VICE Emulator: I'm using version 3.3 but select whichever you'd like. I'll do testing with other versions when I have some time.
- CCGMS Future 0.2: Well, at least Future 0.2 is the version I used. You may want to try a different version of CCGMS if you'd like. This is the Commodore terminal program I use to connect to BBSes. If you go to the Releases section, you can get the .prg and avoid building the SW yourself.
- tcpser: I used FozzTexx's version, but there seems to be another one here whose current release was in 2020 but source updates as little as 3 years ago. I have yet to test this. You'll probably need to compile this so be sure you have a dev environment somewhere (i.e. gcc or similar).
- ncat: Actually, any "NetCat" should work. So feel free to pull the one from your distro. I like ncat because the developers have pulled in most, if not all, of the best from the wide variations of nc/netcat. Any of these should be in your distro and not needed to download/compile.
- BBSes: There are a slew of BBSes you can "call". The telnet BBS Guide is a nice resource for finding BBSes.
The BLUF
- Configure VICE RS2332 Settings:
- Enable "ACIA Settings"
- Device: Execute Process
- Base Address: $DE00
- IRQ: NMI
- Emulation Mode: Swiftlink
- Disable "Userport RS232 Settings"
- RS232 Devices:
- Command: |/usr/bin/ncat -4 127.0.0.1 11111 (Don't forget '|'.)
- All others don't matter.
- Enable "ACIA Settings"
- Run tcpser: tcpser -v 11111 -s 2400
- Configure CCGMS:
- Baud Rate: 2400
- Duplex: Full
- Modem Type: Swift / Turbo DE
- Connect to BBS by typing: atdtdomain:port (Phonebook won't work in CCGMS Future 0.2. Other programs unknown.)
VICE Setup
Within VICE, I went into the Settings, Peripheral devices, then RS232 settings. Remember, I use VICE 3.3, so you may see a slightly different menu order.
(Click to Enlarge)
Notice I do not use the Userport RS232 Settings, only the "ACIA settings".
Also important to note is the Device, Base Address and Emulation Mode. The Device is how we get our Commodore terminal program to communicate with tcpser (discussed shortly). Base address and Emulation Mode are set to match CCGMS's settings later.
Finally, under RS232 devices, ignore "Serial 1", "Serial 2", and "Dump file". Since the "ACIA settings" Device was set to "Execute Process", down below in RS232 devices only the "Command" is important. This is where we setup the ncat command line to feed CCGMS terminal data into tcpser. WARNING: be sure to include that vertical bar, '|' in front of ncat! (This statement is based on experience.😂).
Note: the "-4" for ncat is to ensure/force IPv4. I'm on an IPv4 only network but I've had some problems elsewhere if I don't specify it.
tcpser Setup
This is really just running tcpser. Execute at least the following command:
tcpser -v 11111 -s 2400
I say "at least" because the documentation for tcpser mentions a "-p 6400" and also an optional "-l" (log level) switch. If you're debugging or just starting out, you may want to issue:
tcpser -v 11111 -s 2400 -l 7
"-l 7" is A LOT of logging info but useful if you're running into problems.
"-v 11111" is the port to listen on for VICE. Remember above we configured ncat to send terminal data to 127.0.0.1 port 11111? Well, here is that port 11111. You are free to use whatever port you want, just make sure it's available and put it in both the ncat command and the tcpser command.
The "-s 2400" is merely the baud rate. I still need to test other rates to see if they work. Notice in the VICE settings we didn't set/use a baud rate. However, in CCGMS, we will.
Notice I don't put "-p 6400". The "-p" switch is to specify what port tcpser is supposed to listen on. However, this seems to be for incoming connections! So if you're not hosting a BBS, we really don't need it.
WARNING: When you run tcpser as shown above, without the "-p" switch, it will still open port 6400 (default) for listening. So be sure you have a firewall on your system blocking incoming 6400 packets to avoid unauthorized connections (i.e. attacks).
CCGMS Setup
Once VICE is configured and tcpser is running, I was able to go ahead and run CCGSMS.
Once running, here is the setup I have (which, I think, was the default...it's been a while):
(Click to Enlarge)
Notice:
- "Baud Rate" is 2400, the same as set on tcpser
- "Modem Type" matches the "Swiftlink" setting in VICE. Also, notice it's "Turbo DE" meaning using Base address $DE00...same as in VICE.
Calling a BBS
This may seem like a lot, but I wrote a lot...it's actually not that complicated. So now, we can call a BBS.
CAVEAT: I have not been able to successfully use the phonebook to call BBSes. Instead, it seems to connect, scroll the screen blank for a while, then leave me with a cursor - but no connection:
(Click to Enlarge)
In order to connect, I have to go to the main CCGMS screen:
and then enter the "atdt" command manually:
atdtparticlesbbs.dyndns.org:6400
Only then will I have a connection and some BBSing fun:
Conclusion
Nothing really left to say. If you try different versions of CCGMS, tcpser, and/or VICE, please feel free to hit me up on Mastodon to let me know. I'll update this post accordingly.
Happy BBSing!
Obligatory Cybersecurity Note
My "day job" is Cybersecurity so I feel obligated to provide the following advice:
Do not provide any personal information such as financial, home address, phone numbers, etc to any BBS connected to via this method. Most BBSes use the telnet protocol which is not encrypted. As such, anything you type, send, or receive is in clear text and can be eavesdropped on by any system between you and the BBS (e.g. ISP, Internet Routers, etc.).