Quinn Dunki hacks hardware on her BlondiHacks site and inspires young women to do the same. She created Veronica, a retro computer project, and documents it very thoroughly on her site, which is full of all sorts great electronics hardware explorations and photos, even some car projects.
Today is Ada Lovelace day! Celebrating the achievements of women in science, art, design, technology, engineering and math! Ada Lovelace Day is about sharing stories of women — whether engineers, scientists, technologists or mathematicians — who have inspired you to become who you are today. The aim is to create new role models for girls and women by celebrating amazing women making and doing cool things. If you’re looking for a worldwide Ada Lovelace Day event? Please visit the Finding Ada events page. Be sure to check out all our posts today and from previous years here of amazing women!
Today everything in the Adafruit store is 10% off, just use the code ALD12 on check out, use this code to pick something special person in your life that will spark her imagination for a lifelong career or hobby!
Well, I finally got back to working on Veronica, but this project is less Steve Wozniak and more Martha Stewart. You see, Veronica is starting to grow, and she no longer fits in the drawer where I keep works-in-progress. Before I build too many more modules, she needs a proper enclosure. I thought a long time about this, and I decided that since she’s a retro-tribute computer, she needs a retro-tribute case. I had the idea to gut and repurpose an old Philco radio. There are a zillion models to choose from (in every shape and size), they are attractively retro, and they are cheap on eBay (unless you want one of the special ones). I was pretty proud of this idea, until I later found out that using old Philcos for project enclosures is pretty common. Oh well. My mom still thinks I’m cool.
It seemed so simple. The best ideas always do. However, sometimes the smallest problems end up taking the most time to solve. There was some swearing, I won’t lie.
You see, I had a really swell circuit that could take a ROM image and dump it into an SRAM. Since parallel EEPROMs exist that are accessed just like SRAMs, I figured I could just buy one, drop it in, and presto- ROM for Veronica. Flawless plan, right?
Well, a hundred hours or so later, it turns out the plan was in fact pretty darn solid, but the parts were against me. To recap, I designed a board for Veronica that would hold an EEPROM chip, and had a built-in ATTiny that acted as an interface between the EEPROM and my USBTinyISP programmer. Since EEPROM programmers are very expensive, this was a way to leverage the tools I had to program the ROM that Veronica needs to boot up.
Well, now that Veronica is up and running in real hardware form, she needs some real ROM to play with. That means I need a way to burn an EPROM (UV-erasable) or flash an EEPROM (electrically-erasable). The latter seems easier to use, but the programmers for them are very expensive. So what’s a girl to do? Well, I may not have an EEPROM programmer, but I do have the excellent (and cheap!) USBTinyISP in-circuit programmer for AVR microcontrollers. Can I leverage its abilities to program an EEPROM? I bet I can…
Now that we have Veronica’s backplane mostly sorted, we have everything we need to move the 6502 itself off the breadboard and into “the real world”. No more training wheels! *sniff* I just hope she holds her balance when I let go of the seat…
It’s time to starting making some of these bits (pardon the pun) solid, both so I can work on new interesting abilities for Veronica, and so I can have some damn breadboards back.
I spent a lot of time thinking about this, and planning out various strategies. I’ve settled on what’s called a Backplane Design. Essentially, every component of the machine is treated as a module that is plugged into a large master bus. Wikipedia has a nice treatment of this topic. Ideally, everything is completely general, so you could have multiple CPUs, multiple memory systems, or any other weird combination of components. In reality, that’s a lofty goal, and mine won’t be so fancy. This is in contrast to a motherboard design, where most major systems are on one large board, and you have a couple of connectors or slots for expansion in specific ways.
If you recall from last time, we got Veronica to perform a free run by NOP-ing her way through a phantom memory space.
Well, the next logical step is to get some real memory for her to run code from. I’m calling this a ROM Emulator, because it’s faking what would be the role of Read-Only Memory in a normal CPU startup sequence. The code and data will be entered into this memory by an external tool, and the CPU will not be able to write to it. In all other ways, however, it looks like regular memory to our girl.
A RAM chip by itself can’t do a whole lot. When powered up, it will be full of random junk. We need a method of data entry. Early computers usually had a big bank of toggle switches and blinking lights to handle this. If you’ve seen an old Altair or an old PDP-8, you know what I’m talking about. Hollywood has made sure we will always think Important Computers look like that. Anyways, the point of those switches and lights is to modify RAM directly, in order to give the CPU code to run immediately upon startup. It’s another one of those chicken-and-egg problems that plagued early computers. The CPU needs code in memory to run, but the CPU is usually what loads code into memory. You need a way to bootstrap that cycle.
Now for something a little different. I was first exposed to computers back in the late 1970s and early 1980s. Suffice it to say, placing my hands on the keyboard of an Apple //+ was a watershed moment which pretty much set the course of my life from that point on. The heart of the Apple // was the 6502 microprocessor. I learned to program on that chip, along with millions of other people. It was the chip that brought computers and video games to hundreds of millions of homes and schools, and I think it’s safe to say that it sparked a revolution. The world was ready for personal computers, but all the contemporary CPU offerings (notably from Intel, AMD, and TI) were very expensive. The 6502 offered all the power of the others, for 1/10th of the price. You could find 6502s in the entire Apple // line (except the GS), the Commodore 64, the Vic-20, the Atari computers (except the ST), the BBC Micro & Acorn, the Atari 2600, the Nintendo Entertainment System, and many others. If you used a personal computer or played a videogame in the 1970s, 1980s, or early 1990s, there’s a very good chance it had a 6502 in it. It was arguably the first RISC chip, and the first to do pipelining. It has a clean, elegant instruction set and gets much more done with a clock cycle than anything else of the era.
I can’t ever leave things well enough alone, so while working on Veronica’s input system, I decided to really push my PCB etching. I wanted to see if I can find the boundaries of what the process is capable of, and perhaps identify the weak points.
One of the key elements of the process is that I print the UV exposure mask on to two transparency sheets, and double them up. I’ve been assuming that one layer of printer toner probably wasn’t enough to completely block UV. Ultraviolet light is sneaky stuff, capable of going right through blue tape, for example. However, doubling up the masks introduces a tricky element to the process- alignment. The two masks need to be lined up very very precisely, and this is difficult to do perfectly. So, it would be nice if I could skip this step. Can I?
Etching PCBs is a topic I’ve covered quite a bit already, here and especially here. You might think I’ve beaten this copper and fiberglass horse to death. Well, I don’t want to be a one-trick pony, so there’s one more thing to try. Lucky for you, I’ve run out of horse-themed metaphors so I’ll just get to it.
I’ve been wanting to try two-layer PCB-making for a while now, because the boards I’m making for Veronica are reaching complexity levels where the top-side jumper count gets a little nuts. I also have lofty dreams of running boards above 10Mhz, and those jumpers will quickly become a liability. Furthermore, building jumpers is quite a bit of work, so if I can eliminate that, it would be a real win.