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

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod