summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/i8255.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/machine/i8255.c')
-rw-r--r--src/emu/machine/i8255.c81
1 files changed, 36 insertions, 45 deletions
diff --git a/src/emu/machine/i8255.c b/src/emu/machine/i8255.c
index 176567d21fa..954c688afbe 100644
--- a/src/emu/machine/i8255.c
+++ b/src/emu/machine/i8255.c
@@ -64,42 +64,8 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type I8255 = i8255_device_config::static_alloc_device_config;
-const device_type I8255A = i8255_device_config::static_alloc_device_config;
-
-
-
-//**************************************************************************
-// DEVICE CONFIGURATION
-//**************************************************************************
-
-GENERIC_DEVICE_CONFIG_SETUP(i8255, "I8255")
-
-
-//-------------------------------------------------
-// device_config_complete - perform any
-// operations now that the configuration is
-// complete
-//-------------------------------------------------
-
-void i8255_device_config::device_config_complete()
-{
- // inherit a copy of the static data
- const i8255_interface *intf = reinterpret_cast<const i8255_interface *>(static_config());
- if (intf != NULL)
- *static_cast<i8255_interface *>(this) = *intf;
-
- // or initialize to defaults if none provided
- else
- {
- memset(&m_in_pa_func, 0, sizeof(m_in_pa_func));
- memset(&m_out_pa_func, 0, sizeof(m_out_pa_func));
- memset(&m_in_pb_func, 0, sizeof(m_in_pb_func));
- memset(&m_out_pb_func, 0, sizeof(m_out_pb_func));
- memset(&m_in_pc_func, 0, sizeof(m_in_pc_func));
- memset(&m_out_pc_func, 0, sizeof(m_out_pc_func));
- }
-}
+const device_type I8255 = &device_creator<i8255_device>;
+const device_type I8255A = &device_creator<i8255_device>;
@@ -311,10 +277,35 @@ inline int i8255_device::port_c_upper_mode()
// i8255_device - constructor
//-------------------------------------------------
-i8255_device::i8255_device(running_machine &_machine, const i8255_device_config &config)
- : device_t(_machine, config),
- m_config(config)
+i8255_device::i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, I8255, "I8255", tag, owner, clock)
+{
+}
+
+
+//-------------------------------------------------
+// device_config_complete - perform any
+// operations now that the configuration is
+// complete
+//-------------------------------------------------
+
+void i8255_device::device_config_complete()
{
+ // inherit a copy of the static data
+ const i8255_interface *intf = reinterpret_cast<const i8255_interface *>(static_config());
+ if (intf != NULL)
+ *static_cast<i8255_interface *>(this) = *intf;
+
+ // or initialize to defaults if none provided
+ else
+ {
+ memset(&m_in_pa_cb, 0, sizeof(m_in_pa_cb));
+ memset(&m_out_pa_cb, 0, sizeof(m_out_pa_cb));
+ memset(&m_in_pb_cb, 0, sizeof(m_in_pb_cb));
+ memset(&m_out_pb_cb, 0, sizeof(m_out_pb_cb));
+ memset(&m_in_pc_cb, 0, sizeof(m_in_pc_cb));
+ memset(&m_out_pc_cb, 0, sizeof(m_out_pc_cb));
+ }
}
@@ -325,12 +316,12 @@ i8255_device::i8255_device(running_machine &_machine, const i8255_device_config
void i8255_device::device_start()
{
// resolve callbacks
- devcb_resolve_read8(&m_in_port_func[PORT_A], &m_config.m_in_pa_func, this);
- devcb_resolve_write8(&m_out_port_func[PORT_A], &m_config.m_out_pa_func, this);
- devcb_resolve_read8(&m_in_port_func[PORT_B], &m_config.m_in_pb_func, this);
- devcb_resolve_write8(&m_out_port_func[PORT_B], &m_config.m_out_pb_func, this);
- devcb_resolve_read8(&m_in_port_func[PORT_C], &m_config.m_in_pc_func, this);
- devcb_resolve_write8(&m_out_port_func[PORT_C], &m_config.m_out_pc_func, this);
+ devcb_resolve_read8(&m_in_port_func[PORT_A], &m_in_pa_cb, this);
+ devcb_resolve_write8(&m_out_port_func[PORT_A], &m_out_pa_cb, this);
+ devcb_resolve_read8(&m_in_port_func[PORT_B], &m_in_pb_cb, this);
+ devcb_resolve_write8(&m_out_port_func[PORT_B], &m_out_pb_cb, this);
+ devcb_resolve_read8(&m_in_port_func[PORT_C], &m_in_pc_cb, this);
+ devcb_resolve_write8(&m_out_port_func[PORT_C], &m_out_pc_cb, this);
// register for state saving
save_item(NAME(m_control));