mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
Netlist code: fixed an issue with 7493 and other minor fixes
This commit is contained in:
parent
fca447fa7f
commit
92fe6738fc
@ -83,7 +83,7 @@ NETLIB_CONSTRUCTOR(netdev_clock)
|
||||
register_param("FREQ", m_freq, 7159000.0 * 5);
|
||||
m_inc = netlist_time::from_hz(m_freq.Value()*2);
|
||||
|
||||
register_link_internal(m_feedback, m_Q);
|
||||
register_link_internal(m_feedback, m_Q, net_input_t::INP_STATE_ACTIVE);
|
||||
|
||||
}
|
||||
|
||||
@ -223,7 +223,7 @@ NETLIB_CONSTRUCTOR(nicNE555N_MSTABLE)
|
||||
register_param("VL", m_VL, 0.0 *5.0);
|
||||
|
||||
m_THRESHOLD_OUT.set_netdev(this);
|
||||
register_link_internal(m_THRESHOLD, m_THRESHOLD_OUT);
|
||||
register_link_internal(m_THRESHOLD, m_THRESHOLD_OUT, net_input_t::INP_STATE_ACTIVE);
|
||||
|
||||
m_Q.initial(5.0 * 0.4);
|
||||
m_last = false;
|
||||
@ -471,7 +471,7 @@ NETLIB_UPDATE(nic7450)
|
||||
|
||||
INLINE void nic7474_newstate(const UINT8 state, ttl_output_t &Q, ttl_output_t &QQ)
|
||||
{
|
||||
const netlist_time delay[2] = { NLTIME_FROM_NS(25), NLTIME_FROM_NS(40) };
|
||||
static const netlist_time delay[2] = { NLTIME_FROM_NS(25), NLTIME_FROM_NS(40) };
|
||||
//printf("%s %d %d %d\n", "7474", state, Q.Q(), QQ.Q());
|
||||
Q.setTo(state, delay[state]);
|
||||
QQ.setTo(!state, delay[!state]);
|
||||
@ -638,14 +638,14 @@ NETLIB_CONSTRUCTOR(nic7493)
|
||||
register_output(D, "QD", D.m_Q);
|
||||
|
||||
//B.register_link_internal(B.m_I, A.m_Q);
|
||||
register_link_internal(C, C.m_I, B.m_Q);
|
||||
register_link_internal(D, D.m_I, C.m_Q);
|
||||
register_link_internal(C, C.m_I, B.m_Q, net_input_t::INP_STATE_HL);
|
||||
register_link_internal(D, D.m_I, C.m_Q, net_input_t::INP_STATE_HL);
|
||||
|
||||
}
|
||||
|
||||
NETLIB_UPDATE(nic7493ff)
|
||||
{
|
||||
//if INP_LAST(m_I) && !INP(m_I))
|
||||
if (m_reset == 0)
|
||||
m_Q.setTo(!m_Q.new_Q(), NLTIME_FROM_NS(18));
|
||||
}
|
||||
|
||||
@ -656,10 +656,9 @@ NETLIB_UPDATE(nic7493)
|
||||
if (r)
|
||||
{
|
||||
//printf("%s reset\n", name());
|
||||
A.m_reset = B.m_reset = C.m_reset = D.m_reset = 1;
|
||||
A.m_I.inactivate();
|
||||
B.m_I.inactivate();
|
||||
C.m_I.inactivate();
|
||||
D.m_I.inactivate();
|
||||
A.m_Q.setTo(0, NLTIME_FROM_NS(40));
|
||||
B.m_Q.setTo(0, NLTIME_FROM_NS(40));
|
||||
C.m_Q.setTo(0, NLTIME_FROM_NS(40));
|
||||
@ -667,10 +666,9 @@ NETLIB_UPDATE(nic7493)
|
||||
}
|
||||
else
|
||||
{
|
||||
A.m_reset = B.m_reset = C.m_reset = D.m_reset = 0;
|
||||
A.m_I.activate_hl();
|
||||
B.m_I.activate_hl();
|
||||
C.m_I.activate_hl();
|
||||
D.m_I.activate_hl();
|
||||
//printf("%s enable\n", name());
|
||||
}
|
||||
}
|
||||
|
@ -387,6 +387,8 @@ public:
|
||||
NETLIB_SUBDEVICE(nic7493ff,
|
||||
ttl_input_t m_I;
|
||||
ttl_output_t m_Q;
|
||||
|
||||
UINT8 m_reset;
|
||||
);
|
||||
|
||||
#if !USE_OLD7493
|
||||
|
@ -489,14 +489,14 @@ ATTR_HOT ATTR_ALIGN void netlist_base_t::process_list(INT32 &atime)
|
||||
|
||||
m_mainclock->update();
|
||||
mainclock_Q.update_devs();
|
||||
|
||||
}
|
||||
const queue_t::entry_t &e = m_queue.pop();
|
||||
|
||||
update_time(e.time(), atime);
|
||||
|
||||
e.object().
|
||||
e.object().update_devs();
|
||||
|
||||
update_devs();
|
||||
} else {
|
||||
update_time(mainclock_Q.time(), atime);
|
||||
|
||||
@ -853,17 +853,17 @@ void net_device_t::register_input(const char *name, net_input_t &inp, net_input_
|
||||
register_input(*this, name, inp, type);
|
||||
}
|
||||
|
||||
void net_device_t::register_link_internal(net_core_device_t &dev, net_input_t &in, net_output_t &out)
|
||||
void net_device_t::register_link_internal(net_core_device_t &dev, net_input_t &in, net_output_t &out, net_input_t::net_input_state aState)
|
||||
{
|
||||
in.set_output(GETINPPTR(out));
|
||||
in.init(&dev);
|
||||
in.init(&dev, aState);
|
||||
//if (in.state() != net_input_t::INP_STATE_PASSIVE)
|
||||
out.register_con(in);
|
||||
}
|
||||
|
||||
void net_device_t::register_link_internal(net_input_t &in, net_output_t &out)
|
||||
void net_device_t::register_link_internal(net_input_t &in, net_output_t &out, net_input_t::net_input_state aState)
|
||||
{
|
||||
register_link_internal(*this, in, out);
|
||||
register_link_internal(*this, in, out, aState);
|
||||
}
|
||||
|
||||
void net_device_t::register_param(net_core_device_t &dev, const char *name, net_param_t ¶m, double initialVal)
|
||||
@ -932,6 +932,7 @@ ATTR_HOT ATTR_ALIGN inline void net_output_t::update_dev(const net_input_t &inp,
|
||||
|
||||
ATTR_HOT ATTR_ALIGN inline void net_output_t::update_devs()
|
||||
{
|
||||
|
||||
assert(m_num_cons != 0);
|
||||
|
||||
const UINT8 masks[4] = { 1, 5, 3, 1 };
|
||||
@ -960,6 +961,7 @@ ATTR_HOT ATTR_ALIGN inline void net_output_t::update_devs()
|
||||
}
|
||||
|
||||
m_last_Q = m_Q;
|
||||
|
||||
}
|
||||
|
||||
ATTR_COLD void net_output_t::register_con(net_input_t &input)
|
||||
|
@ -588,16 +588,15 @@ protected:
|
||||
double m_Q_analog;
|
||||
double m_new_Q_analog;
|
||||
|
||||
netlist_base_t *m_netlist;
|
||||
|
||||
int m_num_cons;
|
||||
|
||||
net_input_t *m_cons[48];
|
||||
|
||||
net_core_device_t *m_netdev;
|
||||
double m_low_V;
|
||||
double m_high_V;
|
||||
|
||||
net_core_device_t *m_netdev;
|
||||
netlist_base_t *m_netlist;
|
||||
};
|
||||
|
||||
class logic_output_t : public net_output_t
|
||||
@ -723,8 +722,8 @@ public:
|
||||
ATTR_COLD void register_input(const char *name, net_input_t &in, net_input_t::net_input_state state = net_input_t::INP_STATE_ACTIVE);
|
||||
ATTR_COLD void register_input(net_core_device_t &dev, const char *name, net_input_t &in, net_input_t::net_input_state state = net_input_t::INP_STATE_ACTIVE);
|
||||
|
||||
ATTR_COLD void register_link_internal(net_input_t &in, net_output_t &out);
|
||||
ATTR_COLD void register_link_internal(net_core_device_t &dev, net_input_t &in, net_output_t &out);
|
||||
ATTR_COLD void register_link_internal(net_input_t &in, net_output_t &out, net_input_t::net_input_state aState);
|
||||
ATTR_COLD void register_link_internal(net_core_device_t &dev, net_input_t &in, net_output_t &out, net_input_t::net_input_state aState);
|
||||
|
||||
net_list_t<const char *, 20> m_inputs;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user