W27c512 Programmer

39 views
Skip to first unread message

Juliano Nichols

unread,
Jul 25, 2024, 1:51:32 AM7/25/24
to saciricic

Using three 573 registers for addressing the 16 address lines of a 64K ROM the #Relatively Universal ROM Programmer should be able to handle most ROMs, even using a development board with a modest pin count.

w27c512 programmer


Download File >> https://geags.com/2zMWV6



It comes with a boost regulator to provide 14V erasure voltage (actually anywhere from 4.5->36V-ish) and 12V programming voltage for the more old school varieties, but it's also meant to be a cheap way to program more friendly ROMs like the typical 5V programming ones.

Since there are quite a lot of different ROMs out there that share pin counts, but might not share timing details etc, the software part is currently an exercise for the hacker using it. 6502 assembly routines provided for the basics.

Who would've thunk a 9$ E(E)PROM programmer would be popular? :)

I guess it does help that it now has actual software that'll take a ROM file via serial and burn it - and even has a few standalone features for identifying a ROM etc.

Arduino seems like a reasonable platform to write some code for, but on the other hand it might be a lot of fun to make the #65uino self-replicating by letting it program it's own ROMs - especially since it has no problem reading out the whole ROM that's currently in the socket - but maybe thats more a log for that project :D

Nice project, i need a ROM Programmer for myself and i am kind of hopeful on this one. However, in the schematic you connected D0 and D1 of the ROM to Pin 15 and 16 of the MCU/Arduino. Iguess these pins are required for the USB connection to the PC. I guess you can work around that in software, but maybe its a good idea to leave pin 15 and 16 of the arduino open.

Yeah, I don't really see any way around that - on the Arduino Uno/328p the only fully available 8 bit port is PORTD (D0->D7) and the performance hit of not using it is that we have to do bit juggling with half of another port for instance.. Reducing speed drastically.
Setting "PORTD = value" is very fast and we can still use the serial port via USB - just not at the same time.
At least we won't have to unplug the RUROMP(better acronym pending) to reprogram the Arduino.

Lets assume it takes 100 cycles to write one byte to the EPROM. The maximum amount of bytes you can write is 2^16 (all available adresses), then it takes roughly 6.5 million cycles to write all the date. At a clock rate of 16MHz (typical Arduino clock) this takes 0.4 seconds.

I think you missed the switch to parallel registers - one byte is just load lower address byte, clock, load data byte, clock - and every 256 bytes also a higher address byte clock. Much more efficient - and the goal is also to make it usable on my 1 MHz #65uino :)

In fact thinking a bit about it, muxing address and data on the bus isn't that much more complicated. Instead of the 595s you'd have a couple of latched register chips, and instead of the 595 drive lines you'd have the mux control lines which would be at minimum: data/address, low/high byte, and load.

Thanks you for the input! The idea with using the 595's instead of 590's is "fast" arbitrary address selection and using a single MCU register for data increases data speed and makes it bi-directional.

So, muxing by using a single port on the mcu and three registers for data/address? Or another for control bits, like VEP/VPP enable?
I guess that needs another pin for data bus latch+enable. Hmm.
That would also require another input register for reading the ROM, right?

You only need a couple of octal latches for the address, similar to the couple of octal shift registers. The data lines of the EPROM can be driven directly by the Arduino. Their state only matters at the time you pulse the program pin. They need to be bidirectional anyway so that you can read back the EPROM, just like in the shift register case. The other lines like program voltage enable are already needed.

Additional speedup can be obtained by noting that the upper byte of the address needs to be changed only after 256 bytes of data because only the lower byte of the address changes. So one low address byte load 255/256 of the time.

In fact this "caching" could even work for the low byte. Say the EPROM burning protocol does verify after write. For the read-back, there's no need to change the address at all. All this can be encapsulated in a routine in the burning software.

@Ken Yap Yes! That should make it way more efficient. Especially in 6502 assembly on the 65uino.
It's a little bit frustrating the only whole port available on an Arduino Uno footprint is the same port that uses the two lower bits for serial data (PORTD)..
For the 65uino it's easy to swap the software serial pins to use the other port (usually occupied by i2c SLC/SDA) but for an Arduino Uno with hardware serial on port D, I'm not sure what the best solution is.
Eventually I expect the data for the ROM to come from somewhere off board ;-)

