Removed legacy code in netlist and separated out 74153 and 74107(A). [Couriersud]

This commit is contained in:
Couriersud 2013-12-25 13:54:42 +00:00
parent cc74ef9ade
commit 09a84f713a
17 changed files with 324 additions and 401 deletions

4
.gitattributes vendored
View File

@ -2138,6 +2138,10 @@ src/emu/netlist/devices/nld_7402.h svneol=native#text/plain
src/emu/netlist/devices/nld_7404.c svneol=native#text/plain
src/emu/netlist/devices/nld_7404.h svneol=native#text/plain
src/emu/netlist/devices/nld_7410.h svneol=native#text/plain
src/emu/netlist/devices/nld_74107.c svneol=native#text/plain
src/emu/netlist/devices/nld_74107.h svneol=native#text/plain
src/emu/netlist/devices/nld_74153.c svneol=native#text/plain
src/emu/netlist/devices/nld_74153.h svneol=native#text/plain
src/emu/netlist/devices/nld_7420.h svneol=native#text/plain
src/emu/netlist/devices/nld_7425.h svneol=native#text/plain
src/emu/netlist/devices/nld_7427.h svneol=native#text/plain

View File

@ -199,19 +199,8 @@ protected:
netlist_mame_t *m_netlist;
netlist_setup_t *m_setup;
// more save state ... needs to go somewhere else
struct qentry {
netlist_time m_time;
char m_name[64];
};
qentry qtemp[1024];
int qsize;
private:
void save_state();

View File

@ -218,128 +218,6 @@ NETLIB_UPDATE(nic7450)
NETLIB_START(nic74107Asub)
{
register_input("CLK", m_clk, netlist_input_t::STATE_INP_HL);
register_output("Q", m_Q);
register_output("QQ", m_QQ);
m_Q.initial(0);
m_QQ.initial(1);
save(NAME(m_Q1));
save(NAME(m_Q2));
save(NAME(m_F));
}
NETLIB_START(nic74107A)
{
register_sub(sub, "sub");
register_subalias("CLK", sub.m_clk);
register_input("J", m_J);
register_input("K", m_K);
register_input("CLRQ", m_clrQ);
register_subalias("Q", sub.m_Q);
register_subalias("QQ", sub.m_QQ);
sub.m_Q.initial(0);
sub.m_QQ.initial(1);
}
ATTR_HOT inline void NETLIB_NAME(nic74107Asub)::newstate(const netlist_sig_t state)
{
const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) };
#if 1
OUTLOGIC(m_Q, state, delay[state ^ 1]);
OUTLOGIC(m_QQ, state ^ 1, delay[state]);
#else
if (state != Q.new_Q())
{
Q.setToNoCheck(state, delay[1-state]);
QQ.setToNoCheck(1-state, delay[state]);
}
#endif
}
NETLIB_UPDATE(nic74107Asub)
{
{
const netlist_sig_t t = m_Q.net().new_Q();
newstate((!t & m_Q1) | (t & m_Q2) | m_F);
if (!m_Q1)
m_clk.inactivate();
}
}
NETLIB_UPDATE(nic74107A)
{
if (INPLOGIC(m_J) & INPLOGIC(m_K))
{
sub.m_Q1 = 1;
sub.m_Q2 = 0;
sub.m_F = 0;
}
else if (!INPLOGIC(m_J) & INPLOGIC(m_K))
{
sub.m_Q1 = 0;
sub.m_Q2 = 0;
sub.m_F = 0;
}
else if (INPLOGIC(m_J) & !INPLOGIC(m_K))
{
sub.m_Q1 = 0;
sub.m_Q2 = 0;
sub.m_F = 1;
}
else
{
sub.m_Q1 = 0;
sub.m_Q2 = 1;
sub.m_F = 0;
sub.m_clk.inactivate();
}
if (!INPLOGIC(m_clrQ))
{
sub.m_clk.inactivate();
sub.newstate(0);
}
else if (!sub.m_Q2)
sub.m_clk.activate_hl();
//if (!sub.m_Q2 & INPLOGIC(m_clrQ))
// sub.m_clk.activate_hl();
}
NETLIB_START(nic74153)
{
register_input("A1", m_I[0]);
register_input("A2", m_I[1]);
register_input("A3", m_I[2]);
register_input("A4", m_I[3]);
register_input("A", m_A);
register_input("B", m_B);
register_input("GA", m_GA);
register_output("AY", m_AY);
}
NETLIB_UPDATE(nic74153)
{
const netlist_time delay[2] = { NLTIME_FROM_NS(23), NLTIME_FROM_NS(18) };
if (!INPLOGIC(m_GA))
{
UINT8 chan = (INPLOGIC(m_A) | (INPLOGIC(m_B)<<1));
UINT8 t = INPLOGIC(m_I[chan]);
OUTLOGIC(m_AY, t, delay[t] ); /* data to y only, FIXME */
}
else
{
OUTLOGIC(m_AY, 0, delay[0]);
}
}
#define xstr(s) # s
#define ENTRY1(_nic, _name) register_device<_nic>( # _name, xstr(_nic) );
#define ENTRY(_nic, _name) ENTRY1(NETLIB_NAME(_nic), _name)
@ -379,7 +257,6 @@ void netlist_factory::initialize()
ENTRY(solver, NETDEV_SOLVER)
ENTRY(nicMultiSwitch, NETDEV_SWITCH2)
ENTRY(nicRSFF, NETDEV_RSFF)
ENTRY(nicMixer8, NETDEV_MIXER)
ENTRY(7400, TTL_7400_NAND)
ENTRY(7402, TTL_7402_NOR)
ENTRY(nic7404, TTL_7404_INVERT)
@ -400,7 +277,6 @@ void netlist_factory::initialize()
ENTRY(nic74153, TTL_74153)
ENTRY(9316, TTL_9316)
ENTRY(NE555, NETDEV_NE555)
ENTRY(nicNE555N_MSTABLE, NE555N_MSTABLE)
}
netlist_device_t *netlist_factory::new_device_by_classname(const pstring &classname, netlist_setup_t &setup) const

