During the COVID lockdowns I revived an old hobby: fiddling with electronics. I discovered the YouTube channel of The 8-bit guy. and check out some videos of Ben Eater. From that first “Hello World” video, and playing with my old C64 and studying its great documentation, I slowly designed my own complete 8-bit computer.

I designed the whole thing from scratch, including:

  • An assembler
  • An eeprom programmer (both client software, firmware and hardware)
  • A virtual machine
  • The board itself of course

Of course, I only used open source software on my trustworthy Linux laptop:

  • Python for most client-side programming (assembler, eeprom-programmer)
  • C for the virtual machine (because I found a good 6502 emulator written in C)
  • C++ for all Arduino firmware (eeprom-programmer, clock timing, monitoring)
  • My own 6502 assembler dialect for the board’s software
  • KiCAD to design the PCBs
  • Visual Studio Code to do all coding in, with the PlatformIO plugin for the Arduino work

The board I have now is version 1.0 (it has a few bugs in it and missing some parts; who needs a clock circuit anyway, right?!), but current specs will probably not change much:

  • 6502 processor, running 4 or 8 MHZ
  • 32k RAM
  • 32k ROM
  • 2 parallel 8 bit input ports
  • 2 parallel 8 bit output ports
  • A display connector (this makes the output ports unusable)

All code can be found on my GitHub page.

Updates

  • Larger Screen
    I purchased a larger screen, so Castle Runner can be bigger and graphic-er than ever! It has a whopping 320×240 pixels, all in beautiful black and white. This will lead to an ever better and more immersive experience when playing this wonderful game. It took a while to get it… Read more: Larger Screen
  • Interrupts!
    For the next generation of my home-brew-6502-based-castle-runner computer I decided I need interrupts for screen updates. This came up after upping the frequency of the computer. Running the thing on 8MHz caused the screen updates to go too fast and not very smooth. So, the next update will be a… Read more: Interrupts!