How to build a commodore 64 WiFi modem and how to connect to BBS (Bulletin Board System)

Turbo56k BBS

I have discovered this very interesting project by Jorge Castillo that permit to surf HiRes image (Art Studio format), download games, streaming audio at 4 bit and more.
You have to use a ESP8266 or ESP32 WiFi modem with zimodem firmware by Bo Zimmerman
The client run only at 57600 bps so you have configure the proper baud rate in another terminal (I use CCGMSU). The project is a work in progress and in this video you can see a demostration.


Alwyz CCGMSUltimate & WiFi modem with Paul Rickards firmware

I try to show how to buid and configure WiFi modem.

Bellow some pictures that show the final result


I have take some content from an italian website by Manuel Conti.

Hardware

Hardware is based on the NodeMCU development board module which mounts the integrated ESP8266-12E.
ESP8266 is a chip with integrated low-cost Wi-Fi, with full support for the TCP / IP protocol and microcontroller functionality produced by the Chinese company from Shanghai Espressif Systems.

Features (from wikipedia)

From here you can download th firmware.

The software for flashing ESP8266 runs in a Windows OS.
Once you have unzipped the file you will find the esp8266_flasher.exe program and 2 binary files.
Run the esp8266_flasher.exe program and load the juno12.ino.generic.bin or C64WiFi_w_OLED_BBv7.ino.bin file. Connect the nodeMCU card to a USB port on your computer, if you have installed the drivers correctly, a COM port will be assigned to your card, select the latter in the COMport field and click Flash.
Below are a couple of exemplary screenshots

At this point you just have to make the connections according to the following scheme taken from the Alwyz website which is the author of the CCGMS term software that we will use to connect to a BBS.

ESP8266Mod Pinout

C64 User Port Pinout

  • Esp8266 GND -> C64 User Port Pin N (Gnd)
  • Esp8266 TxD (GPIO1/TXD0) -> C64 User Port B and C (RxD. Yes, Short B and C together)
  • Esp8266 RxD (GPIO3/RXD0) -> C64 User Port M (TxD)
  • Esp8266 GPIO4 -> C64 User Port K (CTS)
  • Esp8266 GPIO5 -> C64 User Port D (RTS)
  • Esp8266 GPIO2 (d4) -> User Port H (DCD)
  • Add a wire from M to 5 on user port plug
  • Add a wire from B,C to 7 on user port plug
  • Add a wire from L to 6 on the user port plug
  • Optional power from C64: Connect C64 pin 2 (+5v) to Esp8266 Vin

Adding OLED

You can buy an ssd1306 OLED from here .
In order to connect the oled display, it is first necessary to switch the position of Vcc and GND by inverting the position of resistors R4 and R3 (see figure). Then you can directly solder the display on the Node MCU board or by a female socket respecting this pinout:

  • D6  –> SDA
  • D5  –> SDL
  • 3v3 –> VCC
  • ND –> GND

Software

Before connecting your card to the user port of the commodore64 I advise you to carefully check all the connections. Then connect the nodeMCU card to the user port of the commodore with the computer off, then switch it on and load the CCGMSUltimate program. For this last step there are many solutions, the simplest is to buy an SD2IEC card or you can build it yourself (on the net there are numerous resources in this regard).
When starting the program for the first time, follow the steps below (from the author’s website )

  • Load CCGMS Ultimate, select User Port, and select 300 baud
  • Go back to terminal mode
  • Power on the device if using external power and hit enter
  • A menu should show up from the modem letting you know it’s alive!
  • Hit F8 to go to Ascii mode (Anscii mode) and enter your ssid and password with the following terminal commands: at$ssid=ssid and at$pass=password
  • F8 to go back to the Graphics terminal and type atc1 to connect. This may take a few attempts to connect.
  • Use the commands at&p0 and at&k1 . Without doing these 9600 baud will lock up your c64
  • Change the baud rate by using the command at$sb=9600
  • Go back to the Terminal F7 Menu and select Up9600 Baud / 9600 Baud
  • Go back to the terminal, and you should be able to see at and ok reponses.
  • Use at&w to write these settings to the esp8266.
  • All done. Now your settings should be set every time you boot CCGMS!

Also from the Alwyz website you can download a quick guide in pdf format and the gerber file for the realization of the PCB. For convenience you can also download them from this link

In the screenshots aside you can see the commands available to the user. After configuring the modem as described above, simply press enter on the initial screen and if everything is successful, the SSID and the IP address will appear with some advise regards the author of the firmware.

