diff --git a/src/emu/machine/z80sio.c b/src/emu/machine/z80sio.c index a449ae6d400..0cf01579e41 100644 --- a/src/emu/machine/z80sio.c +++ b/src/emu/machine/z80sio.c @@ -486,6 +486,58 @@ READ8_DEVICE_HANDLER( z80sio_d_r ) } +/*************************************************************************** + CONTROL/DATA REGISTER +***************************************************************************/ + +READ8_DEVICE_HANDLER( z80sio_cd_ba_r ) +{ + switch (offset & 3) + { + case 0: return z80sio_d_r(device, 0); + case 1: return z80sio_d_r(device, 1); + case 2: return z80sio_c_r(device, 0); + case 3: return z80sio_c_r(device, 1); + } + + return 0xff; +} + +WRITE8_DEVICE_HANDLER( z80sio_cd_ba_w ) +{ + switch (offset & 3) + { + case 0: z80sio_d_w(device, 0, data); break; + case 1: z80sio_d_w(device, 1, data); break; + case 2: z80sio_c_w(device, 0, data); break; + case 3: z80sio_c_w(device, 1, data); break; + } +} + +READ8_DEVICE_HANDLER( z80sio_ba_cd_r ) +{ + switch (offset & 3) + { + case 0: return z80sio_d_r(device, 0); + case 1: return z80sio_c_r(device, 0); + case 2: return z80sio_d_r(device, 1); + case 3: return z80sio_c_r(device, 1); + } + + return 0xff; +} + +WRITE8_DEVICE_HANDLER( z80sio_ba_cd_w ) +{ + switch (offset & 3) + { + case 0: z80sio_d_w(device, 0, data); break; + case 1: z80sio_c_w(device, 0, data); break; + case 2: z80sio_d_w(device, 1, data); break; + case 3: z80sio_c_w(device, 1, data); break; + } +} + /*************************************************************************** CONTROL LINE READ/WRITE diff --git a/src/emu/machine/z80sio.h b/src/emu/machine/z80sio.h index 433395cddc5..93b73e91ab4 100644 --- a/src/emu/machine/z80sio.h +++ b/src/emu/machine/z80sio.h @@ -39,23 +39,24 @@ struct _z80sio_interface /*************************************************************************** - CONTROL REGISTER READ/WRITE + CONTROL/DATA REGISTER READ/WRITE ***************************************************************************/ +/* register access (A1=C/_D A0=B/_A) */ +READ8_DEVICE_HANDLER( z80sio_cd_ba_r ); +WRITE8_DEVICE_HANDLER( z80sio_cd_ba_w ); + +/* register access (A1=B/_A A0=C/_D) */ +READ8_DEVICE_HANDLER( z80sio_ba_cd_r ); +WRITE8_DEVICE_HANDLER( z80sio_ba_cd_w ); + WRITE8_DEVICE_HANDLER( z80sio_c_w ); READ8_DEVICE_HANDLER( z80sio_c_r ); - - -/*************************************************************************** - DATA REGISTER READ/WRITE -***************************************************************************/ - WRITE8_DEVICE_HANDLER( z80sio_d_w ); READ8_DEVICE_HANDLER( z80sio_d_r ); - /*************************************************************************** CONTROL LINE READ/WRITE ***************************************************************************/ diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c index 856258f39f1..8a285271f51 100644 --- a/src/mame/drivers/dlair.c +++ b/src/mame/drivers/dlair.c @@ -344,28 +344,6 @@ static WRITE8_HANDLER( laserdisc_w ) -/************************************* - * - * Z80 SIO/DART handlers - * - *************************************/ - -static READ8_DEVICE_HANDLER( sio_r ) -{ - return (offset & 1) ? z80sio_c_r(device, (offset >> 1) & 1) : z80sio_d_r(device, (offset >> 1) & 1); -} - - -static WRITE8_DEVICE_HANDLER( sio_w ) -{ - if (offset & 1) - z80sio_c_w(device, (offset >> 1) & 1, data); - else - z80sio_d_w(device, (offset >> 1) & 1, data); -} - - - /************************************* * * U.S. version memory map @@ -420,7 +398,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( dleuro_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x03) AM_MIRROR(0x7c) AM_DEVREADWRITE("ctc", z80ctc_r, z80ctc_w) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x7c) AM_DEVREADWRITE("sio", sio_r, sio_w) + AM_RANGE(0x80, 0x83) AM_MIRROR(0x7c) AM_DEVREADWRITE("sio", z80sio_ba_cd_r, z80sio_ba_cd_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c index 03d1d31184b..1a6db608895 100644 --- a/src/mame/drivers/mcr.c +++ b/src/mame/drivers/mcr.c @@ -709,7 +709,7 @@ static ADDRESS_MAP_START( ipu_91695_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x03) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio0", z80pio_cd_ba_r, z80pio_cd_ba_w) - AM_RANGE(0x04, 0x07) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_sio", mcr_ipu_sio_r, mcr_ipu_sio_w) + AM_RANGE(0x04, 0x07) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_sio", z80sio_cd_ba_r, z80sio_cd_ba_w) AM_RANGE(0x08, 0x0b) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_ctc", z80ctc_r, z80ctc_w) AM_RANGE(0x0c, 0x0f) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio1", z80pio_cd_ba_r, z80pio_cd_ba_w) AM_RANGE(0x10, 0x13) AM_MIRROR(0xe0) AM_WRITE(mcr_ipu_laserdisk_w) diff --git a/src/mame/includes/mcr.h b/src/mame/includes/mcr.h index ff66786885b..da5f867ff75 100644 --- a/src/mame/includes/mcr.h +++ b/src/mame/includes/mcr.h @@ -64,8 +64,6 @@ WRITE16_HANDLER( mcr68_6840_lower_w ); READ16_HANDLER( mcr68_6840_upper_r ); READ16_HANDLER( mcr68_6840_lower_r ); -READ8_DEVICE_HANDLER( mcr_ipu_sio_r ); -WRITE8_DEVICE_HANDLER( mcr_ipu_sio_w ); WRITE8_HANDLER( mcr_ipu_laserdisk_w ); READ8_HANDLER( mcr_ipu_watchdog_r ); WRITE8_HANDLER( mcr_ipu_watchdog_w ); diff --git a/src/mame/machine/mcr.c b/src/mame/machine/mcr.c index 734ad8f40c5..6d38617c93d 100644 --- a/src/mame/machine/mcr.c +++ b/src/mame/machine/mcr.c @@ -940,21 +940,6 @@ static WRITE8_DEVICE_HANDLER( ipu_break_changed ) } -READ8_DEVICE_HANDLER( mcr_ipu_sio_r ) -{ - return (offset & 2) ? z80sio_c_r(device, offset & 1) : z80sio_d_r(device, offset & 1); -} - - -WRITE8_DEVICE_HANDLER( mcr_ipu_sio_w ) -{ - if (offset & 2) - z80sio_c_w(device, offset & 1, data); - else - z80sio_d_w(device, offset & 1, data); -} - - WRITE8_HANDLER( mcr_ipu_laserdisk_w ) { /* bit 3 enables (1) LD video regardless of PIX SW */