I think it's not so bad if you can arrange to use the same top or bottom nybble of two ports, then in betwen the port writes you do a swap nybble. Anyway the AVR is fast enough. The data is definitely a problem for the Arduino as the onboard RAM isn't enough if one is going to burn the whole 64kB EPROM, so some sort of comms with a host computer will be needed to send a chunk at a time. Or a SD card.

This is an excellent idea. I wonder how much slowdown having the load each address serially imposes on the programming time. I suppose a hobbyist shouldn't mind waiting. I wonder how many more chips would be required to put a counter on the board, then the software would just reset the counter at the beginning then step through each address.

I want to re-program some BIOS chips from my older 386 and 486 motherboards that does not have "flashable" EEPROM chips.
In some cases the BIOS is no longer functioning and in other cases I want to upgrade the BIOS revision of the motherboard.

The link provided suggested that the TL866CS is the one to use.
Where can I find "blank" 28-pin BIOS chips (the ones commonly used on early to mid 90's 386 & 486 motherboards)?
I suppose I cannot use an old AMIBIOS 386DX chip (pulled from a defective motherboard) that is not a "flashable" chip? Those must usually be erased with a UV light?

I beg to differ. What keropi wrote is true in almost all cases but
once in a blue moon, you might meet a device that simply will *not* take eeproms instead of the UV erasable eprom equvalent***. I am no electrican, I only experienced this along the way... So having a few window-type eprom chips will not hurt either.
(when you cannot find the compatible eeprom, it is all the same)

Yes, very rare are the problems with the higher voltages necessary to program the UV type chips.
I have tried three modernish EPROM burners, two of which are rather cheap Chinese makes but all can do the writing perfectly IF the chip is in good condition.

If you are looking to replace larger eproms like 27C010 or 27C020 then good eeproms equivalents are the 27SF010 and 27SF020.
As a rule ALWAYS compare datasheets and pinouts/rom arrangement to be sure you are getting a suitable eeprom replacement for your eprom.
Some of the smaller eproms might have different pinouts and that could lead to issues...

Once I've bought the necessary EPROM burner & EPROM chips, then I might ask for some additional information how to use the software that is bundled with MiniPRO TL866CS.
Based on some Youtube reviews and videos, it would appear that the bundled software already contains a list of the most common IC chips.
So, the way I see it, you just select the IC that you need to "burn" and it will "configure" the settings for you for that particular IC.
I did notice in one video how the reviewer changed the voltages on one of the IC's to 5V (it was set a bit higher), but I'll have a look at this more closely when I get the equipment.

PS: What's the difference between W27C512 & M27C512? The latter appears to have an exposed die, but not the former. I guess they are they both "flashable" EPROM chips? One is just exposed and the other one is not, which means I can also erase the exposed one with a UV light?

Yeah you are correct, you select the correct IC on the programmer software, it auto-configures and then you work with it. For UV eproms the writting voltage will always be bigger than the 5v read one... don't pay attention to these settings, you don't need to mess with them ?

W27C512 is an eeprom, meaning it's electrically erasable - thus needs no "window" for the UV light to erase it , the programmer does the erasing
M27C512 is a normal UV erasable eprom, you need to expose it to UV light to erase it's contents

Yes, I'll probably go for the EEPROM (electrically erasable) one, since I can then easily erase and reprogram the IC, if I stuff up the programming.
I've browsed a bit more on Youtube and the software seems pretty straight forward to use (for someone like me who just wishes to program another BIOS chip).

I finally managed to obtain a TL866CS burner and tested it briefly. Works fine with the W27C512 EEPROM chips.
Just one question: On the TL866CS, how do I fill the whole 64kbytes if a BIOS is only 32kbytes? Must I tick something on the software that I'm using?

There might be, but I haven't seen anything obvious that will enable me to write out the same data until it fills up the whole 64kb.
There is an option to "write blanks" and also a "starting address", but I wouldn't know what to specify in any event, since my hexadecimal knowledge is fairly limited ?.

What keropi explained is quick and easy to do and pretty straight forward.
If I wanted to burn 100 EEPROM chips, then I might say having such an option will be useful, but since I'm only going to use the EEPROM burner once in a while, it's not a big issue for me.

(Note: the LPT port of PC MUST set to ECP or ECP+EPP during BIOS setup. To enter the BIOS setting mode, you need press "Del" key or "F1" key during the computer selftest, which is the moment of computer just power up.)

4a15465005
Reply all
Reply to author
Forward
0 new messages