View File

@ -68,6 +68,8 @@
#include "nld_7486.h"
#include "nld_7490.h"
#include "nld_7493.h"
#include "nld_74107.h"
#include "nld_74153.h"
#include "nld_9316.h"
#include "nld_ne555.h"
@ -99,25 +101,7 @@
NET_CONNECT(_name, BIQ, _BIQ) \
NET_CONNECT(_name, RBIQ, _RBIQ)
#define TTL_74107A(_name, _CLK, _J, _K, _CLRQ) \
NET_REGISTER_DEV(nic74107A, _name) \
NET_CONNECT(_name, CLK, _CLK) \
NET_CONNECT(_name, J, _J) \
NET_CONNECT(_name, K, _K) \
NET_CONNECT(_name, CLRQ, _CLRQ)
#define TTL_74107(_name, _CLK, _J, _K, _CLRQ) \
TTL_74107A(_name, _CLK, _J, _K, _CLRQ)
#define TTL_74153(_name, _A1, _A2, _A3, _A4, _A, _B, _GA) \
NET_REGISTER_DEV(nic74153, _name) \
NET_CONNECT(_name, A1, _A1) \
NET_CONNECT(_name, A2, _A2) \
NET_CONNECT(_name, A3, _A3) \
NET_CONNECT(_name, A4, _A4) \
NET_CONNECT(_name, A, _A) \
NET_CONNECT(_name, B, _B) \
NET_CONNECT(_name, GA, _GA)
// ----------------------------------------------------------------------------------------
// Standard devices ...
@ -131,56 +115,6 @@ NETLIB_DEVICE(nic7450,
netlist_ttl_output_t m_Q;
);
/* 74107 does latch data during high !
* For modelling purposes, we assume 74107 and 74107A are the same
*/
NETLIB_SUBDEVICE(nic74107Asub,
netlist_ttl_input_t m_clk;
netlist_ttl_output_t m_Q;
netlist_ttl_output_t m_QQ;
netlist_sig_t m_Q1;
netlist_sig_t m_Q2;
netlist_sig_t m_F;
ATTR_HOT void newstate(const netlist_sig_t state);
);
NETLIB_DEVICE(nic74107A,
NETLIB_NAME(nic74107Asub) sub;
netlist_ttl_input_t m_J;
netlist_ttl_input_t m_K;
netlist_ttl_input_t m_clrQ;
);
class NETLIB_NAME(nic74107) : public NETLIB_NAME(nic74107A)
{
public:
NETLIB_NAME(nic74107) ()
: NETLIB_NAME(nic74107A) () {}
};
/* ripple-carry counter on low-high clock transition */
/* one half of a nic74153 */
NETLIB_DEVICE(nic74153,
netlist_ttl_input_t m_I[4];
netlist_ttl_input_t m_A;
netlist_ttl_input_t m_B;
netlist_ttl_input_t m_GA;
netlist_ttl_output_t m_AY;
);
NETLIB_SUBDEVICE(nic7448_sub,
ATTR_HOT void update_outputs(UINT8 v);

View File

@ -0,0 +1,93 @@
/*
* nld_74107.c
*
*/
#include "nld_74107.h"
NETLIB_START(nic74107Asub)
{
register_input("CLK", m_clk, netlist_input_t::STATE_INP_HL);
register_output("Q", m_Q);
register_output("QQ", m_QQ);
m_Q.initial(0);
m_QQ.initial(1);
m_Q1 = 0;
m_Q2 = 0;
m_F = 0;
save(NAME(m_Q1));
save(NAME(m_Q2));
save(NAME(m_F));
}
NETLIB_START(nic74107A)
{
register_sub(sub, "sub");
register_subalias("CLK", sub.m_clk);
register_input("J", m_J);
register_input("K", m_K);
register_input("CLRQ", m_clrQ);
register_subalias("Q", sub.m_Q);
register_subalias("QQ", sub.m_QQ);
}
ATTR_HOT inline void NETLIB_NAME(nic74107Asub)::newstate(const netlist_sig_t state)
{
const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) };
OUTLOGIC(m_Q, state, delay[state ^ 1]);
OUTLOGIC(m_QQ, state ^ 1, delay[state]);
}
NETLIB_UPDATE(nic74107Asub)
{
const netlist_sig_t t = m_Q.net().Q();
newstate((!t & m_Q1) | (t & m_Q2) | m_F);
if (!m_Q1)
m_clk.inactivate();
}
NETLIB_UPDATE(nic74107A)
{
const UINT8 JK = (INPLOGIC(m_J) << 1) | INPLOGIC(m_K);
switch (JK)
{
case 0:
sub.m_Q1 = 0;
sub.m_Q2 = 1;
sub.m_F = 0;
sub.m_clk.inactivate();
break;
case 1: // (!INPLOGIC(m_J) & INPLOGIC(m_K))
sub.m_Q1 = 0;
sub.m_Q2 = 0;
sub.m_F = 0;
break;
case 2: // (INPLOGIC(m_J) & !INPLOGIC(m_K))
sub.m_Q1 = 0;
sub.m_Q2 = 0;
sub.m_F = 1;
break;
case 3: // (INPLOGIC(m_J) & INPLOGIC(m_K))
sub.m_Q1 = 1;
sub.m_Q2 = 0;
sub.m_F = 0;
break;
default:
break;
}
if (!INPLOGIC(m_clrQ))
{
sub.m_clk.inactivate();
sub.newstate(0);
}
else if (!sub.m_Q2)
sub.m_clk.activate_hl();
}

