Battlezone Vector Generator PROM replacement

Mitchell Gant

Active member
vacBacker
Feedback
2 (100%)
Credits
884CR
I am looking at repairing a Battlezone PCB that has a missing vector generator PROM located at K7 in a socket.

It's an 82S129 256 x 4 bit PROM which is getting more difficult to reliably source for a reasonable price, and also difficult to find a programmer to actually burn in the data.

I'm aware that a slightly more modern GAL PLD can be used as a possible replacement for some PROM types, but it does depend on exactly how much data needs to be actually stored.

A GAL is not a direct replacment for a PROM, it's almost like the inverse of PROM logic, so only works of the data has few changes between data bytes. At least that's how I like to think of it.

Philmurr has done a good job of making a small adapter PCB to allow a GAL16V8 to replace an 82S123 which is 32x8 bits, based on similar work that Retroclinic had put on his webpage:

http://www.retroclinic.com/leopardcats/galprom/galprom.htm

The 82S129 used in the Battlezone vector generator is a much larger memory though, so I wasn't convinced it would fit.

I first tried using a GAL16V8, but even trying just half the data failed with 'Excessive product terms' error when I tried to compile it.

Next I moved up to a GAL22V10 device and removed the chip select input, as it's not actually used in the vector circuit. That did compile after I chose Quine-Mcluskey optimisation in the WinCUPL compiler I use. The other options did not work, so it must be close to not fitting in there!

As the GAL22V10 is a 24 pin device and the 82S129 is only 16 pins I needed to work out the quickest way of trying it out without having to make a PCB or spend ages with Veroboard and wires.

My solution was partly luck of how the output pins of the GAL are arranged and then making the logic equations use the same pin layout pattern as the 82S129. The GAL plugs into the Battlezone PROM socket with pin 24 Vcc matching the PROM pin 16 Vcc.

All I needed to do now to test it was solder a link wire from GAL pin 12 GND to pin 8 which is plugged in to the socket pin 8 GND.

20170308_203808.jpg


Keeping my fingers crossed when I threw the power switch resulted in a Battlezone attract screen on my 'scope and triumphant smile, though not a perfect picture as there is at least one more fault to track down in the analogue Y axis output section.

The GAL came from here, 50p each:

http://www.ebay.co.uk/itm/2PCS-GAL22V10D-15LP-GAL22V10D-DIP-24-LATTICE-IC-Electronic-Component-NEW-MO-/152259565395?hash=item2373609753:g:0qkAAOSwCGVX7SIa

Below is the JED file text. If you copy and paste this into a text file and name it something like BZVGPROM.JED you should be able to load it into a GAL programmer and try it for yourself. I'd appreciate if someone could at least try to copy, paste and load it into a programmer to prove it works that far, even if you don't have an actual Battlezone PCB to try it in.

Device g22v10 Library DLIB-h-40-1

Created Tue Mar 07 22:18:04 2017

Name AVG_PROM

Partno AVG_PROM

Revision 01

Date 06/03/17

Designer Mitchell Gant (credit to Retroclinic)

Company

Assembly None

Location None

*QP24

*QF5892

*QV33

*G0

*F0

*L01472 00000000000000000000000011111111

*L01504 11111111111111111111111111111111

*L01536 11111101111111111011101110111011

*L01568 11111111111111111001111110110111

*L01600 11111011011111111111111111111001

*L01632 10111111111110111011101111111111

*L01664 11111111110101110111011110110111

*L01696 01111111111111111111010111110111

*L01728 01111011011101111111111111111111

*L01760 01010111111101111011011101111111

*L01792 11111111111101010111101111111011

*L01824 10111011111111111111111101011011

*L01856 11110111101110110111111111111111

*L01888 11111001011101111011101111111011

*L01920 11111111111111111001011110110111

*L01952 01111011111111111111111111110000

*L02144 00000000000011111111111111111111

*L02176 11111111111111111111111111010111

*L02208 01110111101110111011111111111111

*L02240 11111101011110110111011110110111

*L02272 11111111111111111001111110110111

*L02304 01111011011111111111111111111001

*L02336 01111011011101111011111111111111

*L02368 11111111100110111111011110111011

*L02400 10111111111111111111010110110111

*L02432 01110111101101111111111111111111

*L02464 01011011101101111011101101111111

*L02496 11111111111110010111011101111011

*L02528 01110111111111111111111110010111

*L02560 01111011011101111011111111111111

*L02592 11111001101110110111011101111011

*L02624 11111111111111110000000000000000

*L02880 00000000000000000000000011111111

*L02912 11111111111111111111111111111111

*L02944 11111101111101110111101110111011

*L02976 11111111111111110101111111110111

