I need to duplicate a number of EPROM. I can read the data off it and I can buy new EPROM. I have the reader/burner but I don't have the UV eraser do I have to erase new EPROM before burning new data onto it?
Hello there,
The ones i got years ago were blank with code 0xFF for every byte before programming. This allowed me to use a trick to allow me to use the UVEEPROM without having to erase it, even if i updated the software.
The trick works with CPU's that use code 0x00 for a 'nop', or data EEPROMs.
You start by placing the run code not at address 0x0000 you place it at 0x8000 and place a jump instruction at location 0x0000 which may take two or more bytes. Let's say it takes 2 bytes for a jump instruction. When the CPU starts up it goes to location 0x0000 and starts to execute the code. Because there is a jump instruction there, it jumps to 0x8000 which is here the actual needed instructions start.
Now when you update the code, assuming it is not too long, you place the new code at 0x8200 for example, then change the first two bytes to code 0x00 and the third byte to the jump instruction to jump to 0x8200. When the CPU starts the next time, it jumps to 0x8200 with a slightly longer delay, but not much because nop's execute fast. You can keep doing that as you update the code.
Of course that example is an exaggeration because you probably only have to update maybe 256 times. That means you reserve 512 bytes at the start from 0x0000 to 0x0100 and then you can place the first jump location to 0x0102 or something like that. That gives you 512 chances to get the code right.
Of course the code can not take up a huge amount of EPROM space if you intend to update it many times, but for example a bootloader would be a good example where you want to update the bootloader code from time to time.
For data EEPROMs, you place the address of the first byte of real data in location 0x0000 and 0x0001, then have the program that reads the data recognize the code sequence 0x00, 0x00 as an invalid data start address and so have it go up the list until it gets to a non zero address. This allows you to reprogram several times without erasing, as long as you can afford to oversize the EPROM being used.
I don't remember the size of the UVEEPROMs were i used to use but you would have to size it to fit the application as well as the updating technique over time.
These days we use EEPROMs though which are easier to deal with.
If you just have to copy EPROMs though then you probably don't have to worry about making mistakes as long as the code in the template EPROM has already been tested and never needs to be updated.