diff --git a/src/mame/drivers/bingor.cpp b/src/mame/drivers/bingor.cpp index c99188bd452..f9a99303cf8 100644 --- a/src/mame/drivers/bingor.cpp +++ b/src/mame/drivers/bingor.cpp @@ -524,6 +524,7 @@ public: : driver_device(mconfig, type, tag), m_blit_ram(*this, "blit_ram"), m_maincpu(*this, "maincpu"), + m_slavecpu(*this, "slavecpu"), m_palette(*this, "palette") { } required_shared_ptr m_blit_ram; @@ -532,7 +533,16 @@ public: INTERRUPT_GEN_MEMBER(vblank_irq); INTERRUPT_GEN_MEMBER(unk_irq); required_device m_maincpu; + optional_device m_slavecpu; required_device m_palette; + + DECLARE_WRITE8_MEMBER(toslave_w); + DECLARE_READ8_MEMBER(toslave_r); + DECLARE_WRITE8_MEMBER(fromslave_w); + DECLARE_READ8_MEMBER(fromslave_r); + DECLARE_WRITE16_MEMBER(vip2000_outputs_w); + u8 m_toslave; + u8 m_fromslave; }; @@ -718,22 +728,51 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( vip2000_io, AS_IO, 16, bingor_state ) AM_RANGE(0x0000, 0x0001) AM_READNOP // watchdog AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) + AM_RANGE(0x0100, 0x0101) AM_READWRITE8(fromslave_r, toslave_w, 0x00ff) + AM_RANGE(0x0280, 0x0281) AM_WRITE(vip2000_outputs_w) ADDRESS_MAP_END +WRITE8_MEMBER(bingor_state::toslave_w) +{ + m_toslave = data; +} + +READ8_MEMBER(bingor_state::toslave_r) +{ + return m_toslave; +} + +WRITE8_MEMBER(bingor_state::fromslave_w) +{ + m_fromslave = data; +} + +READ8_MEMBER(bingor_state::fromslave_r) +{ + return m_fromslave; +} + +WRITE16_MEMBER(bingor_state::vip2000_outputs_w) +{ + m_slavecpu->set_input_line(MCS51_INT0_LINE, BIT(data, 15) ? CLEAR_LINE : ASSERT_LINE); +} + static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, bingor_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( slave_io, AS_IO, 8, bingor_state) + AM_RANGE(0x0000, 0x0000) AM_READWRITE(toslave_r, fromslave_w) + AM_RANGE(0xc000, 0xcfff) AM_RAM ADDRESS_MAP_END static MACHINE_CONFIG_START( vip2000, bingor_state ) MCFG_CPU_ADD("maincpu", I80186, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(vip2000_map) MCFG_CPU_IO_MAP(vip2000_io) - MCFG_CPU_VBLANK_INT_DRIVER("screen", bingor_state, vblank_irq) + //MCFG_CPU_VBLANK_INT_DRIVER("screen", bingor_state, vblank_irq) MCFG_CPU_PERIODIC_INT_DRIVER(bingor_state, nmi_line_pulse, 30) - MCFG_CPU_PERIODIC_INT_DRIVER(bingor_state, unk_irq, 30) + //MCFG_CPU_PERIODIC_INT_DRIVER(bingor_state, unk_irq, 30) MCFG_ATMEL_49F4096_ADD("flash")