View File

@ -0,0 +1,106 @@
// license:GPL-2.0+
// copyright-holders:Couriersud
/*
* nld_74107.h
*
* DM74107: DUAL J-K FLIP-FLOPS WITH CLEAR
*
* +--------------+
* 1J |1 ++ 14| VCC
* 1QQ |2 13| 1CLRQ
* 1Q |3 12| 1CLK
* 1K |4 74107 11| 2K
* 2Q |5 10| 2CLRQ
* 2QQ |6 9| 2CLK
* GND |7 8| 2J
* +--------------+
*
*
* Function table 107
*
* +-----+-----+-----+---++---+-----+
* | CLRQ| CLK | J | K || Q | QQ |
* +=====+=====+=====+===++===+=====+
* | 0 | X | X | X || 0 | 1 |
* | 1 | * | 0 | 0 || Q0| Q0Q |
* | 1 | * | 1 | 0 || 1 | 0 |
* | 1 | * | 0 | 1 || 0 | 1 |
* | 1 | * | 1 | 1 || TOGGLE |
* +-----+-----+-----+---++---+-----+
* _
* * = _| |_
*
* This is positive triggered, J and K
* are latched during clock high and
* transferred when CLK falls.
*
* Function table 107A
*
* +-----+-----+-----+---++---+-----+
* | CLRQ| CLK | J | K || Q | QQ |
* +=====+=====+=====+===++===+=====+
* | 0 | X | X | X || 0 | 1 |
* | 1 | F | 0 | 0 || Q0| Q0Q |
* | 1 | F | 1 | 0 || 1 | 0 |
* | 1 | F | 0 | 1 || 0 | 1 |
* | 1 | F | 1 | 1 || TOGGLE |
* | 1 | 1 | X | X || Q0| Q0Q |
* +-----+-----+-----+---++---+-----+
*
* THe 107A is negative triggered.
*
* Naming conventions follow Texas instruments datasheet
*
* FIXME: Currently, only the 107A is implemented.
* The 107 uses the same model.
*
*/
#ifndef NLD_74107_H_
#define NLD_74107_H_
#include "../nl_base.h"
#define TTL_74107A(_name, _CLK, _J, _K, _CLRQ) \
NET_REGISTER_DEV(nic74107A, _name) \
NET_CONNECT(_name, CLK, _CLK) \
NET_CONNECT(_name, J, _J) \
NET_CONNECT(_name, K, _K) \
NET_CONNECT(_name, CLRQ, _CLRQ)
#define TTL_74107(_name, _CLK, _J, _K, _CLRQ) \
TTL_74107A(_name, _CLK, _J, _K, _CLRQ)
NETLIB_SUBDEVICE(nic74107Asub,
netlist_ttl_input_t m_clk;
netlist_ttl_output_t m_Q;
netlist_ttl_output_t m_QQ;
netlist_sig_t m_Q1;
netlist_sig_t m_Q2;
netlist_sig_t m_F;
ATTR_HOT void newstate(const netlist_sig_t state);
);
NETLIB_DEVICE(nic74107A,
NETLIB_NAME(nic74107Asub) sub;
netlist_ttl_input_t m_J;
netlist_ttl_input_t m_K;
netlist_ttl_input_t m_clrQ;
);
class NETLIB_NAME(nic74107) : public NETLIB_NAME(nic74107A)
{
public:
NETLIB_NAME(nic74107) ()
: NETLIB_NAME(nic74107A) () {}
};
#endif /* NLD_74107_H_ */

