Previous 199869 Revisions Next

r33468 Thursday 20th November, 2014 at 16:45:30 UTC by hap
don't fatalerror on parse error
[src/emu/machine]pla.c pla.h

trunk/src/emu/machine/pla.c
r241979r241980
2626      m_inputs(0),
2727      m_outputs(0),
2828      m_terms(0),
29      m_input_mask(0)
29      m_input_mask(0),
30      m_xor(0)
3031{
3132}
3233
r241979r241980
8586   }
8687   
8788   if (result != JEDERR_NONE)
88      fatalerror("%s PLA parse error %d\n", tag(), result);
89   {
90      for (int p = 0; p < m_terms; p++)
91      {
92         m_term[p].and_mask = 0;
93         m_term[p].or_mask = 0;
94      }
95     
96      logerror("%s PLA parse error %d!\n", tag(), result);
97      return;
98   }
8999   
90100   // parse it
91101   UINT32 fusenum = 0;
r241979r241980
95105      term *term = &m_term[p];
96106
97107      // AND mask
98      term->m_and = 0;
108      term->and_mask = 0;
99109
100110      for (int i = 0; i < m_inputs; i++)
101111      {
102112         // complement
103         term->m_and |= (UINT64)jed_get_fuse(&jed, fusenum++) << (i + 32);
113         term->and_mask |= (UINT64)jed_get_fuse(&jed, fusenum++) << (i + 32);
104114
105115         // true
106         term->m_and |= (UINT64)jed_get_fuse(&jed, fusenum++) << i;
116         term->and_mask |= (UINT64)jed_get_fuse(&jed, fusenum++) << i;
107117      }
108118
109119      // OR mask
110      term->m_or = 0;
120      term->or_mask = 0;
111121
112122      for (int f = 0; f < m_outputs; f++)
113123      {
114         term->m_or |= !jed_get_fuse(&jed, fusenum++) << f;
124         term->or_mask |= !jed_get_fuse(&jed, fusenum++) << f;
115125      }
116126
117      term->m_or <<= 32;
127      term->or_mask <<= 32;
118128   }
119129
120130   // XOR mask
r241979r241980
158168   {
159169      term* term = &m_term[i];
160170
161      if ((term->m_and | inputs) == m_input_mask)
171      if ((term->and_mask | inputs) == m_input_mask)
162172      {
163         s |= term->m_or;
173         s |= term->or_mask;
164174      }
165175   }
166176
trunk/src/emu/machine/pla.h
r241979r241980
127127
128128   struct term
129129   {
130      UINT64 m_and;
131      UINT64 m_or;
130      UINT64 and_mask;
131      UINT64 or_mask;
132132   } m_term[MAX_TERMS];
133133};
134134


Previous 199869 Revisions Next


© 1997-2024 The MAME Team