diff options
Diffstat (limited to 'src/devices/bus/isa/np600.cpp')
-rw-r--r-- | src/devices/bus/isa/np600.cpp | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/devices/bus/isa/np600.cpp b/src/devices/bus/isa/np600.cpp index 064c1d40191..b38dc008347 100644 --- a/src/devices/bus/isa/np600.cpp +++ b/src/devices/bus/isa/np600.cpp @@ -11,7 +11,6 @@ #include "cpu/i86/i186.h" #include "machine/74259.h" -//#include "machine/i82586.h" DEFINE_DEVICE_TYPE(NP600A3, np600a3_device, "np600a3", "InterLan NP600A-3 Intelligent Protocol Processor") @@ -19,6 +18,7 @@ np600a3_device::np600a3_device(const machine_config &mconfig, const char *tag, d : device_t(mconfig, NP600A3, tag, owner, clock) , device_isa16_card_interface(mconfig, *this) , m_npcpu(*this, "npcpu") + , m_lcc(*this, "lcc") { } @@ -26,6 +26,18 @@ void np600a3_device::device_start() { } +void np600a3_device::lcc_ca_w(u16 data) +{ + m_lcc->ca(0); + m_lcc->ca(1); +} + +WRITE_LINE_MEMBER(np600a3_device::lcc_reset_w) +{ + if (!state) + m_lcc->reset(); +} + u16 np600a3_device::status_r() { return 0; @@ -33,25 +45,35 @@ u16 np600a3_device::status_r() void np600a3_device::mem_map(address_map &map) { - map(0x00000, 0x7ffff).ram(); // GM71256-12 x16 + map(0x00000, 0x7ffff).ram().share("netram"); // GM71256-12 x16 map(0xfc000, 0xfffff).rom().region("npcpu", 0); } void np600a3_device::io_map(address_map &map) { - map(0x0070, 0x007f).w("latch70", FUNC(ls259_device::write_a0)); + map(0x0000, 0x0001).w(FUNC(np600a3_device::lcc_ca_w)); + map(0x0070, 0x007f).w("bitlatch", FUNC(ls259_device::write_a0)); map(0x0080, 0x0081).r(FUNC(np600a3_device::status_r)); } +void np600a3_device::lcc_map(address_map &map) +{ + map(0x000000, 0x07ffff).ram().share("netram"); + map(0xf80000, 0xffffff).ram().share("netram"); +} + void np600a3_device::device_add_mconfig(machine_config &config) { I80186(config, m_npcpu, 16_MHz_XTAL); m_npcpu->set_addrmap(AS_PROGRAM, &np600a3_device::mem_map); m_npcpu->set_addrmap(AS_IO, &np600a3_device::io_map); - LS259(config, "latch70"); // U28 + ls259_device &bitlatch(LS259(config, "bitlatch")); // U28 + bitlatch.q_out_cb<4>().set(FUNC(np600a3_device::lcc_reset_w)); - //I82586(config, "enet", 20_MHz_XTAL); + I82586(config, m_lcc, 20_MHz_XTAL); + m_lcc->set_addrmap(0, &np600a3_device::lcc_map); + m_lcc->out_irq_cb().set(m_npcpu, FUNC(i80186_cpu_device::tmrin1_w)); } ROM_START(np600a3) |