View File

@ -0,0 +1,41 @@
/*
* nld_74153.c
*
*/
#include "nld_74153.h"
NETLIB_START(nic74153)
{
register_input("C0", m_C[0]);
register_input("C1", m_C[1]);
register_input("C2", m_C[2]);
register_input("C3", m_C[3]);
register_input("A", m_A);
register_input("B", m_B);
register_input("G", m_G);
register_output("AY", m_Y); //FIXME: Change netlists
}
/* FIXME: timing is not 100% accurate, Strobe and Select inputs have a
* slightly longer timing.
* Convert this to sub-devices at some time.
*/
NETLIB_UPDATE(nic74153)
{
const netlist_time delay[2] = { NLTIME_FROM_NS(23), NLTIME_FROM_NS(18) };
if (!INPLOGIC(m_G))
{
UINT8 chan = (INPLOGIC(m_A) | (INPLOGIC(m_B)<<1));
UINT8 t = INPLOGIC(m_C[chan]);
OUTLOGIC(m_Y, t, delay[t] );
}
else
{
OUTLOGIC(m_Y, 0, delay[0]);
}
}

View File

@ -0,0 +1,69 @@
// license:GPL-2.0+
// copyright-holders:Couriersud
/*
* nld_74153.h
*
* DM74153: Dual 4-Line to 1-Line Data Selectors Multiplexers
*
* +--------------+
* G1 |1 ++ 16| VCC
* B |2 15| G2
* 1C3 |3 14| A
* 1C2 |4 74153 13| 2C3
* 1C1 |5 12| 2C2
* 1C0 |6 11| 2C1
* Y1 |7 10| 2C0
* GND |8 9| Y2
* +--------------+
*
*
* Function table
*
* +-----+-----++----+----+----+----++----+----+
* | B | A || C0 | C1 | C2 | C3 || G | Y |
* +=====+=====++====+====+====+====++====+====+
* | X | X || X | X | X | X || H | L |
* | L | L || L | X | X | X || L | L |
* | L | L || H | X | X | X || L | H |
* | L | H || X | L | X | X || L | L |
* | L | H || X | H | X | X || L | H |
* | H | L || X | X | L | X || L | L |
* | H | L || X | X | H | X || L | H |
* | H | H || X | X | X | L || L | L |
* | H | H || X | X | X | H || L | H |
* +-----+-----++----+----+----+----++----+----+
*
* A, B : Select Inputs
* C* : Data inputs
* G : Strobe
* Y : Output
*
* Naming conventions follow National Semiconductor datasheet
*
*/
#ifndef NLD_74153_H_
#define NLD_74153_H_
#include "../nl_base.h"
#define TTL_74153(_name, _C0, _C1, _C2, _C3, _A, _B, _G) \
NET_REGISTER_DEV(nic74153, _name) \
NET_CONNECT(_name, C0, _C0) \
NET_CONNECT(_name, C1, _C1) \
NET_CONNECT(_name, C2, _C2) \
NET_CONNECT(_name, C3, _C3) \
NET_CONNECT(_name, A, _A) \
NET_CONNECT(_name, B, _B) \
NET_CONNECT(_name, G, _G)
NETLIB_DEVICE(nic74153,
netlist_ttl_input_t m_C[4];
netlist_ttl_input_t m_A;
netlist_ttl_input_t m_B;
netlist_ttl_input_t m_G;
netlist_ttl_output_t m_Y;
);
#endif /* NLD_74153_H_ */

