C64-WiFi-Modem, as the name suggests, is a user port add-on for an 8-bit Commodore 64 home computer that enables you to connect your retro machine to BBS.
A nice Youtube video showing of the capabilities of the system.
The project to my knowledge started on 1200baud page. It’s a simple user port add-on that uses easy accessible NodeMCU Esp8266 IoT board (Arduino compatible board) to connect to the WiFi.
A very productive member (be sure to check his other GitHub repositories and his website) of Commodore 64/128 Facebook group made some awesome modifications to the design and published them on his GitHub.
I’ve, with a help from electronic wizard friend, decided to build one to test it out and this is a quick recap on what happened afterwards. The design is freely available on Svens GitHub:
https://github.com/svenpetersen1965/C64-WiFi-Modem-User-Port After a month or so all of the parts and PCB arrived from China and it was time to assemble them.
Just an idea of the SMD elements size.
The board is quite straight forward to assemble, however because of the 0805 element size, it might not be suitable for beginner builders and it would appear it was designed for pick and place machines (you also get pick’n’place file in the project) and all of the elements except the LEDs are SMD and have a small footprint.
Please note that the original design presumes that you’ll use a 2.5cm wide nodeMCU board, the generic Chinese ones are usually 3cm wide. The updated project should accommodate both versions.
Sven also included the case design, so you can print it at home.
Please be aware of 2 different types of the NodeMCU boards. The easiest distinction is the labeling on the pins (vertical vs horizontal) and of course the use of CH340 on the Chinese ones. Both versions are pin compatible and will work just fine, the new version of the modem is updated to accommodate both boards. When you’ll be building yours be careful about the size as the bigger board is a tighter fit.
What is very cool about this particular design is that it uses level shifters to translate between the NodeMCU 3.3V level and the User Port 5V level. This is a common concern with modern addons, that usually use native voltages, which over time can (debatable and a polarizing topic) cause damage to your retro machine ports.
Setup of firmware on NodeMCU
Before the modem can be used, you need to flash your NodeMCU board or upload the sketch (juno12) using the Arduino development tool. Since we’re more familiar with uploading than actual flashing, we used Arduino IDE to upload the sketch. The regularly updated firmware can be found here (with lots of well documented features):
Uploading the firmware to the NodeMCU with Arduino software. There are also instructions on how to flash the firmware directly to the Arduino, but neither of us had any luck with that method.
Setup of software
Now that we have the hardware plugged into the user port, it’s time for the software that will handle everything (procedure differs if your modem uses external power!). Download the CCGMS Ultimate from:
https://csdb.dk/release/?id=174485 After the CCGMS Ultimate is loaded on your Commodore 64, it looks like:
Main screen of the CCGMS Ultimate.
1.) On this screen press F7 and it will take you to the configuration screen:
Configuration screen
Here you need to set up an initial configuration that will enable you to set up your modem.
2.) Select User Port, and select 300 baud (press B until “Baud Rate” is set to 300), (press M to put “Modem Type” to User port 300–2400)
3.) Press S to save the “Phonebook and Config”
4.) Press Return to return to main menu.
5.) Change the terminal to Ascii mode, by pressing F8 (Shift +F7)
Terminal changed to Anscii mode.
6.) Press Return
7.) Type into the terminal and confirm with return, each step will return OK if successful:
at$ssid=ssid-----------your WiFi network SSID (name)
at$pass=password-------your WiFi network password
atc1 -----------------connects to your WiFi
atc0 -----------------disconnects from your WiFi
at&p0 -----------------turn off hardware flow control
at&k1at$sb=2400 ------------(or 9600 but that did not work on my modem)
After this point you will see gibberish in the terminal, this is totally normal, as your terminal and modem are now out of sync in the transfer rate (baud rate), press F7, and configure the terminal to the selected baud rate.
Set the baud rate to the value you set to in command at$sb (sorry for potato pictures)
at&w --- write your settings to the modem.
If you switch to use the User Port 300–2400 modem type in CCGMS 2017 v4 (instead of the UP9600 / EZ232 modem), you’ll need to turn off hardware flow control. at&k0 will turn off hardware flow control. at&k1 will turn it back on. You must have hardware flow control on when using the UP9600 / EZ232 modem or bad things will happen. As the UP9600 / EZ232 modem setting should be fine for calling all BBS Systems, you should really never need to do this.
Connecting to BBS
The CCGMS Ultimate also includes a useful “phone book” feature, where you can save your frequently visited BBS.
To add a BBS to your phone book, move to an empty space and press E, enter the connection data and than press A to connect to BBS.
After you connect, you’ll be returned to the home page.
Connection established and BBS loaded.
Part of the BBS are also the interesting graphical first pages.
Another home page.
Where to connect (some BBS list)
bbs.retroacademy.it Port: 6510
theoldnet.com Port:6400
hhbbs.servebeer.com Port:6400
pc.cnet128.com: Port:6405
bbs.c64.xyz — port: 6400
Extensive BBS lists can be found: http://cbbsoutpost.servebbs.com/index.php https://www.telnetbbsguide.com/?s=commodore
File transfer
Basics to understand BBS file transfers.
Basic troubleshooting
Here are some basic hurdles I encountered or I found on various boards/groups:
If you entered ATW”ssid,password” and it replied with “OK”, then it worked. If it replied with “ERROR”, then it didn’t. (check your SSID or password)
First of all you need an „ok“ after typing „at“. Try 300, 1200 or 2400 baud at UP9600 or user-port device (changing the settings).
Modem requires the terminal to be in ASCII mode so that the password is transmitted in the correct letter casing. Make sure your terminal program is in ASCII mode, not PETSCII mode. PETSCII mode has upper and lower case letters reversed vs. ASCII mode.
The terminal freezes after setting the baud rate->not correct baud rate or you forgot to at&p0 — — turn off hardware flow control and at&k1
Example of wrong credentials for WiFi, it connected after the right password was entered.
Trying to access a BBS in terminal mode. (you must change your terminal to graphics mode)
Useful advance commands
There is a lot of flexibility in the modems firmware, advance users might be interested in exploring those. The full list of commands can be found on firmware projects gitHub.
ATI : re-shows the startup message, including wifi connection information.
ATW : List all wireless network access points scanned within range. The response for each entry is the SSID, following by the RSSI, followed by an * character is the connection is encrypted.
ATW"[SSI],[PASSWORD]" : Connects to the wireless access point with the given SSI, using the given password.
ATC : Shows information about the current network connection in the following format "[CONNECTION STATE] [CONNECTION ID] [CONNECTED TO HOST]:[CONNECTED TO PORT]"
AT&H : Shows a help file from the web, or brief help otherwise. Use &H6502 to reiforce web download.
AT&F : Restores the modem to factory default settings. Use &F86 to reformat the SPIFFS.
AT&U : Checks the firmware home page to see if a new version is available.
AT&U6502 : Will update the firmware from the home page on the web.
Sources:
List of full set commands for the modem:
Comments