As far as i remember those PAL chips include registers, so there is (partially hidden) state inside
I also don't quite understand the type of security presented by the dreaded "fuse map." Is this a result of reading addresses of the PAL, that make the PAL itself unusable? Or is it something else, and I should not worry about bricking my PAL by simply reading it like an EEPROM?
Edit: I think it's just for reading the programming of the PAL, and I should not worry about breaking my PAL by reading it.
@PCB.Wiz thank you so much! As usual I oversimplified my problem quite a bit, and I'm really glad you took time to clarify that.
So ways the PAL may not be purely combinatorial are:
1. The "output" pins are not purely output, and may create an IO internally.
2. If latches are used internally, then treating input combinations as "addresses," reading "addresses" in a different order might produce different outputs.
The logic analyzer monitoring the chip in its original environment may be a better method of understanding how this works. I have created schematics of the source PCB and have a good sense of how the PALs fit into the larger system.
JEDEC file generated by Max Loader*
DM NATIONAL*
DD PAL16L8*
QP20*
QF2048*
QV0*
G0*F0*
L00000 00000000000000000000000000000000*
L00032 00000000000000000000000000000000*
L00064 00000000000000000000000000000000*
L00096 00000000000000000000000000000000*
L00128 00000000000000000000000000000000*
L00160 00000000000000000000000000000000*
L00192 00000000000000000000000000000000*
L00224 00000000000000000000000000000000*
L00256 00000000000000000000000000000000*
L00288 00000000000000000000000000000000*
L00320 00000000000000000000000000000000*
L00352 00000000000000000000000000000000*
L00384 00000000000000000000000000000000*
L00416 00000000000000000000000000000000*
L00448 00000000000000000000000000000000*
L00480 00000000000000000000000000000000*
L00512 00000000000000000000000000000000*
L00544 00000000000000000000000000000000*
L00576 00000000000000000000000000000000*
L00608 00000000000000000000000000000000*
L00640 00000000000000000000000000000000*
L00672 00000000000000000000000000000000*
L00704 00000000000000000000000000000000*
L00736 00000000000000000000000000000000*
L00768 00000000000000000000000000000000*
L00800 00000000000000000000000000000000*
L00832 00000000000000000000000000000000*
L00864 00000000000000000000000000000000*
L00896 00000000000000000000000000000000*
L00928 00000000000000000000000000000000*
L00960 00000000000000000000000000000000*
L00992 00000000000000000000000000000000*
L01024 00000000000000000000000000000000*
L01056 00000000000000000000000000000000*
L01088 00000000000000000000000000000000*
L01120 00000000000000000000000000000000*
L01152 00000000000000000000000000000000*
L01184 00000000000000000000000000000000*
L01216 00000000000000000000000000000000*
L01248 00000000000000000000000000000000*
L01280 00000000000000000000000000000000*
L01312 00000000000000000000000000000000*
L01344 00000000000000000000000000000000*
L01376 00000000000000000000000000000000*
L01408 00000000000000000000000000000000*
L01440 00000000000000000000000000000000*
L01472 00000000000000000000000000000000*
L01504 00000000000000000000000000000000*
L01536 00000000000000000000000000000000*
L01568 00000000000000000000000000000000*
L01600 00000000000000000000000000000000*
L01632 00000000000000000000000000000000*
L01664 00000000000000000000000000000000*
L01696 00000000000000000000000000000000*
L01728 00000000000000000000000000000000*
L01760 00000000000000000000000000000000*
L01792 00000000000000000000000000000000*
L01824 00000000000000000000000000000000*
L01856 00000000000000000000000000000000*
L01888 00000000000000000000000000000000*
L01920 00000000000000000000000000000000*
L01952 00000000000000000000000000000000*
L01984 00000000000000000000000000000000*
L02016 00000000000000000000000000000000*
C0000*
0000
Thanks for this valuable insight, @dietert1 and @dorkshoei!
That link is super helpful, and apparently there is a Windows utility that can convert the dump from a programmer from purely combinatorial PALs, into their original PAL equations. Sadly that .exe file isn't available at the link in his blog anymore, so I will need to ask around for that.
You could make an adaptor that does what you say, "read the PAL chip like a 27C020 EEPROM", but you need to map the PLD pins to a suitable memory.
Complicating things is that some IO might be used as inputs, so a circuit of the original unit helps here.
As an example, my TopMaxII supports programming 16L8 PAL devices. Here is a dump of the fuse array of a National 16L8 device.
Pretty much all the vendors of 16L8/16R* devices used compatible fuse map arrays, so one could reprogram an MMI 16L8 with a National 16L8 fusemap, for example.
...
If you look at an old datasheet for a 16L8 device they will typically have a logic diagram with labeled fuses.
See attached for an example diagram. It shows the location of each of the 2048 fuses listed above.
You could make an adaptor that does what you say, "read the PAL chip like a 27C020 EEPROM", but you need to map the PLD pins to a suitable memory.
Complicating things is that some IO might be used as inputs, so a circuit of the original unit helps here.Or output enable.
Need to use series resistors and then read the value back.