Chris Ward's 6502 Computer


The Circuit
Parts List
EEPROM Programmer
Related Links

Back to my Home Page

Created by Chris Ward
Last update 15/05/2007

Update, 26/1/2002

There are two new photos available, thanks to the fact that I finally got round to buying a scanner.

Update, 10/10/2001

Unfortunately there's been no progress on the 6502 system over the past 5 months, mainly due to starting a new job and moving house.

If you've emailed me in the past few months on my address, please resend the mail to my FreeUK address as I have been unable to retrieve my mail from FreeNet.

Update, 13/5/2001

Some changes to the structure of the web site. I've stopped using frames, and I'm using Server Side Include to embed the menu on each page. That's why all the files now have the shtml extension instead of html.

Update, 10/5/2001

You might have noticed that I've joined the 6502 Web Ring. Use the buttons above to hop to the next or previous sites in the ring or go to the ring's index page on Yahoo.

The official URL for this site is now The old sites on the and servers may become out of date or disappear.

Update, 25/2/2001

Sorry it's been such a long time since the last update. The 6502 project is still alive, but I just haven't been able to spend much time on it during the last 12 months. These are the things I'll be working on when I can:

  • Hard disk filesystem - this will be integrated into the cc65 library, so you can write C programs that use fopen(), fread() etc.
  • PC keyboard interface - this can be done using a couple of 6522 outputs, and someone has sent me some 6502 code to do the job
  • Redesign web site and add new photos

I've updated the cc65 runtime library so that it works with cc65 v2.6.

Update, 13/5/2000

Version 2.4.1 of cc65 has been released, and a recompiled version of my runtime library is available.

Update, 26/3/2000

Anyone who hasn't already seen it, should visit the bulk order page at Mike Nabarezny is taking orders for high-speed (10MHz+) CMOS 65xx parts, and can offer us 6502 fans a good price by buying the chips in one bulk order from WDC.

A new Downloads page has been added. This contains links to the important downloadable files on my site, plus you can download the entire site in one ZIP file.

Update, 5/3/2000

Just wanted to let you know that the 6502 project isn't dead. I started a new job recently and I'm in the process of moving to a new town, so I haven't had much spare time. Normal work should resume in a couple of weeks, I hope.

Update, 23/1/2000

The EEPROM programmer software has been updated. New features:

  • 2764 and 27128 support
  • Raw binary file load and save
  • Slight redesign, with a new 'Status' box to let you know what's going on
  • Source code re-organisation, in preperation for ports to Linux etc.

Update, 5/1/2000

I've added a new page to the site - Programming - which discusses 6502 cross-development and describes my system BIOS and related software.

Update, 19/12/1999

As you can see, I've finally got round to redesigning the site. I hope you like it. Thanks to Phil Pemberton for the logo at the top of this page.

Update, 13/12/1999

For those interested in examining the source code for my 6502 system's BIOS, you can download it all in this ZIP file. Remember that it is still unfinished.

Update, 1/12/99

You can now get the schematic for the IDE interface from the circuit page. I'm still writing the filesystem code so it hasn't had a lot of testing, but reading seems to work and I don't see why writing shouldn't.

Recently I decided that I needed to split my program code into several files because it was getting too big. Unfortunately MAS65 doesn't have an 'include' directive to allow one file to be included within another. So, I have written a small pre-processor for MAS65 which supports the C-style #include, and might add other commands later. You can download it here: MAS65PP-0.1.ZIP.

Update, 16/11/99

The Real Time Clock board is finished and tested, and the schematic is now available from the circuit page. On the same board I've built a 16-bit IDE interface. I'll add the schematic when I've written the driver and tested it.

Update, 7/11/99

There was a missing connection to the 6551 ACIA which prevented it from receiving data. The schematics have been updated. If you've already built it: connect DCD (pin 16) to ground. Also connect CTS (pin 9) to ground (I forgot to put this on the original schematic).

The Dallas real time clock module is connected up and working, so my 6502 machine can now tell the time. I've also built the IDE interface, but need to write some software before I'll know if it works. You can expect details of these two add-ons in the near future (well, fairly near).

Update, 24/10/99

This week, I have been mostly eating... aluminium. I've finished drilling the rack case and mounting everything inside. It looks very professional, but you'll just have to take my word on that until I can get some pictures of it.

Things to look forward to:

  • IDE interface
  • Real Time Clock
  • RAM/ROM expansions
  • Removable Serial-EEPROM storage
  • New-look web site

I won't give any timescale for the above, but anyway - "Watch This Space".

Update, 29/9/99

I've added a new page - Photographs - with some (low quality) photos of the 6502 system and EEPROM programmer.

Support for 28C17 devices has been enabled in the programmer software, but I haven't got any chips to test it with at the moment. I might also add support for the 28C256, a 32kB EEPROM.

Update, 7/9/99

I've finally finished my university course! Now I can spend more time on my 6502 system, until I get a job...

My stripboard layout files are now available to download from the circuit page. You need Traxmaker 3 to view them.

Update, 3/9/99

I've been changing all my graphics from GIF to PNG format. This is because (a)PNG is a technically superior file format and (b)there is a lot of silly talk about patents surrounding the GIF format. To find out more, go to Burn All GIFs Day and the PNG Home Site. All modern web browsers and graphics programs should support PNG files, but I'll keep the GIF versions of the schematics available for a while.

Update, 20/8/99

Another little update to the programmer software. You can now read from a 27256, and the base address feature has been fixed.

Update, 18/8/99

