summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/pofo/exp.cpp3
-rw-r--r--src/devices/bus/pofo/exp.h11
-rw-r--r--src/devices/bus/pofo/hpc104.cpp1
-rw-r--r--src/devices/bus/pofo/hpc104.h2
-rw-r--r--src/mame/drivers/pofo.cpp28
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))