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
There was an error while thanking
Thanking...

Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod