| Electronics > Projects, Designs, and Technical Stuff |
| Found a weird old computer dumpster diving. (z80?) |
| << < (8/10) > >> |
| tsvisimcha:
Hey all I'm having some trouble figuring out how to dump the eeprom. Any ideas? I have a bus pirate and a raspberry pi. I also have an Nvidia Jetson nano which has gpio. |
| greenpossum:
--- Quote from: tsvisimcha on March 29, 2020, 09:41:26 pm ---Hey all I'm having some trouble figuring out how to dump the eeprom. Any ideas? I have a bus pirate and a raspberry pi. I also have an Nvidia Jetson nano which has gpio. --- End quote --- It's just a UV erasable parallel EPROM, not electrically erasable serial EEPROM. You'll need to peel off the sticker to find out if it's a 2764, -128, -256 or even -512. You could build an EPROM reader from an Arduino but you proabably need a port expander. You'll need an (E)EPROM burner if you intend to make your own. |
| Ian.M:
An Arduino Mega 2560 has enough I/Os (and even enough complete 8 bit ports) to read even large parallel EPROMs directly. A UNO, NANO or similar doesn't have enough I/Os. You've got 11 available digital pins (excluding D0/RXD and D1/TXD for host comms) and six analog pins that can be used as digital, for a total of 17 I/Os. Add an eight bit counter for EPROM A7:A0, with clock and clear from the Arduino I/Os, and you can read anything up to a 27C256 (32Kx8). Your bus pirate doesn't have enough I/Os broken out so will need I/O expanders. Probably the best bet is 2x 8 bit SIPO shift registers (e.g 74HC595) to drive the address bus and an 8 bit PISO shift register (e.g. 74HC165) to read the data bus, driven as a SPI device. N.B. the data will lag one SPI frame behind the address. A Pi has enough I/Os, but the 3.3V levels will be a royal PITA interfacing to a 5V EPROM. Probably the best option would be to use 74HCT (HCT to get 3.3V input level compatibility) shift registers in the same way as you would with a bus pirate, with a 1K8-3K3 resistor divider to drop MISO to 3.3V levels. |
| james_s:
If you want to dump the ROM, pick up a TL866, unless you have a lot of free time and want to hook up something like an Arduino Mega. |
| rstofer:
--- Quote from: obiwanjacobi on March 29, 2020, 07:59:14 am --- Yeah - well you can't know everything ... Even then - sprinkling LD HL, nn's around requires 3 bytes not 1 and can really mess up the logic if you start loading HL with random stuff. I still don't understand how this could work. --- End quote --- You just sprinkle the 0x21s without the following two bytes. The disassembler hits the LXI H instruction and considers the following two bytes to be the operand. Unfortunately, those bytes are some other instruction entirely. --- Code: --- sub01: <do something> <do some more> RET db 0x21 ; the fake instruction to trip up the disassembler sub02: LDA <addr> ; the disassembler takes the first two bytes of this LDA instruction as operand bytes for the LXI H <do some more> RET <lots more code> call sub01 <and more code> call sub02 <and so on> --- End code --- [/font] The point is, the LXI H, is never executed it is there simply to trip up the disassembler. It looks like the start of a code block because it follows a RET but it is not really an entry point. |
| Navigation |
| Message Index |
| Next page |
| Previous page |