Food fight uses an old and very obsolete Signetics programmable logic
part at location 10P on the game board,
the Atari part# is 137313-001 and the part number of the chip is 82S153. This IC is an
mid 80s Programmable
Logic Array (PLA) and about
the equivalent of an PAL16L8. On Food Fight the '153 is used for
address decoding
and generating two control signals for the
68000, VPA and DTACK, so it's pretty much critical to operation of the game !
In the mid'80s this
part was renamed from the 82S153 to the PLS153 so these part numbers can be interchanged.
The nicest feature of the PLS153 is that is has no security fuses !! You can just read
the contents straight out and
burn onto a new chip, which is great it you need to repair one and have a spare board lying around.
Providing
your burner can read and program them that is..
Anyways.. fast forward 20 years and the PLS153's are getting pretty scarce, but PALs
and GALs are as common
as dirt and can be programmed by almost anything that considers itself to be a device
programmer.
So this got me thinking... how about converting Food Fight to use a GAL ?
The pinout matched perfectly with a
GAL16v8, and the PLS153 isn't a very big device so it should fit. All that remained
was to convert the fusemap
from one device to the other.
Unfortunately there didn't seem to be any automated tools for converting the
fusemap read from the '153, so it
came down to
a case of spending quality time with a 1987 signetics databook to figure out how
the fusemap of
a
'153 is constructed and reverse it back into the base equations. Fortune smiled as it wasn't a very complex map,
all combinatorial logic, no feedbacks or anything funky, so it was straightforward to convert it into the
source
equations.
With the source equations it's then just a case of writing a simple ABEL program for
the GAL part to match the
inputs and output with the 82S153 part. The results are below....
The replacement GAL's been running on a Food Fight for several hours without
problem so I'm pretty confident that
I got the equations right and it is working correctly :)
The pinout of the original 82s153 and replacement GAL16v8
Pinout |
Equations |
|||
!AS | Vcc | |||
a23 | !NVRAM | = !as & a23 & !a22 & !a21 & a20 & !a19 & !a18 | ||
a22 | !IO | = !as & a23 & !a22 & !a21 & a20 & !a19 & a18 | ||
a21 | !Audio2 | = !as & a23 & !a22 & a21 & !a20 & a19 & a18 | ||
a20 | !PF | = !as & a23 & !a22 & !a21 & !a20 & !a19 & !a18 | ||
a19 | !Audio1 | = !as & a23 & !a22 & a21 & !a20 & !a19 & a18 | ||
a18 | !Audio0 | = !as & a23 & !a22 & a21 & !a20 & a19 & !a18 | ||
FC2 | !DTACK | = ( !as & !a23 ) + (!as & a23 & !a22 & !a21 & a20 ) | ||
FC1 | !VPA | = ( !as & fc2 & fc1 & fc0 ) + ( !as & a23 & !a22 & a21 & !a20 ) | ||
Gnd | FC0 |
All the outputs are active low, pins without equations are inputs and power
The JEDEC files for the original and replacement parts and the ABEL
source for the GAL16v8.
Original PLS153 / 82S153 JEDEC file | |
ABEL source code | |
Compiled GAL16v8 JEDEC file |