*L03008 10111011101111111111111111110101

*L03040 10111111011110111011111111111111

*L03072 11111111100111111011011111111011

*L03104 01111111111111111111110101111011

*L03136 01110111101101111111111111111111

*L03168 01011011011101111111101101111111

*L03200 11111111111110010111101101110111

*L03232 01111011111111111111111110011011

*L03264 10110111101101111011111111111111

*L03296 11110000000000000000000000000000

*L03648 00001111111111111111111111111111

*L03680 11111111111111111101111111111011

*L03712 10111011101111111111111111111101

*L03744 11110111011111111011101111111111

*L03776 11111111010111111111011111111011

*L03808 10111111111111111111110101111011

*L03840 01110111101111111111111111111111

*L03872 11011011101101111011101111111111

*L03904 11111111111101011011011101111111

*L03936 10111111111111111111111110011111

*L03968 10110111111110110111111111111111

*L04000 11111001111110110111011111111011

*L04032 11111111111111111001101110110111

*L04064 11111111101111111111111111110101

*L04096 11110111011110110111011111111111

*L04128 11111111010101111111011110110111

*L04160 01111111111111111111000000000000

*L05792 00000000000000000100001111111100

*L05824 00000100000101010110010001110101

*L05856 11110101000001010010010011110100

*L05888 1101

*CDF29

*P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

*V0001 0000000XXXXNXXXXLLLLXX0N

*V0002 0000000XXXXNXXXXHLLHXX1N

*V0003 0001000XXXXNXXXXHLHHXX1N

*V0004 0001100XXXXNXXXXHLLLXX1N

*V0005 0001010XXXXNXXXXHHLLXX1N

*V0006 0001110XXXXNXXXXHLHLXX1N

*V0007 0001001XXXXNXXXXHHLHXX1N

*V0008 0001000XXXXNXXXXHLHHXX1N

*V0009 0001000XXXXNXXXXHLHHXX1N

*V0010 0101101XXXXNXXXXHHHHXX1N

*V0011 0000000XXXXNXXXXHLLHXX1N

*V0012 0000000XXXXNXXXXHLLHXX1N

*V0013 0000000XXXXNXXXXHLLHXX1N

*V0014 0000000XXXXNXXXXHLLHXX1N

*V0015 0000000XXXXNXXXXHLLHXX1N

*V0016 0000000XXXXNXXXXHLLHXX1N

*V0017 0000000XXXXNXXXXHLLHXX1N

*V0018 0000000XXXXNXXXXHLLHXX1N

*V0019 0000000XXXXNXXXXHLLHXX1N

*V0020 0000000XXXXNXXXXHLLHXX1N

*V0021 0000000XXXXNXXXXHLLHXX1N

*V0022 0000000XXXXNXXXXHLLHXX1N

*V0023 0000000XXXXNXXXXHLLHXX1N

*V0024 0000000XXXXNXXXXHLLHXX1N

*V0025 0000000XXXXNXXXXHLLHXX1N

*V0026 0000000XXXXNXXXXHLLHXX1N

*V0027 0000000XXXXNXXXXHLLHXX1N

*V0028 0000000XXXXNXXXXHLLHXX1N

*V0029 0000000XXXXNXXXXHLLHXX1N

*V0030 0000000XXXXNXXXXHLLHXX1N

*V0031 0000000XXXXNXXXXHLLHXX1N

*V0032 0000000XXXXNXXXXHLLHXX1N

*V0033 0000000XXXXNXXXXHLLHXX1N

*77A8

Mitchell Gant2017-03-08 21:23:56
 

Mitchell Gant

Active member
vacBacker
Feedback
2 (100%)
Credits
884CR
One thing I forgot to mention was that the unused pins of the GAL that are overhanging the socket should really have wire links soldered to GND to prevent them electrically floating around. Floating inputs can cause the chip to draw higher currents which is not a good thing.

This same GAL can also be used in Tempest, Space Duel, Gravitar and Black Widow as I just tried to compile those PROMs and saw that they're all the same data. I thought the colour vector game PROMs would have been different!

I just looked at the Star Wars vector PROM though and that is slightly different. Sadly those slight differences prevent it compiling and it reports excessive product term errors, so it won't fit.
 

philmurr

Active member
vacBacker
Feedback
46 (100%)
Credits
2,335CR
Great stuff Neil, very neat.

I remember at the time of making the GAL->82S123 board I tried to get an 82S129 to work but kept getting the GAL compile failure. That's why I ended up doing the separate PROM->82S129 & 82S123 replacement boards.

Although there's no way they can compete either on the price of your solution nor your ingenuity!

82S123_PROM_replacement.JPG


82S129_PROM_replacement.JPG
 
Top