View File

@ -24,7 +24,7 @@
* | 0 | 0 | X | X || 1 | 1 | (*)
* | 1 | 1 | R | 1 || 1 | 0 |
* | 1 | 1 | R | 0 || 0 | 1 |
* | 1 | 1 | L | X || Q0| Q0Q |
* | 1 | 1 | 0 | X || Q0| Q0Q |
* +-----+-----+-----+---++---+-----+
*
* (*) his configuration is nonstable that is it will not persist

View File

@ -38,51 +38,6 @@ NETLIB_UPDATE_PARAM(nicMultiSwitch)
//update();
}
NETLIB_START(nicMixer8)
{
static const char *sI[8] = { "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8" };
static const char *sR[8] = { "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8" };
int i;
m_low.initial(0);
for (i=0; i<8; i++)
{
register_input(sI[i], m_I[i]);
m_low.net().register_con(m_I[i]);
//m_I[i].set_output(m_low);
register_param(sR[i], m_R[i], 1e12);
}
register_output("Q", m_Q);
}
NETLIB_UPDATE(nicMixer8)
{
int i;
double r = 0;
for (i=0; i<8; i++)
{
r += m_w[i] * INPANALOG(m_I[i]);
}
OUTANALOG(m_Q, r, NLTIME_IMMEDIATE);
}
NETLIB_UPDATE_PARAM(nicMixer8)
{
double t = 0;
int i;
for (i=0; i<8; i++)
t += 1.0 / m_R[i].Value();
t = 1.0 / t;
for (i=0; i<8; i++)
m_w[i] = t / m_R[i].Value();
}
NETLIB_START(nicRSFF)
{
register_input("S", m_S);
@ -106,90 +61,3 @@ NETLIB_UPDATE(nicRSFF)
OUTLOGIC(m_QQ, 1, NLTIME_FROM_NS(10));
}
}
NETLIB_START(nicNE555N_MSTABLE)
{
register_input("TRIG", m_trigger);
register_input("CV", m_CV);
register_output("Q", m_Q);
register_param("R", m_R, 0.0);
register_param("C", m_C, 0.0);
register_param("VS", m_VS, 5.0);
register_param("VL", m_VL, 0.0 *5.0);
m_THRESHOLD_OUT.init_object(*this, name() + "THRESHOLD");
register_link_internal(m_THRESHOLD, m_THRESHOLD_OUT, netlist_input_t::STATE_INP_ACTIVE);
m_Q.initial(5.0 * 0.4);
m_last = false;
save(NAME(m_last));
}
inline double NETLIB_NAME(nicNE555N_MSTABLE)::nicNE555N_cv()
{
return (m_CV.is_highz() ? 0.67 * m_VS.Value() : INPANALOG(m_CV));
}
inline double NETLIB_NAME(nicNE555N_MSTABLE)::nicNE555N_clamp(const double v, const double a, const double b)
{
double ret = v;
if (ret > m_VS.Value() - a)
ret = m_VS.Value() - a;
if (ret < b)
ret = b;
return ret;
}
NETLIB_UPDATE_PARAM(nicNE555N_MSTABLE)
{
}
NETLIB_UPDATE(nicNE555N_MSTABLE)
{
update_param(); // FIXME : m_CV should be on a sub device ...
double vt = nicNE555N_clamp(nicNE555N_cv(), 0.7, 1.4);
bool bthresh = (INPANALOG(m_THRESHOLD) > vt);
bool btrig = (INPANALOG(m_trigger) > nicNE555N_clamp(nicNE555N_cv() * 0.5, 0.7, 1.4));
bool out = m_last;
if (!btrig)
{
out = true;
}
else if (bthresh)
{
out = false;
}
if (!m_last && out)
{
double vl = m_VL.Value();
double time;
// FIXME : m_CV should be on a sub device ...
// TI datasheet states minimum pulse of 10 us
if (vt<vl)
time = 10;
else
{
time = - log((m_VS.Value()-vt)/(m_VS.Value()-vl)) * m_R.Value() * m_C.Value() * 1.0e6; // in us
if (time < 10.0)
time = 10.0;
}
OUTANALOG(m_Q, m_VS.Value() * 0.7, NLTIME_FROM_NS(100));
OUTANALOG(m_THRESHOLD_OUT, m_VS.Value(), NLTIME_FROM_US(time ));
}
else if (m_last && !out)
{
OUTANALOG(m_Q, 0.25, NLTIME_FROM_NS(100));
OUTANALOG(m_THRESHOLD_OUT, 0.0, NLTIME_FROM_NS(1));
}
m_last = out;
}

