summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2013-11-18 21:05:30 +0000
committer Olivier Galibert <galibert@pobox.com>2013-11-18 21:05:30 +0000
commit671ba32470a9aee7a72180c750170855f0fd9b1f (patch)
tree79c426e10df96a12e8eb93f7f9c7c23305235264 /src/mess
parent8c7bc3bfa741fd4cdfab9ba2af24da5742bc6906 (diff)
diserial: Remove defines, cleanup clocks/timers, add sync support [O. Galibert]
Diffstat (limited to 'src/mess')
-rw-r--r--src/mess/drivers/atarist.c3
-rw-r--r--src/mess/drivers/pc.c2
-rw-r--r--src/mess/drivers/rainbow.c2
-rw-r--r--src/mess/drivers/thomson.c6
-rw-r--r--src/mess/drivers/x68k.c3
-rw-r--r--src/mess/machine/esqpanel.c7
-rw-r--r--src/mess/machine/esqpanel.h1
-rw-r--r--src/mess/machine/isa_sblaster.c10
-rw-r--r--src/mess/machine/keyboard.c18
-rw-r--r--src/mess/machine/keyboard.h1
-rw-r--r--src/mess/machine/ser_mouse.c6
-rw-r--r--src/mess/machine/ser_mouse.h4
-rw-r--r--src/mess/machine/terminal.c10
-rw-r--r--src/mess/machine/thomson.c16
-rw-r--r--src/mess/machine/wangpckb.c4
-rw-r--r--src/mess/machine/zx8302.c6
16 files changed, 63 insertions, 36 deletions
diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c
index cee4d3660b8..3755095a0d9 100644
--- a/src/mess/drivers/atarist.c
+++ b/src/mess/drivers/atarist.c
@@ -1955,8 +1955,7 @@ READ8_MEMBER( st_state::mfp_gpio_r )
WRITE_LINE_MEMBER( st_state::mfp_tdo_w )
{
- m_mfp->rc_w(state);
- m_mfp->tc_w(state);
+ m_mfp->clock_w(state);
}
static MC68901_INTERFACE( mfp_intf )
diff --git a/src/mess/drivers/pc.c b/src/mess/drivers/pc.c
index 10a2ee32b44..cb2e1c335dc 100644
--- a/src/mess/drivers/pc.c
+++ b/src/mess/drivers/pc.c
@@ -1378,7 +1378,7 @@ static const cassette_interface mc1502_cassette_interface =
static const serial_image_interface mc1502_serial =
{
- 9600, 8, 1, SERIAL_PARITY_NONE, 1, "upd8251"
+ 9600, 8, 1, device_serial_interface::PARITY_NONE, 1, "upd8251"
};
static MACHINE_CONFIG_START( ibmpcjr, tandy_pc_state )
diff --git a/src/mess/drivers/rainbow.c b/src/mess/drivers/rainbow.c
index 173c4901a13..5359553a0f2 100644
--- a/src/mess/drivers/rainbow.c
+++ b/src/mess/drivers/rainbow.c
@@ -428,7 +428,7 @@ void rainbow_state::machine_reset()
m_z80_halted = true;
m_kbd_tx_ready = m_kbd_rx_ready = false;
- m_kbd8251->input_callback(SERIAL_STATE_CTS); // raise clear to send
+ m_kbd8251->input_callback(device_serial_interface::CTS); // raise clear to send
m_KBD = 0;
diff --git a/src/mess/drivers/thomson.c b/src/mess/drivers/thomson.c
index 7a9a3851702..a32cd516583 100644
--- a/src/mess/drivers/thomson.c
+++ b/src/mess/drivers/thomson.c
@@ -604,17 +604,17 @@ const cassette_interface mo5_cassette_interface =
const serial_image_interface to7_cc90232_config =
{
- 2400, 7, 2, SERIAL_PARITY_NONE, 1, "to7_io"
+ 2400, 7, 2, device_serial_interface::PARITY_NONE, 1, "to7_io"
};
const serial_image_interface to7_rf57932_config =
{
- 2400, 7, 2, SERIAL_PARITY_NONE, 1, "acia"
+ 2400, 7, 2, device_serial_interface::PARITY_NONE, 1, "acia"
};
const serial_image_interface to7_modem_config =
{
- 2400, 7, 2, SERIAL_PARITY_NONE, 1, NULL
+ 2400, 7, 2, device_serial_interface::PARITY_NONE, 1, NULL
};
/* ------------ driver ------------ */
diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c
index 3bef277201e..8dbaf1ce645 100644
--- a/src/mess/drivers/x68k.c
+++ b/src/mess/drivers/x68k.c
@@ -2051,8 +2051,7 @@ ADDRESS_MAP_END
WRITE_LINE_MEMBER( x68k_state::mfp_tdo_w )
{
- m_mfpdev->tc_w(state);
- m_mfpdev->rc_w(state);
+ m_mfpdev->clock_w(state);
}
static MC68901_INTERFACE( mfp_interface )
diff --git a/src/mess/machine/esqpanel.c b/src/mess/machine/esqpanel.c
index 44dcc3bfefd..9aa584fdaa2 100644
--- a/src/mess/machine/esqpanel.c
+++ b/src/mess/machine/esqpanel.c
@@ -66,7 +66,7 @@ void esqpanel_device::device_reset()
// panel comms is at 62500 baud (double the MIDI rate), 8N2
set_rcv_rate(62500);
set_tra_rate(62500);
- set_data_frame(8, 2, SERIAL_PARITY_NONE);
+ set_data_frame(8, 2, PARITY_NONE, false);
m_tx_busy = false;
m_xmit_read = m_xmit_write = 0;
@@ -74,6 +74,11 @@ void esqpanel_device::device_reset()
m_bButtonLightSecondByte = false;
}
+void esqpanel_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ device_serial_interface::device_timer(timer, id, param, ptr);
+}
+
void esqpanel_device::rcv_complete() // Rx completed receiving byte
{
receive_register_extract();
diff --git a/src/mess/machine/esqpanel.h b/src/mess/machine/esqpanel.h
index e4bc497b616..09691f0a478 100644
--- a/src/mess/machine/esqpanel.h
+++ b/src/mess/machine/esqpanel.h
@@ -71,6 +71,7 @@ protected:
virtual void device_start();
virtual void device_reset();
virtual void device_config_complete();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
// serial overrides
virtual void rcv_complete(); // Rx completed receiving byte
diff --git a/src/mess/machine/isa_sblaster.c b/src/mess/machine/isa_sblaster.c
index c561eeaef4a..5d86d0729ae 100644
--- a/src/mess/machine/isa_sblaster.c
+++ b/src/mess/machine/isa_sblaster.c
@@ -1284,9 +1284,8 @@ void sb_device::device_reset()
m_rx_waiting = m_tx_waiting = 0;
// MIDI is 31250 baud, 8-N-1
- set_rcv_rate(31250);
- set_tra_rate(31250);
- set_data_frame(8, 1, SERIAL_PARITY_NONE);
+ set_rate(31250);
+ set_data_frame(8, 1, PARITY_NONE, false);
}
UINT8 sb_device::dack_r(int line)
@@ -1423,6 +1422,11 @@ void sb_device::dack_w(int line, UINT8 data)
void sb_device::device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr)
{
// printf("DMA timer expire\n");
+ if (tid)
+ {
+ device_serial_interface::device_timer(timer, tid, param, ptr);
+ return;
+ }
UINT16 lsample, rsample;
switch (m_dsp.flags) {
diff --git a/src/mess/machine/keyboard.c b/src/mess/machine/keyboard.c
index f271d8ab895..d1c777e5b19 100644
--- a/src/mess/machine/keyboard.c
+++ b/src/mess/machine/keyboard.c
@@ -436,7 +436,7 @@ void serial_keyboard_device::device_start()
m_slot = m_owner && 1;
m_timer = timer_alloc();
set_tra_rate(baud);
- set_data_frame(8, 1, SERIAL_PARITY_NONE);
+ set_data_frame(8, 1, PARITY_NONE, false);
}
INPUT_CHANGED_MEMBER(serial_keyboard_device::update_frame)
@@ -459,21 +459,29 @@ void serial_keyboard_device::device_reset()
switch(val & 0x30)
{
case 0x10:
- set_data_frame(7, 1, SERIAL_PARITY_EVEN);
+ set_data_frame(7, 1, PARITY_EVEN, false);
break;
case 0x00:
default:
- set_data_frame(8, 1, SERIAL_PARITY_NONE);
+ set_data_frame(8, 1, PARITY_NONE, false);
break;
case 0x20:
- set_data_frame(8, 2, SERIAL_PARITY_NONE);
+ set_data_frame(8, 2, PARITY_NONE, false);
break;
case 0x30:
- set_data_frame(8, 1, SERIAL_PARITY_EVEN);
+ set_data_frame(8, 1, PARITY_EVEN, false);
break;
}
}
+void serial_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ if (id)
+ device_serial_interface::device_timer(timer, id, param, ptr);
+ else
+ generic_keyboard_device::device_timer(timer, id, param, ptr);
+}
+
void serial_keyboard_device::send_key(UINT8 code)
{
if(is_transmit_register_empty())
diff --git a/src/mess/machine/keyboard.h b/src/mess/machine/keyboard.h
index 8b935c18970..f752f63f2fc 100644
--- a/src/mess/machine/keyboard.h
+++ b/src/mess/machine/keyboard.h
@@ -94,6 +94,7 @@ protected:
virtual void device_start();
virtual void device_config_complete();
virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
virtual void tra_callback();
virtual void tra_complete();
virtual void input_callback(UINT8 state) { m_input_state = state; }
diff --git a/src/mess/machine/ser_mouse.c b/src/mess/machine/ser_mouse.c
index e1b41aef7ff..b62f4d6f3b9 100644
--- a/src/mess/machine/ser_mouse.c
+++ b/src/mess/machine/ser_mouse.c
@@ -72,6 +72,12 @@ void serial_mouse_device::tra_callback()
**************************************************************************/
void serial_mouse_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
+ if (id)
+ {
+ device_serial_interface::device_timer(timer, id, param, ptr);
+ return;
+ }
+
static int ox = 0, oy = 0;
int nx,ny;
int dx, dy, nb;
diff --git a/src/mess/machine/ser_mouse.h b/src/mess/machine/ser_mouse.h
index 476e7c8acb6..9bda1cc1d1c 100644
--- a/src/mess/machine/ser_mouse.h
+++ b/src/mess/machine/ser_mouse.h
@@ -52,7 +52,7 @@ public:
virtual void dtr_w(UINT8 state) { m_dtr = state; check_state(); }
virtual void rts_w(UINT8 state) { m_rts = state; check_state(); m_old_rts = state; }
protected:
- virtual void set_frame() { set_data_frame(7, 2, SERIAL_PARITY_NONE); }
+ virtual void set_frame() { set_data_frame(7, 2, PARITY_NONE, false); }
virtual void mouse_trans(int dx, int dy, int nb, int mbc);
virtual void device_reset() {m_old_rts = 0; serial_mouse_device::device_reset();}
private:
@@ -68,7 +68,7 @@ public:
virtual void dtr_w(UINT8 state) { m_dtr = state; check_state(); }
virtual void rts_w(UINT8 state) { m_rts = state; check_state(); }
protected:
- virtual void set_frame() { set_data_frame(8, 2, SERIAL_PARITY_NONE); }
+ virtual void set_frame() { set_data_frame(8, 2, PARITY_NONE, false); }
virtual void mouse_trans(int dx, int dy, int nb, int mbc);
private:
void check_state() { set_mouse_enable((m_dtr && m_rts)?true:false); }
diff --git a/src/mess/machine/terminal.c b/src/mess/machine/terminal.c
index 5516e8f66bf..7da5ffba895 100644
--- a/src/mess/machine/terminal.c
+++ b/src/mess/machine/terminal.c
@@ -481,7 +481,7 @@ void serial_terminal_device::device_start()
m_timer = timer_alloc();
set_rcv_rate(baud);
set_tra_rate(baud);
- set_data_frame(8, 1, SERIAL_PARITY_NONE);
+ set_data_frame(8, 1, PARITY_NONE, false);
}
INPUT_CHANGED_MEMBER(serial_terminal_device::update_frame)
@@ -505,17 +505,17 @@ void serial_terminal_device::device_reset()
switch(val & 0x30)
{
case 0x10:
- set_data_frame(7, 1, SERIAL_PARITY_EVEN);
+ set_data_frame(7, 1, PARITY_EVEN, false);
break;
case 0x00:
default:
- set_data_frame(8, 1, SERIAL_PARITY_NONE);
+ set_data_frame(8, 1, PARITY_NONE, false);
break;
case 0x20:
- set_data_frame(8, 2, SERIAL_PARITY_NONE);
+ set_data_frame(8, 2, PARITY_NONE, false);
break;
case 0x30:
- set_data_frame(8, 1, SERIAL_PARITY_EVEN);
+ set_data_frame(8, 1, PARITY_EVEN, false);
break;
}
}
diff --git a/src/mess/machine/thomson.c b/src/mess/machine/thomson.c
index 07c845d944b..734a1bcfe9e 100644
--- a/src/mess/machine/thomson.c
+++ b/src/mess/machine/thomson.c
@@ -686,9 +686,9 @@ WRITE8_MEMBER( to7_io_line_device::porta_out )
LOG_IO(( "%s %f to7_io_porta_out: tx=%i, dtr=%i\n", machine().describe_context(), machine().time().as_double(), tx, dtr ));
if ( dtr )
- m_connection_state |= SERIAL_STATE_DTR;
+ m_connection_state |= device_serial_interface::DTR;
else
- m_connection_state &= ~SERIAL_STATE_DTR;
+ m_connection_state &= ~device_serial_interface::DTR;
set_out_data_bit(tx);
serial_connection_out();
@@ -700,11 +700,11 @@ READ8_MEMBER( to7_io_line_device::porta_in )
{
centronics_device *printer = machine().device<centronics_device>("centronics");
int cts = 1;
- int dsr = ( m_input_state & SERIAL_STATE_DSR ) ? 0 : 1;
+ int dsr = ( m_input_state & device_serial_interface::DSR ) ? 0 : 1;
int rd = get_in_data_bit();
if ( machine().driver_data<thomson_state>()->to7_io_mode() == TO7_IO_RS232 )
- cts = m_input_state & SERIAL_STATE_CTS ? 0 : 1;
+ cts = m_input_state & device_serial_interface::CTS ? 0 : 1;
else
cts = !printer->busy_r();
@@ -738,7 +738,7 @@ void to7_io_line_device::input_callback(UINT8 state)
{
m_input_state = state;
- LOG_IO(( "%f to7_io_in_callback: cts=%i dsr=%i rd=%i\n", machine().time().as_double(), (state & SERIAL_STATE_CTS) ? 1 : 0, (state & SERIAL_STATE_DSR) ? 1 : 0, (int)get_in_data_bit() ));
+ LOG_IO(( "%f to7_io_in_callback: cts=%i dsr=%i rd=%i\n", machine().time().as_double(), (state & device_serial_interface::CTS) ? 1 : 0, (state & device_serial_interface::DSR) ? 1 : 0, (int)get_in_data_bit() ));
}
@@ -775,9 +775,9 @@ void to7_io_line_device::device_reset()
LOG (( "to7_io_reset called\n" ));
if (io_pia) io_pia->set_port_a_z_mask(0x03 );
- m_input_state = SERIAL_STATE_CTS;
- m_connection_state &= ~SERIAL_STATE_DTR;
- m_connection_state |= SERIAL_STATE_RTS; /* always ready to send */
+ m_input_state = device_serial_interface::CTS;
+ m_connection_state &= ~device_serial_interface::DTR;
+ m_connection_state |= device_serial_interface::RTS; /* always ready to send */
set_out_data_bit(1);
serial_connection_out();
}
diff --git a/src/mess/machine/wangpckb.c b/src/mess/machine/wangpckb.c
index 0a74670b4e2..6b9d8a1dddc 100644
--- a/src/mess/machine/wangpckb.c
+++ b/src/mess/machine/wangpckb.c
@@ -417,7 +417,7 @@ void wangpc_keyboard_device::device_start()
// set serial callbacks
m_maincpu->i8051_set_serial_tx_callback(WRITE8_DELEGATE(wangpc_keyboard_device, mcs51_tx_callback));
m_maincpu->i8051_set_serial_rx_callback(READ8_DELEGATE(wangpc_keyboard_device, mcs51_rx_callback));
- set_data_frame(8, 2, SERIAL_PARITY_NONE);
+ set_data_frame(8, 2, PARITY_NONE, false);
}
@@ -441,7 +441,7 @@ void wangpc_keyboard_device::device_reset()
void wangpc_keyboard_device::input_callback(UINT8 state)
{
- int bit = (state & SERIAL_STATE_RX_DATA) ? 1 : 0;
+ int bit = (state & RX) ? 1 : 0;
receive_register_update_bit(bit);
diff --git a/src/mess/machine/zx8302.c b/src/mess/machine/zx8302.c
index b7fa503ee01..6b518c25ffc 100644
--- a/src/mess/machine/zx8302.c
+++ b/src/mess/machine/zx8302.c
@@ -270,6 +270,10 @@ void zx8302_device::device_timer(emu_timer &timer, device_timer_id id, int param
transmit_ipc_data();
break;
+
+ default:
+ device_serial_interface::device_timer(timer, id, param, ptr);
+ break;
}
}
@@ -402,7 +406,7 @@ WRITE8_MEMBER( zx8302_device::control_w )
m_baudx4_timer->adjust(attotime::zero, 0, attotime::from_hz(baudx4));
set_tra_rate(baud);
- set_data_frame(8, 2, SERIAL_PARITY_NONE);
+ set_data_frame(8, 2, PARITY_NONE, false);
}