Chris Ward's 6502 Computer
Created by Chris Ward
Last update 15/05/2007
There are two new photos available, thanks to the
fact that I finally got round to buying a scanner.
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 freenet.co.uk address,
please resend the mail to my FreeUK
address as I have been unable to retrieve my mail from FreeNet.
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.
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
http://www.chrisward.uklinux.net/6502/. The old sites on the freeuk.com
and freenetpages.co.uk servers may become out of date or disappear.
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.
Version 2.4.1 of cc65 has
been released, and a recompiled version of my
runtime library is available.
Anyone who hasn't already seen it, should visit the
bulk order page at 6502.org. 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.
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.
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.
I've added a new page to the site - Programming -
which discusses 6502 cross-development and describes my system BIOS and
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.
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.
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:
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.
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).
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".
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.
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.
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.
Another little update to the programmer software. You can now read from a
27256, and the base address feature has been fixed.
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...
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
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.
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
It's my birthday! Not much else to report - I should have the updated EEPROM
Programmer stuff ready soon.
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.
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.
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"
Click here for the current test program. I'll soon
need to split it into multiple files to make it more manageable.
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.
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