From 4ca23dc263f648b901759b33ac57cc1551359d0a Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 20 Nov 2014 17:45:30 +0100 Subject: [PATCH] don't fatalerror on parse error --- src/emu/machine/pla.c | 30 ++++++++++++++++++++---------- src/emu/machine/pla.h | 4 ++-- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/emu/machine/pla.c b/src/emu/machine/pla.c index 1812d24ed1b..09c799fa1ee 100644 --- a/src/emu/machine/pla.c +++ b/src/emu/machine/pla.c @@ -26,7 +26,8 @@ pla_device::pla_device(const machine_config &mconfig, const char *tag, device_t m_inputs(0), m_outputs(0), m_terms(0), - m_input_mask(0) + m_input_mask(0), + m_xor(0) { } @@ -85,7 +86,16 @@ void pla_device::parse_fusemap() } if (result != JEDERR_NONE) - fatalerror("%s PLA parse error %d\n", tag(), result); + { + for (int p = 0; p < m_terms; p++) + { + m_term[p].and_mask = 0; + m_term[p].or_mask = 0; + } + + logerror("%s PLA parse error %d!\n", tag(), result); + return; + } // parse it UINT32 fusenum = 0; @@ -95,26 +105,26 @@ void pla_device::parse_fusemap() term *term = &m_term[p]; // AND mask - term->m_and = 0; + term->and_mask = 0; for (int i = 0; i < m_inputs; i++) { // complement - term->m_and |= (UINT64)jed_get_fuse(&jed, fusenum++) << (i + 32); + term->and_mask |= (UINT64)jed_get_fuse(&jed, fusenum++) << (i + 32); // true - term->m_and |= (UINT64)jed_get_fuse(&jed, fusenum++) << i; + term->and_mask |= (UINT64)jed_get_fuse(&jed, fusenum++) << i; } // OR mask - term->m_or = 0; + term->or_mask = 0; for (int f = 0; f < m_outputs; f++) { - term->m_or |= !jed_get_fuse(&jed, fusenum++) << f; + term->or_mask |= !jed_get_fuse(&jed, fusenum++) << f; } - term->m_or <<= 32; + term->or_mask <<= 32; } // XOR mask @@ -158,9 +168,9 @@ UINT32 pla_device::read(UINT32 input) { term* term = &m_term[i]; - if ((term->m_and | inputs) == m_input_mask) + if ((term->and_mask | inputs) == m_input_mask) { - s |= term->m_or; + s |= term->or_mask; } } diff --git a/src/emu/machine/pla.h b/src/emu/machine/pla.h index b1537ce8e2f..96a33aaae43 100644 --- a/src/emu/machine/pla.h +++ b/src/emu/machine/pla.h @@ -127,8 +127,8 @@ private: struct term { - UINT64 m_and; - UINT64 m_or; + UINT64 and_mask; + UINT64 or_mask; } m_term[MAX_TERMS]; };