mirror of
https://github.com/holub/mame
synced 2025-06-01 10:31:48 +03:00
Added support for DEVCB_UNMAPPED, that will do the logging on read/write
of device callback, preventing a need for making dummy log line handlers [Miodrag Milanovic]
This commit is contained in:
parent
d50cc84966
commit
d73d7c09fe
100
src/emu/devcb.c
100
src/emu/devcb.c
@ -208,6 +208,12 @@ void devcb_resolved_read_line::resolve(const devcb_read_line &desc, device_t &de
|
||||
m_object.constant = desc.index;
|
||||
*static_cast<devcb_read_line_delegate *>(this) = devcb_read_line_delegate(&devcb_resolved_read_line::from_constant, "constant", this);
|
||||
break;
|
||||
|
||||
case DEVCB_TYPE_UNMAP:
|
||||
m_helper.null_indicator = &s_null;
|
||||
m_object.device = &device;
|
||||
*static_cast<devcb_read_line_delegate *>(this) = devcb_read_line_delegate(&devcb_resolved_read_line::from_unmap, "unmap", this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -244,6 +250,17 @@ int devcb_resolved_read_line::from_constant()
|
||||
return (m_object.constant & 1) ? ASSERT_LINE : CLEAR_LINE;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// from_constant - helper to convert from a
|
||||
// unmap value to a line value
|
||||
//-------------------------------------------------
|
||||
|
||||
int devcb_resolved_read_line::from_unmap()
|
||||
{
|
||||
logerror("%s: unmapped devcb read\n",
|
||||
m_object.device->tag());
|
||||
return CLEAR_LINE;
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
@ -303,6 +320,12 @@ void devcb_resolved_write_line::resolve(const devcb_write_line &desc, device_t &
|
||||
m_helper.input_line = desc.index;
|
||||
*static_cast<devcb_write_line_delegate *>(this) = devcb_write_line_delegate(&devcb_resolved_write_line::to_input, desc.tag, this);
|
||||
break;
|
||||
|
||||
case DEVCB_TYPE_UNMAP:
|
||||
m_helper.null_indicator = &s_null;
|
||||
m_object.device = &device;
|
||||
*static_cast<devcb_write_line_delegate *>(this) = devcb_write_line_delegate(&devcb_resolved_write_line::to_unmap, "unmap", this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -315,6 +338,16 @@ void devcb_resolved_write_line::to_null(int state)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// to_unmap - helper to handle a unmap write
|
||||
//-------------------------------------------------
|
||||
|
||||
void devcb_resolved_write_line::to_unmap(int state)
|
||||
{
|
||||
logerror("%s: unmapped devcb write %s\n",
|
||||
m_object.device->tag(),
|
||||
core_i64_format(state, 2 * sizeof(UINT8),false));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// to_port - helper to convert to an I/O port
|
||||
@ -410,6 +443,12 @@ void devcb_resolved_read8::resolve(const devcb_read8 &desc, device_t &device)
|
||||
m_object.constant = desc.index;
|
||||
*static_cast<devcb_read8_delegate *>(this) = devcb_read8_delegate(&devcb_resolved_read8::from_constant, "constant", this);
|
||||
break;
|
||||
|
||||
case DEVCB_TYPE_UNMAP:
|
||||
m_helper.null_indicator = &s_null;
|
||||
m_object.device = &device;
|
||||
*static_cast<devcb_read8_delegate *>(this) = devcb_read8_delegate(&devcb_resolved_read8::from_unmap, "unmap", this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -468,7 +507,17 @@ UINT8 devcb_resolved_read8::from_constant(offs_t offset, UINT8 mem_mask)
|
||||
return m_object.constant;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// from_constant - helper to convert from a
|
||||
// unmap value to an 8-bit value
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8 devcb_resolved_read8::from_unmap(offs_t offset, UINT8 mem_mask)
|
||||
{
|
||||
logerror("%s: unmapped devcb read\n",
|
||||
m_object.device->tag());
|
||||
return 0;
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// DEVCB RESOLVED WRITE8
|
||||
@ -530,6 +579,12 @@ void devcb_resolved_write8::resolve(const devcb_write8 &desc, device_t &device)
|
||||
m_helper.input_line = desc.index;
|
||||
*static_cast<devcb_write8_delegate *>(this) = devcb_write8_delegate(&devcb_resolved_write8::to_input, desc.tag, this);
|
||||
break;
|
||||
|
||||
case DEVCB_TYPE_UNMAP:
|
||||
m_helper.null_indicator = &s_null;
|
||||
m_object.device = &device;
|
||||
*static_cast<devcb_write8_delegate *>(this) = devcb_write8_delegate(&devcb_resolved_write8::to_unmap, "unmap", this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -542,6 +597,17 @@ void devcb_resolved_write8::to_null(offs_t offset, UINT8 data, UINT8 mem_mask)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// to_unmap - helper to handle a unmap write
|
||||
//-------------------------------------------------
|
||||
|
||||
void devcb_resolved_write8::to_unmap(offs_t offset, UINT8 data, UINT8 mem_mask)
|
||||
{
|
||||
logerror("%s: unmapped devcb write %s & %s\n",
|
||||
m_object.device->tag(),
|
||||
core_i64_format(data, 2 * sizeof(UINT8),false),
|
||||
core_i64_format(mem_mask, 2 * sizeof(UINT8),false));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// to_port - helper to convert to an I/O port
|
||||
@ -658,6 +724,12 @@ void devcb_resolved_read16::resolve(const devcb_read16 &desc, device_t &device)
|
||||
m_object.constant = desc.index;
|
||||
*static_cast<devcb_read16_delegate *>(this) = devcb_read16_delegate(&devcb_resolved_read16::from_constant, "constant", this);
|
||||
break;
|
||||
|
||||
case DEVCB_TYPE_UNMAP:
|
||||
m_helper.null_indicator = &s_null;
|
||||
m_object.device = &device;
|
||||
*static_cast<devcb_read16_delegate *>(this) = devcb_read16_delegate(&devcb_resolved_read16::from_unmap, "unmap", this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -705,7 +777,17 @@ UINT16 devcb_resolved_read16::from_constant(offs_t offset, UINT16 mask)
|
||||
return m_object.constant;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// from_constant - helper to convert from a
|
||||
// unmap value to a 16-bit value
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT16 devcb_resolved_read16::from_unmap(offs_t offset, UINT16 mem_mask)
|
||||
{
|
||||
logerror("%s: unmapped devcb read\n",
|
||||
m_object.device->tag());
|
||||
return 0;
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// DEVCB RESOLVED WRITE16
|
||||
@ -766,6 +848,12 @@ void devcb_resolved_write16::resolve(const devcb_write16 &desc, device_t &device
|
||||
m_helper.input_line = desc.index;
|
||||
*static_cast<devcb_write16_delegate *>(this) = devcb_write16_delegate(&devcb_resolved_write16::to_input, desc.tag, this);
|
||||
break;
|
||||
|
||||
case DEVCB_TYPE_UNMAP:
|
||||
m_helper.null_indicator = &s_null;
|
||||
m_object.device = &device;
|
||||
*static_cast<devcb_write16_delegate *>(this) = devcb_write16_delegate(&devcb_resolved_write16::to_unmap, "unmap", this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -779,6 +867,18 @@ void devcb_resolved_write16::to_null(offs_t offset, UINT16 data, UINT16 mask)
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// to_unmap - helper to handle a unmap write
|
||||
//-------------------------------------------------
|
||||
|
||||
void devcb_resolved_write16::to_unmap(offs_t offset, UINT16 data, UINT16 mask)
|
||||
{
|
||||
logerror("%s: unmapped devcb write %s & %s\n",
|
||||
m_object.device->tag(),
|
||||
core_i64_format(data, 2 * sizeof(UINT16),false),
|
||||
core_i64_format(mask, 2 * sizeof(UINT16),false));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// to_port - helper to convert to an I/O port
|
||||
// value from a line value
|
||||
|
@ -90,7 +90,8 @@ enum
|
||||
DEVCB_TYPE_DEVICE, // device read/write
|
||||
DEVCB_TYPE_LEGACY_SPACE, // legacy address space read/write
|
||||
DEVCB_TYPE_INPUT_LINE, // device input line write
|
||||
DEVCB_TYPE_CONSTANT // constant value read
|
||||
DEVCB_TYPE_CONSTANT, // constant value read
|
||||
DEVCB_TYPE_UNMAP // unmapped line
|
||||
};
|
||||
|
||||
|
||||
@ -176,6 +177,8 @@ void devcb_stub16(device_t *device, address_space &space, offs_t offset, UINT16
|
||||
#define DEVCB_LINE_GND DEVCB_CONSTANT(0)
|
||||
#define DEVCB_LINE_VCC DEVCB_CONSTANT(1)
|
||||
|
||||
#define DEVCB_UNMAPPED { DEVCB_TYPE_UNMAP, 0, NULL, NULL, NULL, NULL }
|
||||
|
||||
// read/write handlers for a given CPU's address space
|
||||
#define DEVCB_MEMORY_HANDLER(cpu,space,func) { DEVCB_TYPE_LEGACY_SPACE, AS_##space, (cpu), #func, NULL, NULL, func }
|
||||
|
||||
@ -280,6 +283,7 @@ private:
|
||||
int from_port();
|
||||
int from_read8();
|
||||
int from_constant();
|
||||
int from_unmap();
|
||||
|
||||
// internal state
|
||||
devcb_resolved_objects m_object;
|
||||
@ -330,6 +334,7 @@ private:
|
||||
void to_port(int state);
|
||||
void to_write8(int state);
|
||||
void to_input(int state);
|
||||
void to_unmap(int state);
|
||||
|
||||
// internal state
|
||||
devcb_resolved_objects m_object;
|
||||
@ -384,6 +389,7 @@ private:
|
||||
UINT8 from_read8device(offs_t offset, UINT8 mem_mask);
|
||||
UINT8 from_readline(offs_t offset, UINT8 mem_mask);
|
||||
UINT8 from_constant(offs_t offset, UINT8 mem_mask);
|
||||
UINT8 from_unmap(offs_t offset, UINT8 mem_mask);
|
||||
|
||||
// internal state
|
||||
devcb_resolved_objects m_object;
|
||||
@ -439,6 +445,7 @@ private:
|
||||
void to_write8device(offs_t offset, UINT8 data, UINT8 mem_mask);
|
||||
void to_writeline(offs_t offset, UINT8 data, UINT8 mem_mask);
|
||||
void to_input(offs_t offset, UINT8 data, UINT8 mem_mask);
|
||||
void to_unmap(offs_t offset, UINT8 data, UINT8 mem_mask);
|
||||
|
||||
// internal state
|
||||
devcb_resolved_objects m_object;
|
||||
@ -492,6 +499,7 @@ private:
|
||||
UINT16 from_read16(offs_t offset, UINT16 mask);
|
||||
UINT16 from_readline(offs_t offset, UINT16 mask);
|
||||
UINT16 from_constant(offs_t offset, UINT16 mask);
|
||||
UINT16 from_unmap(offs_t offset, UINT16 mask);
|
||||
|
||||
// internal state
|
||||
devcb_resolved_objects m_object;
|
||||
@ -546,6 +554,7 @@ private:
|
||||
void to_write16(offs_t offset, UINT16 data, UINT16 mask);
|
||||
void to_writeline(offs_t offset, UINT16 data, UINT16 mask);
|
||||
void to_input(offs_t offset, UINT16 data, UINT16 mask);
|
||||
void to_unmap(offs_t offset, UINT16 data, UINT16 mask);
|
||||
|
||||
// internal state
|
||||
devcb_resolved_objects m_object;
|
||||
|
Loading…
Reference in New Issue
Block a user