summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Kevin Eshbach <keshbach@comcast.net>2017-09-16 17:39:36 -0400
committer R. Belmont <rb6502@users.noreply.github.com>2017-09-16 17:39:36 -0400
commitc2b15cefaef64a625841d9b7dc3665b5c7cb2016 (patch)
tree10845486b1d4a7118d227584d74334e608d1ad64 /src
parent452dedde80a3e1a8c110f120fdcb22ed67809ef5 (diff)
Added support for viewing the pls100 device to jedutil (#2658)
* Adding dump of PAL from Guzzler (Swimmer Conversion) * Adding dump of PAL from Guzzler (Swimmer Conversion) * Initial support for viewing the logic equations of the PLS100, 82S100, PLS101 and 82S101. * Initial support for viewing the logic equations of the PLS100, 82S100, PLS101 and 82S101. * Rename jed file from uppercase to lowercase.
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/cclimber.cpp24
-rw-r--r--src/mame/drivers/snk.cpp93
-rw-r--r--src/tools/jedutil.cpp273
3 files changed, 345 insertions, 45 deletions
diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp
index e3b96a1f764..4b24f781997 100644
--- a/src/mame/drivers/cclimber.cpp
+++ b/src/mame/drivers/cclimber.cpp
@@ -2454,6 +2454,13 @@ ROM_START( swimmerb )
ROM_LOAD( "18s030.12c", 0x0200, 0x020, CRC(3b2deb3a) SHA1(bb7b5c662454f5b355cc59cbdf8879e4664bed1d) )
ROM_END
+/*
+ Guzzler
+
+ CPU/Sound Board: B102-403
+ Video Board: 102-401
+*/
+
ROM_START( guzzler )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "guzz-01.bin", 0x0000, 0x2000, CRC(58aaa1e9) SHA1(4ea9c85670a0d71483ac79564093043762a24b2c) )
@@ -2481,6 +2488,14 @@ ROM_START( guzzler )
ROM_LOAD( "guzzler.001", 0x0200, 0x020, CRC(69089495) SHA1(96b067b22be14536bac748f8d61e5587a8a04e92) )
ROM_END
+/*
+ Guzzler (Swimmer Conversion)
+
+ CPU/Sound Board: B102-403
+ Video Board: 102-401
+ CPU Daughterboard: C102-405
+*/
+
ROM_START( guzzlers ) /* Swimmer Conversion, 1k vs 2k romsize in maincpu */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "guzz1.l9", 0x0000, 0x1000, CRC(48f751ee) SHA1(a8ff19d150d382a43ad705fe2a470450e317aac3) )
@@ -2507,9 +2522,12 @@ ROM_START( guzzlers ) /* Swimmer Conversion, 1k vs 2k romsize in maincpu */
ROM_LOAD( "guzz-09.bin", 0x2000, 0x1000, CRC(18927579) SHA1(414676193ef1f6ce79a4cba73e4d017312f766f4) ) // 9.C4
ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "guzzler.003", 0x0000, 0x100, CRC(f86930c1) SHA1(58efc8cbef05e1612d12e2f0babddf15571d42bb) ) // B.B13
- ROM_LOAD( "guzzler.002", 0x0100, 0x100, CRC(b566ea9e) SHA1(345078af6a339fbe6cd966046acd9d04c8926b5c) ) // A.A13
- ROM_LOAD( "c.c12", 0x0200, 0x020, CRC(51cd9980) SHA1(9c4858a01c9b03ff8c87ba9f11049e0c1af5d519) )
+ ROM_LOAD( "guzzler.003", 0x0000, 0x0100, CRC(f86930c1) SHA1(58efc8cbef05e1612d12e2f0babddf15571d42bb) ) // B.B13
+ ROM_LOAD( "guzzler.002", 0x0100, 0x0100, CRC(b566ea9e) SHA1(345078af6a339fbe6cd966046acd9d04c8926b5c) ) // A.A13
+ ROM_LOAD( "c.c12", 0x0200, 0x0020, CRC(51cd9980) SHA1(9c4858a01c9b03ff8c87ba9f11049e0c1af5d519) )
+
+ ROM_REGION( 0x0104, "cpu_pal", 0) /* C102-405 */
+ ROM_LOAD( "tk01.bin", 0x0000, 0x0104, CRC(af082b3c) SHA1(94ee780945255ebfc2a0848a40289fbc4c7e7d7c) ) // appears to be PAL16L8
ROM_END
ROM_START( yamato )
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp
index cca33514a22..270395bc7bf 100644
--- a/src/mame/drivers/snk.cpp
+++ b/src/mame/drivers/snk.cpp
@@ -4658,78 +4658,95 @@ ROM_END
/***********************************************************************/
+/*
+Fighting Golf
+SNK, 1988
+
+CPU/Sound Board: A6001 UP02-02
+Video Board: A6001 UP01-02
+
+Pinouts very similar to JAMMA.
+
+Socket at H8 is intentionally empty.
+*/
+
ROM_START( fitegolf )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "gu2", 0x0000, 0x4000, CRC(19be7ad6) SHA1(6f0faf606e44a3f8cc027699cc816aa3414a1b98) )
- ROM_LOAD( "gu1", 0x4000, 0x8000, CRC(bc32568f) SHA1(35fec3dbdd773ec7f427ecdd81066fb8f1b74e05) )
+ ROM_LOAD( "gu2.4p", 0x00000, 0x04000, CRC(19be7ad6) SHA1(6f0faf606e44a3f8cc027699cc816aa3414a1b98) )
+ ROM_LOAD( "gu1.4m", 0x04000, 0x08000, CRC(bc32568f) SHA1(35fec3dbdd773ec7f427ecdd81066fb8f1b74e05) )
ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "gu6", 0x0000, 0x4000, CRC(2b9978c5) SHA1(5490e9f796697318650fc5f70c0e64d6785ad7fc) )
- ROM_LOAD( "gu5", 0x4000, 0x8000, CRC(ea3d138c) SHA1(af0a0bfe2d266179946948cf42fe697505798a4f) )
+ ROM_LOAD( "gu6.8p", 0x00000, 0x04000, CRC(2b9978c5) SHA1(5490e9f796697318650fc5f70c0e64d6785ad7fc) )
+ ROM_LOAD( "gu5.8m", 0x04000, 0x08000, CRC(ea3d138c) SHA1(af0a0bfe2d266179946948cf42fe697505798a4f) )
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "gu3", 0x0000, 0x4000, CRC(811b87d7) SHA1(fb387f42085d6e0e5a88729ca0e50656411ce037) )
- ROM_LOAD( "gu4", 0x4000, 0x8000, CRC(2d998e2b) SHA1(a471cfbb4dabc90fcc29c562620b9965eaff6861) )
+ ROM_LOAD( "gu3.6g", 0x00000, 0x04000, CRC(811b87d7) SHA1(fb387f42085d6e0e5a88729ca0e50656411ce037) )
+ ROM_LOAD( "gu4.6k", 0x04000, 0x08000, CRC(2d998e2b) SHA1(a471cfbb4dabc90fcc29c562620b9965eaff6861) )
ROM_REGION( 0x0c00, "proms", 0 )
- ROM_LOAD( "82s137.2c", 0x00000, 0x00400, CRC(6e4c7836) SHA1(3ab3c498939fac992e2bf1c33983ee821a9b6a18) )
- ROM_LOAD( "82s137.1b", 0x00400, 0x00400, CRC(29e7986f) SHA1(85ba8d3443458c27728f633745857a1315dd183f) )
- ROM_LOAD( "82s137.1c", 0x00800, 0x00400, CRC(27ba9ff9) SHA1(f021d10460f40de4447560df5ac47fa53bb57ff9) )
+ ROM_LOAD( "3.2c", 0x00000, 0x00400, CRC(6e4c7836) SHA1(3ab3c498939fac992e2bf1c33983ee821a9b6a18) ) /* 82s137 */
+ ROM_LOAD( "1.1b", 0x00400, 0x00400, CRC(29e7986f) SHA1(85ba8d3443458c27728f633745857a1315dd183f) ) /* 82s137 */
+ ROM_LOAD( "2.1c", 0x00800, 0x00400, CRC(27ba9ff9) SHA1(f021d10460f40de4447560df5ac47fa53bb57ff9) ) /* 82s137 */
ROM_REGION( 0x4000, "tx_tiles", 0 )
- ROM_LOAD( "gu8", 0x0000, 0x4000, CRC(f1628dcf) SHA1(efea343d3a9dd45ef74947c297e166e34afbb680) )
+ ROM_LOAD( "gu8.2d", 0x00000, 0x04000, CRC(f1628dcf) SHA1(efea343d3a9dd45ef74947c297e166e34afbb680) )
ROM_REGION( 0x8000, "bg_tiles", 0 )
- ROM_LOAD( "gu7", 0x0000, 0x8000, CRC(4655f94e) SHA1(08526206d8e929bb01d61fff8de2ee99fd287c17) )
+ ROM_LOAD( "gu7.2b", 0x00000, 0x08000, CRC(4655f94e) SHA1(08526206d8e929bb01d61fff8de2ee99fd287c17) )
ROM_REGION( 0x18000, "sp16_tiles", 0 )
- ROM_LOAD( "gu9", 0x00000, 0x8000, CRC(d4957ec5) SHA1(8ead7866ba5ac66ead6b707aa868bcae30c486e1) )
- ROM_LOAD( "gu10", 0x08000, 0x8000, CRC(b3acdac2) SHA1(7377480d5e1b5ab2c49f5fee2927623ce8240e19) )
- ROM_LOAD( "gu11", 0x10000, 0x8000, CRC(b99cf73b) SHA1(23989fc3914e77d364807a9eb96a4ddf75ad7cf1) )
+ ROM_LOAD( "gu9.2p", 0x00000, 0x08000, CRC(d4957ec5) SHA1(8ead7866ba5ac66ead6b707aa868bcae30c486e1) )
+ ROM_LOAD( "gu10.2rs", 0x08000, 0x08000, CRC(b3acdac2) SHA1(7377480d5e1b5ab2c49f5fee2927623ce8240e19) )
+ ROM_LOAD( "gu11.2t", 0x10000, 0x08000, CRC(b99cf73b) SHA1(23989fc3914e77d364807a9eb96a4ddf75ad7cf1) )
ROM_REGION( 0x0600, "plds", 0 )
- ROM_LOAD( "pal16r6a.6c", 0x0000, 0x0104, CRC(de291f4e) SHA1(b50294d30cb8eacc7a9bb8b46695a7463ef45ff1) )
- ROM_LOAD( "pal16l8a.3f", 0x0200, 0x0104, CRC(c5f1c1da) SHA1(e17293be0f77d302c59c1095fe1ec65e45557627) )
- ROM_LOAD( "pal20l8a.6r", 0x0400, 0x0144, CRC(0f011673) SHA1(383e6f6e78daec9c874d5b48378111ca60f5ed64) )
+ ROM_LOAD( "a6001-1.6c", 0x00000, 0x00104, CRC(de291f4e) SHA1(b50294d30cb8eacc7a9bb8b46695a7463ef45ff1) ) /* PAL16R6A */
+ ROM_LOAD( "a6001-3.3f", 0x00200, 0x00104, CRC(c5f1c1da) SHA1(e17293be0f77d302c59c1095fe1ec65e45557627) ) /* PAL16L8A */
+ ROM_LOAD( "a6001-2.6r", 0x00400, 0x00144, CRC(0f011673) SHA1(383e6f6e78daec9c874d5b48378111ca60f5ed64) ) /* PAL20L8A */
ROM_END
ROM_START( fitegolfu ) /* Later US version containing enhancements to make the game a little easier */
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "np45.128", 0x0000, 0x4000, CRC(16e8e763) SHA1(0b5296f2a91a7f3176b7461ca4958865ce998241) )
- ROM_LOAD( "mn45.256", 0x4000, 0x8000, CRC(a4fa09d5) SHA1(ae7f0cb47de06006ae71252c4201a93a01a26887) )
+ ROM_LOAD( "np45.4p", 0x00000, 0x04000, CRC(16e8e763) SHA1(0b5296f2a91a7f3176b7461ca4958865ce998241) )
+ ROM_LOAD( "mn45.4m", 0x04000, 0x08000, CRC(a4fa09d5) SHA1(ae7f0cb47de06006ae71252c4201a93a01a26887) )
ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "gu6", 0x0000, 0x4000, CRC(2b9978c5) SHA1(5490e9f796697318650fc5f70c0e64d6785ad7fc) ) // NP8.256
- ROM_LOAD( "gu5", 0x4000, 0x8000, CRC(ea3d138c) SHA1(af0a0bfe2d266179946948cf42fe697505798a4f) ) // MN8.256
+ ROM_LOAD( "gu6.8p", 0x00000, 0x04000, CRC(2b9978c5) SHA1(5490e9f796697318650fc5f70c0e64d6785ad7fc) ) // NP8.256
+ ROM_LOAD( "gu5.8m", 0x04000, 0x08000, CRC(ea3d138c) SHA1(af0a0bfe2d266179946948cf42fe697505798a4f) ) // MN8.256
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "gu3", 0x0000, 0x4000, CRC(811b87d7) SHA1(fb387f42085d6e0e5a88729ca0e50656411ce037) ) // FG67.256
- ROM_LOAD( "gu4", 0x4000, 0x8000, CRC(2d998e2b) SHA1(a471cfbb4dabc90fcc29c562620b9965eaff6861) ) // K67.256
+ ROM_LOAD( "gu3.6g", 0x00000, 0x04000, CRC(811b87d7) SHA1(fb387f42085d6e0e5a88729ca0e50656411ce037) ) // FG67.256
+ ROM_LOAD( "gu4.6k", 0x04000, 0x08000, CRC(2d998e2b) SHA1(a471cfbb4dabc90fcc29c562620b9965eaff6861) ) // K67.256
ROM_REGION( 0x0c00, "proms", 0 )
- ROM_LOAD( "82s137.2c", 0x00000, 0x00400, CRC(6e4c7836) SHA1(3ab3c498939fac992e2bf1c33983ee821a9b6a18) )
- ROM_LOAD( "82s137.1b", 0x00400, 0x00400, CRC(29e7986f) SHA1(85ba8d3443458c27728f633745857a1315dd183f) )
- ROM_LOAD( "82s137.1c", 0x00800, 0x00400, CRC(27ba9ff9) SHA1(f021d10460f40de4447560df5ac47fa53bb57ff9) )
+ ROM_LOAD( "3.2c", 0x00000, 0x00400, CRC(6e4c7836) SHA1(3ab3c498939fac992e2bf1c33983ee821a9b6a18) ) /* 82s137 */
+ ROM_LOAD( "1.1b", 0x00400, 0x00400, CRC(29e7986f) SHA1(85ba8d3443458c27728f633745857a1315dd183f) ) /* 82s137 */
+ ROM_LOAD( "2.1c", 0x00800, 0x00400, CRC(27ba9ff9) SHA1(f021d10460f40de4447560df5ac47fa53bb57ff9) ) /* 82s137 */
ROM_REGION( 0x4000, "tx_tiles", 0 )
- ROM_LOAD( "gu8", 0x0000, 0x4000, CRC(f1628dcf) SHA1(efea343d3a9dd45ef74947c297e166e34afbb680) ) // D2.128
+ ROM_LOAD( "gu8.2d", 0x00000, 0x04000, CRC(f1628dcf) SHA1(efea343d3a9dd45ef74947c297e166e34afbb680) ) // D2.128
ROM_REGION( 0x8000, "bg_tiles", 0 )
- ROM_LOAD( "gu7", 0x0000, 0x8000, CRC(4655f94e) SHA1(08526206d8e929bb01d61fff8de2ee99fd287c17) ) // BC2.256
+ ROM_LOAD( "gu7.2b", 0x00000, 0x08000, CRC(4655f94e) SHA1(08526206d8e929bb01d61fff8de2ee99fd287c17) ) // BC2.256
ROM_REGION( 0x18000, "sp16_tiles", 0 )
- ROM_LOAD( "gu9", 0x00000, 0x8000, CRC(d4957ec5) SHA1(8ead7866ba5ac66ead6b707aa868bcae30c486e1) ) // P2.256
- ROM_LOAD( "gu10", 0x08000, 0x8000, CRC(b3acdac2) SHA1(7377480d5e1b5ab2c49f5fee2927623ce8240e19) ) // R2.256
- ROM_LOAD( "gu11", 0x10000, 0x8000, CRC(b99cf73b) SHA1(23989fc3914e77d364807a9eb96a4ddf75ad7cf1) ) // S2.256
+ ROM_LOAD( "gu9.2p", 0x00000, 0x08000, CRC(d4957ec5) SHA1(8ead7866ba5ac66ead6b707aa868bcae30c486e1) ) // P2.256
+ ROM_LOAD( "gu10.2rs", 0x08000, 0x08000, CRC(b3acdac2) SHA1(7377480d5e1b5ab2c49f5fee2927623ce8240e19) ) // R2.256
+ ROM_LOAD( "gu11.2t", 0x10000, 0x08000, CRC(b99cf73b) SHA1(23989fc3914e77d364807a9eb96a4ddf75ad7cf1) ) // S2.256
ROM_REGION( 0x0600, "plds", 0 )
- ROM_LOAD( "pal16r6a.6c", 0x0000, 0x0104, CRC(de291f4e) SHA1(b50294d30cb8eacc7a9bb8b46695a7463ef45ff1) )
- ROM_LOAD( "pal16l8a.3f", 0x0200, 0x0104, CRC(c5f1c1da) SHA1(e17293be0f77d302c59c1095fe1ec65e45557627) )
- ROM_LOAD( "pal20l8a.6r", 0x0400, 0x0144, CRC(0f011673) SHA1(383e6f6e78daec9c874d5b48378111ca60f5ed64) )
+ ROM_LOAD( "a6001-1.6c", 0x00000, 0x00104, CRC(de291f4e) SHA1(b50294d30cb8eacc7a9bb8b46695a7463ef45ff1) ) /* PAL16R6A */
+ ROM_LOAD( "a6001-3.3f", 0x00200, 0x00104, CRC(c5f1c1da) SHA1(e17293be0f77d302c59c1095fe1ec65e45557627) ) /* PAL16L8A */
+ ROM_LOAD( "a6001-2.6r", 0x00400, 0x00144, CRC(0f011673) SHA1(383e6f6e78daec9c874d5b48378111ca60f5ed64) ) /* PAL20L8A */
ROM_END
+/*
+Fighting Golf
+SNK, 1988
-
+CPU/Sound Board: ?
+Video Board: ?
+*/
ROM_START( fitegolf2 )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -4747,9 +4764,9 @@ ROM_START( fitegolf2 )
ROM_LOAD( "fg_1.2e", 0x4000, 0x8000, CRC(2d998e2b) SHA1(a471cfbb4dabc90fcc29c562620b9965eaff6861) )
ROM_REGION( 0x0c00, "proms", 0 )
- ROM_LOAD( "gl1.5f", 0x00000, 0x00400, CRC(6e4c7836) SHA1(3ab3c498939fac992e2bf1c33983ee821a9b6a18) )
- ROM_LOAD( "gl2.5g", 0x00400, 0x00400, CRC(29e7986f) SHA1(85ba8d3443458c27728f633745857a1315dd183f) )
- ROM_LOAD( "gl3.5h", 0x00800, 0x00400, CRC(27ba9ff9) SHA1(f021d10460f40de4447560df5ac47fa53bb57ff9) )
+ ROM_LOAD( "gl1.5f", 0x00000, 0x00400, CRC(6e4c7836) SHA1(3ab3c498939fac992e2bf1c33983ee821a9b6a18) ) /* 82s137 */
+ ROM_LOAD( "gl2.5g", 0x00400, 0x00400, CRC(29e7986f) SHA1(85ba8d3443458c27728f633745857a1315dd183f) ) /* 82s137 */
+ ROM_LOAD( "gl3.5h", 0x00800, 0x00400, CRC(27ba9ff9) SHA1(f021d10460f40de4447560df5ac47fa53bb57ff9) ) /* 82s137 */
ROM_REGION( 0x4000, "tx_tiles", 0 )
ROM_LOAD( "fg_12.1e", 0x0000, 0x4000, CRC(f1628dcf) SHA1(efea343d3a9dd45ef74947c297e166e34afbb680) )
diff --git a/src/tools/jedutil.cpp b/src/tools/jedutil.cpp
index 23c6cd8753d..6bb0037e7f6 100644
--- a/src/tools/jedutil.cpp
+++ b/src/tools/jedutil.cpp
@@ -88,6 +88,8 @@
PAL20R6 = QP24 QF2560
PAL20R8 = QP24 QF2560
+ PAL20RA10 = QP24 QF3210
+
PAL20X4 = QP24 QF1600
PAL20X8 = QP24 QF1600
PAL20X10 = QP24 QF1600
@@ -98,7 +100,10 @@
GAL22V10 = QP24 QF5892
28-pin devices:
- PLS100 = QP28 QF1928
+ PLS100 = QP28 QF1928 (Tri-State)
+ 82S100 = QP20 QF1928 (Tri-State)
+ PLS101 = QP20 QF1928 (Open Collector)
+ 82S101 = QP20 QF1928 (Open Collector)
****************************************************************************
@@ -281,6 +286,7 @@ static void print_pal20l10_product_terms(const pal_data* pal, const jed_data* je
static void print_pal20r4_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20r6_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20r8_product_terms(const pal_data* pal, const jed_data* jed);
+static void print_pal20ra10_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20x4_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20x8_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20x10_product_terms(const pal_data* pal, const jed_data* jed);
@@ -316,6 +322,7 @@ static void print_pal18h4_product_terms(const pal_data* pal, const jed_data* jed
static void print_pal18l4_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20c1_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20l2_product_terms(const pal_data* pal, const jed_data* jed);
+static void print_82s100_pls100_product_terms(const pal_data* pal, const jed_data* jed);
@@ -342,6 +349,7 @@ static void config_pal20l10_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20r4_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20r6_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20r8_pins(const pal_data* pal, const jed_data* jed);
+static void config_pal20ra10_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20x4_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20x8_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20x10_pins(const pal_data* pal, const jed_data* jed);
@@ -377,6 +385,7 @@ static void config_pal18h4_pins(const pal_data* pal, const jed_data* jed);
static void config_pal18l4_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20c1_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20l2_pins(const pal_data* pal, const jed_data* jed);
+static void config_82s100_pls100_pins(const pal_data* pal, const jed_data* jed);
@@ -608,6 +617,18 @@ static pin_fuse_rows pal20r8pinfuserows[] = {
{21, NO_OUTPUT_ENABLE_FUSE_ROW, 320, 600}, /* Registered Output */
{22, NO_OUTPUT_ENABLE_FUSE_ROW, 0, 280}}; /* Registered Output */
+static pin_fuse_rows pal20ra10pinfuserows[] = {
+ { 14, 0, 0, 0 }, /* Registered Output */
+ { 15, 0, 0, 0 }, /* Registered Output */
+ { 16, 0, 0, 0 }, /* Registered Output */
+ { 17, 0, 0, 0 }, /* Registered Output */
+ { 18, 0, 0, 0 }, /* Registered Output */
+ { 19, 0, 0, 0 }, /* Registered Output */
+ { 20, 0, 0, 0 }, /* Registered Output */
+ { 21, 0, 0, 0 }, /* Registered Output */
+ { 22, 0, 0, 0 }, /* Registered Output */
+ { 23, 0, 0, 0 }}; /* Registered Output */
+
static pin_fuse_rows pal20x4pinfuserows[] = {
{14, 1440, 1480, 1560},
{15, 1280, 1320, 1400},
@@ -920,6 +941,16 @@ static pin_fuse_rows pal20l2pinfuserows[] = {
{18, NO_OUTPUT_ENABLE_FUSE_ROW, 320, 600},
{19, NO_OUTPUT_ENABLE_FUSE_ROW, 0, 280}};
+static pin_fuse_rows _82s100_pls100_pinfuserows[] = {
+ {18, NO_OUTPUT_ENABLE_FUSE_ROW, 0},
+ {17, NO_OUTPUT_ENABLE_FUSE_ROW, 0},
+ {16, NO_OUTPUT_ENABLE_FUSE_ROW, 0},
+ {15, NO_OUTPUT_ENABLE_FUSE_ROW, 0},
+ {13, NO_OUTPUT_ENABLE_FUSE_ROW, 0},
+ {12, NO_OUTPUT_ENABLE_FUSE_ROW, 0},
+ {11, NO_OUTPUT_ENABLE_FUSE_ROW, 0},
+ {10, NO_OUTPUT_ENABLE_FUSE_ROW, 0}};
+
static pin_fuse_columns pal10l8pinfusecolumns[] = {
{1, 3, 2},
{2, 1, 0},
@@ -1336,6 +1367,28 @@ static pin_fuse_columns pal20r8pinfusecolumns[] = {
{22, 7, 6},
{23, 3, 2}};
+static pin_fuse_columns pal20ra10pinfusecolumns[] = {
+ {2, 1, 0},
+ {3, 5, 4},
+ {4, 9, 8},
+ {5, 13, 12},
+ {6, 17, 16},
+ {7, 21, 20},
+ {8, 25, 24},
+ {9, 29, 28},
+ {10, 33, 32},
+ {11, 37, 36},
+ {14, 39, 38},
+ {15, 35, 34},
+ {16, 31, 30},
+ {17, 27, 26},
+ {18, 23, 22},
+ {19, 19, 18},
+ {20, 15, 14},
+ {21, 11, 10},
+ {22, 7, 6},
+ {23, 3, 2}};
+
static pin_fuse_columns pal20x4pinfusecolumns[] = {
{2, 1, 0},
{3, 5, 4},
@@ -1903,6 +1956,24 @@ static pin_fuse_columns pal20l2pinfusecolumns[] = {
{22, 11, 10},
{23, 7, 6}};
+static pin_fuse_columns _82s100_pls100_pinfusecolumns[] = {
+ {9, 1, 0},
+ {8, 3, 2},
+ {7, 5, 4},
+ {6, 7, 6},
+ {5, 9, 8},
+ {4, 11, 10},
+ {3, 13, 12},
+ {2, 15, 14},
+ {27, 17, 16},
+ {26, 19, 18},
+ {25, 21, 20},
+ {24, 23, 22},
+ {23, 25, 24},
+ {22, 27, 26},
+ {21, 29, 28},
+ {20, 31, 30}};
+
static pal_data paldata[] = {
{"PAL10L8", 320,
pal10l8pinfuserows, ARRAY_LENGTH(pal10l8pinfuserows),
@@ -2068,7 +2139,14 @@ static pal_data paldata[] = {
config_pal20r8_pins,
nullptr,
nullptr},
- {"PAL20X4", 1600,
+ {"PAL20RA10", 3210,
+ pal20ra10pinfuserows, ARRAY_LENGTH(pal20ra10pinfuserows),
+ pal20ra10pinfusecolumns, ARRAY_LENGTH(pal20ra10pinfusecolumns),
+ print_pal20ra10_product_terms,
+ config_pal20ra10_pins,
+ nullptr,
+ nullptr },
+ {"PAL20X4", 1600,
pal20x4pinfuserows, ARRAY_LENGTH(pal20x4pinfuserows),
pal20x4pinfusecolumns, ARRAY_LENGTH(pal20x4pinfusecolumns),
print_pal20x4_product_terms,
@@ -2091,8 +2169,7 @@ static pal_data paldata[] = {
nullptr},
/*{"PAL22V10", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},
{"GAL20V8A", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},
- {"GAL22V10", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},
- {"PLS100", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/
+ {"GAL22V10", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/
{"82S153", 1842,
_82s153_pls153pinfuserows, ARRAY_LENGTH(_82s153_pls153pinfuserows),
_82s153_pls153pinfusecolumns, ARRAY_LENGTH(_82s153_pls153pinfusecolumns),
@@ -2311,6 +2388,34 @@ static pal_data paldata[] = {
print_pal20l2_product_terms,
config_pal20l2_pins,
nullptr,
+ nullptr},
+ {"82S100", 1928,
+ _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows),
+ _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns),
+ print_82s100_pls100_product_terms,
+ config_82s100_pls100_pins,
+ nullptr,
+ nullptr},
+ {"PLS100", 1928,
+ _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows),
+ _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns),
+ print_82s100_pls100_product_terms,
+ config_82s100_pls100_pins,
+ nullptr,
+ nullptr},
+ {"82S101", 1928,
+ _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows),
+ _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns),
+ print_82s100_pls100_product_terms,
+ config_82s100_pls100_pins,
+ nullptr,
+ nullptr},
+ {"PLS101", 1928,
+ _82s100_pls100_pinfuserows, ARRAY_LENGTH(_82s100_pls100_pinfuserows),
+ _82s100_pls100_pinfusecolumns, ARRAY_LENGTH(_82s100_pls100_pinfusecolumns),
+ print_82s100_pls100_product_terms,
+ config_82s100_pls100_pins,
+ nullptr,
nullptr}};
/***************************************************************************
@@ -3557,6 +3662,18 @@ static void print_pal20r8_product_terms(const pal_data* pal, const jed_data* jed
/*-------------------------------------------------
+print_pal20ra10_product_terms - prints the product
+terms for a PAL20RA10
+-------------------------------------------------*/
+
+static void print_pal20ra10_product_terms(const pal_data* pal, const jed_data* jed)
+{
+ print_product_terms(pal, jed);
+}
+
+
+
+/*-------------------------------------------------
print_pal20x4_product_terms - prints the product
terms for a PAL20X4
-------------------------------------------------*/
@@ -4279,6 +4396,97 @@ static void print_pal20l2_product_terms(const pal_data* pal, const jed_data* jed
/*-------------------------------------------------
+ print_82s100_pls100_product_terms - prints the product
+ terms for a 82S100 and PLS100
+-------------------------------------------------*/
+
+static void print_82s100_pls100_product_terms(const pal_data* pal, const jed_data* jed)
+{
+ uint16_t index, columncount, flags, row, haveterms, or_column, fuserow;
+ char buffer[200];
+ int indent, indentindex;
+
+ columncount = calc_fuse_column_count(pal);
+
+ print_input_pins();
+ print_output_pins();
+
+ printf("Equations:\n\n");
+
+ for (index = 0; index < outputpinscount; ++index)
+ {
+ flags = outputpins[index].flags;
+
+ indent = 0;
+
+ if (flags & OUTPUT_ACTIVELOW)
+ {
+ printf(LOW_SYMBOL);
+
+ indent += strlen(LOW_SYMBOL);
+ }
+
+ sprintf(buffer, OUTPUT_SYMBOL "%d " COMBINATORIAL_ASSIGNMENT " ", outputpins[index].pin);
+
+ printf("%s", buffer);
+
+ haveterms = 0;
+ indent += strlen(buffer);
+
+ fuserow = 0;
+
+ if (outputpins[index].pin >= 15)
+ {
+ or_column = 18 - outputpins[index].pin;
+ }
+ else
+ {
+ or_column = 17 - outputpins[index].pin;
+ }
+
+ for (row = 0; row < 48; ++row)
+ {
+ if (!jed_get_fuse(jed, fuserow + columncount + or_column))
+ {
+ generate_product_terms(pal, jed, fuserow, buffer);
+
+ if (strlen(buffer) > 0)
+ {
+ if (haveterms)
+ {
+ printf(" " OR_SYMBOL "\n");
+
+ for (indentindex = 0; indentindex < indent; ++indentindex)
+ {
+ printf(" ");
+ }
+ }
+ else
+ {
+ haveterms = 1;
+ }
+
+ printf("%s", buffer);
+ }
+ }
+
+ fuserow += (columncount + 8);
+ }
+
+ printf("\n");
+
+ /* output enable equations */
+
+ printf(OUTPUT_SYMBOL "%d.oe " COMBINATORIAL_ASSIGNMENT " ", outputpins[index].pin);
+ printf("OE\n");
+
+ printf("\n");
+ }
+}
+
+
+
+/*-------------------------------------------------
config_pal10l8_pins - configures the pins for
a PAL10L8
-------------------------------------------------*/
@@ -5620,6 +5828,32 @@ static void config_pal20r8_pins(const pal_data* pal, const jed_data* jed)
/*-------------------------------------------------
+config_pal20ra10_pins - configures the pins for
+a PAL20RA10
+-------------------------------------------------*/
+
+static void config_pal20ra10_pins(const pal_data* pal, const jed_data* jed)
+{
+ static uint16_t input_pins[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
+ static pin_output_config output_pins[] = {
+ {14, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {15, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {16, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {17, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {18, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {19, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {20, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {21, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {22, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED},
+ {23, OUTPUT_ACTIVELOW | OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED}};
+
+ set_input_pins(input_pins, ARRAY_LENGTH(input_pins));
+ set_output_pins(output_pins, ARRAY_LENGTH(output_pins));
+}
+
+
+
+/*-------------------------------------------------
config_pal20x4_pins - configures the pins for
a PAL20X4
-------------------------------------------------*/
@@ -6843,6 +7077,37 @@ static void config_pal20l2_pins(const pal_data* pal, const jed_data* jed)
/*-------------------------------------------------
+ config_82s100_pls100_pins - configures the pins for
+ a 82S100 and PLS100
+-------------------------------------------------*/
+
+static void config_82s100_pls100_pins(const pal_data* pal, const jed_data* jed)
+{
+ static uint16_t input_pins[] = {9, 8, 7, 6, 5, 4, 3, 2, 27, 26, 25, 24, 23, 22, 21, 20};
+ pin_output_config output_pins[8];
+
+ for (uint16_t index = 0; index < ARRAY_LENGTH(output_pins); ++index)
+ {
+ output_pins[index].pin = pal->pinfuserows[index].pin;
+ output_pins[index].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_NONE;
+
+ if (jed_get_fuse(jed, 1920 + index))
+ {
+ output_pins[index].flags |= OUTPUT_ACTIVELOW;
+ }
+ else
+ {
+ output_pins[index].flags |= OUTPUT_ACTIVEHIGH;
+ }
+ }
+
+ set_input_pins(input_pins, ARRAY_LENGTH(input_pins));
+ set_output_pins(output_pins, ARRAY_LENGTH(output_pins));
+}
+
+
+
+/*-------------------------------------------------
is_gal16v8_product_term_enabled - determines if
a fuse row in a GAL16V8 is enabled
-------------------------------------------------*/