Okay, so the headline is overstating matters a little, but this thing is making progress.
Here’s a quick series recap: I decided to brew my own 6502-based computer. Rather than start from nothing, I built a kit, with partial success. And I’ve been following along with Ben Eater’s 6502 project on YouTube. Both taught me a lot.
However, even before I’d finished either of those projects, I’d decided my machine would differ in a few, if minor, ways. Most of this came down to the address mapping.
Before I could follow along with the most recent (at time of writing) of Ben Eater’s videos (below) I needed to do some work.
Ben had the 6522 versatile interface adapter (VIA) chip mapped to $6000 whereas I needed it at $A000. I set up my decoding using one gate of a 74HC00 quad NAND chip as an inverter and a 74HC138 decoder, which gives me decoding for eight 1KB address spaces, starting at $A000. See my post on the decoding for more details. To keep things quiet and tidy, all the unused inputs on the 74HC00 have been tied high.
The 6522 VIA has two chip select pins – one active high and one active low – and both need to be set for the chip to work. I connected the output from the 74HC138 that represents address $A000 to the active-low pin. That’s really all the decoding I need and I could have tied the other pin high – in fact, when it comes to creating a PCB, that’s probably what I’ll do. But for the time being, I’ve connected it to A13 on the address bus.
I’m glad to say everything worked right off the bat – not something I get to say often. The machine now happily runs at 1MHz.
I also needed to refactor Ben’s code, because I’m using the Beebasm assembler. Rather than post it here, I’ve now created a GitHub repository for the Zolatron project.
This machine, then, isn’t quite like Ben’s. It has a different address map and different ways of decoding. It’s basically the bare bones of the machine I set out to create, but something from which I can build. I felt justified, then, in changing the message from ‘Hello, world!’ to ‘Zolatron 64’.
After taking the picture at the top of the page, I added a 1MHz oscillator. But I’ve wired it in such a way that I can disconnect it by pulling one jumper cable and connect an external clock (ie, my function generator) if I want the machine to run slowly again.