Dump 2364 Mask ROMs

Here's a quick guide showing 3 ways to dump 2364 mask ROMs on a programmer which normally cannot handle them (i.e. anything which cannot write to 'MCM68764's (or their faster, pin compatible cousins, 'MCM68766's), which are EPROM pin compatible with the 2364)

2764 pinout:

    +--------------+
VPP |1    +--+   28| VCC
A12 |2           27| /PGM
 A7 |3           26| NC
 A6 |4           25| A8
 A5 |5           24| A9
 A4 |6           23| A11
 A3 |7    2764   22| /OE
 A2 |8           21| A10
 A1 |9           20| /CE
 A0 |10          19| D7
 D0 |11          18| D6
 D1 |12          17| D5
 D2 |13          16| D4
GND |14          15| D3
    +--------------+
(courtesy of GIICM)

2364 pinout:

    +--------------+
 A7 |1    +--+   24| Vcc
 A6 |2           23| A8
 A5 |3           22| A9
 A4 |4           21| A12
 A3 |5           20| /CS
 A2 |6    2364   19| A10
 A1 |7           18| A11
 A0 |8           17| D7
 D0 |9           16| D6
 D1 |10          15| D5
 D2 |11          14| D4
Vss |12          13| D3
    +--------------+
(courtesy of GIICM and modified)

Type 1: The 'BEST' adapter

Parts needed:

  • 24 pin socket
  • 28 pin socket
  • Wire, cut in 4 pieces of user-determinable length
  • An EPROM programmer which handles reading 2764 EPROMS

         2364 pins on outside
         2764 pins on inside
        +--------\/--------+
nc   1 -|Vpp            Vcc|- 28 24
21   2 -|A12           /pgm|- 27 nc
 1   3 -|A7              nc|- 26 nc
 2   4 -|A6              A8|- 25 23
 3   5 -|A5              A9|- 24 22
 4   6 -|A4             A11|- 23 18
 5   7 -|A3             /OE|- 22 nc
 6   8 -|A2             A10|- 21 19
 7   9 -|A1             /CE|- 20 20
 8  10 -|A0              D7|- 19 17
 9  11 -|D0              D6|- 18 16
10  12 -|D1              D5|- 17 15
11  13 -|D2              D4|- 16 14
12  14 -|gnd             D3|- 15 13
        +------------------+
Instructions: cut pins 18, 20, 21, 24 off of 24 pin socket wire those pins as such:

(numbers are respective to the socket they are part of)

24 pin socket28 pin socket
1823
2020
212
2428

After wiring, insert the 24 pin socket into the top of the 28 pin socket, shifted 'toward you', i.e. away from pin 1 and pin 28 so the top two pins on each side 1, 2, 28 and 27 are exposed, and don't have one of the 24 pin socket's pins pushed into them.

You may want to remove pin 22 from the 28 pin socket, as its not used and may short against the cut end of pin 20 above it.

This adapter will handle reading ANY 2364 ROMs (assuming your eprom programmer supplies a high-low pulse on /CE for every byte), unless they require something exceptionally weird like inverse /CE or are self-incrementing. (Inverse /CE can be handled by dead-bug wiring a 74ls04 hex inverter to the adapter and running pin 20 of the 24 pin socket to that and then to pin 20 of the 28 pin socket. Self-incrementing will require a whole separate document to explain how to dump, but suffice to say its not at all fun to do.)

Type 2: the 'good-enough' adapter

Parts needed:

  • 24 pin socket
  • 28 pin socket
  • wire, cut in 2 pieces of user-determinable length
  • An EPROM programmer which handles reading 2764 EPROMS

You can make an even easier adapter than the 'best' one, but it won't work on clocked ROMs which require a pulse train on /CE, and it requires the binary to be demunged once dumped because it will be out of order.

The easier adapter is:

  1. cut pins 24 and 18 off the 24 pin socket
  2. wire those pins as such:

(numbers are respective to the socket they are part of)

24 pin socket 28 pin socket
182
2428

Put the 24 pin socket into the 28 pin socket, so that pins 1, 2, 28, and 27 of the 28 pin socket do not have one of the 24 pin socket pins inserted in them. With this adapter, A12 and A11 are swapped so the ROM will be dumped as such:

Dumped image Original image
0x0000 - 0x07ff 0x0000 - 0x07ff
0x0800 - 0x0fff 0x1000 - 0x17ff
0x1000 - 0x17ff 0x0800 - 0x0fff
0x1800 - 0x1fff 0x1800 - 0x1fff

Type 3: the 'cheap-ass' adapter

Parts needed:

  • 24 pin socket
  • Wire, cut in 2 pieces of user-determinable length
  • An EPROM programmer which handles reading 2732 EPROMS

If you don't mind dumping the ROM twice, you can adapt a 2364 to a 2332/2732 pinout too. Again, this will not work with clocked ROMs which expect a pulse train on /CS:

  1. Cut pin 18 off the 24 pin socket.
  2. Wire pin 18 to a long movable wire.
  3. Attach short wires to pins 12 and 24 of the 24 pin socket.
  4. Dump the 24 pin socket with the ROM in it as a 2732 twice, first with the long wire tied to pin 12 (GND), and next with it instead tied to pin 24 (VCC).

The first dump will contain:

Dumped image Original image
0x0000 - 0x07ff 0x0000 - 0x07ff
0x0800 - 0x0fff 0x1000 - 0x17ff

and the second dump will contain:

Dumped image Original image
0x0000 - 0x07ff 0x0800 - 0x0fff
0x0800 - 0x0fff 0x1800 - 0x1fff

Important note: When you cut a pin off and solder something to its stump, there may be enough bulge on the solder to electrically contact the original pin wipe or milled hole on the other socket, hence connecting it to the EPROM programmer and royally messing things up. If there is a bulge and it is making electrical contact, place a piece of some insulating material, such as a piece of paper from a 3×5 card, below the solder blob so it doesn't make electrical contact.

A similar adapter can be found at http://symlink.dk/nostalgia/c64/rom/ but it lacks the ability to handle clocked 2364 roms.