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?

  • \$\begingroup\$ Need a possible tag change? \$\endgroup\$ – finnrayment Sep 30 '16 at 3:31
  • \$\begingroup\$ might need more research skills than a tag change. it's a major learning curve but well documented \$\endgroup\$ – Sunnyskyguy EE75 Sep 30 '16 at 3:38
  • \$\begingroup\$ @TonyStewart I beg your pardon? \$\endgroup\$ – finnrayment Sep 30 '16 at 3:39
  • 1
    \$\begingroup\$ study the Apple ][ books.google.ca/… \$\endgroup\$ – Sunnyskyguy EE75 Sep 30 '16 at 3:41
  • 4
    \$\begingroup\$ 6502.org/homebuilt \$\endgroup\$ – Sunnyskyguy EE75 Sep 30 '16 at 3:54

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.

  • \$\begingroup\$ I don't really understand what you mean by the A15. I can't find any info on it either. :/ I'm looking up how to "decode addresses" now, but in the mean time, why the hell does it matter? \$\endgroup\$ – finnrayment Sep 30 '16 at 12:52
  • \$\begingroup\$ Also, what could I use to create "text and graphical video capabilities (such as VGA) and some form of sound?" \$\endgroup\$ – finnrayment Sep 30 '16 at 12:54
  • \$\begingroup\$ A15 is one of the address lines of the 6502 -- specifically, it's the topmost one, so it's high for addresses in the top half of memory. Address decoding is needed so that your system knows whether a given read/write operation should be routed to RAM, ROM, or a peripheral. \$\endgroup\$ – duskwuff Sep 30 '16 at 17:24
  • \$\begingroup\$ As for graphics and sound, get a basic system working first. One step at a time. \$\endgroup\$ – duskwuff Sep 30 '16 at 17:29
  • \$\begingroup\$ Ah! Thanks for the explanation. I know I should get something working first, I'm just trying to plan ahead of what chips to buy. \$\endgroup\$ – finnrayment Sep 30 '16 at 22:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.