The EEPROM programmer wouldn't be a problem if they weren't so expensive (unless I've been looking in the wrong places). For this I will probably use one of the designs I've seen posted here or elsewhere.
I think you should look at some of the flash EPROMs that are programmable in-system, i.e. without a programmer and with 5V power supply only. I used that here: http://www.6502.org/users/andre/csa/gecko/index.html
Not ideal for initial programming though, but if you can bootstrap with a pre-configured EPROM, you're set
The EEPROM programmer wouldn't be a problem if they weren't so expensive (unless I've been looking in the wrong places). For this I will probably use one of the designs I've seen posted here or elsewhere.
Looking around the web, I see that www.mcumall.com has a ROM-only (EEPROM, EPROM, Flash) programmer for $99, and a few universal models (EPROM, EEPROM, Flash, MCU, GAL) for < $150. The universal ones look pretty good because they are a bit limited, but I don't see myself needing anything more complex than an Atmel AVR or a 22V10 for my hobby needs. I have no idea if they're actually any good though Anyone familiar with them?
Some have said the Willem universal programmers work well. They go cheap on EBAY but you're buying from China, so no support can be expected.
Check EBAY auction #200160700707 for an example.
Also, many programmers (new and used) on EBAY, search "EPROM programmer" for a list.
I paid $55 for my programmer on Ebay three yrs ago. It does ROM + some basic 16V8 & 22V10 GAL's. Has worked well although I can't find it for sale on EBAY now.
I don't mean to say anything bad about your choice of tools but Needham Electronics doesn't sell the EMP10 anymore, I couldn't fine any on e-bay, and the cheapest substitute listed on Needham's web site is $200.
The kit I'm planning on buying to make my first 8 bit computer costs $20 than that.
If I stick with the hobby, a $200 programmer is not unreasonable but when just starting out that is a lot of money.
That programmer only does serial EEPROM's. If you are looking to program parallel eprom and eeprom, (27xxx and 28xxx), then this won't work for you.
Just to add a little more info, the processor cannot read a serial memory of any kind directly. Even if it could, such memory would be much, much too slow-- especially the 24xx family which uses the I²C interface instead of SPI or Microwire like the 93xx family. There has to be a parallel ROM of some kind for the processor to get going. Once it's up and running, then the program running from parallel memory can have the processor operate an I/O port to read the serial memory.
Lost,
If your are interested, I can supply you with one of Daryl's SBC-2 PCB's and a W65C02S for free. I am in Nova Scotia, so mail delivery would not be that long. If you are interested, please send me your email through
" messages "
Wally
Lost wrote:
I think that I am one of the target market for your starter kit. I've been lurking on this board for about 6 weeks now (as well as several other 6502 places) because I've been toying with the idea of trying to design my own computer, as many of you already have. I have take a couple of electronics course in college and can solder somewhat but this will be my first attempt at putting a digital computer together.
With the inexpensive supply of microcontrollers with metric buttloads of I/O pins available for pennies on the dollar now, you may want to not go with a real E(E)PROM, but instead, a microcontroller whose sole purpose is to monitor a RESET line, and which interfaces to the CPU's bus, including the CPU's own RESET.
The idea is simple: when RESET is asserted, the microcontroller tells the CPU to butt-off the bus for a bit. The microcontroller then asserts its I/O pins onto the bus. From here, it then copies a binary image into upper RAM. When the copy is done, it releases the bus (putting all I/O pins into 3-state or input mode), and then negates the CPU's RESET line. The CPU will then fetch its bootstrap from RAM.
The upper portions of RAM can be write-protected optionally by simply refusing to assert _CS or _WE during a write-cycle. If you can control this "kickstart" chip (named after the Kickstart boot disk system used in the Amiga 1000, which was similar, but read from floppy image instead!) from a VIA chip some how, you can even control whether it is write-protected from the 6502/65816 or not.
This is basically how the Kestrel-1 worked (although, I didn't have a microcontroller at the time, and I drove the address bus from the PC via a serial shift-register arrangement), and it worked amazingly well.
With the inexpensive supply of microcontrollers with metric buttloads of I/O pins available for pennies on the dollar now, you may want to not go with a real E(E)PROM, but instead, a microcontroller whose sole purpose is to monitor a RESET line, and which interfaces to the CPU's bus, including the CPU's own RESET.
The idea is simple: when RESET is asserted, the microcontroller tells the CPU to butt-off the bus for a bit. The microcontroller then asserts its I/O pins onto the bus. From here, it then copies a binary image into upper RAM. When the copy is done, it releases the bus (putting all I/O pins into 3-state or input mode), and then negates the CPU's RESET line. The CPU will then fetch its bootstrap from RAM.
The upper portions of RAM can be write-protected optionally by simply refusing to assert _CS or _WE during a write-cycle. If you can control this "kickstart" chip (named after the Kickstart boot disk system used in the Amiga 1000, which was similar, but read from floppy image instead!) from a VIA chip some how, you can even control whether it is write-protected from the 6502/65816 or not.
This is basically how the Kestrel-1 worked (although, I didn't have a microcontroller at the time, and I drove the address bus from the PC via a serial shift-register arrangement), and it worked amazingly well.
What did you do with the other control signals (r/w, phi2)? As I understand it these aren't tristated by the bus enable input. Did you gate them thru an external logic device?
On the 65816, at least, the R/W line is tristated. You're correct that Phi2 is NOT, however.
What I did was to drive the bus for a period of time known to be longer than a single clock cycle. So, I might let 5 cycles go by before moving on to the next location.
(NOTE: Verify your writes, just like you would with EEPROM programming! You could alter the bus while the clock is high; if you do, you'll corrupt the RAM image. But, in my experience with the Kestrel-1, this was only rarely a problem.)
With a fast enough microcontroller, though, you could drive the Phi2 line directly or through external gating. LordSteve has done this in one of his projects, as I recall.