This one even uses my customized version of Bo Zimmerman’s Zimodem ESP8266 Firmware.
- 2019-05-10: Added a link to CoCoWiFi article, and uppercased DELUXE.
TLDNR: See the video at the end.
In 2015, Sub-Etha Software rocked the retro world with the announcement of CoCoPilot. (And by “announced” I mean “posted a blog article about how to install DriveWire on a Raspberry Pi. And by “rocked” I mean “posted a block article about how to install DriveWire on a Raspberry Pi.)
In 2017, Sub-Etha Software raised the bar again by announcing SirSound, the serial port multi-voice sound “card” for the CoCo. (And by “raised the bar” I mean “posted another blog article”.)
In early 2018, Sub-Etha Software released details on CoCoWiFi, and showed you how to build your own for under $10 instead of waiting for Sub-Etha Software to actually manufacture them. (And by “released details” I mean “posted yet another blog article”.)
In late 2018, Sub-Etha Software shocked the CoCo Community with the proposal to end all proposals: PreciousPak. (And by “shocked” I mean “posted a block article about something I think would be really cool but don’t have the hardware skills necessary to make happen so I hope someone else will do the work for me, please and thank you”.)
And now, in 2019, Sub-Etha Software is proud to announce…
CoCoPilot DELUXE is the result of dozens of man-minutes of thought on the subject of “what should I do with all the Raspberry Pi stuff I have on my desk?”
Much like how PreciousPak solves all our problems when it came to CoCo cartridge add-ons, CoCoPilot DELUXE strives to solve all our problems when it comes to CoCo bitbanger serial port add-ons. (And by “solves all our problems” I mean “wouldn’t this be fun to play with?”)
With CoCoPilot DELUXE plugged in to your CoCo’s built-in Serial I/O port, you will have:
- WiFi Modem – Use any existing CoCo terminal program, and be able to telnet, ftp, etc. to internet servers just as easily as you used to call in to dial-up BBSes in the 1980s.
- SirSound – Use the simple BASIC “PLAY” command strings that you already know and love, except add a “#-2,” and change PLAY to PRINT, and then you can play multi-voice background music while your BASIC program does other things.
- DriveWire Server – Use NitrOS-9, SDC-DOS or the special DriveWire version of HDB-DOS to access virtual floppies over the serial port. Under NitrOS-9, you also have access to other DriveWire features such as virtual printing, virtual MIDI, and virtual reality. Except maybe not that last one.
- Print to PDF – Print from any CoCo program (including graphics programs such as CoCoMax, ColorMax, Max-10 and Max Headroom) and have the dot matrix output be rendered as a PDF file you can then print on a modem printer. It can even print the old green bars and fake tear-off strips with the holes in it, just like the olden days!
- CoCoPi Emulation – This portable device can also be expanded with an option USB keyboard, USB mouse, and HDMI monitor to act as a virtual CoCo running various Color Computer emulation programs.
- …and more!
In this list, there are a few “new” things we can’t currently do. Printing from CoCoMAX 3, Tandy Home Publisher or any other graphical print software is not currently possible (is it?). A new layer would be written to interpret common printer “driver” codes (Tandy, IBM, Epson, etc.) — including color — and render the incoming data to an image that represents all the dots the printer would have printed. (Heck, we could even emulate the old plotter printer thing.)
SirSound could work the same as the hardware SirSound (API compatibility), but could be expanded to do more voices, and use better sounds. The Pi has simple libraries that can product multi-voice music.
WiFi Modem would be similar to the CoCoWiFi (Zimodem) project, but the “AT” Hayes Smartmodem commands would be different since we’d just use one of the many “serial to network” programs/scripts readily available.
All we need is a bunch of software, an RS-232 interface for the Pi, and some switches to select which mode you want the CoCoPilot DELUXE to be in.
- 2019-05-03: I’ve had a report of my build not allowing you to type. I have seen this before, and am investigating this. Anyone else having issues? Also, I missed something in my merge which may have affected over-the-air updates (AT&U). I am pushing out a new build. Also, added a screen shot showing 3.5. Also, note about no ESP32 build.
- 2019-05-04: I started over with Bo’s unmodified source code, then did my changes to zimodem.ino and zcommand.ino. I am still seeing the issue where, via USB serial connection, I can’t type of my TTL-to-RS232 adapter is hooked up. Without it, it works fine. I need to do some testing via the CoCo with it’s bitbanger and RS-232 Pac ports to see what behavior I get. In the meantime, I appreciate your feedback.
Yesterday I updated my fork of Bo Zimmerman’s ZiModem. My custom fork is 100% his code, with only some configurations changed to make it default to standard RS-232 signals instead of inverted like the Commodore uses. (Basically, it’s what his “Guru modem” firmware defaults to, and the over-the-air update changed to point to builds on my service. Guru modem only builds for ESP32, so eventually I just need to figure out how to modify the project so it builds Guru modem for ESP8266, I think.)
NOTE: I only built for the NodeMCU-12E ESP8266 module and the generic ESP8266 (whatever that is) module. I did not have ESP32 libraries installed so there is no build for that currently.
If you want to pull the source code and build it directly through the Arduino IDE, you can find my fork here:
The binaries I built are located here:
I also wrote up some instructions for updating that firmware from a PC, Mac or Linux machine without having to build it with the Arduino IDE. (I had to use these steps myself, since I couldn’t remember how it worked.)
NOTE: If you have the ESP8266 wired up to a TTL-to-RS232 adapter, you may find that firmware updates will not work. On my device (using the full-signal TTL adapter and a NodeMCU ESP8266), I had to unplug the 3.3V power wire that goes from ESP8266 pin to the TTL-to-RS232 board. That was enough to make firmware updates work. I’m still not sure why having the TTL adapter hooked up affects loading firmware over USB, but apparently it does.
A final option is to use the ZiModem built-in over-the-air update capability, which we haven’t gotten to test yet since this is the first time I’ve updated firmware for the CoCoWiFi fork. That is done through the command:
That should grab the latest build on my server. I believe it reads a .txt file from my server to get the version number and builds the filename out of that, then downloads that filename. You can also specify the version manually. Currently, there is a 3.4 build and a 3.5 build available on my site.
Please let me know if this works for you. You should see the startup banner (1200 baud) show 3.5:
Original instructions on this WiFi modem for $10 can be found here:
FOR IMMEDIATE RELEASE:
Sub-Etha Software announces more 2018 Chicago CoCoFEST! plans
Des Moines, Iowa – March 14, 2018 – Iowa-based Sub-Etha Software reveals more plans for the upcoming 2018 27th Annual “Last” Chicago CoCoFEST! to be held April 21 and 22, 2018 at the Heron Point Convention Center in Lombard, Illinois.
“The biggest news,” says Sub-Etha co-founder Allen Huffman, “is that we will have Jolt Cola to drink during the road trip to Lombard, and maybe enough extra to share during the event.”
Among the new offerings at this year’s event will be CoCoWiFi, an inexpensive internet modem device that allows connecting the CoCo up to a WiFi network for accessing remote internet sites using telnet and other protocols. Both fully assembled and do-it-yourself kits are expected to be available, with pricing to be announced at the show.
“CoCoWiFi is pretty cool,” says Huffman. “It looks like an old-school Hayes Smartmodem and can be used on any model Color Computer with any terminal program. If the MC-10 has a terminal program, I bet it would work there too. The best part about it is if you don’t wanna buy it, you can spend about $10 and put one together yourself without any soldering. But we’ll be glad to sell you one for much more than that.”
Another new offering will be SirSound, the serial port multi-voice sound device. SirSound provides (1980s) arcade-quality background music and sound effects from BASIC. It uses built-in commands with no assembly language or special drivers needed.
“SirSound is one of the funnest things I have ever worked on this month,” adds Huffman. “You can play the Frogger theme song just by typing a PRINT command. I expect it could also play the Pac-Man theme, too, but we haven’t tested that, yet.”
SirSound is still under development, as well as SirSound S (6-voices in stereo), SirSound Plus (SirSound with the ability to play stereo digital files) and Sir Sound S Plus. There will also be an open-source SirSound Jr project made available. It will have the most of the same features as SirSound, but will be limited to just 1-voice tone music. Beep beep.
“We also will have a selection of new-old-stock Sub-Etha items in original packaging for those who like to collect useless 5 1/4: floppy disks with photocopied instructions stored in plastic baggies. Of course, master disk images of all this stuff has been uploaded to the Color Computer Archive and will be available for free, too.”
Be sure to drop by Sub-Etha Software’s table in the main exhibitor hall during the event.
About Sub-Etha Software
Sub-Etha Software was founded in Lufkin, Texas in 1990, as a partnership between Allen C. Huffman and Terry S. Todd. It made it’s first CoCoFest appearance at the First Annual Atlanta CoCoFest in 1990, and it’s first Chicago CoCoFest appearance at the First Annual “Last” Chicago CoCoFEST! in 1992. They may be contacted online at www.subethasoftware.com
About the Chicago CoCoFEST!
PO Box 7634,
Des Moines, Iowa
- 2018-02-25: Clarification on what ESP devices these instructions are currently limited to, per a comment from James J.
- 2018-02-26: Added notes about versions for ESP-1, NodeMCU ESP8266-12E, and NodeMCU-32S modules.
- 2018-02-27: Added link to Espressif tool for Windows that is supposed to do ESP32 modules (and also does ESP8266). If it works, I may update this just to use that one tool for both module types.
- 2018-03-02: Removed second Windows option until I have confirmed how it works.
Updating ESP8266 / ESP32 Firmware
NOTE: These instructions are currently limited to devices like the NodeMCU ESP8266-12E and the NodeMCU-32S development kits:
These devices have a built-in USB-to-Serial interface, so they can be plugged up to a Mac/PC over a USB cable for uploading firmware. However, the instructions probably will work with things like the ESP-1 module by using a USB programming device that interfaces it to USB.
Customized Zimodem firmware for all three of these platforms is now being created.
The excellent Zimodem firmware by Bo Zimmerman turns a low-cost ESP8266 module into a WiFi smart modem. One of the challenges users face is how to get this firmware installed on their module to begin with. I have been providing steps on how to install and configure the Arduino IDE so you can download the Zimodem source, build it, and load it.
But, if you aren’t a developer and don’t really want to go through that many hoops, you can take an existing firmware binary file and just load it directly.
Here are the steps as I know them, for Windows (with a nice GUI), or Mac OS X/Linux (command line).
Customized Zimodem Firmware images
I have a customized version of the Zimodem firmware on my server pre-built for the NodeMCU ESP8266-12E devkit, NodeMCU-32S devkit, and ESP-1 module. Download this firmware image here:
The versions will be named as follows:
- zimodem.ino.generic-3.4.bin – for the ESP-1 module.
- zimodem.ino.nodemcu-3.4.bin – for the NodeMCU ESP8266-12E development kit.
- zimodem.ino.nodemcu-32s-3.4.bin – for the NodeMCU-32S development kit.
These names are the default names that the Arduino IDE creates, with the version number added.
Windows – ESP8266 NodeMCU Firmware Programmer
Download the NodeMCU flasher program. There is a 32-bit and 64-bit version:
NOTE: A different utility may be needed for ESP32. There is one that espressif (the ESP chip creator) provides that does both ESP8266 and ESP32. It is a .rar file, and when I downloaded it under Window 10, it ended up as a .man file (?). I had to rename that to .rar, and then find a RAR extractor (I used a free one from the Microsoft store). If you are using an ESP32, you may want to try this:
With your ESP8266 module plugged in (so it appears as a COM: port to Windows), open the NodeMCU flasher program and select that COM port:
On the Advanced tab, uncheck the default internal firmware (that is the option you would use to restore an ESP8266 module back to factory firmware), and browse to the new firmware in the second line. Checkbox that line, and set the start address to 0x0000.
You might also go to the Advanced tab and increase the baud rate if you want the update to go faster. Once the binary file and COM port have been specified, return to the Operation tab and click Flash to begin the upload to the ESP8266.
…and when complete…
You can now restart the ESP8266 module and it should be using the new firmware.
Windows – ESP8266/ESP32 Espressif Flash Download Tools V3.6.3
I have tested this tool on ESP8266, but not on ESP32 yet. I will update this section when I do. It requires more steps to install and setup, but may be what we have to use for ESP32. Running it offers four different parts it can flash:
I will update this tutorial when I have confirmed how to use this.
Mac and Linux – esptool
Install esptool (a Python script) and pySerial (a Python library for talking to the serial port):
easy_install esptool easy_install pyserial
NOTE: I think I hadto run this as super user, “sudo easy_install esptool”.
Identify the serial port connected to the ESP module. This can be done from a shell (Linux) or the Terminal (Mac). On Mac, can look for devices that begin with “cu”:
alsmbpro:temp allenh$ ls /dev/cu* /dev/cu.Bluetooth-Incoming-Port /dev/cu.HC-05A-DevB /dev/cu.SLAB_USBtoUART
If you do not know what to look for, you could do this command before plugging in the ESP8266, then again after you plug it in and see what appears. (On my system, I know I installed Silicon Labs drivers, so I recognized the “SLAB” name.)
On Linux, I think you need to do ls /dev/ttyS*. (I also saw an exemple using “setserial -g /dev/ttyS”).
Now that you know what serial port is connected to the ESP module, run esptool.py specifying that port, and the firmware image to use. On my system:
esptool.py -p /dev/cu.SLAB_USBtoUART --baud 460800 write_flash --flash_size=detect 0 zimodem.ino.nodemcu-3.4.bin
If it works, you should see something like this:
prompt$ esptool.py -p /dev/cu.SLAB_USBtoUART --baud 460800 write_flash --flash_size=detect 0 zimodem.ino.nodemcu-3.4.bin esptool.py v2.2.1 Connecting........_ Detecting chip type... ESP8266 Chip is ESP8266EX Uploading stub... Running stub... Stub running... Changing baud rate to 460800 Changed. Configuring flash size... Auto-detected Flash size: 4MB Compressed 344528 bytes to 247587... Wrote 344528 bytes (247587 compressed) at 0x00000000 in 5.8 seconds (effective 472.4 kbit/s)... Hash of data verified. Leaving... Hard resetting...
You can now restart the ESP8266 module and it should be using the new firmware.
Once you have this special build of the firmware, you will be able to do over-the-air updates. Make sure you configure your Zimodem for your WiFi network by going through the:
You can then use the command “AT&U” to see what the current version is. Bo is currently working on 3.4.
In stock Zimodem, firmware updates pull from Bo’s website for the two boards he support (the ESP-1, I think, and some flavor of ESP32). For my customized “CoCoWiFi” version, it will pull special builds from my website instead, and there are three different boards supported.
As I build new versions of this customized Zimodem firmware, I will place them on my server and you can type (from the Zimodem command mode):
That will get whatever version I have available. You should not need to do any more USB updates, unless something goes horribly wrong, or you want to go back to stock NodeMCU firmware.
Please let me know if this works for you.
Things have been real busy lately at Sub-Etha Galactic Headquarters… Here are some updates:
The CoCoWiFi has been tested on the bitbanger serial port and things seem to work just fine.
On the RS-232 Pak, a modification was needed to make the pak actually receive data (forcing the carrier detect signal). This has been done by an easy soldering mod to the DB9 connector. The downside is that it does not provide true CD, and there is no support for hardware flow control or DTR to drop calls. For just a bit more, there are RS232-to-TTL adapters that provide hardware flow control, which might help for doing high speed transfers. However, the lack of carrier detect and DTR means they won’t work with a BBS like they should
Thanks to David Chesek, new RS232-to-TTL adapters were located that include all the signals. These would be the best choice for running with an RS-232 Pak. I have two different types of adapters, but have only done some initial testing. I was unsuccessful getting the first adapter to work. I plan to test the second version this week.
I hope to have a hardware announcement to make before the CoCoFEST!
I learned much while working on CoCoWiFi, so I returned to work on the previously “announced” SirSound project. I got everything wired up properly and was able to write a BASIC program to make it play tones. I also worked with John Strong and migrated the prototype over to an Arduino Nano (matching the original Arduino sound player board he sent me last year).
The next phases is to figure out the various modes that sound module will run in. I have proposed:
- Direct. This mode just passes bytes to the sound chip, the same way you might do with a POKE command if it was a memory-mapped chip. BASIC is very slow at ANDing and ORing bits to make the messages, which is how my test program works, but this could be heavily optimized. This mode is mostly here to allow someone to port over code that was written for one of the other platforms that use an on-board SN76489 sound chip, though some of the bit-blasting players would probably not work as well over slow serial.
- PLAY. This is the BASIC mode, that will simulate the PLAY command. You will be able to send a string of notes to SirSound and play them just as easy as in EXTENDED COLOR BASIC. There are a few things that have to be adapted, like support for the multiple channels of audio, and sub-strings. Last year, it was suggested to look at the MSX computer’s PLAY command for examples of how Microsoft did this very thing. I may follow that syntax. MSX also ads a PLAY() function that can tell is background audio is in progress, and we will be able to achieve the same results using the Printer Read/CD signal on the bitbanger port. I plan to also add some sequencing extensions so repeating music loops don’t have to be sent over and over again.
- Optimized. This mode would be for assembly programs, and would pack data into 8-bit values rather than longer ASCII strings.
- Interactive. I am planning on having a shell/command-line interface (CLI) available which could be accessed. It would be used for testing the device without needing to write a BASIC program.
More to come…