diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/bus/pofo/exp.cpp | 3 | ||||
-rw-r--r-- | src/devices/bus/pofo/exp.h | 11 | ||||
-rw-r--r-- | src/devices/bus/pofo/hpc104.cpp | 1 | ||||
-rw-r--r-- | src/devices/bus/pofo/hpc104.h | 2 | ||||
-rw-r--r-- | src/mame/drivers/pofo.cpp | 28 |
5 files changed, 20 insertions, 25 deletions
diff --git a/src/devices/bus/pofo/exp.cpp b/src/devices/bus/pofo/exp.cpp index 68613967ff3..0052fd41e3c 100644 --- a/src/devices/bus/pofo/exp.cpp +++ b/src/devices/bus/pofo/exp.cpp @@ -32,7 +32,6 @@ device_portfolio_expansion_slot_interface::device_portfolio_expansion_slot_inter m_slot = dynamic_cast<portfolio_expansion_slot_t *>(device.owner()); } -WRITE_LINE_MEMBER( device_portfolio_expansion_slot_interface::iint_w ) { m_slot->iint_w(state); } WRITE_LINE_MEMBER( device_portfolio_expansion_slot_interface::eint_w ) { m_slot->eint_w(state); } WRITE_LINE_MEMBER( device_portfolio_expansion_slot_interface::nmio_w ) { m_slot->nmio_w(state); } WRITE_LINE_MEMBER( device_portfolio_expansion_slot_interface::wake_w ) { m_slot->wake_w(state); } @@ -50,7 +49,6 @@ WRITE_LINE_MEMBER( device_portfolio_expansion_slot_interface::wake_w ) { m_slot- portfolio_expansion_slot_t::portfolio_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, PORTFOLIO_EXPANSION_SLOT, "Atari Portfolio expansion port", tag, owner, clock, "portfolio_expansion_slot", __FILE__), device_slot_interface(mconfig, *this), - m_write_iint(*this), m_write_eint(*this), m_write_nmio(*this), m_write_wake(*this), @@ -68,7 +66,6 @@ void portfolio_expansion_slot_t::device_start() m_card = dynamic_cast<device_portfolio_expansion_slot_interface *>(get_card_device()); // resolve callbacks - m_write_iint.resolve_safe(); m_write_eint.resolve_safe(); m_write_nmio.resolve_safe(); m_write_wake.resolve_safe(); diff --git a/src/devices/bus/pofo/exp.h b/src/devices/bus/pofo/exp.h index 8bfabe9bf93..4c0f512dad5 100644 --- a/src/devices/bus/pofo/exp.h +++ b/src/devices/bus/pofo/exp.h @@ -64,9 +64,6 @@ MCFG_DEVICE_ADD(_tag, PORTFOLIO_EXPANSION_SLOT, _clock) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) -#define MCFG_PORTFOLIO_EXPANSION_SLOT_IINT_CALLBACK(_write) \ - devcb = &portfolio_expansion_slot_t::set_iint_wr_callback(*device, DEVCB_##_write); - #define MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(_write) \ devcb = &portfolio_expansion_slot_t::set_eint_wr_callback(*device, DEVCB_##_write); @@ -103,7 +100,8 @@ public: virtual uint8_t nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { return data; }; virtual void nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { }; - DECLARE_WRITE_LINE_MEMBER( iint_w ); + virtual WRITE_LINE_MEMBER( iint_w ) { }; + DECLARE_WRITE_LINE_MEMBER( eint_w ); DECLARE_WRITE_LINE_MEMBER( nmio_w ); DECLARE_WRITE_LINE_MEMBER( wake_w ); @@ -123,7 +121,6 @@ public: portfolio_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~portfolio_expansion_slot_t() { } - template<class _Object> static devcb_base &set_iint_wr_callback(device_t &device, _Object object) { return downcast<portfolio_expansion_slot_t &>(device).m_write_iint.set_callback(object); } template<class _Object> static devcb_base &set_eint_wr_callback(device_t &device, _Object object) { return downcast<portfolio_expansion_slot_t &>(device).m_write_eint.set_callback(object); } template<class _Object> static devcb_base &set_nmio_wr_callback(device_t &device, _Object object) { return downcast<portfolio_expansion_slot_t &>(device).m_write_nmio.set_callback(object); } template<class _Object> static devcb_base &set_wake_wr_callback(device_t &device, _Object object) { return downcast<portfolio_expansion_slot_t &>(device).m_write_wake.set_callback(object); } @@ -139,8 +136,9 @@ public: uint8_t nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { return (m_card != nullptr) ? m_card->nrdi_r(space, offset, data, iom, bcom, ncc1) : data; } void nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { if (m_card != nullptr) m_card->nwri_w(space, offset, data, iom, bcom, ncc1); } + WRITE_LINE_MEMBER( iint_w ) { if (m_card != nullptr) m_card->iint_w(state); } + // peripheral interface - WRITE_LINE_MEMBER( iint_w ) { m_write_iint(state); } WRITE_LINE_MEMBER( eint_w ) { m_write_eint(state); } WRITE_LINE_MEMBER( nmio_w ) { m_write_nmio(state); } WRITE_LINE_MEMBER( wake_w ) { m_write_wake(state); } @@ -150,7 +148,6 @@ protected: virtual void device_start() override; virtual void device_reset() override; - devcb_write_line m_write_iint; devcb_write_line m_write_eint; devcb_write_line m_write_nmio; devcb_write_line m_write_wake; diff --git a/src/devices/bus/pofo/hpc104.cpp b/src/devices/bus/pofo/hpc104.cpp index 03c982f792e..8fb8f69c8e8 100644 --- a/src/devices/bus/pofo/hpc104.cpp +++ b/src/devices/bus/pofo/hpc104.cpp @@ -34,7 +34,6 @@ static MACHINE_CONFIG_FRAGMENT( hpc104 ) MCFG_PORTFOLIO_MEMORY_CARD_SLOT_ADD(PORTFOLIO_MEMORY_CARD_SLOT_B_TAG, portfolio_memory_cards, nullptr) MCFG_PORTFOLIO_EXPANSION_SLOT_ADD(PORTFOLIO_EXPANSION_SLOT_TAG, XTAL_4_9152MHz, portfolio_expansion_cards, nullptr) - MCFG_PORTFOLIO_EXPANSION_SLOT_IINT_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, iint_w)) MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, eint_w)) MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, nmio_w)) MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, wake_w)) diff --git a/src/devices/bus/pofo/hpc104.h b/src/devices/bus/pofo/hpc104.h index 9dda5f9778b..3d771653c35 100644 --- a/src/devices/bus/pofo/hpc104.h +++ b/src/devices/bus/pofo/hpc104.h @@ -53,6 +53,8 @@ protected: virtual uint8_t nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) override; virtual void nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) override; + virtual WRITE_LINE_MEMBER( iint_w ) override { m_exp->iint_w(state); } + private: required_device<portfolio_memory_card_slot_t> m_ccm; required_device<portfolio_expansion_slot_t> m_exp; diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index d4b37fea28e..cbe4eea2cf2 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -139,8 +139,8 @@ public: DECLARE_WRITE8_MEMBER( counter_w ); DECLARE_WRITE8_MEMBER( contrast_w ); - DECLARE_WRITE_LINE_MEMBER( iint_w ); DECLARE_WRITE_LINE_MEMBER( eint_w ); + DECLARE_WRITE_LINE_MEMBER( wake_w ); uint8_t m_ip; uint8_t m_ie; @@ -171,6 +171,7 @@ void portfolio_state::check_interrupt() int level = (m_ip & m_ie) ? ASSERT_LINE : CLEAR_LINE; m_maincpu->set_input_line(INPUT_LINE_INT0, level); + m_exp->iint_w(level); } @@ -188,25 +189,25 @@ void portfolio_state::trigger_interrupt(int level) //------------------------------------------------- -// iint_w - internal interrupt +// eint_w - external interrupt //------------------------------------------------- -WRITE_LINE_MEMBER( portfolio_state::iint_w ) +WRITE_LINE_MEMBER( portfolio_state::eint_w ) { - // TODO + if (state) + { + trigger_interrupt(INT_EXTERNAL); + } } //------------------------------------------------- -// eint_w - external interrupt +// wake_w - wake //------------------------------------------------- -WRITE_LINE_MEMBER( portfolio_state::eint_w ) +WRITE_LINE_MEMBER( portfolio_state::wake_w ) { - if (state) - { - trigger_interrupt(INT_EXTERNAL); - } + // TODO } @@ -424,8 +425,8 @@ READ8_MEMBER( portfolio_state::battery_r ) 3 ? 1=boots from ??? 4 ? 5 PDET 1=peripheral connected - 6 BATD? 0=battery low - 7 ? 1=cold boot + 6 LOWB 0=battery low + 7 BDET? 1=cold boot */ @@ -1035,10 +1036,9 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_PORTFOLIO_MEMORY_CARD_SLOT_ADD(PORTFOLIO_MEMORY_CARD_SLOT_A_TAG, portfolio_memory_cards, nullptr) MCFG_PORTFOLIO_EXPANSION_SLOT_ADD(PORTFOLIO_EXPANSION_SLOT_TAG, XTAL_4_9152MHz, portfolio_expansion_cards, nullptr) - MCFG_PORTFOLIO_EXPANSION_SLOT_IINT_CALLBACK(WRITELINE(portfolio_state, iint_w)) MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(WRITELINE(portfolio_state, eint_w)) MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(INPUTLINE(M80C88A_TAG, INPUT_LINE_NMI)) - //MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK() + MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(WRITELINE(portfolio_state, wake_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("counter", portfolio_state, counter_tick, attotime::from_hz(XTAL_32_768kHz/16384)) MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_TICK_TAG, portfolio_state, system_tick, attotime::from_hz(XTAL_32_768kHz/32768)) |