summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/imagedev/bitbngr.c
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2012-02-19 16:46:00 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2012-02-19 16:46:00 +0000
commite82fa6e24e14431fb621b8b96016e5bb10e20249 (patch)
treee18ed50548dde6968bc5c238224a851c414a5ae6 /src/emu/imagedev/bitbngr.c
parentd24e475f0e34e57f053fa01e9672d8a814761572 (diff)
Rewrite INS8250 to use diserial, updated Microtouch to modern and made it serial device, updated connected drivers [Carl]
Diffstat (limited to 'src/emu/imagedev/bitbngr.c')
-rw-r--r--src/emu/imagedev/bitbngr.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/emu/imagedev/bitbngr.c b/src/emu/imagedev/bitbngr.c
index 19702a12d76..c57a2dda0ab 100644
--- a/src/emu/imagedev/bitbngr.c
+++ b/src/emu/imagedev/bitbngr.c
@@ -303,8 +303,6 @@ void bitbanger_device::bytes_to_bits_81N(void)
void bitbanger_device::device_start(void)
{
- const bitbanger_config *config = (const bitbanger_config *) static_config();
-
/* output config */
m_build_count = 0;
m_output_timer = timer_alloc(TIMER_OUTPUT);
@@ -316,13 +314,13 @@ void bitbanger_device::device_start(void)
m_input_buffer_cursor = 0;
/* defaults */
- m_mode = config->m_default_mode;
- m_baud = config->m_default_baud;
- m_tune = config->m_default_tune;
+ m_mode = m_default_mode;
+ m_baud = m_default_baud;
+ m_tune = m_default_tune;
m_current_baud = attotime::from_hz(baud_value());
/* callback */
- m_input_callback.resolve(config->m_input_callback, *this);
+ m_input_func.resolve(m_input_callback, *this);
}
@@ -333,6 +331,18 @@ void bitbanger_device::device_start(void)
void bitbanger_device::device_config_complete(void)
{
+ const _bitbanger_config *intf = reinterpret_cast<const _bitbanger_config *>(static_config());
+ if(intf != NULL)
+ {
+ *static_cast<_bitbanger_config *>(this) = *intf;
+ }
+ else
+ {
+ memset(&m_input_callback, 0, sizeof(m_input_callback));
+ m_default_mode = 0;
+ m_default_baud = 0;
+ m_default_tune = 0;
+ }
update_names();
}
@@ -433,10 +443,7 @@ void bitbanger_device::set_input_line(UINT8 line)
if (m_current_input != line)
{
m_current_input = line;
- if (!m_input_callback.isnull())
- {
- m_input_callback(line ? ASSERT_LINE : CLEAR_LINE);
- }
+ m_input_func(line ? ASSERT_LINE : CLEAR_LINE);
}
}