mirror of
https://github.com/holub/mame
synced 2025-06-02 10:59:52 +03:00
z80sio: Added register access functions to prevent trampoline functions [Dirk Best]
This commit is contained in:
parent
d1ebfa9d2e
commit
5c85b8f39c
@ -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
|
||||
|
@ -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
|
||||
***************************************************************************/
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 );
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user