netlist: Added 82S126 1K-bit bipolar PROM device. [Ryan Holtz]

This commit is contained in:
therealmogminer@gmail.com 2016-12-13 19:42:42 +01:00
parent b64073e795
commit 19165cfbfd
6 changed files with 125 additions and 0 deletions

View File

@ -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",

View File

@ -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 \

View File

@ -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, "-")

View File

@ -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"

View 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

View 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_ */