diff --git a/src/emu/cpu/m6502/m5074x.h b/src/emu/cpu/m6502/m5074x.h index d29ed852fca..d8054aba221 100644 --- a/src/emu/cpu/m6502/m5074x.h +++ b/src/emu/cpu/m6502/m5074x.h @@ -9,17 +9,29 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_M5074X_PORT0_CALLBACKS(_read, _write) \ - downcast(device)->set_p0_callbacks(DEVCB2_##_read, DEVCB2_##_write); +#define MCFG_M5074X_PORT0_READ_CALLBACK(_read) \ + devcb = &m5074x_device::set_p0_rd_callback(*device, DEVCB2_##_read); -#define MCFG_M5074X_PORT1_CALLBACKS(_read, _write) \ - downcast(device)->set_p1_callbacks(DEVCB2_##_read, DEVCB2_##_write); +#define MCFG_M5074X_PORT1_READ_CALLBACK(_read) \ + devcb = &m5074x_device::set_p1_rd_callback(*device, DEVCB2_##_read); -#define MCFG_M5074X_PORT2_CALLBACKS(_read, _write) \ - downcast(device)->set_p2_callbacks(DEVCB2_##_read, DEVCB2_##_write); +#define MCFG_M5074X_PORT2_READ_CALLBACK(_read) \ + devcb = &m5074x_device::set_p2_rd_callback(*device, DEVCB2_##_read); -#define MCFG_M5074X_PORT3_CALLBACKS(_read, _write) \ - downcast(device)->set_p3_callbacks(DEVCB2_##_read, DEVCB2_##_write); +#define MCFG_M5074X_PORT3_READ_CALLBACK(_read) \ + devcb = &m5074x_device::set_p3_rd_callback(*device, DEVCB2_##_read); + +#define MCFG_M5074X_PORT0_WRITE_CALLBACK(_write) \ + devcb = &m5074x_device::set_p0_wr_callback(*device, DEVCB2_##_write); + +#define MCFG_M5074X_PORT1_WRITE_CALLBACK(_write) \ + devcb = &m5074x_device::set_p1_wr_callback(*device, DEVCB2_##_write); + +#define MCFG_M5074X_PORT2_WRITE_CALLBACK(_write) \ + devcb = &m5074x_device::set_p2_wr_callback(*device, DEVCB2_##_write); + +#define MCFG_M5074X_PORT3_WRITE_CALLBACK(_write) \ + devcb = &m5074x_device::set_p3_wr_callback(*device, DEVCB2_##_write); //************************************************************************** // TYPE DEFINITIONS @@ -54,29 +66,14 @@ public: const address_space_config m_program_config; - template void set_p0_callbacks(_read rd, _write wr) - { - read_p0.set_callback(rd); - write_p0.set_callback(wr); - } - - template void set_p1_callbacks(_read rd, _write wr) - { - read_p1.set_callback(rd); - write_p1.set_callback(wr); - } - - template void set_p2_callbacks(_read rd, _write wr) - { - read_p2.set_callback(rd); - write_p2.set_callback(wr); - } - - template void set_p3_callbacks(_read rd, _write wr) - { - read_p3.set_callback(rd); - write_p3.set_callback(wr); - } + template static devcb2_base &set_p0_rd_callback(device_t &device, _Object object) { return downcast(device).read_p0.set_callback(object); } + template static devcb2_base &set_p1_rd_callback(device_t &device, _Object object) { return downcast(device).read_p1.set_callback(object); } + template static devcb2_base &set_p2_rd_callback(device_t &device, _Object object) { return downcast(device).read_p2.set_callback(object); } + template static devcb2_base &set_p3_rd_callback(device_t &device, _Object object) { return downcast(device).read_p3.set_callback(object); } + template static devcb2_base &set_p0_wr_callback(device_t &device, _Object object) { return downcast(device).write_p0.set_callback(object); } + template static devcb2_base &set_p1_wr_callback(device_t &device, _Object object) { return downcast(device).write_p1.set_callback(object); } + template static devcb2_base &set_p2_wr_callback(device_t &device, _Object object) { return downcast(device).write_p2.set_callback(object); } + template static devcb2_base &set_p3_wr_callback(device_t &device, _Object object) { return downcast(device).write_p3.set_callback(object); } devcb2_read8 read_p0, read_p1, read_p2, read_p3; devcb2_write8 write_p0, write_p1, write_p2, write_p3; diff --git a/src/mess/drivers/apple2gs.c b/src/mess/drivers/apple2gs.c index 5f9856b660e..4f23d9a30ff 100644 --- a/src/mess/drivers/apple2gs.c +++ b/src/mess/drivers/apple2gs.c @@ -325,10 +325,14 @@ static MACHINE_CONFIG_START( apple2gs, apple2gs_state ) MCFG_CPU_PROGRAM_MAP(apple2gs_map) #if RUN_ADB_MICRO MCFG_CPU_ADD(ADBMICRO_TAG, M50741, XTAL_3_579545MHz) - MCFG_M5074X_PORT0_CALLBACKS(READ8(apple2gs_state, adbmicro_p0_in), WRITE8(apple2gs_state, adbmicro_p0_out)) - MCFG_M5074X_PORT1_CALLBACKS(READ8(apple2gs_state, adbmicro_p1_in), WRITE8(apple2gs_state, adbmicro_p1_out)) - MCFG_M5074X_PORT2_CALLBACKS(READ8(apple2gs_state, adbmicro_p2_in), WRITE8(apple2gs_state, adbmicro_p2_out)) - MCFG_M5074X_PORT3_CALLBACKS(READ8(apple2gs_state, adbmicro_p3_in), WRITE8(apple2gs_state, adbmicro_p3_out)) + MCFG_M5074X_PORT0_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p0_in)) + MCFG_M5074X_PORT0_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p0_out)) + MCFG_M5074X_PORT1_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p1_in)) + MCFG_M5074X_PORT1_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p1_out)) + MCFG_M5074X_PORT2_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p2_in)) + MCFG_M5074X_PORT2_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p2_out)) + MCFG_M5074X_PORT3_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p3_in)) + MCFG_M5074X_PORT3_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p3_out)) #endif MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", apple2gs_state, apple2_interrupt, "screen", 0, 1) MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -395,10 +399,14 @@ static MACHINE_CONFIG_DERIVED( apple2gsr1, apple2gs ) #if RUN_ADB_MICRO MCFG_CPU_REPLACE(ADBMICRO_TAG, M50740, XTAL_3_579545MHz) - MCFG_M5074X_PORT0_CALLBACKS(READ8(apple2gs_state, adbmicro_p0_in), WRITE8(apple2gs_state, adbmicro_p0_out)) - MCFG_M5074X_PORT1_CALLBACKS(READ8(apple2gs_state, adbmicro_p1_in), WRITE8(apple2gs_state, adbmicro_p1_out)) - MCFG_M5074X_PORT2_CALLBACKS(READ8(apple2gs_state, adbmicro_p2_in), WRITE8(apple2gs_state, adbmicro_p2_out)) - MCFG_M5074X_PORT3_CALLBACKS(READ8(apple2gs_state, adbmicro_p3_in), WRITE8(apple2gs_state, adbmicro_p3_out)) + MCFG_M5074X_PORT0_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p0_in)) + MCFG_M5074X_PORT0_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p0_out)) + MCFG_M5074X_PORT1_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p1_in)) + MCFG_M5074X_PORT1_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p1_out)) + MCFG_M5074X_PORT2_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p2_in)) + MCFG_M5074X_PORT2_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p2_out)) + MCFG_M5074X_PORT3_READ_CALLBACK(READ8(apple2gs_state, adbmicro_p3_in)) + MCFG_M5074X_PORT3_WRITE_CALLBACK(WRITE8(apple2gs_state, adbmicro_p3_out)) #endif MCFG_RAM_MODIFY(RAM_TAG)