One Year of z80ctrl

A project log for z80ctrl

AVR-based bootloader and IO card for RC2014 retrocomputer

J.B. LangstonJ.B. Langston 01/04/2019 at 05:390 Comments

Around this time last year, I started bread boarding what would become the z80ctrl. In honor of its first birthday, I've decided to take a little trip down memory lane. 

I made my first commit to GitHub on January 6.  It didn't do a lot back then.  It had a hard-coded program that added two numbers together and then went into an infinite loop, while the AVR printed out a trace of the signals on the Z80 bus.  But it was enough to prove that my design worked. A day later, I had the AVR doing serial I/O and the Z80 printing "hello, world".

The first real program it ran was the Altair Turn Key Monitor a few days later.  That was followed in quick succession by a more advanced monitor, which allowed me to paste in Intel Hex programs for the Z80 to run.  By January 12, I had the SD card working and could load hex files directly from it. For the next few days, the z80ctrl monitor started to take shape. The dump and fill commands made their debut and the debugging features started to take shape. The monitor from back then is still recognizable now (although with a much longer list of commands).

On January 15, I got Altair disk emulation working and achieved what felt like the Holy Grail: running CP/M.  On January 21, I posted my first two videos to YouTube. One detailed the Hardware:

And the other detailed the software:

Around this time, I started getting the idea that I wanted to design my own PCB.  I started work on a SBC that would include the Z80, memory, and AVR all on one board, but then I came across the RC2014.  I really liked the modularity of the RC2014 backplane and the community surrounding the RC2014.  So on January 20, I ordered a RC2014 Pro kit, and the next day I introduced myself to the RC2014 community.  I started working on an RC2014 module in KiCad and had a first draft by January 23. 

My RC2014 arrived on February 1, and to prove to myself it would work, I hooked up my breadboarded circuit to the RC2014 backplane. It worked, an after a few weeks of polishing, I finally mustered the courage to place my order from OSH Park on February 16.  After 10 long days, the boards arrived, and... they didn't work.  I couldn't even get the SD card to work, and I was completely stumped.  

I felt so defeated by the failure of my first PCB design that I took a break from the project for two months, until two members of the RC2014 mailing list, Rodney and Jay,  encouraged me keep working on it.  By April 23, both had their boards working but mine was still a no go.  Rodney offered to send me one of his boards to test, and when I got it, I found that it didn't work either.  Finally, on May 4, I figured out that it wasn't a problem with my board at all, but two lines shorted together on the RC2014 backplane. After figuring this out, my enthusiasm returned and I made a video going over the board's design and discussing some of the problems I ran into:

I spent the next few weeks helping people on the mailing list to solve problems with their boards and making a new revision to fix the issues I had identified with the first board.  Also during this time, I got serious about documenting the project and squashed a few bugs. 

On May 20, I started this Hackaday page. The next few weeks were my most productive period since starting the project in January. I added many... new... sofware... features.  I also designed REV3 of the board that had some major optimizations and new features.

Also during this time, I started working on my other project, TMS9918A video card, which was the first of my game boards for RC2014. I ordered both the video card and z80ctrl rev3 at the same time.  When I got the rev3 boards built, they worked the first time. By mid-July, I was pretty happy with the point I had gotten the z80ctrl to, and I turned my attention to learning to code for the TMS9918A video card and trying to get ColecoVision games to run on it. 

The project hit another lull until I was again encouraged to come back to it by a member of the RC2014 community, this time Colin.  He was interested in the SPI I/O expander I had mentioned as a possible expansion but never developed and this spurred me to start developing it.  

On October 24, I started working on the I/O expander board and a few small changes for rev4 of the z80ctrl. By November 2, I had finished up the designs, and along with the new sound board and joystick interface I designed around the same time, I was ready to order a new batch of PCBs.  The first revision of the I/O expander had some problems, and so did the joystick interface I had built at the same time, so I had to do another batch of PCBs 10 days later.  

I got the new boards built on November 25, and this time everything worked.  I spent the first part of December testing the new game boards I had built (translation: playing lots of ColecoVision games on my RC2014).  

By December 15, I turned my attention back to the I/O expander and started writing some examples for using it from both MBASIC and Assembly language. My latest feat has been to get MSX-BASIC running with a compbination of my TMS9918A video card, and the z80ctrl handling keyboard emulation.

Because so much has changed since I made the videos almost a year ago, I felt like the z80ctrl deserved a new video for a new year.

My heartfelt thanks go to everyone who has taken an interest in my projects, and especially to Rodney, Jay, and Colin for encouraging me to keep going. The Z80 and I had great fun together in 2018, and I'm looking forward to seeing what 2019 brings for the z80ctrl and the larger RC2014 community.  

Psst... I heard a rumor that there might be some z80ctrl and game board kits available soon.