View File

@ -24,18 +24,6 @@
NET_CONNECT(_name, S, _S) \
NET_CONNECT(_name, R, _R)
#define NE555N_MSTABLE(_name, _TRIG, _CV) \
NET_REGISTER_DEV(nicNE555N_MSTABLE, _name) \
NET_CONNECT(_name, TRIG, _TRIG) \
NET_CONNECT(_name, CV, _CV)
#define NETDEV_MIXER3(_name, _I1, _I2, _I3) \
NET_REGISTER_DEV(nicMixer8, _name) \
NET_CONNECT(_name, I1, _I1) \
NET_CONNECT(_name, I2, _I2) \
NET_CONNECT(_name, I3, _I3)
#define NETDEV_SWITCH2(_name, _i1, _i2) \
NET_REGISTER_DEV(nicMultiSwitch, _name) \
NET_CONNECT(_name, i1, _i1) \
@ -53,41 +41,6 @@ NETLIB_DEVICE(nicRSFF,
netlist_ttl_output_t m_QQ;
);
NETLIB_DEVICE_WITH_PARAMS(nicMixer8,
netlist_analog_input_t m_I[8];
netlist_analog_output_t m_Q;
netlist_analog_output_t m_low;
netlist_param_double_t m_R[8];
double m_w[8];
);
NETLIB_DEVICE_WITH_PARAMS(nicNE555N_MSTABLE,
//ATTR_HOT void timer_cb(INT32 timer_id);
netlist_analog_input_t m_trigger;
netlist_analog_input_t m_CV;
netlist_analog_input_t m_THRESHOLD; /* internal */
bool m_last;
netlist_analog_output_t m_Q;
netlist_analog_output_t m_THRESHOLD_OUT; /* internal */
//netlist_base_timer_t *m_timer;
netlist_param_double_t m_R;
netlist_param_double_t m_C;
netlist_param_double_t m_VS;
netlist_param_double_t m_VL;
double nicNE555N_cv();
double nicNE555N_clamp(const double v, const double a, const double b);
);
NETLIB_DEVICE_WITH_PARAMS(nicMultiSwitch,
netlist_analog_input_t m_I[8];

View File

@ -456,8 +456,6 @@ protected:
netlist_terminal_t m_OP2;
netlist_terminal_t m_ON2;
double m_mult;
netlist_param_double_t m_RO;
};

