diff options
author | 2017-09-16 17:39:36 -0400 | |
---|---|---|
committer | 2017-09-16 17:39:36 -0400 | |
commit | c2b15cefaef64a625841d9b7dc3665b5c7cb2016 (patch) | |
tree | 10845486b1d4a7118d227584d74334e608d1ad64 /src | |
parent | 452dedde80a3e1a8c110f120fdcb22ed67809ef5 (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.cpp | 24 | ||||
-rw-r--r-- | src/mame/drivers/snk.cpp | 93 | ||||
-rw-r--r-- | src/tools/jedutil.cpp | 273 |
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 -------------------------------------------------*/ |