summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/netlist/devices/nld_signal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/netlist/devices/nld_signal.h')
-rw-r--r--src/emu/netlist/devices/nld_signal.h438
1 files changed, 219 insertions, 219 deletions
diff --git a/src/emu/netlist/devices/nld_signal.h b/src/emu/netlist/devices/nld_signal.h
index 9119c0253a7..4265343f624 100644
--- a/src/emu/netlist/devices/nld_signal.h
+++ b/src/emu/netlist/devices/nld_signal.h
@@ -15,12 +15,12 @@
// ----------------------------------------------------------------------------------------
#define NETLIB_SIGNAL(_name, _num_input, _check, _invert) \
- class NETLIB_NAME(_name) : public net_signal_t<_num_input, _check, _invert> \
- { \
- public: \
- ATTR_COLD NETLIB_NAME(_name) () \
- : net_signal_t<_num_input, _check, _invert>() { } \
- }
+ class NETLIB_NAME(_name) : public net_signal_t<_num_input, _check, _invert> \
+ { \
+ public: \
+ ATTR_COLD NETLIB_NAME(_name) () \
+ : net_signal_t<_num_input, _check, _invert>() { } \
+ }
// ----------------------------------------------------------------------------------------
// net_signal_t
@@ -30,46 +30,46 @@ template <int _numdev>
class net_signal_base_t : public net_device_t
{
public:
- net_signal_base_t()
- : net_device_t(), m_active(1) { }
+ net_signal_base_t()
+ : net_device_t(), m_active(1) { }
- ATTR_COLD void start()
- {
- const char *sIN[8] = { "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8" };
+ ATTR_COLD void start()
+ {
+ const char *sIN[8] = { "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8" };
- register_output("Q", m_Q);
- for (int i=0; i < _numdev; i++)
- {
- register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
- }
- m_Q.initial(1);
- }
+ register_output("Q", m_Q);
+ for (int i=0; i < _numdev; i++)
+ {
+ register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
+ }
+ m_Q.initial(1);
+ }
#if (USE_DEACTIVE_DEVICE)
- ATTR_HOT void inc_active()
- {
- if (m_active == 0)
- {
- update();
- }
- m_active++;
- }
-
- ATTR_HOT void dec_active()
- {
- m_active--;
- if (m_active == 0)
- {
- for (int i = 0; i< _numdev; i++)
- m_i[i].inactivate();
- }
- }
+ ATTR_HOT void inc_active()
+ {
+ if (m_active == 0)
+ {
+ update();
+ }
+ m_active++;
+ }
+
+ ATTR_HOT void dec_active()
+ {
+ m_active--;
+ if (m_active == 0)
+ {
+ for (int i = 0; i< _numdev; i++)
+ m_i[i].inactivate();
+ }
+ }
#endif
public:
- ttl_input_t m_i[_numdev];
- ttl_output_t m_Q;
- INT8 m_active;
+ ttl_input_t m_i[_numdev];
+ ttl_output_t m_Q;
+ INT8 m_active;
};
@@ -77,72 +77,72 @@ template <int _numdev, int _check, int _invert>
class net_signal_t : public net_device_t
{
public:
- net_signal_t()
- : net_device_t(), m_active(1)
- {
- m_Q.initial(1);
- }
-
- ATTR_COLD void start()
- {
- const char *sIN[8] = { "A", "B", "C", "D", "E", "F", "G", "H" };
-
- register_output("Q", m_Q);
- for (int i=0; i < _numdev; i++)
- {
- register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
- }
- }
-
- #if (USE_DEACTIVE_DEVICE)
- ATTR_HOT void inc_active()
- {
- if (m_active == 0)
- {
- update();
- }
- m_active++;
- }
-
- ATTR_HOT void dec_active()
- {
- m_active--;
- if (m_active == 0)
- {
- for (int i = 0; i< _numdev; i++)
- m_i[i].inactivate();
- }
- }
- #endif
-
- virtual void update()
- {
- static const netlist_time times[2] = { NLTIME_FROM_NS(22), NLTIME_FROM_NS(15) };
- int pos = -1;
-
- for (int i = 0; i< _numdev; i++)
- {
- this->m_i[i].activate();
- if (INPLOGIC(this->m_i[i]) == _check)
- {
- OUTLOGIC(this->m_Q, _check ^ (1 ^ _invert), times[_check]);// ? 15000 : 22000);
- pos = i;
- break;
- }
- }
- if (pos >= 0)
- {
- for (int i = 0; i < _numdev; i++)
- if (i != pos)
- this->m_i[i].inactivate();
- } else
- OUTLOGIC(this->m_Q,_check ^ (_invert), times[1-_check]);// ? 22000 : 15000);
- }
+ net_signal_t()
+ : net_device_t(), m_active(1)
+ {
+ m_Q.initial(1);
+ }
+
+ ATTR_COLD void start()
+ {
+ const char *sIN[8] = { "A", "B", "C", "D", "E", "F", "G", "H" };
+
+ register_output("Q", m_Q);
+ for (int i=0; i < _numdev; i++)
+ {
+ register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
+ }
+ }
+
+ #if (USE_DEACTIVE_DEVICE)
+ ATTR_HOT void inc_active()
+ {
+ if (m_active == 0)
+ {
+ update();
+ }
+ m_active++;
+ }
+
+ ATTR_HOT void dec_active()
+ {
+ m_active--;
+ if (m_active == 0)
+ {
+ for (int i = 0; i< _numdev; i++)
+ m_i[i].inactivate();
+ }
+ }
+ #endif
+
+ virtual void update()
+ {
+ static const netlist_time times[2] = { NLTIME_FROM_NS(22), NLTIME_FROM_NS(15) };
+ int pos = -1;
+
+ for (int i = 0; i< _numdev; i++)
+ {
+ this->m_i[i].activate();
+ if (INPLOGIC(this->m_i[i]) == _check)
+ {
+ OUTLOGIC(this->m_Q, _check ^ (1 ^ _invert), times[_check]);// ? 15000 : 22000);
+ pos = i;
+ break;
+ }
+ }
+ if (pos >= 0)
+ {
+ for (int i = 0; i < _numdev; i++)
+ if (i != pos)
+ this->m_i[i].inactivate();
+ } else
+ OUTLOGIC(this->m_Q,_check ^ (_invert), times[1-_check]);// ? 22000 : 15000);
+ }
public:
- ttl_input_t m_i[_numdev];
- ttl_output_t m_Q;
- INT8 m_active;
+ ttl_input_t m_i[_numdev];
+ ttl_output_t m_Q;
+ INT8 m_active;
};
#if 1
@@ -150,71 +150,71 @@ template <int _check, int _invert>
class xx_net_signal_t: public net_device_t
{
public:
- xx_net_signal_t()
- : net_device_t(), m_active(1)
- {
- m_Q.initial(1);
- }
-
- ATTR_COLD void start()
- {
- const char *sIN[2] = { "A", "B" };
-
- register_output("Q", m_Q);
- for (int i=0; i < 2; i++)
- {
- register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
- }
- }
-
- #if (USE_DEACTIVE_DEVICE)
- ATTR_HOT void inc_active()
- {
- if (m_active == 0)
- {
- update();
- }
- m_active++;
- }
-
- ATTR_HOT void dec_active()
- {
- m_active--;
- if (m_active == 0)
- {
- m_i[0].inactivate();
- m_i[1].inactivate();
- }
- }
- #endif
-
-
- ATTR_HOT ATTR_ALIGN void update()
- {
- const netlist_time times[2] = { NLTIME_FROM_NS(22), NLTIME_FROM_NS(15) };
-
- int res = _invert ^ 1 ^_check;
- m_i[0].activate();
- m_i[1].activate();
- if (INPLOGIC(m_i[0]) ^ _check)
- {
- if (INPLOGIC(m_i[1]) ^ _check)
- {
- res = _invert ^ _check;
- }
- else
- m_i[0].inactivate();
- } else {
- if (INPLOGIC(m_i[1]) ^ _check)
- m_i[1].inactivate();
- }
- OUTLOGIC(m_Q, res, times[(res & 1) ^ 1]);// ? 22000 : 15000);
- }
+ xx_net_signal_t()
+ : net_device_t(), m_active(1)
+ {
+ m_Q.initial(1);
+ }
+
+ ATTR_COLD void start()
+ {
+ const char *sIN[2] = { "A", "B" };
+
+ register_output("Q", m_Q);
+ for (int i=0; i < 2; i++)
+ {
+ register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
+ }
+ }
+
+ #if (USE_DEACTIVE_DEVICE)
+ ATTR_HOT void inc_active()
+ {
+ if (m_active == 0)
+ {
+ update();
+ }
+ m_active++;
+ }
+
+ ATTR_HOT void dec_active()
+ {
+ m_active--;
+ if (m_active == 0)
+ {
+ m_i[0].inactivate();
+ m_i[1].inactivate();
+ }
+ }
+ #endif
+
+
+ ATTR_HOT ATTR_ALIGN void update()
+ {
+ const netlist_time times[2] = { NLTIME_FROM_NS(22), NLTIME_FROM_NS(15) };
+
+ int res = _invert ^ 1 ^_check;
+ m_i[0].activate();
+ m_i[1].activate();
+ if (INPLOGIC(m_i[0]) ^ _check)
+ {
+ if (INPLOGIC(m_i[1]) ^ _check)
+ {
+ res = _invert ^ _check;
+ }
+ else
+ m_i[0].inactivate();
+ } else {
+ if (INPLOGIC(m_i[1]) ^ _check)
+ m_i[1].inactivate();
+ }
+ OUTLOGIC(m_Q, res, times[(res & 1) ^ 1]);// ? 22000 : 15000);
+ }
public:
- ttl_input_t m_i[2];
- ttl_output_t m_Q;
- INT8 m_active;
+ ttl_input_t m_i[2];
+ ttl_output_t m_Q;
+ INT8 m_active;
};
#endif
@@ -226,58 +226,58 @@ template <UINT8 _check, UINT8 _invert>
class net_signal_t<3, _check, _invert> : public net_device_t
{
public:
- net_signal_t() : net_device_t(), m_active(1) { }
-
- ATTR_COLD void start()
- {
- const char *sIN[3] = { "I1", "I2", "I3" };
-
- register_output("Q", m_Q);
- for (int i=0; i < 3; i++)
- {
- register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
- }
- m_Q.initial(1);
- }
-
- ATTR_HOT ATTR_ALIGN void update()
- {
- const netlist_time times[2] = { NLTIME_FROM_NS(22), NLTIME_FROM_NS(15) };
- //const UINT8 res_tab[4] = {1, 1, 1, 0 };
- //const UINT8 ai1[4] = {0, 1, 0, 0 };
- //const UINT8 ai2[4] = {1, 0, 1, 0 };
-
- UINT8 res = _invert ^ 1 ^_check;
- m_i[0].activate();
- if (INPLOGIC(m_i[0]) ^ _check)
- {
- m_i[1].activate();
- if (INPLOGIC(m_i[1]) ^ _check)
- {
- m_i[2].activate();
- if (INPLOGIC(m_i[2]) ^ _check)
- {
- res = _invert ^ _check;
- }
- else
- m_i[1].inactivate();
- }
- else
- {
- if (INPLOGIC(m_i[2]) ^ _check)
- m_i[2].inactivate();
- m_i[0].inactivate();
- }
- } else {
- if (INPLOGIC(m_i[1]) ^ _check)
- m_i[1].inactivate();
- }
- OUTLOGIC(m_Q, res, times[1 - res]);// ? 22000 : 15000);
- }
+ net_signal_t() : net_device_t(), m_active(1) { }
+
+ ATTR_COLD void start()
+ {
+ const char *sIN[3] = { "I1", "I2", "I3" };
+
+ register_output("Q", m_Q);
+ for (int i=0; i < 3; i++)
+ {
+ register_input(sIN[i], m_i[i], net_input_t::INP_STATE_ACTIVE);
+ }
+ m_Q.initial(1);
+ }
+
+ ATTR_HOT ATTR_ALIGN void update()
+ {
+ const netlist_time times[2] = { NLTIME_FROM_NS(22), NLTIME_FROM_NS(15) };
+ //const UINT8 res_tab[4] = {1, 1, 1, 0 };
+ //const UINT8 ai1[4] = {0, 1, 0, 0 };
+ //const UINT8 ai2[4] = {1, 0, 1, 0 };
+
+ UINT8 res = _invert ^ 1 ^_check;
+ m_i[0].activate();
+ if (INPLOGIC(m_i[0]) ^ _check)
+ {
+ m_i[1].activate();
+ if (INPLOGIC(m_i[1]) ^ _check)
+ {
+ m_i[2].activate();
+ if (INPLOGIC(m_i[2]) ^ _check)
+ {
+ res = _invert ^ _check;
+ }
+ else
+ m_i[1].inactivate();
+ }
+ else
+ {
+ if (INPLOGIC(m_i[2]) ^ _check)
+ m_i[2].inactivate();
+ m_i[0].inactivate();
+ }
+ } else {
+ if (INPLOGIC(m_i[1]) ^ _check)
+ m_i[1].inactivate();
+ }
+ OUTLOGIC(m_Q, res, times[1 - res]);// ? 22000 : 15000);
+ }
public:
- ttl_input_t m_i[3];
- ttl_output_t m_Q;
- INT8 m_active;
+ ttl_input_t m_i[3];
+ ttl_output_t m_Q;
+ INT8 m_active;
};
@@ -288,8 +288,8 @@ template <int _check, int _invert>
class net_signal_t<2, _check, _invert> : public xx_net_signal_t<_check, _invert>
{
public:
- net_signal_t()
- : xx_net_signal_t<_check, _invert>() { }
+ net_signal_t()
+ : xx_net_signal_t<_check, _invert>() { }
};