Everyone is having a go at building their own 8-bit 80s-era microcomputer now, and [Petri] thought he would throw his hat into the ring with ERIC-1, a homebrew, 6502-based computer that’s running at about 2MHz.
We’re about 30 or 40 years ahead of the game compared to the old-school 6502 designs, and [Petri] decided to capitalize on that. Instead of a separate ROM, VIA, and other peripherals, [Petri] is connecting a microcontroller directly to the data and address pins. This is a technique we’ve seen before, and [Petri] is doing it right: the micro and 6502 share 64k of RAM, with the ROM stored in the micro’s Flash. Video (PAL in this case) is handled by the ATMega, as is clocking and halting the CPU.
There were a few changes [Petri] made along the way to make this microcomputer a little more useful. One of the biggest changes was switching out the old NMOS Rockwell 6502 with the modern CMOS W65C02 from Western Design Center. The CMOS variant is a fully static design, keeping the registers alive even if the clock is stopped and making single-stepping and halting the CPU easier.
The CMOS variant also has a Bus Enable (BE) pin. Like similar pins on later, more advanced processors, this pin puts the address, data, and R/W pins into a high impedance state, giving other peripherals and microcontrollers the ability to write to RAM, peripherals, or anything else. It’s a handy feature to have if you’re using a microcontroller for everything except the CPU.
It’s already a great build, and since [Petri] has the skills to program this 8-bit ‘duino game, he’s sure to come up with something even better for this computer.
Oh, if you’re looking for something even cooler than a 3-chip 6502, there’s a bunch of stuff over on hackaday.io you should check out. Everything from 4-bit computers built from discrete components to dual AVR board can be found there.
This is great Brian. I always like the articles you present.
I’m slowly laying down the theory and background work for achieving something like this eventually! :) Always inspiring! Thanks!
You should definitely go for it, it’s a lot of fun! It’s actually surprisingly simple to get the 6502 CPU running. In addition to the CPU you only need a few passive components and an oscillator to get it running NOPs in an endless loop.
Here is a very early version of ERIC-1, a bare bones setup with a 6502 and a single stepping circuit built on a breadboard (the lower breadboard has the 6502 and single stepping circuit, the upper one is for running the four digit hex display):
https://www.youtube.com/watch?v=NhJ_tuJbN8s
Will check that out, everything helps! Thanks very much.
I have been working on something similar. The same basic concept but with a Z80. I see lots of these with a 6502 and after just now looking at the timing diagrams for the 6502, I can see why there aren’t many with a Z80.
The 6502 timing is very simple. It looks to be single cycle. The Z80 is variable cycle lengths. I have been nose down in timing diagrams for days and still not a clue lol. I want to mix a Z80 @ 20Mhz with an atMEGA1284 @ 25MHz (overclocked) and a CPLD driving Video @ 50MHz and shared SRAM @ 100MHz. Even deciding on a video mode is a challenge.
I have learnt enough VHDL to do the Video (VGA 800×600) in CPLD now I have to connect the dots with all the different frequencies. I really can’t see this working on a breadboard though so I have to test as much as I can in parts before try to make the first prototype PCB.
I will be putting what I have done on hackaday.io in the next week or so. Have a look and ask any questions about what is easier to do as I have made enough of the mistakes already to know what not to do lol. Also there are many other problems like getting older chips to work with newer chips that have different voltages and sourcing parts.
What I want to do differently to others is – more MIPS, more graphics resolution, more RAM, 0.1 Inch where possible and more standard IO and storage devices: VGA, PS2, SD, MIDI. It will be based on the Z84C0020 Zilog Z80 CPU.
wonder how long it will be before the youngsters rediscover the S100 bus.
Which S100 bus?
/standards…
mmmmm, took me a week to read _every single page and schematic_ at http://www.s100computers.com/ couple of months ago :D
Building vintage computers of your youth dreams – that is a nice hobby for retired engineers.
Where can I get a real C compiler for the 6502?
I heard cc65 is pretty good:
http://cc65.github.io/cc65/index.html
I’m using the ca65 assembler that comes with the C compiler to write the OS for ERIC-1 and I’ve got no problems with it so far.
Western Design Center has a C compiler and assembler that is for the 65C02 and 65C816. It can be purchased on-line at 65xx.com.
sdcc, but its linker is garbage (leaves dead code in binary)