summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/netlist/devices/nld_74ls629.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/netlist/devices/nld_74ls629.c')
-rw-r--r--src/emu/netlist/devices/nld_74ls629.c194
1 files changed, 97 insertions, 97 deletions
diff --git a/src/emu/netlist/devices/nld_74ls629.c b/src/emu/netlist/devices/nld_74ls629.c
index 09c12d2d98c..42d10263858 100644
--- a/src/emu/netlist/devices/nld_74ls629.c
+++ b/src/emu/netlist/devices/nld_74ls629.c
@@ -50,139 +50,139 @@ NETLIB_START(SN74LS629clk)
reset();
save(NAME(m_enableq));
- save(NAME(m_inc));
+ save(NAME(m_inc));
}
NETLIB_RESET(SN74LS629clk)
{
- m_enableq = 1;
- m_inc = netlist_time::zero;
+ m_enableq = 1;
+ m_inc = netlist_time::zero;
}
NETLIB_UPDATE(SN74LS629clk)
{
- if (!m_enableq)
- {
- OUTLOGIC(m_Y, !m_Y.net().new_Q(), m_inc);
- }
- else
- {
- OUTLOGIC(m_Y, 1, m_inc);
- }
+ if (!m_enableq)
+ {
+ OUTLOGIC(m_Y, !m_Y.net().new_Q(), m_inc);
+ }
+ else
+ {
+ OUTLOGIC(m_Y, 1, m_inc);
+ }
}
NETLIB_START(SN74LS629)
{
- register_sub(m_clock, "OSC");
- register_sub(m_R_FC, "R_FC");
- register_sub(m_R_RNG, "R_RNG");
+ register_sub(m_clock, "OSC");
+ register_sub(m_R_FC, "R_FC");
+ register_sub(m_R_RNG, "R_RNG");
- register_input("ENQ", m_ENQ);
- register_input("RNG", m_RNG);
- register_input("FC", m_FC);
- register_subalias("GND", m_R_FC.m_N);
+ register_input("ENQ", m_ENQ);
+ register_input("RNG", m_RNG);
+ register_input("FC", m_FC);
+ register_subalias("GND", m_R_FC.m_N);
- connect(m_FC, m_R_FC.m_P);
- connect(m_RNG, m_R_RNG.m_P);
- connect(m_R_FC.m_N, m_R_RNG.m_N);
+ connect(m_FC, m_R_FC.m_P);
+ connect(m_RNG, m_R_RNG.m_P);
+ connect(m_R_FC.m_N, m_R_RNG.m_N);
- register_subalias("Y", m_clock.m_Y);
- register_param("CAP", m_CAP, 1e-6);
+ register_subalias("Y", m_clock.m_Y);
+ register_param("CAP", m_CAP, 1e-6);
}
NETLIB_RESET(SN74LS629)
{
- m_R_FC.set_R(90000.0);
- m_R_RNG.set_R(90000.0);
- m_clock.reset();
+ m_R_FC.set_R(90000.0);
+ m_R_RNG.set_R(90000.0);
+ m_clock.reset();
}
NETLIB_UPDATE(SN74LS629)
{
- {
- // recompute
- double freq;
- double v_freq_2, v_freq_3, v_freq_4;
- double v_freq = INPANALOG(m_FC);
- double v_rng = INPANALOG(m_RNG);
-
- /* coefficients */
- const double k1 = 1.9904769024796283E+03;
- const double k2 = 1.2070059213983407E+03;
- const double k3 = 1.3266985579561108E+03;
- const double k4 = -1.5500979825922698E+02;
- const double k5 = 2.8184536266938172E+00;
- const double k6 = -2.3503421582744556E+02;
- const double k7 = -3.3836786704527788E+02;
- const double k8 = -1.3569136703258670E+02;
- const double k9 = 2.9914575453819188E+00;
- const double k10 = 1.6855569086173170E+00;
-
- /* scale due to input resistance */
-
- /* Polyfunctional3D_model created by zunzun.com using sum of squared absolute error */
- v_freq_2 = v_freq * v_freq;
- v_freq_3 = v_freq_2 * v_freq;
- v_freq_4 = v_freq_3 * v_freq;
- freq = k1;
- freq += k2 * v_freq;
- freq += k3 * v_freq_2;
- freq += k4 * v_freq_3;
- freq += k5 * v_freq_4;
- freq += k6 * v_rng;
- freq += k7 * v_rng * v_freq;
- freq += k8 * v_rng * v_freq_2;
- freq += k9 * v_rng * v_freq_3;
- freq += k10 * v_rng * v_freq_4;
-
- freq *= 0.1e-6 / m_CAP.Value();
-
- // FIXME: we need a possibility to remove entries from queue ...
- // or an exact model ...
- m_clock.m_inc = netlist_time::from_double(0.5 / freq);
- //m_clock.update();
- }
-
- if (!m_clock.m_enableq && INPLOGIC(m_ENQ))
- {
- m_clock.m_enableq = 1;
- OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1));
- }
- else if (m_clock.m_enableq && !INPLOGIC(m_ENQ))
- {
- m_clock.m_enableq = 0;
- OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1));
- }
+ {
+ // recompute
+ double freq;
+ double v_freq_2, v_freq_3, v_freq_4;
+ double v_freq = INPANALOG(m_FC);
+ double v_rng = INPANALOG(m_RNG);
+
+ /* coefficients */
+ const double k1 = 1.9904769024796283E+03;
+ const double k2 = 1.2070059213983407E+03;
+ const double k3 = 1.3266985579561108E+03;
+ const double k4 = -1.5500979825922698E+02;
+ const double k5 = 2.8184536266938172E+00;
+ const double k6 = -2.3503421582744556E+02;
+ const double k7 = -3.3836786704527788E+02;
+ const double k8 = -1.3569136703258670E+02;
+ const double k9 = 2.9914575453819188E+00;
+ const double k10 = 1.6855569086173170E+00;
+
+ /* scale due to input resistance */
+
+ /* Polyfunctional3D_model created by zunzun.com using sum of squared absolute error */
+ v_freq_2 = v_freq * v_freq;
+ v_freq_3 = v_freq_2 * v_freq;
+ v_freq_4 = v_freq_3 * v_freq;
+ freq = k1;
+ freq += k2 * v_freq;
+ freq += k3 * v_freq_2;
+ freq += k4 * v_freq_3;
+ freq += k5 * v_freq_4;
+ freq += k6 * v_rng;
+ freq += k7 * v_rng * v_freq;
+ freq += k8 * v_rng * v_freq_2;
+ freq += k9 * v_rng * v_freq_3;
+ freq += k10 * v_rng * v_freq_4;
+
+ freq *= 0.1e-6 / m_CAP.Value();
+
+ // FIXME: we need a possibility to remove entries from queue ...
+ // or an exact model ...
+ m_clock.m_inc = netlist_time::from_double(0.5 / freq);
+ //m_clock.update();
+ }
+
+ if (!m_clock.m_enableq && INPLOGIC(m_ENQ))
+ {
+ m_clock.m_enableq = 1;
+ OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1));
+ }
+ else if (m_clock.m_enableq && !INPLOGIC(m_ENQ))
+ {
+ m_clock.m_enableq = 0;
+ OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1));
+ }
}
NETLIB_UPDATE_PARAM(SN74LS629)
{
- //printf("updating %s to %f\n", name().cstr(), m_R.Value());
- update_dev();
+ //printf("updating %s to %f\n", name().cstr(), m_R.Value());
+ update_dev();
}
NETLIB_START(SN74LS629_dip)
{
- register_sub(m_1, "1");
- register_sub(m_2, "2");
+ register_sub(m_1, "1");
+ register_sub(m_2, "2");
- register_subalias("1", m_2.m_FC);
- register_subalias("2", m_1.m_FC);
- register_subalias("3", m_1.m_RNG);
+ register_subalias("1", m_2.m_FC);
+ register_subalias("2", m_1.m_FC);
+ register_subalias("3", m_1.m_RNG);
- register_subalias("6", m_1.m_ENQ);
- register_subalias("7", m_1.m_clock.m_Y);
+ register_subalias("6", m_1.m_ENQ);
+ register_subalias("7", m_1.m_clock.m_Y);
- register_subalias("8", m_1.m_R_FC.m_N);
- register_subalias("9", m_1.m_R_FC.m_N);
- connect(m_1.m_R_FC.m_N, m_2.m_R_FC.m_N);
+ register_subalias("8", m_1.m_R_FC.m_N);
+ register_subalias("9", m_1.m_R_FC.m_N);
+ connect(m_1.m_R_FC.m_N, m_2.m_R_FC.m_N);
- register_subalias("10", m_2.m_clock.m_Y);
+ register_subalias("10", m_2.m_clock.m_Y);
- register_subalias("11", m_2.m_ENQ);
- register_subalias("14", m_2.m_RNG);
+ register_subalias("11", m_2.m_ENQ);
+ register_subalias("14", m_2.m_RNG);
}
@@ -192,6 +192,6 @@ NETLIB_UPDATE(SN74LS629_dip)
NETLIB_RESET(SN74LS629_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1.do_reset();
+ m_2.do_reset();
}