OK, I found a bit of spare time to work on the EEPROM programmer software. The new version is available for download now on the Programmer page. What's new:

  • Page mode programming works! This gives a good speed increase.
  • Added a Read button which reads the contents of a chip into memory.
  • Added a Save button to save memory contents to a Hex file.
  • Added facility to change base address, so you're not limited to having your ROM mapped at $E000 (I haven't thoroughly tested this yet).
  • Printer port selection (LPT1/LPT2) should work, but I can't test it properly as I only have one port.

The 28C64 is still the only device supported, but thanks to some major reorganisation of the source code it should now be easier to add support for other devices. Stay tuned...

Update, 6/8/99

I just wanted to say a big 'Thanks' to everyone who's e-mailed me about the 6502 board and/or the EEPROM programmer. It's great that people are interested in building these projects, and I'm also grateful for the tips and ideas that some of you have given me.

As I'm quite busy with my university work at the moment, I don't have much time to work on the 6502 project or this web site. When that's finished, in three or four weeks, I will be able to redesign these pages (I'm beginning to think that nav-bar looks really ugly), finish the EEPROM programming software, and come up with some new add-ons for the 6502 board.

In the meantime, thanks for your support and good luck with your own 6502-based projects. Oh, and I'll try to get some photos of my 6502 system for you.

Update, 6/7/99

The EEPROM Programmer page has now been updated with the new schematic, and you can download the programming software and source code. At the moment it's pretty much limited to 28C64 devices, but certain types of 28C16 should work if the programming software is updated.

If you've got Visual C++ then feel free to download the source code, work on it, and send any updates to me.

Update, 1/7/99

The circuit page has been updated, so the textual description of the circuit matches the new schematics. I've also made a slight fix to part 2 of the schematic (6502-2.fig and 6502-2.gif) - I'd forgotten to draw the data bus connection for the LCD.

Later that day... I've now added the schematic for the matrix keypad interface.

Update, 30/6/99

It's my birthday! Not much else to report - I should have the updated EEPROM Programmer stuff ready soon.

Update, 26/6/99

Finally I've finished drawing the updated schematics. You can find them on the circuit description page. You'll have to wait a little bit longer for the new EEPROM programmer.

Update, 5/6/99

I've now attached an infra-red receiver. Amazingly simple - it's a three pin device (Kodenshi PIC26043SM) which gives you an active-low TTL output when it detects an infra-red signal. Fortunately, it works with the cheap remote controls I got from Bull Electrical. Now I just need to write some 6502 code which decodes the incoming IR pulses.

Update, 1/6/99

Yesterday I added the LCD interface and the whole thing stopped working! Today I found a shorted track, fixed it, and now it works great!

It turns out that my LCD is actually 40x1 characters, not 20x2. Never mind - it works, and now the computer displays "Memory test... OK" when I switch it on (I'm hoping not to see the "Memory test... fail" message).

Click here for the current test program. I'll soon need to split it into multiple files to make it more manageable.

Update, 1/5/99

Check out this great new site:

The board is now running at the original planned speed of 2MHz, thanks to a new oscillator circuit based on Harry's design. I've also changed the SRAM timing and replaced the SRAM chip, so hopefully that memory test won't fail any more. Oh, and the RS232 interface is working, so the 6502 can now talk with my PC.

Things to do:

  • Mount it all nicely in a case. I've got a very cool (and expensive) 19 inch rack-mount case for this purpose. I might need to get someone to drill the front and rear panels, as I'm no metalwork expert.
  • Add some extra circuitry to interface to a 20x2 character LCD display. I managed to get one of these really cheap.
  • I've also recently acquired ten remote control handsets (for just £3!), so I'd like to make an IR receiver circuit.

As ever, I'm pretty busy at university. However, I will try to update this site soon with some up-to-date schematics (including the new EEPROM programmer) and maybe some photos. Stay tuned.

Update, 18/2/99

I've just recently started working on the project again after having done nothing since December. The RAM test is still flaky - sometimes it works flawlessly (even at 1MHz) but other times it keeps failing. I've had an idea though, from studying André Fachat's Gecko schemetics. I think I need to synchronize the SRAM with the phase 2 clock pulse. I've worked out in my head what modifications I need to make to the board, and I think it should be quite simple. I'll try it in the next few days.

I've made a new EEPROM programmer which can read as well as write. Also, it should deal with a few chips other than the 28C64C (in particular, I want it to read 27256 EPROMS). The schematics for this will be uploaded once I've sorted out one minor (OK, major) problem.

And finally, I've hooked up a 16-way keypad. A simple interface board sits between the keypad and one of the I/O board's 6522s. I just need to write some software for it now. Soon, I'm going to have to start seriously planning the structure of my BIOS and/or operating system.

First report, 13/11/98

The initial construction is complete. I have made it on stripboard, against the advice of some of my electronic engineer friends. The layout looks very neat, I must admit, but isn't very compact so I had to make two boards. One has the CPU, clock, reset circuit, address decoding, RAM and ROM. The other has the two VIAs plus the ACIA and MAX232, so is basically an I/O board. Three pieces of IDC cable connect the two boards. Oh, and the programmable oscillator is on a tiny seperate piece of stripboard because I don't intend this to be a permanent part of the computer. I've got a jumper to disable the 1MHz oscillator module that sits on the main board.

The power supply I'm using is a PC-style 60W SMPSU, which I got from Greenweld for about £3.

After adding the Epson programmable oscillator I had some success at running the computer at about 100kHz, and occasionally at the full 1MHz. Unfortunately, it has now returned to being lifeless. This seemed to coincide with putting a new program into my EEPROM, so perhaps I should spend some time checking the EEPROM programmer. It would be useful to modify it so that the PC can read the contents of the ROM back to verify that it was programmed correctly.

The current test program performs a simple RAM test, and shows its progress on a set of 8 LEDs connected to one of the 6522s. Once this is running reliably I will try interfacing a keypad and LCD display, and then start writing some sort of operating system.