summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/hp9845_io/hp9845_io.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/hp9845_io/hp9845_io.cpp')
-rw-r--r--src/devices/bus/hp9845_io/hp9845_io.cpp64
1 files changed, 36 insertions, 28 deletions
diff --git a/src/devices/bus/hp9845_io/hp9845_io.cpp b/src/devices/bus/hp9845_io/hp9845_io.cpp
index 61e4a90d721..a6a21015d25 100644
--- a/src/devices/bus/hp9845_io/hp9845_io.cpp
+++ b/src/devices/bus/hp9845_io/hp9845_io.cpp
@@ -4,15 +4,18 @@
hp9845_io.cpp
- I/O bus of HP9845 systems
+ I/O bus of HP9825/HP9845 systems
*********************************************************************/
#include "emu.h"
#include "hp9845_io.h"
+#include "98032.h"
+#include "98035.h"
+#include "98034.h"
// device type definition
-DEFINE_DEVICE_TYPE(HP9845_IO_SLOT, hp9845_io_slot_device, "hp9845_io_slot", "HP9845 I/O Slot")
+DEFINE_DEVICE_TYPE(HP9845_IO_SLOT, hp9845_io_slot_device, "hp98x5_io_slot", "HP98x5 I/O Slot")
// +---------------------+
// |hp9845_io_slot_device|
@@ -22,8 +25,15 @@ hp9845_io_slot_device::hp9845_io_slot_device(const machine_config &mconfig, cons
device_slot_interface(mconfig, *this),
m_irq_cb_func(*this),
m_sts_cb_func(*this),
- m_flg_cb_func(*this)
+ m_flg_cb_func(*this),
+ m_dmar_cb_func(*this)
{
+ option_reset();
+ option_add("98032_gpio" , HP98032_IO_CARD);
+ option_add("98034_hpib" , HP98034_IO_CARD);
+ option_add("98035_rtc" , HP98035_IO_CARD);
+ set_default_option(nullptr);
+ set_fixed(false);
}
hp9845_io_slot_device::~hp9845_io_slot_device()
@@ -35,6 +45,7 @@ void hp9845_io_slot_device::device_start()
m_irq_cb_func.resolve_safe();
m_sts_cb_func.resolve_safe();
m_flg_cb_func.resolve_safe();
+ m_dmar_cb_func.resolve_safe();
hp9845_io_card_device *card = dynamic_cast<hp9845_io_card_device*>(get_card_device());
@@ -43,19 +54,24 @@ void hp9845_io_slot_device::device_start()
}
}
-void hp9845_io_slot_device::irq_w(uint8_t sc , int state)
+WRITE_LINE_MEMBER(hp9845_io_slot_device::irq_w)
{
- m_irq_cb_func(sc , state , 0xff);
+ m_irq_cb_func(state);
}
-void hp9845_io_slot_device::sts_w(uint8_t sc , int state)
+WRITE_LINE_MEMBER(hp9845_io_slot_device::sts_w)
{
- m_sts_cb_func(sc , state , 0xff);
+ m_sts_cb_func(state);
}
-void hp9845_io_slot_device::flg_w(uint8_t sc , int state)
+WRITE_LINE_MEMBER(hp9845_io_slot_device::flg_w)
{
- m_flg_cb_func(sc , state , 0xff);
+ m_flg_cb_func(state);
+}
+
+WRITE_LINE_MEMBER(hp9845_io_slot_device::dmar_w)
+{
+ m_dmar_cb_func(state);
}
int hp9845_io_slot_device::get_rw_handlers(read16_delegate& rhandler , write16_delegate& whandler)
@@ -88,8 +104,7 @@ hp9845_io_card_device::hp9845_io_card_device(const machine_config &mconfig, devi
device_t(mconfig, type, tag, owner, clock),
device_slot_card_interface(mconfig, *this),
m_slot_dev(nullptr),
- m_select_code_port(*this , "SC"),
- m_my_sc(0)
+ m_select_code_port(*this , "SC")
{
}
@@ -97,37 +112,30 @@ hp9845_io_card_device::~hp9845_io_card_device()
{
}
-void hp9845_io_card_device::device_reset()
-{
- m_my_sc = get_sc();
-}
-
-void hp9845_io_card_device::irq_w(int state)
+WRITE_LINE_MEMBER(hp9845_io_card_device::irq_w)
{
if (m_slot_dev) {
- m_slot_dev->irq_w(m_my_sc , state);
+ m_slot_dev->irq_w(state);
}
}
-void hp9845_io_card_device::sts_w(int state)
+WRITE_LINE_MEMBER(hp9845_io_card_device::sts_w)
{
if (m_slot_dev) {
- m_slot_dev->sts_w(m_my_sc , state);
+ m_slot_dev->sts_w(state);
}
}
-void hp9845_io_card_device::flg_w(int state)
+WRITE_LINE_MEMBER(hp9845_io_card_device::flg_w)
{
if (m_slot_dev) {
- m_slot_dev->flg_w(m_my_sc , state);
+ m_slot_dev->flg_w(state);
}
}
-#include "98035.h"
-#include "98034.h"
-
-void hp9845_io_slot_devices(device_slot_interface &device)
+WRITE_LINE_MEMBER(hp9845_io_card_device::dmar_w)
{
- device.option_add("98034_hpib" , HP98034_IO_CARD);
- device.option_add("98035_rtc" , HP98035_IO_CARD);
+ if (m_slot_dev) {
+ m_slot_dev->dmar_w(state);
+ }
}