Electrical – What are the required parts for an 8-bit computer

computersmicrochipmicroprocessortheory

I've decided that I want to build my own 8-bit computer with the WDC 65C02 CPU. The only problem I have, is that I don't know what the requirements to build one is in terms of other chips and components. With a modern computer, you get a motherboard, your CPU, RAM, GPU and storage disks and assemble it.

However with an 8-bit, I know that I need a CPU, EEPROM, SRAM, and thats it. I keep seeing Address Decoders, Asynchronous Communications Interface Adapters, and Versatile Interface Adapters. Each tutorial and design I see seems to incorporate a few or all of these things and I can't really find any documentation for them.

I know how I'm going to program it, what RAM and ROM I'll need and how I'll map it all, but apart from that,

What are the most basic requirements for a functional 65C02 computer with a PS/2 or alike keyboard, (hell, any keyboard for that matter), text and graphical video capabilities (such as VGA) and some form of sound?

Also, is there a certain model of compatibility for the 65C02 or will virtually anything work?

Best Answer

The absolute minimum of parts you need is just the 65(C)02 CPU and a handful of resistors. It's possible to pull the data lines up/down to always read as a single value (e.g, 0xEA, the NOP opcode), causing the processor to run that instruction endlessly. Information on this trick can be read here.

Running any real program will require somewhere to store it, though. So you'll probably want an EEPROM.

Any meaningful program will need some RAM, so you will probably want some SRAM. Selecting between the two will require some sort of address decode logic. There are a number of ways to implement this, but probably the easiest is to use logic gates on the top few address lines to generate chip enable signals for the SRAM and EEPROM chips. (For instance, for 32K RAM / 32K ROM, A15 could be used directly as a chip enable for ROM, and ~A15 for the RAM.) More complex address layouts may merit the use of a PAL for address decode.

You will also probably want some way of communicating with the world. How you do this is up to you; some easy options include:

  • An 8-bit register with some LEDs hooked up to it
  • Serial communications, using the ACIA (65C51)
  • GPIO, using the VIA (65C22)
  • An HD44780-compatible LCD

Any of these options will require that you reserve a range of memory for the peripheral in your memory decode logic.