mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
netlist: Added 82S126 1K-bit bipolar PROM device. [Ryan Holtz]
This commit is contained in:
parent
b64073e795
commit
19165cfbfd
@ -129,6 +129,8 @@ project "netlist"
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74ls629.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_82S16.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_82S16.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_82S126.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_82S126.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_9310.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_9310.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_9312.cpp",
|
||||
|
@ -85,6 +85,7 @@ NLOBJS := \
|
||||
$(NLOBJ)/devices/nld_74279.o \
|
||||
$(NLOBJ)/devices/nld_74ls629.o \
|
||||
$(NLOBJ)/devices/nld_82S16.o \
|
||||
$(NLOBJ)/devices/nld_82S126.o \
|
||||
$(NLOBJ)/devices/nld_9310.o \
|
||||
$(NLOBJ)/devices/nld_9312.o \
|
||||
$(NLOBJ)/devices/nld_9316.o \
|
||||
|
@ -126,6 +126,7 @@ static void initialize_factory(factory_list_t &factory)
|
||||
//ENTRY(74279, TTL_74279, "-") // only dip available
|
||||
ENTRYX(SN74LS629, SN74LS629, "CAP")
|
||||
ENTRYX(82S16, TTL_82S16, "-")
|
||||
ENTRYX(82S126, TTL_82S126, "-")
|
||||
ENTRYX(9310, TTL_9310, "-")
|
||||
ENTRYX(9312, TTL_9312, "-")
|
||||
ENTRYX(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D")
|
||||
@ -154,6 +155,7 @@ static void initialize_factory(factory_list_t &factory)
|
||||
ENTRYX(74193_dip, TTL_74193_DIP, "-")
|
||||
ENTRYX(74279_dip, TTL_74279_DIP, "-")
|
||||
ENTRYX(82S16_dip, TTL_82S16_DIP, "-")
|
||||
ENTRYX(82S126_dip, TTL_82S126_DIP, "-")
|
||||
ENTRYX(9602_dip, TTL_9602_DIP, "-")
|
||||
ENTRYX(9310_dip, TTL_9310_DIP, "-")
|
||||
ENTRYX(9312_dip, TTL_9312_DIP, "-")
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "nld_74279.h"
|
||||
#include "nld_74ls629.h"
|
||||
#include "nld_82S16.h"
|
||||
#include "nld_82S126.h"
|
||||
#include "nld_9310.h"
|
||||
#include "nld_9312.h"
|
||||
#include "nld_9316.h"
|
||||
|
85
src/lib/netlist/devices/nld_82S126.cpp
Normal file
85
src/lib/netlist/devices/nld_82S126.cpp
Normal file
@ -0,0 +1,85 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_82s126.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nld_82s126.h"
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
NETLIB_OBJECT(82S126)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(82S126)
|
||||
, m_A(*this, {{"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7" }})
|
||||
, m_CE1Q(*this, "CE1Q")
|
||||
, m_CE2Q(*this, "CE2Q")
|
||||
, m_O(*this, {{"O1", "O2", "O3", "O4" }})
|
||||
, m_ROM(*this, "m_ROM", nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
object_array_t<logic_input_t, 8> m_A;
|
||||
logic_input_t m_CE1Q;
|
||||
logic_input_t m_CE2Q;
|
||||
object_array_t<logic_output_t, 8> m_O;
|
||||
|
||||
param_rom_t m_ROM; // 1024 bits, 32x32, used as 256x4
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(82S126_dip, 82S126)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(82S126_dip, 82S126)
|
||||
{
|
||||
register_subalias("5", m_A[0]);
|
||||
register_subalias("6", m_A[1]);
|
||||
register_subalias("7", m_A[2]);
|
||||
register_subalias("4", m_A[3]);
|
||||
register_subalias("3", m_A[4]);
|
||||
register_subalias("2", m_A[5]);
|
||||
register_subalias("1", m_A[6]);
|
||||
register_subalias("15", m_A[7]);
|
||||
|
||||
register_subalias("13", m_CE1Q);
|
||||
register_subalias("14", m_CE2Q);
|
||||
|
||||
register_subalias("12", m_O[0]);
|
||||
register_subalias("11", m_O[1]);
|
||||
register_subalias("10", m_O[2]);
|
||||
register_subalias("9", m_O[3]);
|
||||
}
|
||||
};
|
||||
|
||||
// FIXME: timing!
|
||||
NETLIB_UPDATE(82S126)
|
||||
{
|
||||
unsigned o = 0xf;
|
||||
|
||||
netlist_time delay = NLTIME_FROM_NS(25);
|
||||
if (m_CE1Q() && m_CE1Q())
|
||||
{
|
||||
unsigned a = 0;
|
||||
for (std::size_t i=0; i<8; i++)
|
||||
a |= (m_A[i]() << i);
|
||||
|
||||
o = m_ROM()[a];
|
||||
|
||||
delay = NLTIME_FROM_NS(50);
|
||||
}
|
||||
|
||||
// FIXME: Outputs are tristate. This needs to be properly implemented
|
||||
for (std::size_t i=0; i<4; i++)
|
||||
m_O[i].push((o >> i) & 1, delay);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(82S126)
|
||||
NETLIB_DEVICE_IMPL(82S126_dip)
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
34
src/lib/netlist/devices/nld_82S126.h
Normal file
34
src/lib/netlist/devices/nld_82S126.h
Normal file
@ -0,0 +1,34 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_82S126.h
|
||||
*
|
||||
* 82S126: 1K-bit TTL bipolar PROM
|
||||
*
|
||||
* +--------------+
|
||||
* A6 |1 ++ 16| VCC
|
||||
* A5 |2 15| Q7
|
||||
* A4 |3 14| CE2Q
|
||||
* A3 |4 82S126 13| CE1Q
|
||||
* A0 |5 12| O1
|
||||
* A1 |6 11| O2
|
||||
* A2 |7 10| O3
|
||||
* GND |8 9| O4
|
||||
* +--------------+
|
||||
*
|
||||
*
|
||||
* Naming conventions follow Signetics datasheet
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_82S126_H_
|
||||
#define NLD_82S126_H_
|
||||
|
||||
#include "nl_setup.h"
|
||||
|
||||
#define TTL_82S126(name) \
|
||||
NET_REGISTER_DEV(TTL_82S126, name)
|
||||
#define TTL_82S126_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_82S126_DIP, name)
|
||||
|
||||
#endif /* NLD_82S126_H_ */
|
Loading…
Reference in New Issue
Block a user