Subject: TECH: Getting data from a Bally 9316 Prom into EPROM
From: Clive Jones <[email-masked]>
Date: Tue, 12 Mar 96 17:35:00 PST
Newsgroups: rec.games.pinball

Hi Chaps

A number of people have been having trouble extracting the data from   
Bally 9316 masked ROMs and burning the data back into EPROM - here's how   
it works.

The 9316 ROM has the same memory mapping as standard 2516 / 2716 EPROMs   
(you can plug either into the same socket on Bally AS-2518-XX MPU's -   
although you do need to change the jumper arrangement). Both are 2048 x 8   
bits (2k byte or 16384 bits or "16k bits" - thats were the 16 comes from   
in "2516" or "2716", it denotes the ROM size in k*bits*).

The major problem most have been experiencing concerns reading the data   
out of the 9316 into the RAM buffer in the programmer and re-writing back   
into EPROM.

The problem here regards the control signals for each chip - the "chip   
selects", these are slightly different ;

* - denotes signal is active *low*

Bally 9316   2516 or 2716

pin 18 - Chip select  pin 18 - Chip Enable*
pin 20 - Chip select*  pin 20 - Output Enable*
pin 21 - Chip select*  pin 21 - Vpp (must be high when not programming -   
read)

The difference here is clear. To read the data from a 9316 you need to   
strap pin 18 high via a 1k resistor to +5 volts (the resistor limits the   
current) and ground pins 20 and 21, this ENABLES the chip to output data   
when addressed.

Bally masked ROMs cannot be re-programmed therefore the "Vpp" signal has   
been replaced with a low level chip select.

Once the data has been read into the programmers memory it can be blown   
directly into a standard 2516 or 2716 manufactured *by anyone* as the   
chip select signals and programming pulse (Vpp) are controlled by the   
programmer.

You can make a little PCB that does exactly this (signal strapping) - you   
don't need gates or anything fancy just *one* resistor. You select 2516   
or 2716 on your programmer insert the little pcb you've made that   
contains an IC socket loaded with the 9316 with strapped signals into the   
ZIF socket and load the data into the programmers buffer, remove your   
little 9316 PCB, you then pop into the ZIF socket a blank 2x16 EPROM and   
hit program - simple!

Do not interrupt *any* address lines. I read that one guy interrupted A10   
 - this will cut your address range down to 1k byte (1024 x 8 or 8k bits).

If you strap A10 low your address range is A0 - A9 max, this equates to   
1k byte - the 1st 1k byte of your 2k byte address space , if you strap it   
high (A10) you *jump* the 1st 1k byte and start programming the 1 k byte   
window between 1k and 2k. Either way your cutting the max ROM size to 1 k   
byte (1024 x 8)

The reason for you need to change the jumper postions on early Bally   
MPU's is simply to invert the signal to pin 18 as required by the 2x16   
EPROM.

<some programming info>
The "Vpp" pin on the 2x16 must be high when reading data - it is only   
used when programming. A negative going pulse is applied to this pin when   
programming each of the 2048 byte wide locations - positive to negative   
transition writes the data on the data lines to the address specified by   
the levels on the data lines, so, to program the 2716 it must burst 2048   
pulses of 8 bit (byte) data into 2048 address's.
<end of info>

Another note - 25xx series EPROMS are *totally* compatible with 27xx   
EPROMS - I have done this conversion for years. You cannot buy 25xx   
series EPROMS anyway. DO NOT use CMOS EPROMs i.e 27C16 as the early Bally   
MPU busses use NMOS technology at TTL levels (and Willliams level "X"   
MPU's too) and these have differing high and low voltage levels and *may*   
cause level distinction problems with devices on the bus.

If your good with a soldering iron you could just invert pin 18 on you   
little board with a TTL inverter.

I hope you will all go away happy in the knowledge that you can burn   
EPROMS as often as you like now.

thats it!

Clive Jones