mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
-netlist: Added 2716 16 Kbit (2 Kbit x 8) UV EPROM. [Ryan Holtz]
This commit is contained in:
parent
32d0f10418
commit
e3e38025c3
@ -91,6 +91,8 @@ project "netlist"
|
||||
MAME_DIR .. "src/lib/netlist/solver/nld_ms_w.h",
|
||||
MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct_lu.h",
|
||||
MAME_DIR .. "src/lib/netlist/solver/vector_base.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_2716.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_2716.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_4020.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_4020.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_4066.cpp",
|
||||
|
@ -66,6 +66,7 @@ NLOBJS := \
|
||||
$(NLOBJ)/analog/nld_switches.o \
|
||||
$(NLOBJ)/analog/nld_twoterm.o \
|
||||
$(NLOBJ)/analog/nld_opamps.o \
|
||||
$(NLOBJ)/devices/nld_2716.o \
|
||||
$(NLOBJ)/devices/nld_4020.o \
|
||||
$(NLOBJ)/devices/nld_4066.o \
|
||||
$(NLOBJ)/devices/nld_7448.o \
|
||||
|
@ -105,7 +105,8 @@ static void initialize_factory(factory_list_t &factory)
|
||||
ENTRY(switch1, SWITCH, "-")
|
||||
ENTRY(switch2, SWITCH2, "-")
|
||||
ENTRYX(nicRSFF, NETDEV_RSFF, "+S,R")
|
||||
ENTRYX(nicDelay, NETDEV_DELAY, "-")
|
||||
ENTRYX(nicDelay, NETDEV_DELAY, "-")
|
||||
ENTRYX(2716, EPROM_2716, "-")
|
||||
ENTRYX(7450, TTL_7450_ANDORINVERT, "+A,B,C,D")
|
||||
ENTRYX(7448, TTL_7448, "+A,B,C,D,LTQ,BIQ,RBIQ")
|
||||
ENTRYX(7473, TTL_7473, "+CLK1,J1,K1,CLRQ1,CLK2,J2,K2,CLRQ2")
|
||||
@ -139,6 +140,7 @@ static void initialize_factory(factory_list_t &factory)
|
||||
//ENTRY(4066, CD_4066, "+A,B")
|
||||
ENTRYX(NE555, NE555, "-")
|
||||
ENTRYX(r2r_dac, R2R_DAC, "+VIN,R,N")
|
||||
ENTRYX(2716_dip, EPROM_2716_DIP, "-")
|
||||
ENTRYX(4538_dip, CD4538_DIP, "-")
|
||||
ENTRYX(7448_dip, TTL_7448_DIP, "-")
|
||||
ENTRYX(7450_dip, TTL_7450_DIP, "-")
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "nl_base.h"
|
||||
#include "nld_system.h"
|
||||
|
||||
#include "nld_2716.h"
|
||||
#include "nld_4020.h"
|
||||
#include "nld_4066.h"
|
||||
#include "nld_7448.h"
|
||||
|
98
src/lib/netlist/devices/nld_2716.cpp
Normal file
98
src/lib/netlist/devices/nld_2716.cpp
Normal file
@ -0,0 +1,98 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_2716.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nld_2716.h"
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
NETLIB_OBJECT(2716)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(2716)
|
||||
, m_A(*this, {{ "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10" }})
|
||||
, m_GQ(*this, "GQ")
|
||||
, m_EPQ(*this, "EPQ")
|
||||
, m_Q(*this, {{ "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7" }})
|
||||
, m_last_EPQ(*this, "m_last_EPQ", 1)
|
||||
, m_ROM(*this, "m_ROM", nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
object_array_t<logic_input_t, 11> m_A;
|
||||
logic_input_t m_GQ;
|
||||
logic_input_t m_EPQ;
|
||||
object_array_t<logic_output_t, 8> m_Q;
|
||||
|
||||
state_var<unsigned> m_last_EPQ;
|
||||
|
||||
param_rom_t m_ROM; // 16 Kbits, used as 2 Kbit x 8
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(2716_dip, 2716)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(2716_dip, 2716)
|
||||
{
|
||||
register_subalias("8", m_A[0]);
|
||||
register_subalias("7", m_A[1]);
|
||||
register_subalias("6", m_A[2]);
|
||||
register_subalias("5", m_A[3]);
|
||||
register_subalias("4", m_A[4]);
|
||||
register_subalias("3", m_A[5]);
|
||||
register_subalias("2", m_A[6]);
|
||||
register_subalias("1", m_A[7]);
|
||||
register_subalias("23", m_A[8]);
|
||||
register_subalias("22", m_A[9]);
|
||||
register_subalias("19", m_A[10]);
|
||||
|
||||
register_subalias("20", m_GQ);
|
||||
register_subalias("18", m_EPQ);
|
||||
|
||||
register_subalias("9", m_Q[0]);
|
||||
register_subalias("10", m_Q[1]);
|
||||
register_subalias("11", m_Q[2]);
|
||||
register_subalias("13", m_Q[3]);
|
||||
register_subalias("14", m_Q[4]);
|
||||
register_subalias("15", m_Q[5]);
|
||||
register_subalias("16", m_Q[6]);
|
||||
register_subalias("17", m_Q[7]);
|
||||
}
|
||||
};
|
||||
|
||||
// FIXME: timing!
|
||||
NETLIB_UPDATE(2716)
|
||||
{
|
||||
unsigned q = 0xff;
|
||||
|
||||
netlist_time delay = NLTIME_FROM_NS(450);
|
||||
if (!m_GQ() && !m_EPQ())
|
||||
{
|
||||
unsigned a = 0;
|
||||
for (std::size_t i=0; i<11; i++)
|
||||
a |= (m_A[i]() << i);
|
||||
|
||||
q = m_ROM()[a];
|
||||
|
||||
if (m_last_EPQ)
|
||||
delay = NLTIME_FROM_NS(120);
|
||||
}
|
||||
|
||||
m_last_EPQ = m_EPQ();
|
||||
|
||||
// FIXME: Outputs are tristate. This needs to be properly implemented
|
||||
for (std::size_t i=0; i<8; i++)
|
||||
m_Q[i].push((q >> i) & 1, delay);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(2716)
|
||||
NETLIB_DEVICE_IMPL(2716_dip)
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
38
src/lib/netlist/devices/nld_2716.h
Normal file
38
src/lib/netlist/devices/nld_2716.h
Normal file
@ -0,0 +1,38 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_82S126.h
|
||||
*
|
||||
* 2716: 16 Kbit (2Kb x 8) UV EPROM
|
||||
*
|
||||
* +----------------+
|
||||
* A7 |1 ++ 24| VCC
|
||||
* A6 |2 23| A8
|
||||
* A5 |3 22| A9
|
||||
* A4 |4 2716 21| VPP
|
||||
* A3 |5 20| GQ
|
||||
* A2 |6 19| A10
|
||||
* A1 |7 18| EPQ
|
||||
* A0 |8 17| Q7
|
||||
* Q0 |9 16| Q6
|
||||
* Q1 |10 15| Q5
|
||||
* Q2 |11 14| Q4
|
||||
* VSS |12 13| Q3
|
||||
* +----------------+
|
||||
*
|
||||
*
|
||||
* Naming conventions follow STMicro datasheet
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_2716_H_
|
||||
#define NLD_2716_H_
|
||||
|
||||
#include "nl_setup.h"
|
||||
|
||||
#define TTL_2716(name) \
|
||||
NET_REGISTER_DEV(TTL_2716, name)
|
||||
#define TTL_2716_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_2716_DIP, name)
|
||||
|
||||
#endif /* NLD_2716_H_ */
|
Loading…
Reference in New Issue
Block a user