My6502 (part zero)

I don’t maintain a “bucket list” – it always seemed a bit pretentious. Also, I’m quite prone to fads and starting hobbies on impulse, so for me to keep a list of things I’d like to do would be like nailing fog to a wall.

But when I ranted about bucket lists some years ago, I had a think about the sort of things that appeal to me … and I realised that my list wouldn’t have much in the way of visiting exotic locations or swimming with dolphins. The things that give me the greatest sense of achievement are the things I’ve made.

And in my “things I want to make before I die” list, “build my own computer” is always in there.

And when I say “build”, I don’t mean buying motherboard, processor, graphics card, and then fitting it all together like grownup Lego … I mean really build one. Circuit design, digital logic, slaving over a hot soldering iron, writing my own operating system, swearing my little head off at it when it doesn’t work and cheering when it does.

But that’s only possible for me because I don’t want to build a modern computer -  I want to build an 8-bit computer.

I’ve always had a lot of love for the BBC micro. It’s unashamedly nostalgic thing. You never forget your first love, do you? For geeks it is no different: we never stop loving our childhood computer.

I remember messing with BASIC when I was young and getting to a point in the User Guide which was just too complicated for me. What is a “memory map”? And what’s with these numbers that also have letters in them? And what’s this “assembler” stuff?

Thirty years and a lot of fat later, and I’m a software engineer who works with quite high-end computer hardware. I understand hexadecimal and machine code. But my compiler does all the code optimisation for me – I’m really quite insulated from the inner workings of the modern PC. But an 8-bit computer with 32K of RAM, running at 2MHz … feels like something a mere mortal like me can properly understand. I can read the circuit diagram for that. I can repair or upgrade it without needing an electron microscope to see the components. And I feel like I can finally conquer the stuff that bewildered me all those years ago. Thirty years after everyone else … but better late than never, eh?

To build a 1980s computer today is really not the same as building one in the 1980s! Components are easy to buy, documentation and notes are plentiful, and equipment (like oscilloscopes) are cheap.

So I’ve put this off long enough: I’m going to have a go!

Normally I like my projects to have an ultimate aim – otherwise, how can I know when I’m finished? But this project is going to be a learning exercise. I’m planning on starting simple, and just adding on whatever I fancy trying next.

But if I’m dreaming of the computer I’d most like to build, I suppose it would be one that is vaguely BBC-micro compatible but with the unnecessary circuitry omitted (no need for the cassette-player port, for example) and some more modern components used to make it that little bit cooler (like a more modern display, or SD cards for storage). But that’s a dream – realistically, I’d happily settle for something that just sits there and makes LEDs flash in an impressive manner.

Stages of the project will appear on this blog as I document them, just as a form of narcissistic note taking. I’m unlikely to go as far as an in-depth explanation of Von Neumann architecture, or foibles of the 6502 (unless they’re relevant). Besides, others have already done it far better than I could. Here are some of the sites I’ve been reading at work during my lunch hour, in preparation:

Quinn Dunki’s Veronica project – an excellent, comprehensive and friendly blog.
Grant Searle’s Simple 6502 Computer
Wilson Minesco 6502 Primer
Nick Morgan’s Easy 6502

Anyway, that’s some preamble. Stay tuned for gratuitous pictures of full-frontal, naked electronics.

[Part 1] [Part 2] [Part 3] [Part 4] [Part 5] [Part 6] [Part 7]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>