View File

@ -29,6 +29,8 @@ NETLISTOBJS+= \
$(NETLISTOBJ)/devices/nld_7486.o \
$(NETLISTOBJ)/devices/nld_7490.o \
$(NETLISTOBJ)/devices/nld_7493.o \
$(NETLISTOBJ)/devices/nld_74107.o \
$(NETLISTOBJ)/devices/nld_74153.o \
$(NETLISTOBJ)/devices/nld_9316.o \
$(NETLISTOBJ)/devices/nld_ne555.o \
$(NETLISTOBJ)/devices/nld_legacy.o \

View File

@ -45,17 +45,13 @@ void netlist_queue_t::on_pre_save()
void netlist_queue_t::on_post_load()
{
printf("on_post_load\n");
this->clear();
printf("qsize %d\n", m_qsize);
NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist->time().as_double(), qsize));
for (int i = 0; i < m_qsize; i++ )
{
netlist_net_t *n = m_netlist.find_net(&(m_name[i][0]));
NL_VERBOSE_OUT(("Got %s ==> %p\n", qtemp[i].m_name, n));
printf("Got %s ==> %p\n", m_name[i], n);
NL_VERBOSE_OUT(("schedule time %f (%f)\n", n->time().as_double(), qtemp[i].m_time.as_double()));
printf("schedule time %f (%f)\n", n->time().as_double(), netlist_time::from_raw(m_times[i]).as_double());
this->push(netlist_queue_t::entry_t(netlist_time::from_raw(m_times[i]), *n));
}
}

View File

@ -368,7 +368,11 @@ public:
netlist_core_terminal_t *m_update_list_next;
protected:
ATTR_COLD virtual void save_register() { save(NAME(m_state)); netlist_owned_object_t::save_register(); }
ATTR_COLD virtual void save_register()
{
save(NAME(m_state));
netlist_owned_object_t::save_register();
}
private:
netlist_net_t * RESTRICT m_net;
@ -497,7 +501,6 @@ public:
ATTR_COLD netlist_analog_input_t()
: netlist_input_t(INPUT, ANALOG) { }
ATTR_HOT inline const bool is_highz() const;
ATTR_HOT inline const double Q_Analog() const;
};
@ -1019,8 +1022,6 @@ protected:
protected:
ATTR_COLD virtual void save_register()
{
//netlist_queue_t m_queue;
//netlist().save_manager(m_queue.callback(), "m_queue");
save(NAME(m_queue.callback()));
save(NAME(m_time_ps));
save(NAME(m_rem));
@ -1254,12 +1255,6 @@ ATTR_HOT inline const double netlist_analog_input_t::Q_Analog() const
return net().Q_Analog();
}
//FIXME: Legacy ... must be removed
ATTR_HOT inline const bool netlist_analog_input_t::is_highz() const
{
return (net().Q_Analog() == NETLIST_HIGHIMP_V);
}
// ----------------------------------------------------------------------------------------
// net_dev class factory
// ----------------------------------------------------------------------------------------

View File

@ -37,7 +37,7 @@
#define NETLIST_CLOCK (NETLIST_INTERNAL_RES / NETLIST_DIV)
//FIXME: LEGACY
#define NETLIST_HIGHIMP_V (1.23456e20) /* some voltage we should never see */
//#define NETLIST_HIGHIMP_V (1.23456e20) /* some voltage we should never see */
#define NETLIST_GMIN (1e-9)

View File

@ -15,7 +15,6 @@
static NETLIST_START(base)
NETDEV_TTL_CONST(ttlhigh, 1)
NETDEV_TTL_CONST(ttllow, 0)
NETDEV_ANALOG_CONST(NC, NETLIST_HIGHIMP_V)
NET_MODEL(".model 1N914 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")
NET_MODEL(".model 1N4148 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")