At this point you can issue the command atdt followed by the address of the BBS to which you want to connect i.e. atdt afterlife.dynu.com:6400
However if we do not want to enter the address of our BBS every time we can create a sort of telephone book with BBS addresses.
Hit F7 and open the Dialer/Parameters menu then press ‘A’ key to accesses the Autodialer/Phone book menu.
Press E (edit) to edit the field selected by arrow .
To save the phonebook go back in Dialer/Parameters menu and hit ‘S’ than ‘Return’ key.
Next time you run the CCGMS program, the address books and configuration parameters are loaded automatically.

Some hints to manage text file in CCGMS terminal

My experience as a BBS commodore user is not very long, however I can suggest some good rules. In the BBS message board the same rules apply as for any forum. The moderator in this case is called SiSop comparable to a system administrator of a modern internet network. In a BBS the following sections can normally be found: mail service, forum, download area, online games, news area, text file archive etc.
If you would like to read these documents offline you can do it!
The simplest thing is to download the entire file but this is not always possible, an alternative method is to activate a storage space in the c64 ram called buffer using the F4 key.
If you have a REU (ram expansion unit) the CCGMS Ultimate recognize it and use the REU as memory buffer.
Once the buffer is activated, anything that is displayed on the screen is stored into the buffer. When we have finished viewing the contents that interest us, press the ‘F4’ to return to the buffer menu and and ‘S’ to save the buffer on disk or on SD by means an SD2IEC or other exotic devices like 1541Ultimate.
You can optionally use the same buffer menu to retrieve previously saved ascii files simply by using the ‘L’ key.
The buffer menu also offers other options including that of being able to clear the data stored in the buffer or if you are lucky enough to have an old dot matrix printer for commodore 64 you can print the entire contents of the buffer on paper.
There is also a way to make a screenshots of the actual screen.
You can store in ram up to 4 screenshot by pressing ‘commodore+ctrl+1-4’ and recall it by pressing ‘shift+ctrl+1-4’.
If the buffer is active, we could save our screens in the buffer area using ‘comodore+F7’ and subsequently store it on disk.

When you are in the Dealer/Parametres menu, press ‘V’ to view other useful commands (see below)

Screenshot gallery of CCGMS terminal modded by Alwyz

This picture show the connection to Retroacademy BBS that offer to watch some online daily news and RAI teletext (an Italian main TV).

About download protocol

The CCGMS ultimate program supports three types of protocols for download: Punter, Xmodem, Xmodem-CRC.
The punter protocol provides the ability to perform multiple downloads or uploads. Until recently it was the recommended one. At the moment it is preferable to use the Xmodem-CRC protocol as it performs a more accurate error check, the only disadvantage is that it does not support multi download or multi upload.
I remember to change the protocol both client side (CCGMS) and server side (BBS).

About compressed files: how to decompress it?

One of the most popular ways to compress C64 files was to have them Zip Coded. This is the format most often used when dealing with disks full of multiple files. The disk is compressed, and split into files which were less than 64k, so they could be used in a C64 for real-time decompression
The split files are headed with a number, showing which section of the disk it has the data of, and then an exclamation point to separate the number from the name of the archive.
Many BBS users will have certainly run into the problem of how to unzip files that come in the form of 1!filename, 2!filename, 3!filename, 4!filename. First of all let’s define what we are talking about, these are a image d64 that are splitted and zipped in 4 files in order to be downloaded more quickly from the BBS servers. To be able to decompress them in the original d64 file, we have various software. If we have an SD2IEC card, I recommend using Unzip2018Beta1 by Alwyz.
Another way is to use a PC: remove the SD card from your SD2IEC and connect it to USB by an adapter then use Dirmaster to unzip and recreate the original d64 image.
Another kind of file is lynx (extension lnx). It was one of the most popular archive formats for the C64, especially for data transfer over a modem. The Lynx format is just a collection of files joined together, with a small C64 basic program as the header, and when run, would produce the message ‘Use Lynx‘ to dissolve this file. The files aren’t compressed, and it’s worthless if there are many files on the disk.
In order to decompress files with lnx extension we can use the Ultimate lynx3 or Lynx17 programs which, however, as far as I know, are not compatible with SD2IEC peripherals. On the CCGMSultimate release disc there are all these programs. Even for lynx files it will be possible to use the PC to decompress them with the usual dirmaster program.


That’s all! If you have comments or find errors in the text, do not hesitate to report them to me.
See you soon!
Matteo

Leave a Reply