Netlist code now uses "namespace netlist". At the same time, moved all

devices int netlist::devices namespace. [Couriersud]
This commit is contained in:
couriersud 2015-06-13 00:41:05 +02:00
parent ffdddba4f1
commit f59da94e11
111 changed files with 1677 additions and 1217 deletions

View File

@ -63,8 +63,8 @@ void netlist_mame_analog_input_t::static_set_name(device_t &device, const char *
void netlist_mame_analog_input_t::device_start()
{
LOG_DEV_CALLS(("start %s\n", tag()));
netlist_param_t *p = this->nl_owner().setup().find_param(m_param_name);
m_param = dynamic_cast<netlist_param_double_t *>(p);
netlist::netlist_param_t *p = this->nl_owner().setup().find_param(m_param_name);
m_param = dynamic_cast<netlist::netlist_param_double_t *>(p);
if (m_param == NULL)
{
fatalerror("device %s wrong parameter type for %s\n", basetag(), m_param_name.cstr());
@ -95,7 +95,7 @@ void netlist_mame_analog_output_t::static_set_params(device_t &device, const cha
netlist.m_delegate = adelegate;
}
void netlist_mame_analog_output_t::custom_netlist_additions(netlist_setup_t &setup)
void netlist_mame_analog_output_t::custom_netlist_additions(netlist::netlist_setup_t &setup)
{
pstring dname = "OUT_" + m_in;
m_delegate.bind_relative_to(owner()->machine().root_device());
@ -137,8 +137,8 @@ void netlist_mame_logic_input_t::static_set_params(device_t &device, const char
void netlist_mame_logic_input_t::device_start()
{
LOG_DEV_CALLS(("start %s\n", tag()));
netlist_param_t *p = downcast<netlist_mame_device_t *>(this->owner())->setup().find_param(m_param_name);
m_param = dynamic_cast<netlist_param_int_t *>(p);
netlist::netlist_param_t *p = downcast<netlist_mame_device_t *>(this->owner())->setup().find_param(m_param_name);
m_param = dynamic_cast<netlist::netlist_param_int_t *>(p);
if (m_param == NULL)
{
fatalerror("device %s wrong parameter type for %s\n", basetag(), m_param_name.cstr());
@ -169,7 +169,7 @@ void netlist_mame_stream_input_t::device_start()
LOG_DEV_CALLS(("start %s\n", tag()));
}
void netlist_mame_stream_input_t::custom_netlist_additions(netlist_setup_t &setup)
void netlist_mame_stream_input_t::custom_netlist_additions(netlist::netlist_setup_t &setup)
{
NETLIB_NAME(sound_in) *snd_in = setup.netlist().get_first_device<NETLIB_NAME(sound_in)>();
if (snd_in == NULL)
@ -207,7 +207,7 @@ void netlist_mame_stream_output_t::device_start()
LOG_DEV_CALLS(("start %s\n", tag()));
}
void netlist_mame_stream_output_t::custom_netlist_additions(netlist_setup_t &setup)
void netlist_mame_stream_output_t::custom_netlist_additions(netlist::netlist_setup_t &setup)
{
//NETLIB_NAME(sound_out) *snd_out;
pstring sname = pstring::sprintf("STREAM_OUT_%d", m_channel);
@ -276,7 +276,7 @@ netlist_mame_device_t::netlist_mame_device_t(const machine_config &mconfig, devi
{
}
void netlist_mame_device_t::static_set_constructor(device_t &device, void (*setup_func)(netlist_setup_t &))
void netlist_mame_device_t::static_set_constructor(device_t &device, void (*setup_func)(netlist::netlist_setup_t &))
{
LOG_DEV_CALLS(("static_set_constructor\n"));
netlist_mame_device_t &netlist = downcast<netlist_mame_device_t &>(device);
@ -295,7 +295,7 @@ void netlist_mame_device_t::device_start()
//printf("clock is %d\n", clock());
m_netlist = global_alloc_clear(netlist_mame_t(*this));
m_setup = global_alloc_clear(netlist_setup_t(m_netlist));
m_setup = global_alloc_clear(netlist::netlist_setup_t(m_netlist));
netlist().init_object(*m_netlist, "netlist");
m_setup->init();
@ -467,14 +467,14 @@ void netlist_mame_cpu_device_t::device_start()
for (int i=0; i < netlist().m_nets.size(); i++)
{
netlist_net_t *n = netlist().m_nets[i];
if (n->isFamily(netlist_object_t::LOGIC))
netlist::netlist_net_t *n = netlist().m_nets[i];
if (n->isFamily(netlist::netlist_object_t::LOGIC))
{
state_add(i*2, n->name(), downcast<netlist_logic_net_t *>(n)->Q_state_ptr());
state_add(i*2, n->name(), downcast<netlist::netlist_logic_net_t *>(n)->Q_state_ptr());
}
else
{
state_add(i*2+1, n->name(), downcast<netlist_analog_net_t *>(n)->Q_Analog_state_ptr()).formatstr("%20s");
state_add(i*2+1, n->name(), downcast<netlist::netlist_analog_net_t *>(n)->Q_Analog_state_ptr()).formatstr("%20s");
}
}
@ -639,9 +639,9 @@ void netlist_mame_sound_device_t::sound_stream_update(sound_stream &stream, stre
// memregion source support
// ----------------------------------------------------------------------------------------
bool netlist_source_memregion_t::parse(netlist_setup_t *setup, const pstring name)
bool netlist_source_memregion_t::parse(netlist::netlist_setup_t *setup, const pstring name)
{
const char *mem = (const char *)downcast<netlist_mame_t &>(setup->netlist()).machine().root_device().memregion(m_name.cstr())->base();
netlist_parser p(*setup);
netlist::netlist_parser p(*setup);
return p.parse(mem, name);
}

View File

@ -60,15 +60,15 @@
// Extensions to interface netlist with MAME code ....
// ----------------------------------------------------------------------------------------
class netlist_source_memregion_t : public netlist_setup_t::source_t
class netlist_source_memregion_t : public netlist::netlist_setup_t::source_t
{
public:
netlist_source_memregion_t(pstring name)
: netlist_setup_t::source_t(), m_name(name)
: netlist::netlist_setup_t::source_t(), m_name(name)
{
}
bool parse(netlist_setup_t *setup, const pstring name);
bool parse(netlist::netlist_setup_t *setup, const pstring name);
private:
pstring m_name;
};
@ -81,12 +81,12 @@ private:
class netlist_mame_device_t;
class netlist_mame_t : public netlist_base_t
class netlist_mame_t : public netlist::netlist_base_t
{
public:
netlist_mame_t(netlist_mame_device_t &parent)
: netlist_base_t(),
: netlist::netlist_base_t(),
m_parent(parent)
{}
virtual ~netlist_mame_t() { };
@ -116,9 +116,9 @@ public:
netlist_mame_device_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *file);
virtual ~netlist_mame_device_t() {}
static void static_set_constructor(device_t &device, void (*setup_func)(netlist_setup_t &));
static void static_set_constructor(device_t &device, void (*setup_func)(netlist::netlist_setup_t &));
ATTR_HOT inline netlist_setup_t &setup() { return *m_setup; }
ATTR_HOT inline netlist::netlist_setup_t &setup() { return *m_setup; }
ATTR_HOT inline netlist_mame_t &netlist() { return *m_netlist; }
ATTR_HOT inline netlist_time last_time_update() { return m_old; }
@ -153,9 +153,9 @@ private:
netlist_time m_old;
netlist_mame_t * m_netlist;
netlist_setup_t * m_setup;
netlist::netlist_setup_t * m_setup;
void (*m_setup_func)(netlist_setup_t &);
void (*m_setup_func)(netlist::netlist_setup_t &);
};
inline running_machine &netlist_mame_t::machine()
@ -179,7 +179,7 @@ public:
netlist_mame_cpu_device_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~netlist_mame_cpu_device_t() {}
static void static_set_constructor(device_t &device, void (*setup_func)(netlist_setup_t &));
static void static_set_constructor(device_t &device, void (*setup_func)(netlist::netlist_setup_t &));
protected:
// netlist_mame_device_t
@ -256,7 +256,7 @@ public:
netlist_mame_sound_device_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~netlist_mame_sound_device_t() {}
static void static_set_constructor(device_t &device, void (*setup_func)(netlist_setup_t &));
static void static_set_constructor(device_t &device, void (*setup_func)(netlist::netlist_setup_t &));
inline sound_stream *get_stream() { return m_stream; }
@ -306,7 +306,7 @@ public:
}
virtual ~netlist_mame_sub_interface() { }
virtual void custom_netlist_additions(netlist_setup_t &setup) { }
virtual void custom_netlist_additions(netlist::netlist_setup_t &setup) { }
inline netlist_mame_device_t &nl_owner() const { return *m_owner; }
@ -375,7 +375,7 @@ protected:
virtual void device_start();
private:
netlist_param_double_t *m_param;
netlist::netlist_param_double_t *m_param;
bool m_auto_port;
pstring m_param_name;
};
@ -400,7 +400,7 @@ public:
protected:
// device-level overrides
virtual void device_start();
virtual void custom_netlist_additions(netlist_setup_t &setup);
virtual void custom_netlist_additions(netlist::netlist_setup_t &setup);
private:
pstring m_in;
@ -449,7 +449,7 @@ protected:
virtual void device_start();
private:
netlist_param_int_t *m_param;
netlist::netlist_param_int_t *m_param;
UINT32 m_mask;
UINT32 m_shift;
pstring m_param_name;
@ -473,7 +473,7 @@ public:
protected:
// device-level overrides
virtual void device_start();
virtual void custom_netlist_additions(netlist_setup_t &setup);
virtual void custom_netlist_additions(netlist::netlist_setup_t &setup);
private:
UINT32 m_channel;
pstring m_param_name;
@ -497,7 +497,7 @@ public:
protected:
// device-level overrides
virtual void device_start();
virtual void custom_netlist_additions(netlist_setup_t &setup);
virtual void custom_netlist_additions(netlist::netlist_setup_t &setup);
private:
UINT32 m_channel;
pstring m_out_name;
@ -506,7 +506,7 @@ private:
// netdev_callback
// ----------------------------------------------------------------------------------------
class NETLIB_NAME(analog_callback) : public netlist_device_t
class NETLIB_NAME(analog_callback) : public netlist::netlist_device_t
{
public:
NETLIB_NAME(analog_callback)()
@ -545,7 +545,7 @@ public:
}
private:
netlist_analog_input_t m_in;
netlist::netlist_analog_input_t m_in;
netlist_analog_output_delegate m_callback;
netlist_mame_cpu_device_t *m_cpu_device;
nl_double m_last;
@ -555,11 +555,11 @@ private:
// sound_out
// ----------------------------------------------------------------------------------------
class NETLIB_NAME(sound_out) : public netlist_device_t
class NETLIB_NAME(sound_out) : public netlist::netlist_device_t
{
public:
NETLIB_NAME(sound_out)()
: netlist_device_t() { }
: netlist::netlist_device_t() { }
static const int BUFSIZE = 2048;
@ -604,14 +604,14 @@ public:
m_last_buffer = upto;
}
netlist_param_int_t m_channel;
netlist_param_double_t m_mult;
netlist_param_double_t m_offset;
netlist::netlist_param_int_t m_channel;
netlist::netlist_param_double_t m_mult;
netlist::netlist_param_double_t m_offset;
stream_sample_t *m_buffer;
netlist_time m_sample;
private:
netlist_analog_input_t m_in;
netlist::netlist_analog_input_t m_in;
stream_sample_t m_cur;
int m_last_pos;
netlist_time m_last_buffer;
@ -621,11 +621,11 @@ private:
// sound_in
// ----------------------------------------------------------------------------------------
class NETLIB_NAME(sound_in) : public netlist_device_t
class NETLIB_NAME(sound_in) : public netlist::netlist_device_t
{
public:
NETLIB_NAME(sound_in)()
: netlist_device_t() { }
: netlist::netlist_device_t() { }
static const int MAX_INPUT_CHANNELS = 10;
@ -665,7 +665,7 @@ public:
if (i != m_num_channel)
netlist().error("sound input numbering has to be sequential!");
m_num_channel++;
m_param[i] = dynamic_cast<netlist_param_double_t *>(setup().find_param(m_param_name[i].Value(), true));
m_param[i] = dynamic_cast<netlist::netlist_param_double_t *>(setup().find_param(m_param_name[i].Value(), true));
}
}
return m_num_channel;
@ -689,16 +689,16 @@ public:
m_pos = 0;
}
netlist_param_str_t m_param_name[MAX_INPUT_CHANNELS];
netlist_param_double_t *m_param[MAX_INPUT_CHANNELS];
netlist::netlist_param_str_t m_param_name[MAX_INPUT_CHANNELS];
netlist::netlist_param_double_t *m_param[MAX_INPUT_CHANNELS];
stream_sample_t *m_buffer[MAX_INPUT_CHANNELS];
netlist_param_double_t m_param_mult[MAX_INPUT_CHANNELS];
netlist_param_double_t m_param_offset[MAX_INPUT_CHANNELS];
netlist::netlist_param_double_t m_param_mult[MAX_INPUT_CHANNELS];
netlist::netlist_param_double_t m_param_offset[MAX_INPUT_CHANNELS];
netlist_time m_inc;
private:
netlist_logic_input_t m_feedback;
netlist_logic_output_t m_Q;
netlist::netlist_logic_input_t m_feedback;
netlist::netlist_logic_output_t m_Q;
int m_pos;
int m_num_channel;

View File

@ -4,6 +4,7 @@
# include <iomanip>
# include <cmath>
# include <ctime>
# include <cstdio>
using namespace std;

View File

@ -9,6 +9,8 @@
#include "../nl_setup.h"
#include "nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
class diode
{
public:
@ -248,3 +250,5 @@ NETLIB_UPDATE_TERMINALS(QBJT_EB)
NETLIB_UPDATE_PARAM(QBJT_EB)
{
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -24,6 +24,8 @@
NETDEV_PARAMI(_name, model, _model)
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// nld_Q - Base classes
// ----------------------------------------------------------------------------------------
@ -162,4 +164,6 @@ protected:
private:
};
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_BJT_H_ */

View File

@ -9,6 +9,8 @@
#include "../nl_setup.h"
#include "nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// nld_VCCS
// ----------------------------------------------------------------------------------------
@ -136,3 +138,5 @@ NETLIB_RESET(VCVS)
NETLIB_UPDATE_PARAM(VCVS)
{
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -26,6 +26,8 @@
NET_REGISTER_DEV(VCVS, _name)
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// nld_VCCS
// ----------------------------------------------------------------------------------------
@ -167,5 +169,7 @@ protected:
netlist_param_double_t m_RO;
};
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_FOURTERM_H_ */

View File

@ -12,6 +12,8 @@
#include "nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
template <unsigned m_N, unsigned _storage_N>
class netlist_matrix_solver_direct_t: public netlist_matrix_solver_t
{
@ -560,5 +562,6 @@ netlist_matrix_solver_direct_t<m_N, _storage_N>::netlist_matrix_solver_direct_t(
}
}
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_MS_DIRECT_H_ */

View File

@ -11,6 +11,8 @@
#include "nld_solver.h"
#include "nld_ms_direct.h"
NETLIB_NAMESPACE_DEVICES_START()
class netlist_matrix_solver_direct1_t: public netlist_matrix_solver_direct_t<1,1>
{
public:
@ -57,6 +59,7 @@ ATTR_HOT inline int netlist_matrix_solver_direct1_t::vsolve_non_dynamic(ATTR_UNU
}
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_MS_DIRECT1_H_ */

View File

@ -11,7 +11,7 @@
#include "nld_solver.h"
#include "nld_ms_direct.h"
NETLIB_NAMESPACE_DEVICES_START()
class netlist_matrix_solver_direct2_t: public netlist_matrix_solver_direct_t<2,2>
{
@ -63,6 +63,6 @@ ATTR_HOT inline int netlist_matrix_solver_direct2_t::vsolve_non_dynamic(ATTR_UNU
return 1;
}
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_MS_DIRECT2_H_ */

View File

@ -19,6 +19,8 @@
#include "mgmres.hpp"
NETLIB_NAMESPACE_DEVICES_START()
template <unsigned m_N, unsigned _storage_N>
class netlist_matrix_solver_GMRES_t: public netlist_matrix_solver_direct_t<m_N, _storage_N>
{
@ -198,5 +200,6 @@ ATTR_HOT inline int netlist_matrix_solver_GMRES_t<m_N, _storage_N>::vsolve_non_d
}
}
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_MS_GMRES_H_ */

View File

@ -17,6 +17,8 @@
#include "nld_solver.h"
#include "nld_ms_direct.h"
NETLIB_NAMESPACE_DEVICES_START()
template <unsigned m_N, unsigned _storage_N>
class netlist_matrix_solver_SOR_t: public netlist_matrix_solver_direct_t<m_N, _storage_N>
{
@ -158,6 +160,14 @@ ATTR_HOT inline int netlist_matrix_solver_SOR_t<m_N, _storage_N>::vsolve_non_dyn
const nl_double accuracy = this->m_params.m_accuracy;
/* uncommenting the line below will force dynamic updates every X iterations
* althought the system has not converged yet. This is a proof of concept,
* 91glub
*
*/
const bool interleaved_dynamic_updates = false;
//const bool interleaved_dynamic_updates = newton_raphson;
do {
resched = false;
double err = 0;
@ -181,19 +191,20 @@ ATTR_HOT inline int netlist_matrix_solver_SOR_t<m_N, _storage_N>::vsolve_non_dyn
resched = true;
resched_cnt++;
} while (resched && (resched_cnt < this->m_params.m_gs_loops));
//} while (resched && (resched_cnt < this->m_params.m_gs_loops));
} while (resched && ((!interleaved_dynamic_updates && resched_cnt < this->m_params.m_gs_loops) || (interleaved_dynamic_updates && resched_cnt < 5 )));
this->m_gs_total += resched_cnt;
this->m_stat_calculations++;
if (resched)
if (resched && !interleaved_dynamic_updates)
{
// Fallback to direct solver ...
this->m_gs_fail++;
return netlist_matrix_solver_direct_t<m_N, _storage_N>::vsolve_non_dynamic(newton_raphson);
}
if (newton_raphson)
if (interleaved_dynamic_updates)
{
for (int k = 0; k < iN; k++)
this->m_nets[k]->m_cur_Analog += 1.0 * (new_V[k] - this->m_nets[k]->m_cur_Analog);
@ -207,5 +218,6 @@ ATTR_HOT inline int netlist_matrix_solver_SOR_t<m_N, _storage_N>::vsolve_non_dyn
return resched_cnt;
}
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_MS_SOR_H_ */

View File

@ -17,6 +17,7 @@
#include "nld_solver.h"
#include "nld_ms_direct.h"
NETLIB_NAMESPACE_DEVICES_START()
template <unsigned m_N, unsigned _storage_N>
class netlist_matrix_solver_SOR_mat_t: public netlist_matrix_solver_direct_t<m_N, _storage_N>
@ -235,5 +236,6 @@ ATTR_HOT inline int netlist_matrix_solver_SOR_mat_t<m_N, _storage_N>::vsolve_non
}
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_MS_GAUSS_SEIDEL_H_ */

View File

@ -40,6 +40,8 @@
#include "omp.h"
#endif
NETLIB_NAMESPACE_DEVICES_START()
ATTR_COLD void terms_t::add(netlist_terminal_t *term, int net_other)
{
m_term.add(term);
@ -304,7 +306,7 @@ NETLIB_START(solver)
register_param("ACCURACY", m_accuracy, 1e-7);
register_param("GS_LOOPS", m_gs_loops, 9); // Gauss-Seidel loops
register_param("GS_THRESHOLD", m_gs_threshold, 6); // below this value, gaussian elimination is used
register_param("NR_LOOPS", m_nr_loops, 25); // Newton-Raphson loops
register_param("NR_LOOPS", m_nr_loops, 250); // Newton-Raphson loops
register_param("PARALLEL", m_parallel, 0);
register_param("SOR_FACTOR", m_sor, 1.059);
register_param("GMIN", m_gmin, NETLIST_GMIN_DEFAULT);
@ -562,4 +564,6 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
}
}
NETLIB_NAMESPACE_DEVICES_END()
#include "mgmres.cpp"

View File

@ -29,6 +29,8 @@
// solver
// ----------------------------------------------------------------------------------------
NETLIB_NAMESPACE_DEVICES_START()
class NETLIB_NAME(solver);
/* FIXME: these should become proper devices */
@ -219,6 +221,6 @@ private:
netlist_matrix_solver_t *create_solver(int size, int gs_threshold, bool use_specific);
};
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_SOLVER_H_ */

View File

@ -11,6 +11,8 @@
#define R_OFF (1.0 / netlist().gmin())
#define R_ON 0.01
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// SWITCH
// ----------------------------------------------------------------------------------------
@ -101,3 +103,5 @@ NETLIB_UPDATE_PARAM(switch2)
{
update();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -27,6 +27,8 @@
// Devices ...
// ----------------------------------------------------------------------------------------
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE_WITH_PARAMS(switch1,
NETLIB_NAME(R_base) m_R;
@ -39,6 +41,6 @@ NETLIB_DEVICE_WITH_PARAMS(switch2,
netlist_param_int_t m_POS;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_SWITCHES_H_ */

View File

@ -10,6 +10,8 @@
#include "nld_twoterm.h"
#include "nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// netlist_generic_diode
// ----------------------------------------------------------------------------------------
@ -288,3 +290,5 @@ NETLIB_UPDATE_TERMINALS(D)
m_D.update_diode(deltaV());
set(m_D.G(), 0.0, m_D.Ieq());
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -85,6 +85,8 @@
// Implementation
// ----------------------------------------------------------------------------------------
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// nld_twoterm
// ----------------------------------------------------------------------------------------
@ -292,5 +294,6 @@ protected:
};
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_TWOTERM_H_ */

View File

@ -41,7 +41,9 @@ NETLIST_END()
#define ENTRY1(_nic, _name, _defparam) factory.register_device<_nic>( # _name, xstr(_nic), _defparam );
#define ENTRY(_nic, _name, _defparam) ENTRY1(NETLIB_NAME(_nic), _name, _defparam)
void nl_initialize_factory(netlist_factory_list_t &factory)
NETLIB_NAMESPACE_DEVICES_START()
void initialize_factory(netlist_factory_list_t &factory)
{
ENTRY(R, RES, "R")
ENTRY(POT, POT, "R")
@ -143,3 +145,13 @@ void nl_initialize_factory(netlist_factory_list_t &factory)
ENTRY(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2")
ENTRY(NE555_dip, NE555_DIP, "-")
}
NETLIB_NAMESPACE_DEVICES_END()
namespace netlist
{
void initialize_factory(netlist_factory_list_t &factory)
{
devices::initialize_factory(factory);
}
}

View File

@ -67,6 +67,8 @@
NETLIST_EXTERNAL(diode_models);
NETLIST_EXTERNAL(bjt_models);
void nl_initialize_factory(netlist_factory_list_t &factory);
namespace netlist {
void initialize_factory(netlist::netlist_factory_list_t &factory);
}
#endif

View File

@ -7,6 +7,8 @@
#include "nld_4020.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(4020)
{
register_sub("sub", sub);
@ -146,3 +148,5 @@ NETLIB_RESET(4020_dip)
{
NETLIB_NAME(4020)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -40,6 +40,8 @@
#define CD_4020_DIP(_name) \
NET_REGISTER_DEV(4020_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(4020_sub,
NETLIB_LOGIC_FAMILY(CD4000)
@ -61,4 +63,6 @@ NETLIB_DEVICE(4020,
NETLIB_DEVICE_DERIVED_PURE(4020_dip, 4020);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_4020_H_ */

View File

@ -7,6 +7,7 @@
#include "nld_4066.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(4066)
{
@ -118,3 +119,5 @@ NETLIB_UPDATE(4016_dip)
/* only called during startup */
NETLIB_NAME(4066_dip)::update();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,6 +33,8 @@
#define CD_4016_DIP(_name) \
NET_REGISTER_DEV(4016_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(4066,
NETLIB_LOGIC_FAMILY(CD4000)
public:
@ -56,4 +58,6 @@ NETLIB_DEVICE(4066_dip,
NETLIB_DEVICE_DERIVED_PURE(4016_dip, 4066_dip);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_4066_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7400.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7400::truthtable_t nld_7400::m_ttbl;
const char *nld_7400::m_desc[] = {
@ -59,3 +61,5 @@ NETLIB_RESET(7400_dip)
m_3.do_reset();
m_4.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,23 +33,24 @@
#define NLD_7400_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7400_NAND(_name, _A, _B) \
NET_REGISTER_DEV(7400, _name) \
NET_CONNECT(_name, A, _A) \
NET_CONNECT(_name, B, _B)
#define TTL_7400_DIP(_name) \
NET_REGISTER_DEV(7400_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7400, 2, 1, 0);
#else
NETLIB_SIGNAL(7400, 2, 0, 0);
#endif
#define TTL_7400_DIP(_name) \
NET_REGISTER_DEV(7400_dip, _name)
NETLIB_DEVICE(7400_dip,
NETLIB_NAME(7400) m_1;
@ -58,4 +59,6 @@ NETLIB_DEVICE(7400_dip,
NETLIB_NAME(7400) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7400_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7402.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7402::truthtable_t nld_7402::m_ttbl;
const char *nld_7402::m_desc[] = {
@ -59,3 +61,5 @@ NETLIB_RESET(7402_dip)
m_3.do_reset();
m_4.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,6 +33,7 @@
#define NLD_7402_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7402_NOR(_name, _I1, _I2) \
NET_REGISTER_DEV(7402, _name) \
@ -43,8 +44,9 @@
NET_REGISTER_DEV(7402_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7402, 2, 1, 0);
#else
NETLIB_SIGNAL(7402, 2, 1, 0);
@ -58,4 +60,6 @@ NETLIB_DEVICE(7402_dip,
NETLIB_NAME(7402) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7402_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7404.h"
NETLIB_NAMESPACE_DEVICES_START()
#if 1 && (USE_TRUTHTABLE)
nld_7404::truthtable_t nld_7404::m_ttbl;
const char *nld_7404::m_desc[] = {
@ -84,3 +86,5 @@ NETLIB_RESET(7404_dip)
m_5.do_reset();
m_6.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -31,9 +31,18 @@
#define NLD_7404_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7404_INVERT(_name, _A) \
NET_REGISTER_DEV(7404, _name) \
NET_CONNECT(_name, A, _A)
#define TTL_7404_DIP(_name) \
NET_REGISTER_DEV(7402_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if 1 && (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7404, 1, 1, 0);
#else
NETLIB_DEVICE(7404,
@ -43,13 +52,6 @@ public:
);
#endif
#define TTL_7404_INVERT(_name, _A) \
NET_REGISTER_DEV(7404, _name) \
NET_CONNECT(_name, A, _A)
#define TTL_7404_DIP(_name) \
NET_REGISTER_DEV(7402_dip, _name)
NETLIB_DEVICE(7404_dip,
NETLIB_NAME(7404) m_1;
@ -59,4 +61,7 @@ NETLIB_DEVICE(7404_dip,
NETLIB_NAME(7404) m_5;
NETLIB_NAME(7404) m_6;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7404_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7408.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7408::truthtable_t nld_7408::m_ttbl;
const char *nld_7408::m_desc[] = {
@ -59,3 +61,5 @@ NETLIB_RESET(7408_dip)
m_3.do_reset();
m_4.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,21 +33,24 @@
#define NLD_7408_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7408_AND(_name, _A, _B) \
NET_REGISTER_DEV(7408, _name) \
NET_CONNECT(_name, A, _A) \
NET_CONNECT(_name, B, _B)
#define TTL_7408_DIP(_name) \
NET_REGISTER_DEV(7408_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7408, 2, 1, 0);
#else
NETLIB_SIGNAL(7408, 2, 0, 1);
#endif
#define TTL_7408_DIP(_name) \
NET_REGISTER_DEV(7408_dip, _name)
NETLIB_DEVICE(7408_dip,
@ -57,4 +60,6 @@ NETLIB_DEVICE(7408_dip,
NETLIB_NAME(7408) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7408_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7410.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7410::truthtable_t nld_7410::m_ttbl;
const char *nld_7410::m_desc[] = {
@ -57,3 +59,5 @@ NETLIB_RESET(7410_dip)
m_2.do_reset();
m_3.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,6 +33,7 @@
#define NLD_7410_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7410_NAND(_name, _I1, _I2, _I3) \
NET_REGISTER_DEV(7410, _name) \
@ -40,16 +41,17 @@
NET_CONNECT(_name, B, _I2) \
NET_CONNECT(_name, C, _I3)
#define TTL_7410_DIP(_name) \
NET_REGISTER_DEV(7410_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7410, 3, 1, 0);
#else
NETLIB_SIGNAL(7410, 3, 0, 0);
#endif
#define TTL_7410_DIP(_name) \
NET_REGISTER_DEV(7410_dip, _name)
NETLIB_DEVICE(7410_dip,
NETLIB_NAME(7410) m_1;
@ -57,4 +59,6 @@ NETLIB_DEVICE(7410_dip,
NETLIB_NAME(7410) m_3;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7410_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_74107.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(74107Asub)
{
register_input("CLK", m_clk);
@ -141,3 +143,5 @@ NETLIB_UPDATE(74107_dip)
m_1.update_dev();
m_2.update_dev();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -74,6 +74,8 @@
#define TTL_74107_DIP(_name) \
NET_REGISTER_DEV(74107_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(74107Asub,
netlist_logic_input_t m_clk;
@ -112,4 +114,6 @@ NETLIB_DEVICE(74107_dip,
NETLIB_NAME(74107) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74107_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7411.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7411::truthtable_t nld_7411::m_ttbl;
const char *nld_7411::m_desc[] = {
@ -55,3 +57,5 @@ NETLIB_RESET(7411_dip)
m_2.do_reset();
m_3.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,6 +33,7 @@
#define NLD_7411_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7411_AND(_name, _I1, _I2, _I3) \
NET_REGISTER_DEV(7411, _name) \
@ -40,15 +41,17 @@
NET_CONNECT(_name, B, _I2) \
NET_CONNECT(_name, C, _I3)
#define TTL_7411_DIP(_name) \
NET_REGISTER_DEV(7411_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7411, 3, 1, 0);
#else
NETLIB_SIGNAL(7411, 3, 0, 1);
#endif
#define TTL_7411_DIP(_name) \
NET_REGISTER_DEV(7411_dip, _name)
NETLIB_DEVICE(7411_dip,
@ -57,4 +60,6 @@ NETLIB_DEVICE(7411_dip,
NETLIB_NAME(7411) m_3;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7411_H_ */

View File

@ -10,6 +10,8 @@
#define R_OFF (1E20)
#define R_ON (m_RI.Value())
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(74123)
{
m_dev_type = 74123;
@ -201,3 +203,5 @@ NETLIB_RESET(9602_dip)
m_1.do_reset();
m_2.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -42,6 +42,7 @@
#define TTL_74123(_name) \
NET_REGISTER_DEV(74123, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(74123,
public:
@ -93,5 +94,7 @@ NETLIB_DEVICE(9602_dip,
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74123_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_74153.h"
NETLIB_NAMESPACE_DEVICES_START()
/* FIXME: timing is not 100% accurate, Strobe and Select inputs have a
* slightly longer timing.
* Convert this to sub-devices at some time.
@ -110,3 +112,5 @@ NETLIB_RESET(74153_dip)
m_1.do_reset();
m_2.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -60,6 +60,8 @@
#define TTL_74153_DIP(_name) \
NET_REGISTER_DEV(74153_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(74153sub,
netlist_logic_input_t m_C[4];
netlist_logic_input_t m_G;
@ -84,4 +86,6 @@ NETLIB_DEVICE(74153_dip,
netlist_logic_input_t m_B;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74153_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_74175.h"
NETLIB_NAMESPACE_DEVICES_START()
static const netlist_time delay[2] = { NLTIME_FROM_NS(25), NLTIME_FROM_NS(25) };
static const netlist_time delay_clear[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) };
@ -136,3 +138,5 @@ NETLIB_UPDATE(74175_dip)
{
NETLIB_NAME(74175)::update();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -43,6 +43,7 @@
#define TTL_74175_DIP(_name) \
NET_REGISTER_DEV(74175_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(74175_sub,
@ -63,4 +64,6 @@ NETLIB_DEVICE(74175,
NETLIB_DEVICE_DERIVED_PURE(74175_dip, 74175);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74175_H_ */

View File

@ -9,6 +9,8 @@
#include "nld_74192.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(74192)
{
register_sub("subABCD", m_ABCD);
@ -130,3 +132,5 @@ NETLIB_RESET(74192_dip)
{
NETLIB_NAME(74192)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -38,6 +38,8 @@
#define TTL_74192_DIP(_name) \
NET_REGISTER_DEV(74192_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(74192,
ATTR_HOT void update_outputs();
@ -58,4 +60,6 @@ NETLIB_DEVICE(74192,
NETLIB_DEVICE_DERIVED_PURE(74192_dip, 74192);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74192_H_ */

View File

@ -9,6 +9,8 @@
#include "nld_74193.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(74193)
{
register_input("A", m_A);
@ -130,3 +132,5 @@ NETLIB_RESET(74193_dip)
{
NETLIB_NAME(74193)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -34,6 +34,8 @@
#define TTL_74193_DIP(_name) \
NET_REGISTER_DEV(74193_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(74193,
ATTR_HOT void update_outputs();
@ -57,4 +59,6 @@ NETLIB_DEVICE(74193,
NETLIB_DEVICE_DERIVED_PURE(74193_dip, 74193);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74193_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7420.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7420::truthtable_t nld_7420::m_ttbl;
const char *nld_7420::m_desc[] = {
@ -53,3 +55,5 @@ NETLIB_RESET(7420_dip)
m_1.do_reset();
m_2.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -34,6 +34,7 @@
#define NLD_7420_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7420_NAND(_name, _I1, _I2, _I3, _I4) \
NET_REGISTER_DEV(7420, _name) \
@ -43,20 +44,23 @@
NET_CONNECT(_name, D, _I4)
#define TTL_7420_DIP(_name) \
NET_REGISTER_DEV(7420_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7420, 4, 1, 0);
#else
NETLIB_SIGNAL(7420, 4, 0, 0);
#endif
#define TTL_7420_DIP(_name) \
NET_REGISTER_DEV(7420_dip, _name)
NETLIB_DEVICE(7420_dip,
NETLIB_NAME(7420) m_1;
NETLIB_NAME(7420) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7420_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7425.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(7425_dip)
{
register_sub("1", m_1);
@ -44,3 +46,5 @@ NETLIB_RESET(7425_dip)
m_1.do_reset();
m_2.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -45,15 +45,19 @@
NET_CONNECT(_name, C, _I3) \
NET_CONNECT(_name, D, _I4)
NETLIB_SIGNAL(7425, 4, 1, 0);
#define TTL_7425_DIP(_name) \
NET_REGISTER_DEV(7425_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SIGNAL(7425, 4, 1, 0);
NETLIB_DEVICE(7425_dip,
NETLIB_NAME(7425) m_1;
NETLIB_NAME(7425) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7425_H_ */

View File

@ -9,6 +9,8 @@
#include "nld_7402.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7427::truthtable_t nld_7427::m_ttbl;
const char *nld_7427::m_desc[] = {
@ -57,3 +59,5 @@ NETLIB_RESET(7427_dip)
m_2.do_reset();
m_3.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,6 +33,7 @@
#define NLD_7427_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7427_NOR(_name, _I1, _I2, _I3) \
NET_REGISTER_DEV(7427, _name) \
@ -40,20 +41,25 @@
NET_CONNECT(_name, B, _I2) \
NET_CONNECT(_name, C, _I3)
#define TTL_7427_DIP(_name) \
NET_REGISTER_DEV(7427_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7427, 3, 1, 0);
#else
NETLIB_SIGNAL(7427, 3, 1, 0);
#endif
#define TTL_7427_DIP(_name) \
NET_REGISTER_DEV(7427_dip, _name)
NETLIB_DEVICE(7427_dip,
NETLIB_NAME(7427) m_1;
NETLIB_NAME(7427) m_2;
NETLIB_NAME(7427) m_3;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7427_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_74279.h"
NETLIB_NAMESPACE_DEVICES_START()
nld_74279A::truthtable_t nld_74279A::m_ttbl;
nld_74279B::truthtable_t nld_74279B::m_ttbl;
@ -160,3 +162,5 @@ NETLIB_RESET(74279_dip)
m_3.do_reset();
m_4.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -38,6 +38,11 @@
#include "nld_truthtable.h"
#define TTL_74279_DIP(_name) \
NET_REGISTER_DEV(74279_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if 0
NETLIB_TRUTHTABLE(74279A, 2, 1, 1);
NETLIB_TRUTHTABLE(74279B, 3, 1, 1);
@ -47,8 +52,6 @@ NETLIB_TRUTHTABLE(74279B, 4, 1, 0);
//NETLIB_TRUTHTABLE(74279A, 4, 2, 0);
//NETLIB_TRUTHTABLE(74279B, 5, 2, 0);
#endif
#define TTL_74279_DIP(_name) \
NET_REGISTER_DEV(74279_dip, _name)
NETLIB_DEVICE(74279_dip,
@ -58,4 +61,6 @@ NETLIB_DEVICE(74279_dip,
NETLIB_NAME(74279A) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74279_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7430.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7430::truthtable_t nld_7430::m_ttbl;
const char *nld_7430::m_desc[] = {
@ -53,3 +55,5 @@ NETLIB_RESET(7430_dip)
{
m_1.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -38,6 +38,7 @@
#define NLD_7430_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7430_NAND(_name, _I1, _I2, _I3, _I4, _I5, _I6, _I7, _I8) \
NET_REGISTER_DEV(7430, _name) \
@ -51,18 +52,24 @@
NET_CONNECT(_name, H, _I8)
#define TTL_7430_DIP(_name) \
NET_REGISTER_DEV(7430_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7430, 8, 1, 0);
#else
NETLIB_SIGNAL(7430, 8, 0, 0);
#endif
#define TTL_7430_DIP(_name) \
NET_REGISTER_DEV(7430_dip, _name)
NETLIB_DEVICE(7430_dip,
NETLIB_NAME(7430) m_1;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7430_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7432.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7432::truthtable_t nld_7432::m_ttbl;
const char *nld_7432::m_desc[] = {
@ -59,3 +61,5 @@ NETLIB_RESET(7432_dip)
m_3.do_reset();
m_4.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,6 +33,7 @@
#define NLD_7432_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7432_OR(_name, _I1, _I2) \
NET_REGISTER_DEV(7432, _name) \
@ -42,9 +43,9 @@
#define TTL_7432_DIP(_name) \
NET_REGISTER_DEV(7432_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7432, 2, 1, 0);
#else
NETLIB_SIGNAL(7432, 2, 1, 1);
@ -58,4 +59,6 @@ NETLIB_DEVICE(7432_dip,
NETLIB_NAME(7432) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7432_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7437.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7437::truthtable_t nld_7437::m_ttbl;
const char *nld_7437::m_desc[] = {
@ -59,3 +61,5 @@ NETLIB_RESET(7437_dip)
m_3.do_reset();
m_4.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -36,22 +36,24 @@
#define NLD_7437_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7437_NAND(_name, _A, _B) \
NET_REGISTER_DEV(7437, _name) \
NET_CONNECT(_name, A, _A) \
NET_CONNECT(_name, B, _B)
#define TTL_7437_DIP(_name) \
NET_REGISTER_DEV(7437_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7437, 2, 1, 0);
#else
NETLIB_SIGNAL(7437, 2, 0, 0);
#endif
#define TTL_7437_DIP(_name) \
NET_REGISTER_DEV(7437_dip, _name)
NETLIB_DEVICE(7437_dip,
NETLIB_NAME(7437) m_1;
@ -60,4 +62,6 @@ NETLIB_DEVICE(7437_dip,
NETLIB_NAME(7437) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7437_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7448.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (0 && USE_TRUTHTABLE)
nld_7448::truthtable_t nld_7448::m_ttbl;
const char *nld_7448::m_desc[] = {
@ -217,3 +219,5 @@ NETLIB_RESET(7448_dip)
{
NETLIB_NAME(7448)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -48,6 +48,8 @@
NETLIB_TRUTHTABLE(7448, 7, 7, 0);
#else
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(7448_sub,
ATTR_HOT void update_outputs(UINT8 v);
static const UINT8 tab7448[16][7];
@ -72,6 +74,9 @@ public:
netlist_logic_input_t m_BIQ;
);
#endif
NETLIB_DEVICE_DERIVED_PURE(7448_dip, 7448);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7448_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7450.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(7450)
{
register_input("A", m_A);
@ -88,3 +90,5 @@ NETLIB_RESET(7450_dip)
m_1.do_reset();
m_2.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -36,6 +36,8 @@
#define TTL_7450_DIP(_name) \
NET_REGISTER_DEV(7450_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(7450,
public:
netlist_logic_input_t m_A;
@ -51,4 +53,6 @@ NETLIB_DEVICE(7450_dip,
NETLIB_NAME(7450) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7450_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7474.h"
NETLIB_NAMESPACE_DEVICES_START()
ATTR_HOT inline void NETLIB_NAME(7474sub)::newstate(const UINT8 stateQ, const UINT8 stateQQ)
{
// 0: High-to-low 40 ns, 1: Low-to-high 25 ns
@ -124,3 +126,5 @@ NETLIB_UPDATE(7474_dip)
m_1.update_dev();
m_2.update_dev();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -54,6 +54,8 @@
#define TTL_7474_DIP(_name) \
NET_REGISTER_DEV(7474_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(7474sub,
netlist_logic_input_t m_CLK;
@ -79,4 +81,6 @@ NETLIB_DEVICE(7474_dip,
NETLIB_NAME(7474) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7474_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7483.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(7483)
{
register_input("A1", m_A1);
@ -83,3 +85,5 @@ NETLIB_RESET(7483_dip)
{
NETLIB_NAME(7483)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -44,6 +44,8 @@
#define TTL_7483_DIP(_name) \
NET_REGISTER_DEV(7483_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(7483,
netlist_logic_input_t m_C0;
netlist_logic_input_t m_A1;
@ -67,4 +69,6 @@ NETLIB_DEVICE(7483,
NETLIB_DEVICE_DERIVED_PURE(7483_dip, 7483);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7483_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7486.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
nld_7486::truthtable_t nld_7486::m_ttbl;
const char *nld_7486::m_desc[] = {
@ -112,3 +114,4 @@ NETLIB_RESET(7486_dip)
m_4.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -33,14 +33,20 @@
#define NLD_7486_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_7486_XOR(_name, _A, _B) \
NET_REGISTER_DEV(7486, _name) \
NET_CONNECT(_name, A, _A) \
NET_CONNECT(_name, B, _B)
#define TTL_7486_DIP(_name) \
NET_REGISTER_DEV(7486_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
NETLIB_TRUTHTABLE(7486, 2, 1, 0);
#else
NETLIB_DEVICE(7486,
@ -54,9 +60,6 @@ public:
);
#endif
#define TTL_7486_DIP(_name) \
NET_REGISTER_DEV(7486_dip, _name)
NETLIB_DEVICE(7486_dip,
NETLIB_NAME(7486) m_1;
@ -65,4 +68,6 @@ NETLIB_DEVICE(7486_dip,
NETLIB_NAME(7486) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7486_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_7490.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(7490)
{
register_input("A", m_A);
@ -112,3 +114,5 @@ NETLIB_RESET(7490_dip)
{
NETLIB_NAME(7490)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -69,6 +69,7 @@
#define TTL_7490_DIP(_name) \
NET_REGISTER_DEV(7490_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(7490,
ATTR_HOT void update_outputs();
@ -89,4 +90,6 @@ NETLIB_DEVICE(7490,
NETLIB_DEVICE_DERIVED_PURE(7490_dip, 7490);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7490_H_ */

View File

@ -8,6 +8,8 @@
#include "nld_7493.h"
#include "../nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(7493)
{
register_sub("A", A);
@ -118,3 +120,5 @@ NETLIB_RESET(7493_dip)
{
NETLIB_NAME(7493)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -69,6 +69,8 @@
#define TTL_7493_DIP(_name) \
NET_REGISTER_DEV(7493_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(7493ff,
netlist_logic_input_t m_I;
netlist_logic_output_t m_Q;
@ -89,5 +91,7 @@ NETLIB_DEVICE(7493,
NETLIB_DEVICE_DERIVED_PURE(7493_dip, 7493);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_7493_H_ */

View File

@ -42,6 +42,8 @@
#include "nld_74ls629.h"
#include "../nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(SN74LS629clk)
{
register_input("FB", m_FB);
@ -205,3 +207,5 @@ NETLIB_RESET(SN74LS629_dip)
m_1.do_reset();
m_2.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -35,6 +35,8 @@
NET_REGISTER_DEV(SN74LS629, _name) \
NETDEV_PARAMI(_name, CAP, _cap)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(SN74LS629clk,
netlist_logic_input_t m_FB;
netlist_logic_output_t m_Y;
@ -67,5 +69,7 @@ NETLIB_DEVICE(SN74LS629_dip,
NETLIB_NAME(SN74LS629) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_74LS629_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_82S16.h"
NETLIB_NAMESPACE_DEVICES_START()
// FIXME: timing!
// FIXME: optimize device (separate address decoder!)
NETLIB_UPDATE(82S16)
@ -98,3 +100,5 @@ NETLIB_UPDATE(82S16_dip)
{
NETLIB_NAME(82S16)::update();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -31,6 +31,8 @@
#define TTL_82S16_DIP(_name) \
NET_REGISTER_DEV(82S16_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(82S16,
netlist_logic_input_t m_A[8];
@ -47,4 +49,6 @@ NETLIB_DEVICE(82S16,
NETLIB_DEVICE_DERIVED_PURE(82S16_dip, 82S16);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_82S16_H_ */

View File

@ -9,6 +9,8 @@
#define MAXCNT 9
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(9310)
{
register_sub("subABCD", subABCD);
@ -231,3 +233,5 @@ NETLIB_RESET(9310_dip)
{
NETLIB_NAME(9310)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -62,6 +62,8 @@
#define TTL_9310_DIP(_name) \
NET_REGISTER_DEV(9310_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(9310_subABCD,
netlist_logic_input_t m_A;
netlist_logic_input_t m_B;
@ -104,4 +106,6 @@ NETLIB_DEVICE(9310,
NETLIB_DEVICE_DERIVED_PURE(9310_dip, 9310);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_9310_H_ */

View File

@ -22,6 +22,8 @@
*/
#include "nld_9312.h"
NETLIB_NAMESPACE_DEVICES_START()
#if (1 && USE_TRUTHTABLE)
nld_9312::truthtable_t nld_9312::m_ttbl;
@ -177,3 +179,4 @@ NETLIB_RESET(9312_dip)
{
m_sub.do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -38,12 +38,17 @@
#define NLD_9312_H_
#include "nld_signal.h"
#include "nld_truthtable.h"
#define TTL_9312(_name) \
NET_REGISTER_DEV(9312, _name)
#if (USE_TRUTHTABLE)
#include "nld_truthtable.h"
#define TTL_9312_DIP(_name) \
NET_REGISTER_DEV(9312_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
#if (USE_TRUTHTABLE)
/* The truthtable implementation is a lot faster than
* the carefully crafted code :-(
*/
@ -67,12 +72,10 @@ public:
#endif
#define TTL_9312_DIP(_name) \
NET_REGISTER_DEV(9312_dip, _name)
NETLIB_DEVICE(9312_dip,
NETLIB_NAME(9312) m_sub;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_9312_H_ */

View File

@ -9,6 +9,8 @@
#define MAXCNT 15
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(9316)
{
register_sub("subABCD", subABCD);
@ -226,3 +228,5 @@ NETLIB_RESET(9316_dip)
{
NETLIB_NAME(9316)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -66,6 +66,8 @@
#define TTL_9316_DIP(_name) \
NET_REGISTER_DEV(9316_dip, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_SUBDEVICE(9316_subABCD,
netlist_logic_input_t m_A;
netlist_logic_input_t m_B;
@ -109,4 +111,6 @@ NETLIB_DEVICE(9316,
NETLIB_DEVICE_DERIVED_PURE(9316_dip, 9316);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_9316_H_ */

View File

@ -11,6 +11,8 @@
#include "../nl_base.h"
#include "../analog/nld_twoterm.h"
NETLIB_NAMESPACE_DEVICES_START()
class nld_vdd_vss : public netlist_device_t
{
public:
@ -35,4 +37,6 @@ public:
ATTR_HOT inline nl_double vss() { return INPANALOG(m_vss); }
};
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_CMOS_H_ */

View File

@ -8,6 +8,8 @@
#include "nld_legacy.h"
#include "../nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(nicRSFF)
{
register_input("S", m_S);
@ -72,3 +74,5 @@ NETLIB_UPDATE(nicDelay)
}
m_last = nval;
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -15,6 +15,8 @@
#include "../nl_base.h"
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// Macros
// ----------------------------------------------------------------------------------------
@ -49,5 +51,6 @@ NETLIB_DEVICE_WITH_PARAMS(nicDelay,
UINT8 m_last;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_LEGACY_H_ */

View File

@ -10,6 +10,8 @@
#include "nld_log.h"
//#include "sound/wavwrite.h"
NETLIB_NAMESPACE_DEVICES_START()
//FIXME: what to do with save states?
NETLIB_START(log)
@ -70,3 +72,5 @@ NETLIB_NAME(log)::~NETLIB_NAME(wav)()
fclose(m_file);
}
#endif
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -24,6 +24,8 @@
NET_REGISTER_DEV(log, _name) \
NET_CONNECT(_name, I, _I)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(log,
~NETLIB_NAME(log)();
netlist_analog_input_t m_I;
@ -50,4 +52,6 @@ private:
);
#endif
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_LOG_H_ */

View File

@ -12,6 +12,8 @@
#define R_OFF (1E20)
#define R_ON (25) // Datasheet states a maximum discharge of 200mA, R = 5V / 0.2
NETLIB_NAMESPACE_DEVICES_START()
inline nl_double NETLIB_NAME(NE555)::clamp(const nl_double v, const nl_double a, const nl_double b)
{
nl_double ret = v;
@ -124,3 +126,5 @@ NETLIB_RESET(NE555_dip)
{
NETLIB_NAME(NE555)::reset();
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -25,6 +25,7 @@
#define NE555(_name) \
NET_REGISTER_DEV(NE555, _name)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(NE555,
NETLIB_NAME(R) m_R1;
@ -49,5 +50,6 @@ NETLIB_DEVICE(NE555,
NETLIB_DEVICE_DERIVED_PURE(NE555_dip, NE555);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_NE555_H_ */

View File

@ -7,6 +7,8 @@
#include "nld_r2r_dac.h"
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(r2r_dac)
{
NETLIB_NAME(twoterm)::start();
@ -38,3 +40,5 @@ NETLIB_UPDATE_PARAM(r2r_dac)
this->set(1.0 / m_R.Value(), V, 0.0);
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -55,6 +55,8 @@
NETDEV_PARAMI(_name, R, _R) \
NETDEV_PARAMI(_name, N, _N)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE_WITH_PARAMS_DERIVED(r2r_dac, twoterm,
netlist_param_double_t m_VIN;
netlist_param_double_t m_R;
@ -62,5 +64,7 @@ NETLIB_DEVICE_WITH_PARAMS_DERIVED(r2r_dac, twoterm,
netlist_param_int_t m_val;
);
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_R2R_DAC_H_ */

View File

@ -22,6 +22,8 @@
: net_signal_t<_num_input, _check, _invert>() { } \
}
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// net_signal_t
// ----------------------------------------------------------------------------------------
@ -112,4 +114,6 @@ public:
INT32 m_active;
};
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_SIGNAL_H_ */

View File

@ -8,6 +8,8 @@
#include "nld_system.h"
#include "../analog/nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
// ----------------------------------------------------------------------------------------
// netlistparams
// ----------------------------------------------------------------------------------------
@ -271,3 +273,5 @@ NETLIB_UPDATE_PARAM(res_sw)
{
// nothing, not intended to be called
}
NETLIB_NAMESPACE_DEVICES_END()

View File

@ -64,8 +64,10 @@
#define PARAMETERS(_name) \
NET_REGISTER_DEV(netlistparams, _name)
NETLIB_NAMESPACE_DEVICES_START()
// -----------------------------------------------------------------------------
// mainclock
// netlistparams
// -----------------------------------------------------------------------------
NETLIB_DEVICE_WITH_PARAMS(netlistparams,
@ -406,4 +408,6 @@ private:
bool m_is_timestep;
};
NETLIB_NAMESPACE_DEVICES_END()
#endif /* NLD_SYSTEM_H_ */

View File

@ -8,6 +8,8 @@
#include "nld_truthtable.h"
#include "../plib/plists.h"
NETLIB_NAMESPACE_DEVICES_START()
unsigned truthtable_desc_t::count_bits(UINT32 v)
{
unsigned ret = 0;
@ -267,3 +269,5 @@ netlist_base_factory_truthtable_t *nl_tt_factory_create(const unsigned ni, const
}
return NULL;
}
NETLIB_NAMESPACE_DEVICES_END()

Some files were not shown because too many files have changed in this diff Show More