diff options
| author | 2017-06-06 18:57:46 +0200 | |
|---|---|---|
| committer | 2017-06-07 12:08:19 +0200 | |
| commit | b29c4c43232e97525ecb6e9fc3855ea1ac102303 (patch) | |
| tree | 2eb123a6f7dd741562c8a386afd2b75cc8576651 /src/emu/devcb.cpp | |
| parent | e1cbf358322efdcfcb2993e3461ca138990948ba (diff) | |
devcb: Add line hold capability [O. Galibert]
Whoever feels like saying that "HOLD does not exist in hardware", I
invite to admire the beautiful TTL circuit to the left of the 68000s
in the Over Drive schematics.
Diffstat (limited to 'src/emu/devcb.cpp')
| -rw-r--r-- | src/emu/devcb.cpp | 17 |
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); +} |
