summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/devcb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/devcb.cpp')
-rw-r--r--src/emu/devcb.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/emu/devcb.cpp b/src/emu/devcb.cpp
index 12f84a01f5f..a3655cf8e87 100644
--- a/src/emu/devcb.cpp
+++ b/src/emu/devcb.cpp
@@ -267,6 +267,7 @@ void devcb_read_base::resolve()
case CALLBACK_INPUTLINE:
case CALLBACK_ASSERTLINE:
case CALLBACK_CLEARLINE:
+ case CALLBACK_HOLDLINE:
throw emu_fatalerror("Device read callbacks can't be connected to input lines\n");
}
}
@@ -526,6 +527,11 @@ void devcb_write_base::resolve()
resolve_inputline();
m_adapter = &devcb_write_base::write_clearline_adapter;
break;
+
+ case CALLBACK_HOLDLINE:
+ resolve_inputline();
+ m_adapter = &devcb_write_base::write_holdline_adapter;
+ break;
}
}
catch (binding_type_exception &binderr)
@@ -691,3 +697,14 @@ void devcb_write_base::write_clearline_adapter(address_space &space, offs_t offs
if (unshift_mask_xor(data) & 1)
m_target.device->execute().set_input_line(m_target_int, CLEAR_LINE);
}
+
+//-------------------------------------------------
+// write_clearline_adapter - write to a device's
+// input line
+//-------------------------------------------------
+
+void devcb_write_base::write_holdline_adapter(address_space &space, offs_t offset, u64 data, u64 mask)
+{
+ if (unshift_mask_xor(data) & 1)
+ m_target.device->execute().set_input_line(m_target_int, HOLD_LINE);
+}