diff --git a/src/emu/bus/epson_sio/tf20.c b/src/emu/bus/epson_sio/tf20.c index ac213e34934..2fa07ca55fc 100644 --- a/src/emu/bus/epson_sio/tf20.c +++ b/src/emu/bus/epson_sio/tf20.c @@ -111,6 +111,7 @@ static MACHINE_CONFIG_FRAGMENT( tf20 ) MCFG_CPU_ADD("19b", Z80, XTAL_CR1 / 2) /* uPD780C */ MCFG_CPU_PROGRAM_MAP(cpu_mem) MCFG_CPU_IO_MAP(cpu_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, epson_tf20_device,irq_callback) // 64k internal ram MCFG_RAM_ADD("ram") @@ -173,8 +174,6 @@ void epson_tf20_device::device_start() m_timer_serial = timer_alloc(0, NULL); m_timer_tc = timer_alloc(1, NULL); - m_cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(epson_tf20_device::irq_callback),this)); - m_fd0 = subdevice("5a:0")->get_device(); m_fd1 = subdevice("5a:1")->get_device(); diff --git a/src/emu/devcpu.h b/src/emu/devcpu.h index ea487733d5a..539d5c8fbd5 100644 --- a/src/emu/devcpu.h +++ b/src/emu/devcpu.h @@ -164,9 +164,12 @@ enum #define MCFG_CPU_VBLANK_INT_DRIVER MCFG_DEVICE_VBLANK_INT_DRIVER #define MCFG_CPU_PERIODIC_INT_DRIVER MCFG_DEVICE_PERIODIC_INT_DRIVER +#define MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER +#define MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE #define MCFG_CPU_VBLANK_INT_REMOVE MCFG_DEVICE_VBLANK_INT_REMOVE #define MCFG_CPU_PERIODIC_INT_REMOVE MCFG_DEVICE_PERIODIC_INT_REMOVE +#define MCFG_CPU_IRQ_ACKNOWLEDGE_REMOVE MCFG_DEVICE_IRQ_ACKNOWLEDGE_REMOVE //************************************************************************** diff --git a/src/emu/diexec.c b/src/emu/diexec.c index 76987d3c7aa..2456c417420 100644 --- a/src/emu/diexec.c +++ b/src/emu/diexec.c @@ -126,6 +126,21 @@ void device_execute_interface::static_set_periodic_int(device_t &device, device_ } +//------------------------------------------------- +// set_irq_acknowledge_callback - configuration helper +// to setup callback for IRQ acknowledge +//------------------------------------------------- + +void device_execute_interface::static_set_irq_acknowledge_callback(device_t &device, device_irq_acknowledge_delegate callback) +{ + device_execute_interface *exec; + if (!device.interface(exec)) + throw emu_fatalerror("MCFG_DEVICE_IRQ_ACKNOWLEDGE called on device '%s' with no execute interface", device.tag()); + exec->m_driver_irq = callback; + exec->m_driver_irq_legacy = NULL; +} + + //------------------------------------------------- // executing - return true if this device is // within its execute function @@ -483,7 +498,7 @@ void device_execute_interface::interface_pre_start() // bind delegates m_vblank_interrupt.bind_relative_to(*device().owner()); m_timed_interrupt.bind_relative_to(*device().owner()); - m_driver_irq.bind_relative_to(device()); + m_driver_irq.bind_relative_to(*device().owner()); // fill in the initial states device_iterator iter(device().machine().root_device()); diff --git a/src/emu/diexec.h b/src/emu/diexec.h index 23fd46cf21b..14da62c2c4d 100644 --- a/src/emu/diexec.h +++ b/src/emu/diexec.h @@ -99,6 +99,12 @@ enum device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)0), attotime::from_hz(_rate)); #define MCFG_DEVICE_PERIODIC_INT_REMOVE() \ device_execute_interface::static_set_periodic_int(*device, device_interrupt_delegate(), attotime()); +#define MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(_class, _func) \ + device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)); +#define MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(_devtag, _class, _func) \ + device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)0)); +#define MCFG_DEVICE_IRQ_ACKNOWLEDGE_REMOVE() \ + device_execute_interface::static_set_irq_acknowledge_callback(*device, device_irq_acknowledge_delegate()); //************************************************************************** @@ -145,9 +151,8 @@ public: // static inline configuration helpers static void static_set_disable(device_t &device); static void static_set_vblank_int(device_t &device, device_interrupt_delegate function, const char *tag, int rate = 0); - static void static_remove_vblank_int(device_t &device); static void static_set_periodic_int(device_t &device, device_interrupt_delegate function, attotime rate); - static void static_remove_periodic_int(device_t &device); + static void static_set_irq_acknowledge_callback(device_t &device, device_irq_acknowledge_delegate callback); // execution management bool executing() const; diff --git a/src/mame/audio/scramble.c b/src/mame/audio/scramble.c index 3e99874c0c0..73624268cc2 100644 --- a/src/mame/audio/scramble.c +++ b/src/mame/audio/scramble.c @@ -155,8 +155,6 @@ WRITE8_MEMBER(scramble_state::frogger_filter_w) void scramble_state::sh_init() { - m_audiocpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(scramble_state::scramble_sh_irq_callback),this)); - /* PR is always 0, D is always 1 */ m_konami_7474->d_w(1); } @@ -331,6 +329,7 @@ MACHINE_CONFIG_FRAGMENT( ad2083_audio ) MCFG_CPU_ADD("audiocpu", Z80, 14318000/8) /* 1.78975 MHz */ MCFG_CPU_PROGRAM_MAP(ad2083_sound_map) MCFG_CPU_IO_MAP(ad2083_sound_io_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(scramble_state,scramble_sh_irq_callback) MCFG_DEVICE_ADD("tmsprom", TMSPROM, AD2083_TMS5110_CLOCK / 2) /* rom clock */ MCFG_DEVICE_CONFIG(prom_intf) diff --git a/src/mame/drivers/aztarac.c b/src/mame/drivers/aztarac.c index 01d9f110dbe..9919dd4e92e 100644 --- a/src/mame/drivers/aztarac.c +++ b/src/mame/drivers/aztarac.c @@ -36,7 +36,6 @@ IRQ_CALLBACK_MEMBER(aztarac_state::aztarac_irq_callback) void aztarac_state::machine_reset() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(aztarac_state::aztarac_irq_callback),this)); } @@ -149,6 +148,7 @@ static MACHINE_CONFIG_START( aztarac, aztarac_state ) MCFG_CPU_ADD("maincpu", M68000, 8000000) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", aztarac_state, irq4_line_hold) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(aztarac_state,aztarac_irq_callback) MCFG_CPU_ADD("audiocpu", Z80, 2000000) MCFG_CPU_PROGRAM_MAP(sound_map) diff --git a/src/mame/drivers/calchase.c b/src/mame/drivers/calchase.c index bd5b4991dd0..b8118ee0a78 100644 --- a/src/mame/drivers/calchase.c +++ b/src/mame/drivers/calchase.c @@ -628,8 +628,6 @@ void calchase_state::machine_start() { m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4); m_bios_ext_ram = auto_alloc_array(machine(), UINT32, 0x10000/4); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(calchase_state::irq_callback),this)); } void calchase_state::machine_reset() @@ -643,6 +641,7 @@ static MACHINE_CONFIG_START( calchase, calchase_state ) MCFG_CPU_ADD("maincpu", PENTIUM, 133000000) // Cyrix 686MX-PR200 CPU MCFG_CPU_PROGRAM_MAP(calchase_map) MCFG_CPU_IO_MAP(calchase_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(calchase_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c index 8204392be81..f121a7c79e8 100644 --- a/src/mame/drivers/chihiro.c +++ b/src/mame/drivers/chihiro.c @@ -4457,7 +4457,6 @@ void chihiro_state::machine_start() smbus_register_device(0x10,smbus_callback_pic16lc); smbus_register_device(0x45,smbus_callback_cx25871); smbus_register_device(0x54,smbus_callback_eeprom); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(chihiro_state::irq_callback),this)); chihiro_devs.pic8259_1 = machine().device( "pic8259_1" ); chihiro_devs.pic8259_2 = machine().device( "pic8259_2" ); chihiro_devs.ide = machine().device( "ide" ); @@ -4503,6 +4502,7 @@ static MACHINE_CONFIG_START( chihiro_base, chihiro_state ) MCFG_CPU_ADD("maincpu", PENTIUM3, 733333333) /* Wrong! family 6 model 8 stepping 10 */ MCFG_CPU_PROGRAM_MAP(xbox_map) MCFG_CPU_IO_MAP(xbox_map_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(chihiro_state,irq_callback) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c index 19500fadc9a..a0025cb88ea 100644 --- a/src/mame/drivers/crystal.c +++ b/src/mame/drivers/crystal.c @@ -584,8 +584,6 @@ void crystal_state::machine_start() { int i; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(crystal_state::icallback),this)); - for (i = 0; i < 4; i++) m_Timer[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(crystal_state::Timercb),this), (void*)(FPTR)i); @@ -614,7 +612,6 @@ void crystal_state::machine_reset() memset(m_vidregs, 0, 0x10000); m_FlipCount = 0; m_IntHigh = 0; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(crystal_state::icallback),this)); m_Bank = 0; membank("bank1")->set_base(memregion("user1")->base() + 0); m_FlashCmd = 0xff; @@ -899,6 +896,7 @@ static MACHINE_CONFIG_START( crystal, crystal_state ) MCFG_CPU_ADD("maincpu", SE3208, 43000000) MCFG_CPU_PROGRAM_MAP(crystal_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", crystal_state, crystal_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(crystal_state, icallback) MCFG_NVRAM_ADD_0FILL("nvram") diff --git a/src/mame/drivers/dcheese.c b/src/mame/drivers/dcheese.c index 2b2fb27b8db..99895c02c85 100644 --- a/src/mame/drivers/dcheese.c +++ b/src/mame/drivers/dcheese.c @@ -93,8 +93,6 @@ void dcheese_state::machine_start() { m_bsmt = machine().device("bsmt"); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(dcheese_state::irq_callback),this)); - save_item(NAME(m_irq_state)); save_item(NAME(m_soundlatch_full)); save_item(NAME(m_sound_control)); @@ -401,6 +399,7 @@ static MACHINE_CONFIG_START( dcheese, dcheese_state ) MCFG_CPU_ADD("maincpu", M68000, MAIN_OSC) MCFG_CPU_PROGRAM_MAP(main_cpu_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", dcheese_state, dcheese_vblank) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(dcheese_state,irq_callback) MCFG_CPU_ADD("audiocpu", M6809, SOUND_OSC/16) MCFG_CPU_PROGRAM_MAP(sound_cpu_map) diff --git a/src/mame/drivers/fruitpc.c b/src/mame/drivers/fruitpc.c index be91da17b26..23baabd126e 100644 --- a/src/mame/drivers/fruitpc.c +++ b/src/mame/drivers/fruitpc.c @@ -109,7 +109,6 @@ INPUT_PORTS_END void fruitpc_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fruitpc_state::irq_callback),this)); } void fruitpc_state::machine_reset() @@ -120,6 +119,7 @@ static MACHINE_CONFIG_START( fruitpc, fruitpc_state ) MCFG_CPU_ADD("maincpu", I486, 66000000) // ST STPCD0166BTC3 66 MHz 486 CPU MCFG_CPU_PROGRAM_MAP(fruitpc_map) MCFG_CPU_IO_MAP(fruitpc_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fruitpc_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/funkball.c b/src/mame/drivers/funkball.c index c5eacfad3c7..e95c7f0f2ad 100644 --- a/src/mame/drivers/funkball.c +++ b/src/mame/drivers/funkball.c @@ -823,8 +823,6 @@ void funkball_state::machine_start() { m_bios_ram = auto_alloc_array(machine(), UINT8, 0x20000); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(funkball_state::irq_callback),this)); - /* defaults, otherwise it won't boot */ m_unk_ram[0x010/4] = 0x2f8d85ff; m_unk_ram[0x018/4] = 0x000018c5; @@ -864,6 +862,7 @@ static MACHINE_CONFIG_START( funkball, funkball_state ) MCFG_CPU_ADD("maincpu", MEDIAGX, 66666666*3.5) // 66,6 MHz x 3.5 MCFG_CPU_PROGRAM_MAP(funkball_map) MCFG_CPU_IO_MAP(funkball_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(funkball_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/galaxold.c b/src/mame/drivers/galaxold.c index 0c70b68e3cd..69eaa11fbd3 100644 --- a/src/mame/drivers/galaxold.c +++ b/src/mame/drivers/galaxold.c @@ -2591,6 +2591,7 @@ static MACHINE_CONFIG_DERIVED( hunchbkg, galaxold_base ) MCFG_CPU_PROGRAM_MAP(hunchbkg) MCFG_CPU_IO_MAP(hunchbkg_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(galaxold_state,hunchbkg_irq_callback) MCFG_DEVICE_MODIFY("7474_9m_1") /* the nmi line seems to be inverted on the cpu plugin board */ diff --git a/src/mame/drivers/galgame.c b/src/mame/drivers/galgame.c index 37ba899f6ee..663e85606cc 100644 --- a/src/mame/drivers/galgame.c +++ b/src/mame/drivers/galgame.c @@ -313,8 +313,6 @@ void galaxygame_state::machine_reset() m_point_work_list_index = 0; m_point_display_list_index = 0; m_interrupt = 0; - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxygame_state::galaxygame_irq_callback),this)); } static MACHINE_CONFIG_START( galaxygame, galaxygame_state ) @@ -323,6 +321,7 @@ static MACHINE_CONFIG_START( galaxygame, galaxygame_state ) MCFG_CPU_PROGRAM_MAP(galaxygame_map) MCFG_T11_INITIAL_MODE(5 << 13) MCFG_CPU_PERIODIC_INT_DRIVER(galaxygame_state, galaxygame_irq, 60) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(galaxygame_state,galaxygame_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c index 277077634eb..c84dd64bcc3 100644 --- a/src/mame/drivers/gamecstl.c +++ b/src/mame/drivers/gamecstl.c @@ -423,8 +423,6 @@ void gamecstl_state::machine_start() void gamecstl_state::machine_reset() { membank("bank1")->set_base(memregion("bios")->base() + 0x30000); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(gamecstl_state::irq_callback),this)); } static MACHINE_CONFIG_START( gamecstl, gamecstl_state ) @@ -432,6 +430,7 @@ static MACHINE_CONFIG_START( gamecstl, gamecstl_state ) MCFG_CPU_ADD("maincpu", PENTIUM3, 200000000) MCFG_CPU_PROGRAM_MAP(gamecstl_map) MCFG_CPU_IO_MAP(gamecstl_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(gamecstl_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/gammagic.c b/src/mame/drivers/gammagic.c index 04ff43313a8..c0d81fbdf99 100644 --- a/src/mame/drivers/gammagic.c +++ b/src/mame/drivers/gammagic.c @@ -119,13 +119,13 @@ INPUT_PORTS_END void gammagic_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(gammagic_state::irq_callback),this)); } static MACHINE_CONFIG_START( gammagic, gammagic_state ) MCFG_CPU_ADD("maincpu", PENTIUM, 133000000) // Intel Pentium 133 MCFG_CPU_PROGRAM_MAP(gammagic_map) MCFG_CPU_IO_MAP(gammagic_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(gammagic_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/magtouch.c b/src/mame/drivers/magtouch.c index ea622257cd3..182164fd1a5 100644 --- a/src/mame/drivers/magtouch.c +++ b/src/mame/drivers/magtouch.c @@ -172,8 +172,6 @@ INPUT_PORTS_END void magtouch_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(magtouch_state::irq_callback),this)); - membank("rombank")->configure_entries(0, 0x80, memregion("game_prg")->base(), 0x8000 ); membank("rombank")->set_entry(0); } @@ -183,6 +181,7 @@ static MACHINE_CONFIG_START( magtouch, magtouch_state ) MCFG_CPU_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */ MCFG_CPU_PROGRAM_MAP(magtouch_map) MCFG_CPU_IO_MAP(magtouch_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(magtouch_state,irq_callback) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_vga ) diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c index 74f20cc242e..0b9d927258a 100644 --- a/src/mame/drivers/mazerbla.c +++ b/src/mame/drivers/mazerbla.c @@ -1462,8 +1462,6 @@ void mazerbla_state::machine_reset() } memset(m_lookup_ram, 0, ARRAY_LENGTH(m_lookup_ram)); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mazerbla_state::irq_callback),this)); } static MACHINE_CONFIG_START( mazerbla, mazerbla_state ) @@ -1472,6 +1470,7 @@ static MACHINE_CONFIG_START( mazerbla, mazerbla_state ) MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ MCFG_CPU_PROGRAM_MAP(mazerbla_map) MCFG_CPU_IO_MAP(mazerbla_io_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mazerbla_state,irq_callback) MCFG_CPU_ADD("sub", Z80, MASTER_CLOCK) /* 4 MHz, NMI, IM1 INT */ MCFG_CPU_PROGRAM_MAP(mazerbla_cpu2_map) @@ -1513,6 +1512,7 @@ static MACHINE_CONFIG_START( greatgun, mazerbla_state ) MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ MCFG_CPU_PROGRAM_MAP(mazerbla_map) MCFG_CPU_IO_MAP(greatgun_io_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mazerbla_state,irq_callback) MCFG_CPU_ADD("sub", Z80, SOUND_CLOCK / 4) /* 3.579500 MHz, NMI - caused by sound command write, periodic INT */ MCFG_CPU_PROGRAM_MAP(greatgun_sound_map) diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c index 6570501cbc4..48d4a0f3db8 100644 --- a/src/mame/drivers/mediagx.c +++ b/src/mame/drivers/mediagx.c @@ -852,9 +852,6 @@ void mediagx_state::machine_start() void mediagx_state::machine_reset() { UINT8 *rom = memregion("bios")->base(); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mediagx_state::irq_callback),this)); - memcpy(m_bios_ram, rom, 0x40000); m_maincpu->reset(); @@ -876,6 +873,7 @@ static MACHINE_CONFIG_START( mediagx, mediagx_state ) MCFG_CPU_ADD("maincpu", MEDIAGX, 166000000) MCFG_CPU_PROGRAM_MAP(mediagx_map) MCFG_CPU_IO_MAP(mediagx_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mediagx_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/midqslvr.c b/src/mame/drivers/midqslvr.c index 0abdf43e3e6..37c39770b0b 100644 --- a/src/mame/drivers/midqslvr.c +++ b/src/mame/drivers/midqslvr.c @@ -390,8 +390,6 @@ void midqslvr_state::machine_start() m_bios_ext4_ram = auto_alloc_array(machine(), UINT32, 0x4000/4); m_isa_ram1 = auto_alloc_array(machine(), UINT32, 0x4000/4); m_isa_ram2 = auto_alloc_array(machine(), UINT32, 0x4000/4); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(midqslvr_state::irq_callback),this)); intel82439tx_init(); } @@ -411,6 +409,7 @@ static MACHINE_CONFIG_START( midqslvr, midqslvr_state ) MCFG_CPU_ADD("maincpu", PENTIUM, 333000000) // actually Celeron 333 MCFG_CPU_PROGRAM_MAP(midqslvr_map) MCFG_CPU_IO_MAP(midqslvr_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(midqslvr_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c index 875544e1160..6083e6219a3 100644 --- a/src/mame/drivers/model1.c +++ b/src/mame/drivers/model1.c @@ -725,7 +725,6 @@ IRQ_CALLBACK_MEMBER(model1_state::irq_callback) void model1_state::irq_init() { m_maincpu->set_input_line(0, CLEAR_LINE); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(model1_state::irq_callback),this)); } TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt) @@ -1512,6 +1511,8 @@ static MACHINE_CONFIG_START( model1, model1_state ) MCFG_CPU_ADD("maincpu", V60, 16000000) MCFG_CPU_PROGRAM_MAP(model1_mem) MCFG_CPU_IO_MAP(model1_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(model1_state,irq_callback) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model1_state, model1_interrupt, "screen", 0, 1) MCFG_MACHINE_START_OVERRIDE(model1_state,model1) @@ -1549,6 +1550,7 @@ static MACHINE_CONFIG_START( model1_vr, model1_state ) MCFG_CPU_ADD("maincpu", V60, 16000000) MCFG_CPU_PROGRAM_MAP(model1_vr_mem) MCFG_CPU_IO_MAP(model1_vr_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(model1_state,irq_callback) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model1_state, model1_interrupt, "screen", 0, 1) MCFG_CPU_ADD("tgp", MB86233, 16000000) diff --git a/src/mame/drivers/ms32.c b/src/mame/drivers/ms32.c index 8eed98b00f2..efac24dfb4c 100644 --- a/src/mame/drivers/ms32.c +++ b/src/mame/drivers/ms32.c @@ -1289,7 +1289,6 @@ void ms32_state::irq_init() { m_irqreq = 0; m_maincpu->set_input_line(0, CLEAR_LINE); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ms32_state::irq_callback),this)); } void ms32_state::irq_raise(int level) @@ -1389,6 +1388,8 @@ static MACHINE_CONFIG_START( ms32, ms32_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V70, 20000000) // 20MHz MCFG_CPU_PROGRAM_MAP(ms32_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(ms32_state,irq_callback) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ms32_state, ms32_interrupt, "screen", 0, 1) MCFG_CPU_ADD("audiocpu", Z80, 4000000) diff --git a/src/mame/drivers/pangofun.c b/src/mame/drivers/pangofun.c index 105119f6e0c..f7f16f6995d 100644 --- a/src/mame/drivers/pangofun.c +++ b/src/mame/drivers/pangofun.c @@ -166,7 +166,6 @@ INPUT_PORTS_END void pangofun_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pangofun_state::irq_callback),this)); } static MACHINE_CONFIG_START( pangofun, pangofun_state ) @@ -174,6 +173,7 @@ static MACHINE_CONFIG_START( pangofun, pangofun_state ) MCFG_CPU_ADD("maincpu", I486, 25000000 ) /* I486 ?? Mhz (25 according to POST) */ MCFG_CPU_PROGRAM_MAP(pcat_map) MCFG_CPU_IO_MAP(pcat_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pangofun_state,irq_callback) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_vga ) diff --git a/src/mame/drivers/pcat_dyn.c b/src/mame/drivers/pcat_dyn.c index 75db7fbbdf0..02a1c44c238 100644 --- a/src/mame/drivers/pcat_dyn.c +++ b/src/mame/drivers/pcat_dyn.c @@ -106,7 +106,6 @@ INPUT_PORTS_END void pcat_dyn_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pcat_dyn_state::irq_callback),this)); } static MACHINE_CONFIG_START( pcat_dyn, pcat_dyn_state ) @@ -114,6 +113,7 @@ static MACHINE_CONFIG_START( pcat_dyn, pcat_dyn_state ) MCFG_CPU_ADD("maincpu", I486, 40000000) /* Am486 DX-40 */ MCFG_CPU_PROGRAM_MAP(pcat_map) MCFG_CPU_IO_MAP(pcat_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pcat_dyn_state,irq_callback) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_vga ) diff --git a/src/mame/drivers/pcat_nit.c b/src/mame/drivers/pcat_nit.c index 77690e29f88..6d081250947 100644 --- a/src/mame/drivers/pcat_nit.c +++ b/src/mame/drivers/pcat_nit.c @@ -223,8 +223,6 @@ INPUT_PORTS_END void pcat_nit_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pcat_nit_state::irq_callback),this)); - membank("rombank")->configure_entries(0, 0x80, memregion("game_prg")->base(), 0x8000 ); membank("rombank")->set_entry(0); } @@ -234,6 +232,7 @@ static MACHINE_CONFIG_START( pcat_nit, pcat_nit_state ) MCFG_CPU_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */ MCFG_CPU_PROGRAM_MAP(pcat_map) MCFG_CPU_IO_MAP(pcat_nit_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pcat_nit_state,irq_callback) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_vga ) @@ -250,6 +249,7 @@ static MACHINE_CONFIG_START( bonanza, pcat_nit_state ) MCFG_CPU_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */ MCFG_CPU_PROGRAM_MAP(bonanza_map) MCFG_CPU_IO_MAP(bonanza_io_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pcat_nit_state,irq_callback) /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_cirrus_vga ) diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c index 2e7a37fcfc5..9d7e119be12 100644 --- a/src/mame/drivers/pcxt.c +++ b/src/mame/drivers/pcxt.c @@ -699,7 +699,6 @@ void pcxt_state::machine_reset() { m_bank = -1; m_lastvalue = -1; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pcxt_state::irq_callback),this)); m_pc_spkrdata = 0; m_pit_out2 = 0; @@ -717,6 +716,7 @@ static MACHINE_CONFIG_FRAGMENT(pcxt) MCFG_CPU_ADD("maincpu", I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(filetto_map) MCFG_CPU_IO_MAP(filetto_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pcxt_state,irq_callback) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_14_31818MHz/12) /* heartbeat IRQ */ diff --git a/src/mame/drivers/photon.c b/src/mame/drivers/photon.c index 30a39b4541e..e1f9446de71 100644 --- a/src/mame/drivers/photon.c +++ b/src/mame/drivers/photon.c @@ -167,7 +167,6 @@ IRQ_CALLBACK_MEMBER(photon_state::pk8000_irq_callback) void photon_state::machine_reset() { pk8000_set_bank(0); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(photon_state::pk8000_irq_callback),this)); } void photon_state::video_start() @@ -186,7 +185,7 @@ static MACHINE_CONFIG_START( photon, photon_state ) MCFG_CPU_PROGRAM_MAP(pk8000_mem) MCFG_CPU_IO_MAP(pk8000_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", photon_state, pk8000_interrupt) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(photon_state,pk8000_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/photoply.c b/src/mame/drivers/photoply.c index a0c85c741a1..934109dec9f 100644 --- a/src/mame/drivers/photoply.c +++ b/src/mame/drivers/photoply.c @@ -96,7 +96,6 @@ INPUT_PORTS_END void photoply_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(photoply_state::irq_callback),this)); } static const gfx_layout CGA_charlayout = @@ -120,6 +119,7 @@ static MACHINE_CONFIG_START( photoply, photoply_state ) MCFG_CPU_ADD("maincpu", I486, 75000000) /* I486DX4, 75 or 100 Mhz */ MCFG_CPU_PROGRAM_MAP(photoply_map) MCFG_CPU_IO_MAP(photoply_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(photoply_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/pinball2k.c b/src/mame/drivers/pinball2k.c index 1aa330cc689..6b265588400 100644 --- a/src/mame/drivers/pinball2k.c +++ b/src/mame/drivers/pinball2k.c @@ -558,8 +558,6 @@ void pinball2k_state::machine_reset() { UINT8 *rom = memregion("bios")->base(); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pinball2k_state::irq_callback),this)); - memcpy(m_bios_ram, rom, 0x40000); m_maincpu->reset(); } @@ -574,6 +572,7 @@ static MACHINE_CONFIG_START( mediagx, pinball2k_state ) MCFG_CPU_ADD("maincpu", MEDIAGX, 166000000) MCFG_CPU_PROGRAM_MAP(mediagx_map) MCFG_CPU_IO_MAP(mediagx_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pinball2k_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/quakeat.c b/src/mame/drivers/quakeat.c index 8eb4a5eebfd..8d93573961e 100644 --- a/src/mame/drivers/quakeat.c +++ b/src/mame/drivers/quakeat.c @@ -110,7 +110,6 @@ INPUT_PORTS_END void quakeat_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(quakeat_state::irq_callback),this)); } /*************************************************************/ @@ -120,6 +119,7 @@ static MACHINE_CONFIG_START( quake, quakeat_state ) MCFG_CPU_ADD("maincpu", PENTIUM2, 233000000) /* Pentium II, 233MHz */ MCFG_CPU_PROGRAM_MAP(quake_map) MCFG_CPU_IO_MAP(quake_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(quakeat_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/queen.c b/src/mame/drivers/queen.c index 7a554c37d6c..33bd4f5dc50 100644 --- a/src/mame/drivers/queen.c +++ b/src/mame/drivers/queen.c @@ -252,7 +252,6 @@ void queen_state::machine_start() m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4); m_bios_ext_ram = auto_alloc_array(machine(), UINT32, 0x10000/4); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(queen_state::irq_callback),this)); intel82439tx_init(); } @@ -268,6 +267,7 @@ static MACHINE_CONFIG_START( queen, queen_state ) MCFG_CPU_ADD("maincpu", PENTIUM3, 533000000/16) // Celeron or Pentium 3, 533 Mhz MCFG_CPU_PROGRAM_MAP(queen_map) MCFG_CPU_IO_MAP(queen_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(queen_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/rastersp.c b/src/mame/drivers/rastersp.c index a6d40a0a4ae..a1091986a3d 100644 --- a/src/mame/drivers/rastersp.c +++ b/src/mame/drivers/rastersp.c @@ -156,8 +156,6 @@ protected: void rastersp_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(rastersp_state::irq_callback),this)); - m_nvram8 = auto_alloc_array(machine(), UINT8, NVRAM_SIZE); m_nvram->set_base(m_nvram8,NVRAM_SIZE); m_paletteram = auto_alloc_array(machine(), UINT16, 0x8000); @@ -867,6 +865,7 @@ static MACHINE_CONFIG_START( rastersp, rastersp_state ) MCFG_CPU_PROGRAM_MAP(cpu_map) MCFG_CPU_IO_MAP(io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", rastersp_state, vblank_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(rastersp_state,irq_callback) MCFG_CPU_ADD("dsp", TMS32031, 33330000) MCFG_TMS3203X_CONFIG(tms_config) diff --git a/src/mame/drivers/savquest.c b/src/mame/drivers/savquest.c index 71f90b5e6ec..76f582b3a10 100644 --- a/src/mame/drivers/savquest.c +++ b/src/mame/drivers/savquest.c @@ -643,7 +643,6 @@ void savquest_state::machine_start() m_bios_e8000_ram = auto_alloc_array(machine(), UINT32, 0x4000/4); m_bios_ec000_ram = auto_alloc_array(machine(), UINT32, 0x4000/4); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(savquest_state::irq_callback),this)); intel82439tx_init(); } @@ -675,6 +674,7 @@ static MACHINE_CONFIG_START( savquest, savquest_state ) MCFG_CPU_ADD("maincpu", PENTIUM2, 450000000) // actually Pentium II 450 MCFG_CPU_PROGRAM_MAP(savquest_map) MCFG_CPU_IO_MAP(savquest_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(savquest_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c index 4a75da12f47..c93aa9b826c 100644 --- a/src/mame/drivers/seibuspi.c +++ b/src/mame/drivers/seibuspi.c @@ -1796,8 +1796,6 @@ void seibuspi_state::init_rise11() void seibuspi_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this)); - // use this to determine the region code when adding a new SPI cartridge clone set logerror("Game region code: %02X\n", memregion("maincpu")->base()[0x1ffffc]); @@ -1824,6 +1822,7 @@ static MACHINE_CONFIG_START( spi, seibuspi_state ) MCFG_CPU_ADD("maincpu", I386, XTAL_50MHz/2) // AMD or Intel 386DX, 25MHz MCFG_CPU_PROGRAM_MAP(spi_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(seibuspi_state,spi_irq_callback) MCFG_CPU_ADD("audiocpu", Z80, XTAL_28_63636MHz/4) // Z84C0008PEC, 7.159MHz MCFG_CPU_PROGRAM_MAP(spi_soundmap) @@ -1935,6 +1934,7 @@ static MACHINE_CONFIG_START( sys386i, seibuspi_state ) MCFG_CPU_ADD("maincpu", I386, XTAL_40MHz) // AMD 386DX, 40MHz MCFG_CPU_PROGRAM_MAP(sys386i_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(seibuspi_state,spi_irq_callback) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -1985,6 +1985,7 @@ static MACHINE_CONFIG_START( sys386f, seibuspi_state ) MCFG_CPU_ADD("maincpu", I386, XTAL_50MHz/2) // Intel i386DX, 25MHz MCFG_CPU_PROGRAM_MAP(sys386f_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(seibuspi_state,spi_irq_callback) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c index a7e609bf406..b13c435839c 100644 --- a/src/mame/drivers/ssv.c +++ b/src/mame/drivers/ssv.c @@ -315,7 +315,6 @@ WRITE16_MEMBER(ssv_state::ssv_lockout_inv_w) void ssv_state::machine_reset() { m_requested_int = 0; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ssv_state::ssv_irq_callback),this)); membank("bank1")->set_base(memregion("user1")->base()); } @@ -2585,6 +2584,8 @@ static MACHINE_CONFIG_START( ssv, ssv_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V60, SSV_MASTER_CLOCK) /* Based on STA-0001 & STA-0001B System boards */ + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(ssv_state,ssv_irq_callback) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ssv_state, ssv_interrupt, "screen", 0, 1) /* video hardware */ diff --git a/src/mame/drivers/su2000.c b/src/mame/drivers/su2000.c index aea762d7c9e..2bfffbb6102 100644 --- a/src/mame/drivers/su2000.c +++ b/src/mame/drivers/su2000.c @@ -159,8 +159,6 @@ void su2000_state::machine_start() space.install_read_bank(0x100000, ram_limit - 1, "hma_bank"); space.install_write_bank(0x100000, ram_limit - 1, "hma_bank"); membank("hma_bank")->set_base(m_pc_ram + 0xa0000); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(su2000_state::irq_callback),this)); } void su2000_state::machine_reset() @@ -179,6 +177,7 @@ static MACHINE_CONFIG_START( su2000, su2000_state ) MCFG_CPU_ADD("maincpu", I486, I486_CLOCK) MCFG_CPU_PROGRAM_MAP(pcat_map) MCFG_CPU_IO_MAP(pcat_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(su2000_state,irq_callback) #if 0 MCFG_CPU_ADD("tracker", TMS32031, TMS320C1_CLOCK) diff --git a/src/mame/drivers/taito_l.c b/src/mame/drivers/taito_l.c index 37c64290e08..34f226035b6 100644 --- a/src/mame/drivers/taito_l.c +++ b/src/mame/drivers/taito_l.c @@ -291,7 +291,6 @@ IRQ_CALLBACK_MEMBER(taitol_state::irq_callback) TIMER_DEVICE_CALLBACK_MEMBER(taitol_state::vbl_interrupt) { int scanline = param; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(taitol_state::irq_callback),this)); /* kludge to make plgirls boot */ if (m_maincpu->state_int(Z80_IM) != 2) @@ -1787,6 +1786,8 @@ static MACHINE_CONFIG_START( fhawk, taitol_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */ MCFG_CPU_PROGRAM_MAP(fhawk_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1) MCFG_CPU_ADD("audiocpu", Z80, XTAL_12MHz/3) /* verified on pcb */ @@ -1888,6 +1889,8 @@ static MACHINE_CONFIG_START( kurikint, taitol_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */ MCFG_CPU_PROGRAM_MAP(kurikint_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1) MCFG_CPU_ADD("audiocpu", Z80, XTAL_12MHz/3) /* verified on pcb */ @@ -1939,6 +1942,7 @@ static MACHINE_CONFIG_START( plotting, taitol_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */ MCFG_CPU_PROGRAM_MAP(plotting_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1) MCFG_MACHINE_START_OVERRIDE(taitol_state,taito_l) @@ -2024,6 +2028,7 @@ static MACHINE_CONFIG_START( evilston, taitol_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* not verified */ MCFG_CPU_PROGRAM_MAP(evilston_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1) MCFG_CPU_ADD("audiocpu", Z80, XTAL_12MHz/3) /* not verified */ diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c index 21078345c42..eedccc48a68 100644 --- a/src/mame/drivers/taitowlf.c +++ b/src/mame/drivers/taitowlf.c @@ -343,7 +343,6 @@ INPUT_PORTS_END void taitowlf_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(taitowlf_state::irq_callback),this)); } void taitowlf_state::machine_reset() @@ -370,6 +369,7 @@ static MACHINE_CONFIG_START( taitowlf, taitowlf_state ) MCFG_CPU_ADD("maincpu", PENTIUM, 200000000) MCFG_CPU_PROGRAM_MAP(taitowlf_map) MCFG_CPU_IO_MAP(taitowlf_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitowlf_state,irq_callback) MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0) diff --git a/src/mame/drivers/voyager.c b/src/mame/drivers/voyager.c index 58bbe2c263a..ba11975e271 100644 --- a/src/mame/drivers/voyager.c +++ b/src/mame/drivers/voyager.c @@ -464,7 +464,6 @@ INPUT_PORTS_END void voyager_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(voyager_state::irq_callback),this)); } void voyager_state::machine_reset() @@ -477,6 +476,7 @@ static MACHINE_CONFIG_START( voyager, voyager_state ) MCFG_CPU_ADD("maincpu", PENTIUM3, 133000000) // actually AMD Duron CPU of unknown clock MCFG_CPU_PROGRAM_MAP(voyager_map) MCFG_CPU_IO_MAP(voyager_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(voyager_state,irq_callback) MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/drivers/xtom3d.c b/src/mame/drivers/xtom3d.c index ce05a476d97..ffafe657646 100644 --- a/src/mame/drivers/xtom3d.c +++ b/src/mame/drivers/xtom3d.c @@ -378,7 +378,6 @@ void xtom3d_state::machine_start() m_isa_ram1 = auto_alloc_array(machine(), UINT32, 0x4000/4); m_isa_ram2 = auto_alloc_array(machine(), UINT32, 0x4000/4); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(xtom3d_state::irq_callback),this)); intel82439tx_init(); } @@ -397,6 +396,8 @@ static MACHINE_CONFIG_START( xtom3d, xtom3d_state ) MCFG_CPU_ADD("maincpu", PENTIUM2, 450000000/16) // actually Pentium II 450 MCFG_CPU_PROGRAM_MAP(xtom3d_map) MCFG_CPU_IO_MAP(xtom3d_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(xtom3d_state,irq_callback) + MCFG_FRAGMENT_ADD( pcat_common ) diff --git a/src/mame/machine/galaxold.c b/src/mame/machine/galaxold.c index 866419acc3e..e46bbd5d648 100644 --- a/src/mame/machine/galaxold.c +++ b/src/mame/machine/galaxold.c @@ -81,7 +81,6 @@ MACHINE_RESET_MEMBER(galaxold_state,devilfsg) MACHINE_RESET_MEMBER(galaxold_state,hunchbkg) { machine_reset_common(0); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxold_state::hunchbkg_irq_callback),this)); } WRITE8_MEMBER(galaxold_state::galaxold_coin_lockout_w) diff --git a/src/mame/machine/mie.c b/src/mame/machine/mie.c index 9f31d9b8e3f..4ff5156cb7f 100644 --- a/src/mame/machine/mie.c +++ b/src/mame/machine/mie.c @@ -47,6 +47,7 @@ static MACHINE_CONFIG_FRAGMENT( mie ) MCFG_CPU_ADD("mie", Z80, DERIVED_CLOCK(1,1)) MCFG_CPU_PROGRAM_MAP(mie_map) MCFG_CPU_IO_MAP(mie_port) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, mie_device,irq_callback) MACHINE_CONFIG_END ROM_START( mie ) @@ -95,7 +96,6 @@ void mie_device::device_start() maple_device::device_start(); cpu = subdevice("mie"); timer = timer_alloc(0); - cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mie_device::irq_callback),this)); jvs = machine().device(jvs_name); save_item(NAME(gpiodir)); diff --git a/src/mess/drivers/abc1600.c b/src/mess/drivers/abc1600.c index f1b5eb190ed..6ad72033498 100644 --- a/src/mess/drivers/abc1600.c +++ b/src/mess/drivers/abc1600.c @@ -862,9 +862,6 @@ IRQ_CALLBACK_MEMBER( abc1600_state::abc1600_int_ack ) void abc1600_state::machine_start() { - // interrupt callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(abc1600_state::abc1600_int_ack),this)); - // state saving save_item(NAME(m_dmadis)); save_item(NAME(m_sysscc)); @@ -910,6 +907,8 @@ static MACHINE_CONFIG_START( abc1600, abc1600_state ) // basic machine hardware MCFG_CPU_ADD(MC68008P8_TAG, M68008, XTAL_64MHz/8) MCFG_CPU_PROGRAM_MAP(abc1600_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(abc1600_state,abc1600_int_ack) + MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(1600)) // XTAL_64MHz/8/10/20000/8/8 // video hardware diff --git a/src/mess/drivers/amstrad.c b/src/mess/drivers/amstrad.c index 0cbab6eb7b6..135839abd0f 100644 --- a/src/mess/drivers/amstrad.c +++ b/src/mess/drivers/amstrad.c @@ -849,6 +849,7 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state ) MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(amstrad_mem) MCFG_CPU_IO_MAP(amstrad_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int) MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -934,6 +935,7 @@ static MACHINE_CONFIG_START( cpcplus, amstrad_state ) MCFG_CPU_ADD("maincpu", Z80, XTAL_40MHz / 10) MCFG_CPU_PROGRAM_MAP(amstrad_mem) MCFG_CPU_IO_MAP(amstrad_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int) MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -1003,6 +1005,7 @@ static MACHINE_CONFIG_START( gx4000, amstrad_state ) MCFG_CPU_ADD("maincpu", Z80, XTAL_40MHz / 10) MCFG_CPU_PROGRAM_MAP(amstrad_mem) MCFG_CPU_IO_MAP(amstrad_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int) MCFG_QUANTUM_TIME(attotime::from_hz(60)) diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c index 05d5438e95c..bffc119b432 100644 --- a/src/mess/drivers/apc.c +++ b/src/mess/drivers/apc.c @@ -745,8 +745,6 @@ IRQ_CALLBACK_MEMBER(apc_state::irq_callback) void apc_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(apc_state::irq_callback),this)); - m_fdc->set_rate(500000); m_rtc->cs_w(1); @@ -951,6 +949,7 @@ static MACHINE_CONFIG_START( apc, apc_state ) MCFG_CPU_ADD("maincpu",I8086,MAIN_CLOCK) MCFG_CPU_PROGRAM_MAP(apc_map) MCFG_CPU_IO_MAP(apc_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apc_state,irq_callback) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(MAIN_CLOCK) /* heartbeat IRQ */ diff --git a/src/mess/drivers/apollo.c b/src/mess/drivers/apollo.c index 9a64c415e0d..75db1652dc5 100644 --- a/src/mess/drivers/apollo.c +++ b/src/mess/drivers/apollo.c @@ -970,8 +970,6 @@ DRIVER_INIT_MEMBER(apollo_state,dn3500) { // MLOG1(("driver_init_dn3500")); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(apollo_state::apollo_irq_acknowledge),this)); - /* hook the RESET line, which resets a slew of other components */ m_maincpu->set_reset_callback(write_line_delegate(FUNC(apollo_state::apollo_reset_instr_callback),this)); @@ -1055,6 +1053,8 @@ static MACHINE_CONFIG_START( dn3500, apollo_state ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU, M68030, 25000000) /* 25 MHz 68030 */ MCFG_CPU_PROGRAM_MAP(dn3500_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) + MCFG_QUANTUM_TIME(attotime::from_hz(60)) MCFG_FRAGMENT_ADD( apollo ) @@ -1073,6 +1073,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( dsp3500, apollo_state ) MCFG_CPU_ADD(MAINCPU, M68030, 25000000) /* 25 MHz 68030 */ MCFG_CPU_PROGRAM_MAP(dsp3500_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) MCFG_QUANTUM_TIME(attotime::from_hz(60)) MCFG_FRAGMENT_ADD( apollo_terminal ) @@ -1109,6 +1110,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dn3000, dn3500 ) MCFG_CPU_REPLACE(MAINCPU, M68020PMMU, 12000000) /* 12 MHz */ + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) MCFG_CPU_PROGRAM_MAP(dn3000_map) MCFG_DEVICE_REMOVE( APOLLO_SIO2_TAG ) MCFG_RAM_MODIFY("messram") @@ -1118,6 +1120,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( dsp3000, apollo_state ) MCFG_CPU_ADD(MAINCPU, M68020PMMU, 12000000) /* 12 MHz */ + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) MCFG_CPU_PROGRAM_MAP(dsp3000_map) MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -1164,6 +1167,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( dsp5500, apollo_state ) MCFG_CPU_ADD(MAINCPU, M68040, 25000000) /* 25 MHz */ MCFG_CPU_PROGRAM_MAP(dsp5500_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) MCFG_QUANTUM_TIME(attotime::from_hz(60)) MCFG_FRAGMENT_ADD(apollo_terminal) diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c index 478317fb576..e0822db1440 100644 --- a/src/mess/drivers/apricot.c +++ b/src/mess/drivers/apricot.c @@ -315,9 +315,6 @@ void apricot_state::machine_start() m_cpu->space(AS_PROGRAM).install_ram(0x00000, m_ram->size() - 1, m_ram->pointer()); m_iop->space(AS_PROGRAM).install_ram(0x00000, m_ram->size() - 1, m_ram->pointer()); - // setup interrupt acknowledge callback for the main cpu - m_cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(apricot_state::irq_callback), this)); - // motor on is connected to gnd m_floppy0->get_device()->mon_w(0); m_floppy1->get_device()->mon_w(0); @@ -359,6 +356,7 @@ static MACHINE_CONFIG_START( apricot, apricot_state ) MCFG_CPU_ADD("ic91", I8086, XTAL_15MHz / 3) MCFG_CPU_PROGRAM_MAP(apricot_mem) MCFG_CPU_IO_MAP(apricot_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apricot_state,irq_callback) // i/o cpu MCFG_CPU_ADD("ic71", I8089, XTAL_15MHz / 3) diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c index c9c71041f51..0f957003f3f 100644 --- a/src/mess/drivers/apricotp.c +++ b/src/mess/drivers/apricotp.c @@ -519,9 +519,6 @@ WRITE_LINE_MEMBER( fp_state::write_centronics_perror ) void fp_state::machine_start() { - // register CPU IRQ callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fp_state::fp_irq_callback),this)); - // allocate memory m_work_ram.allocate(m_ram->size() / 2); } @@ -554,6 +551,7 @@ static MACHINE_CONFIG_START( fp, fp_state ) MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_15MHz/3) MCFG_CPU_PROGRAM_MAP(fp_mem) MCFG_CPU_IO_MAP(fp_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fp_state,fp_irq_callback) MCFG_CPU_ADD(HD63B01V1_TAG, HD6301, 2000000) MCFG_CPU_PROGRAM_MAP(sound_mem) diff --git a/src/mess/drivers/at.c b/src/mess/drivers/at.c index 27b0f280ea8..f65e795336a 100644 --- a/src/mess/drivers/at.c +++ b/src/mess/drivers/at.c @@ -352,6 +352,7 @@ static MACHINE_CONFIG_START( ibm5170, at_state ) MCFG_CPU_ADD("maincpu", I80286, XTAL_12MHz/2 /*6000000*/) MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(at16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -391,6 +392,7 @@ static MACHINE_CONFIG_START( ibmps1, at_state ) MCFG_CPU_ADD("maincpu", I80286, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(ps1_286_map) MCFG_CPU_IO_MAP(ps1_286_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -415,6 +417,7 @@ static MACHINE_CONFIG_START( ibm5162, at_state ) MCFG_CPU_ADD("maincpu", I80286, 6000000 /*6000000*/) MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(at16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -440,6 +443,7 @@ static MACHINE_CONFIG_START( ps2m30286, at_state ) MCFG_CPU_ADD("maincpu", I80286, 10000000) MCFG_CPU_PROGRAM_MAP(ps2m30286_map) MCFG_CPU_IO_MAP(ps1_286_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -465,6 +469,7 @@ static MACHINE_CONFIG_START( neat, at_state ) MCFG_CPU_ADD("maincpu", I80286, 12000000) MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(neat_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -489,6 +494,7 @@ static MACHINE_CONFIG_START( atvga, at_state ) MCFG_CPU_ADD("maincpu", I80286, 12000000) MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(at16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -512,6 +518,7 @@ static MACHINE_CONFIG_START( xb42639, at_state ) MCFG_CPU_ADD("maincpu", I80286, 12500000) MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(at16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -534,6 +541,7 @@ static MACHINE_CONFIG_START( at386, at_state ) MCFG_CPU_ADD("maincpu", I386, 12000000) MCFG_CPU_PROGRAM_MAP(at386_map) MCFG_CPU_IO_MAP(at386_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_FRAGMENT_ADD( at_motherboard ) MCFG_NVRAM_ADD_0FILL("nvram") @@ -568,6 +576,7 @@ static MACHINE_CONFIG_DERIVED( at486, at386 ) MCFG_CPU_REPLACE("maincpu", I486, 25000000) MCFG_CPU_PROGRAM_MAP(at386_map) MCFG_CPU_IO_MAP(at386_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MACHINE_CONFIG_END @@ -576,6 +585,7 @@ static MACHINE_CONFIG_START( k286i, at_state ) MCFG_CPU_ADD("maincpu", I80286, XTAL_12MHz/2 /*6000000*/) MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(at16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MCFG_80286_A20(at_state, at_286_a20) MCFG_80286_SHUTDOWN(WRITELINE(at_state, at_shutdown)) @@ -638,7 +648,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( at586x3, at586_state ) MCFG_CPU_ADD("maincpu", PENTIUM, 60000000) MCFG_CPU_PROGRAM_MAP(at586_map) - MCFG_CPU_IO_MAP(at586_io) + MCFG_CPU_IO_MAP(at586_io) MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("4M") @@ -662,18 +672,21 @@ static MACHINE_CONFIG_DERIVED( at386sx, atvga ) MCFG_CPU_REPLACE("maincpu", I386SX, 16000000) /* 386SX */ MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(at16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ct386sx, neat ) MCFG_CPU_REPLACE("maincpu", I386SX, 16000000) MCFG_CPU_PROGRAM_MAP(at16_map) MCFG_CPU_IO_MAP(neat_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( megapc, at386 ) MCFG_CPU_REPLACE("maincpu", I386, XTAL_50MHz / 2) MCFG_CPU_PROGRAM_MAP(at386_map) MCFG_CPU_IO_MAP(megapc_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) /* software lists */ MCFG_SOFTWARE_LIST_ADD("disk_list","megapc") @@ -683,6 +696,7 @@ static MACHINE_CONFIG_DERIVED( megapcpl, megapc ) MCFG_CPU_REPLACE("maincpu", I486, 66000000 / 2) MCFG_CPU_PROGRAM_MAP(at386_map) MCFG_CPU_IO_MAP(megapc_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(at_state,at_irq_callback) MACHINE_CONFIG_END diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c index 8cf6985e2c0..698e6aaf156 100644 --- a/src/mess/drivers/atarist.c +++ b/src/mess/drivers/atarist.c @@ -1961,9 +1961,6 @@ void st_state::machine_start() // configure RAM banking configure_memory(); - // set CPU interrupt callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(st_state::atarist_int_ack),this)); - // allocate timers if(m_mousex) { m_mouse_timer = timer_alloc(TIMER_MOUSE_TICK); @@ -2022,9 +2019,6 @@ void ste_state::machine_start() /* configure RAM banking */ configure_memory(); - /* set CPU interrupt callback */ - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(st_state::atarist_int_ack),this)); - /* allocate timers */ m_dmasound_timer = timer_alloc(TIMER_DMASOUND_TICK); m_microwire_timer = timer_alloc(TIMER_MICROWIRE_TICK); @@ -2067,9 +2061,6 @@ void stbook_state::machine_start() break; } - /* set CPU interrupt callback */ - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(st_state::atarist_int_ack),this)); - /* register for state saving */ ste_state::state_save(); @@ -2100,6 +2091,7 @@ static MACHINE_CONFIG_START( st, st_state ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4) MCFG_CPU_PROGRAM_MAP(st_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) MCFG_CPU_ADD(HD6301V1_TAG, HD6301, Y2/8) MCFG_CPU_PROGRAM_MAP(ikbd_map) @@ -2186,6 +2178,7 @@ static MACHINE_CONFIG_START( megast, megast_state ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4) MCFG_CPU_PROGRAM_MAP(megast_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) MCFG_CPU_ADD(HD6301V1_TAG, HD6301, Y2/8) MCFG_CPU_PROGRAM_MAP(ikbd_map) @@ -2273,6 +2266,7 @@ static MACHINE_CONFIG_START( ste, ste_state ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4) MCFG_CPU_PROGRAM_MAP(ste_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) MCFG_CPU_ADD(HD6301V1_TAG, HD6301, Y2/8) MCFG_CPU_PROGRAM_MAP(ikbd_map) @@ -2384,6 +2378,7 @@ static MACHINE_CONFIG_START( stbook, stbook_state ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, U517/2) MCFG_CPU_PROGRAM_MAP(stbook_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(st_state,atarist_int_ack) //MCFG_CPU_ADD(COP888_TAG, COP888, Y700) diff --git a/src/mess/drivers/b2m.c b/src/mess/drivers/b2m.c index 93b6fbdcc72..7a0f24a5132 100644 --- a/src/mess/drivers/b2m.c +++ b/src/mess/drivers/b2m.c @@ -186,7 +186,7 @@ static MACHINE_CONFIG_START( b2m, b2m_state ) MCFG_CPU_PROGRAM_MAP(b2m_mem) MCFG_CPU_IO_MAP(b2m_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", b2m_state, b2m_vblank_interrupt) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(b2m_state,b2m_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/bk.c b/src/mess/drivers/bk.c index 8e07c185091..d6e4b225ab7 100644 --- a/src/mess/drivers/bk.c +++ b/src/mess/drivers/bk.c @@ -171,7 +171,7 @@ static MACHINE_CONFIG_START( bk0010, bk_state ) MCFG_CPU_ADD("maincpu", T11, 3000000) MCFG_T11_INITIAL_MODE(0x36ff) /* initial mode word has DAL15,14,11,8 pulled low */ MCFG_CPU_PROGRAM_MAP(bk0010_mem) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(bk_state,bk0010_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/cat.c b/src/mess/drivers/cat.c index 4b64d263996..ab5989c7484 100644 --- a/src/mess/drivers/cat.c +++ b/src/mess/drivers/cat.c @@ -1106,7 +1106,6 @@ MACHINE_START_MEMBER(cat_state,cat) MACHINE_RESET_MEMBER(cat_state,cat) { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(cat_state::cat_int_ack),this)); m_6ms_counter = 0; m_wdt_counter = 0; m_floppy_control = 0; @@ -1221,6 +1220,7 @@ static MACHINE_CONFIG_START( cat, cat_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_19_968MHz/4) MCFG_CPU_PROGRAM_MAP(cat_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cat_state,cat_int_ack) MCFG_MACHINE_START_OVERRIDE(cat_state,cat) MCFG_MACHINE_RESET_OVERRIDE(cat_state,cat) diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c index 574d5b97b92..a489bc5f851 100644 --- a/src/mess/drivers/cbm2.c +++ b/src/mess/drivers/cbm2.c @@ -1884,9 +1884,6 @@ MACHINE_START_MEMBER( cbm2_state, cbm2_pal ) MACHINE_START_MEMBER( cbm2_state, cbm2x_ntsc ) { - // register CPU IRQ callback - m_ext_cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(cbm2_state::pic_irq_callback),this)); - // allocate memory m_extbuf_ram.allocate(0x800); @@ -1900,9 +1897,6 @@ MACHINE_START_MEMBER( cbm2_state, cbm2x_ntsc ) MACHINE_START_MEMBER( cbm2_state, cbm2x_pal ) { - // register CPU IRQ callback - m_ext_cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(cbm2_state::pic_irq_callback),this)); - // allocate memory m_extbuf_ram.allocate(0x800); @@ -2437,6 +2431,7 @@ static MACHINE_CONFIG_DERIVED( bx256hp, b256hp ) MCFG_CPU_ADD(EXT_I8088_TAG, I8088, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(ext_mem) MCFG_CPU_IO_MAP(ext_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cbm2_state,pic_irq_callback) MCFG_PIC8259_ADD(EXT_I8259A_TAG, INPUTLINE(EXT_I8088_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_DEVICE_ADD(EXT_MOS6525_TAG, TPI6525, 0) @@ -2499,6 +2494,7 @@ static MACHINE_CONFIG_DERIVED( cbm730, cbm720 ) MCFG_CPU_ADD(EXT_I8088_TAG, I8088, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(ext_mem) MCFG_CPU_IO_MAP(ext_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cbm2_state,pic_irq_callback) MCFG_PIC8259_ADD(EXT_I8259A_TAG, INPUTLINE(EXT_I8088_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_DEVICE_ADD(EXT_MOS6525_TAG, TPI6525, 0) diff --git a/src/mess/drivers/compucolor.c b/src/mess/drivers/compucolor.c index c506caec38d..1d81daf757e 100644 --- a/src/mess/drivers/compucolor.c +++ b/src/mess/drivers/compucolor.c @@ -430,8 +430,6 @@ IRQ_CALLBACK_MEMBER( compucolor2_state::int_ack ) void compucolor2_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(compucolor2_state::int_ack), this)); - // state saving save_item(NAME(m_xo)); } @@ -455,6 +453,7 @@ static MACHINE_CONFIG_START( compucolor2, compucolor2_state ) MCFG_CPU_ADD(I8080_TAG, I8080, XTAL_17_9712MHz/9) MCFG_CPU_PROGRAM_MAP(compucolor2_mem) MCFG_CPU_IO_MAP(compucolor2_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(compucolor2_state,int_ack) MCFG_PALETTE_ADD("palette", 8) MCFG_PALETTE_INIT_OWNER(compucolor2_state, compucolor2) diff --git a/src/mess/drivers/ct486.c b/src/mess/drivers/ct486.c index 6502b5e7c48..78aab481835 100644 --- a/src/mess/drivers/ct486.c +++ b/src/mess/drivers/ct486.c @@ -57,7 +57,6 @@ public: void ct486_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ct486_state::irq_callback), this)); } READ16_MEMBER( ct486_state::cs4031_ior ) @@ -106,6 +105,7 @@ static MACHINE_CONFIG_START( ct486, ct486_state ) MCFG_CPU_ADD("maincpu", I486, XTAL_25MHz) MCFG_CPU_PROGRAM_MAP(ct486_map) MCFG_CPU_IO_MAP(ct486_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(ct486_state,irq_callback) MCFG_CS4031_ADD("cs4031", XTAL_25MHz, "maincpu", "isa", "bios", "keybc") // cpu connections diff --git a/src/mess/drivers/dai.c b/src/mess/drivers/dai.c index 14376c9aa63..e2cfb9352ab 100644 --- a/src/mess/drivers/dai.c +++ b/src/mess/drivers/dai.c @@ -200,6 +200,7 @@ static MACHINE_CONFIG_START( dai, dai_state ) MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(dai_mem) MCFG_CPU_IO_MAP(dai_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(dai_state,int_ack) MCFG_QUANTUM_TIME(attotime::from_hz(60)) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) diff --git a/src/mess/drivers/esq5505.c b/src/mess/drivers/esq5505.c index e299679f918..90ab0990d86 100644 --- a/src/mess/drivers/esq5505.c +++ b/src/mess/drivers/esq5505.c @@ -279,7 +279,6 @@ void esq5505_state::machine_reset() m_rom = (UINT16 *)(void *)memregion("osrom")->base(); m_ram = (UINT16 *)(void *)memshare("osram")->ptr(); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(esq5505_state::maincpu_irq_acknowledge_callback),this)); // Default analog values: m_analog_values[0] = 0x7fff; // pitch mod: start in the center @@ -620,6 +619,7 @@ static const es5505_interface es5505_config = static MACHINE_CONFIG_START( vfx, esq5505_state ) MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(vfx_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(esq5505_state,maincpu_irq_acknowledge_callback) MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) MCFG_DEVICE_DISABLE() @@ -690,6 +690,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START(vfx32, esq5505_state) MCFG_CPU_ADD("maincpu", M68000, XTAL_30_4761MHz / 2) MCFG_CPU_PROGRAM_MAP(vfxsd_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(esq5505_state,maincpu_irq_acknowledge_callback) MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) MCFG_DEVICE_DISABLE() diff --git a/src/mess/drivers/fk1.c b/src/mess/drivers/fk1.c index 83cad2cf731..e35a2b174b4 100644 --- a/src/mess/drivers/fk1.c +++ b/src/mess/drivers/fk1.c @@ -379,8 +379,6 @@ void fk1_state::machine_reset() membank("bank2")->set_base(ram + 0x10000); // VRAM membank("bank3")->set_base(ram + 0x8000); membank("bank4")->set_base(ram + 0xc000); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fk1_state::fk1_irq_callback),this)); } UINT32 fk1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -408,6 +406,7 @@ static MACHINE_CONFIG_START( fk1, fk1_state ) MCFG_CPU_ADD("maincpu",Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(fk1_mem) MCFG_CPU_IO_MAP(fk1_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fk1_state,fk1_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/fm7.c b/src/mess/drivers/fm7.c index 5dc31695774..53277cf9ddf 100644 --- a/src/mess/drivers/fm7.c +++ b/src/mess/drivers/fm7.c @@ -1822,8 +1822,6 @@ DRIVER_INIT_MEMBER(fm7_state,fm7) m_subtimer = timer_alloc(TIMER_FM7_SUBTIMER_IRQ); m_keyboard_timer = timer_alloc(TIMER_FM7_KEYBOARD_POLL); m_fm77av_vsync_timer = timer_alloc(TIMER_FM77AV_VSYNC); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fm7_state::fm7_irq_ack),this)); - m_sub->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fm7_state::fm7_sub_irq_ack),this)); } MACHINE_START_MEMBER(fm7_state,fm7) @@ -2019,10 +2017,12 @@ static MACHINE_CONFIG_START( fm7, fm7_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(fm7_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack) MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_CPU_ADD("sub", M6809, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(fm7_sub_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack) MCFG_QUANTUM_PERFECT_CPU("sub") MCFG_SPEAKER_STANDARD_MONO("mono") @@ -2071,10 +2071,12 @@ static MACHINE_CONFIG_START( fm8, fm7_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1200000) // 1.2MHz 68A09 MCFG_CPU_PROGRAM_MAP(fm8_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack) MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_CPU_ADD("sub", M6809, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(fm7_sub_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack) MCFG_QUANTUM_PERFECT_CPU("sub") MCFG_SPEAKER_STANDARD_MONO("mono") @@ -2117,10 +2119,12 @@ static MACHINE_CONFIG_START( fm77av, fm7_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_2MHz) // actually MB68B09E, but the 6809E core runs too slowly MCFG_CPU_PROGRAM_MAP(fm77av_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack) MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_CPU_ADD("sub", M6809, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(fm77av_sub_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack) MCFG_QUANTUM_PERFECT_CPU("sub") MCFG_SPEAKER_STANDARD_MONO("mono") @@ -2170,10 +2174,12 @@ static MACHINE_CONFIG_START( fm11, fm7_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_2MHz) // 2MHz 68B09E MCFG_CPU_PROGRAM_MAP(fm11_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack) MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_CPU_ADD("sub", M6809, XTAL_2MHz) // 2MHz 68B09 MCFG_CPU_PROGRAM_MAP(fm11_sub_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack) MCFG_QUANTUM_PERFECT_CPU("sub") MCFG_CPU_ADD("x86", I8088, XTAL_8MHz) // 8MHz i8088 @@ -2224,6 +2230,7 @@ static MACHINE_CONFIG_START( fm16beta, fm7_state ) MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_CPU_ADD("sub", M6809, XTAL_2MHz) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack) MCFG_CPU_PROGRAM_MAP(fm16_sub_mem) MCFG_QUANTUM_PERFECT_CPU("sub") diff --git a/src/mess/drivers/fmtowns.c b/src/mess/drivers/fmtowns.c index 620863c0445..49aae34c542 100644 --- a/src/mess/drivers/fmtowns.c +++ b/src/mess/drivers/fmtowns.c @@ -2591,7 +2591,6 @@ void towns_state::driver_start() // CD-ROM init m_towns_cd.read_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(towns_state::towns_cdrom_read_byte),this), (void*)machine().device("dma_1")); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(towns_state::towns_irq_callback),this)); m_maincpu->space(AS_PROGRAM).install_ram(0x100000,m_ram->size()-1,0xffffffff,0,NULL); } @@ -2706,7 +2705,7 @@ static MACHINE_CONFIG_FRAGMENT( towns_base ) MCFG_CPU_PROGRAM_MAP(towns_mem) MCFG_CPU_IO_MAP(towns_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", towns_state, towns_vsync_irq) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(towns_state,towns_irq_callback) //MCFG_MACHINE_RESET_OVERRIDE(towns_state,towns) /* video hardware */ @@ -2794,6 +2793,7 @@ static MACHINE_CONFIG_START( townsux, towns16_state ) MCFG_CPU_PROGRAM_MAP(ux_mem) MCFG_CPU_IO_MAP(towns16_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", towns_state, towns_vsync_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(towns_state,towns_irq_callback) MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("2M") @@ -2808,6 +2808,7 @@ static MACHINE_CONFIG_DERIVED( townssj, towns ) MCFG_CPU_PROGRAM_MAP(towns_mem) MCFG_CPU_IO_MAP(towns_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", towns_state, towns_vsync_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(towns_state,towns_irq_callback) MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("8M") @@ -2819,6 +2820,7 @@ static MACHINE_CONFIG_DERIVED( townshr, towns ) MCFG_CPU_PROGRAM_MAP(towns_mem) MCFG_CPU_IO_MAP(towns_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", towns_state, towns_vsync_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(towns_state,towns_irq_callback) MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("4M") @@ -2832,6 +2834,7 @@ static MACHINE_CONFIG_START( marty, marty_state ) MCFG_CPU_PROGRAM_MAP(marty_mem) MCFG_CPU_IO_MAP(towns16_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", towns_state, towns_vsync_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(towns_state,towns_irq_callback) MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("6M") diff --git a/src/mess/drivers/galaxy.c b/src/mess/drivers/galaxy.c index 0aac5fcddb6..65de85a2bc4 100644 --- a/src/mess/drivers/galaxy.c +++ b/src/mess/drivers/galaxy.c @@ -188,6 +188,8 @@ static MACHINE_CONFIG_START( galaxy, galaxy_state ) MCFG_CPU_ADD("maincpu", Z80, XTAL / 2) MCFG_CPU_PROGRAM_MAP(galaxy_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", galaxy_state, galaxy_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(galaxy_state,galaxy_irq_callback) + MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_PALETTE("palette") @@ -225,6 +227,8 @@ static MACHINE_CONFIG_START( galaxyp, galaxy_state ) MCFG_CPU_PROGRAM_MAP(galaxyp_mem) MCFG_CPU_IO_MAP(galaxyp_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", galaxy_state, galaxy_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(galaxy_state,galaxy_irq_callback) + MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_PALETTE("palette") diff --git a/src/mess/drivers/genpc.c b/src/mess/drivers/genpc.c index f19116e61b1..dc6c0a29cd0 100644 --- a/src/mess/drivers/genpc.c +++ b/src/mess/drivers/genpc.c @@ -73,6 +73,7 @@ static MACHINE_CONFIG_START( pcmda, genpc_state ) MCFG_CPU_ADD("maincpu", V20, 4772720) MCFG_CPU_PROGRAM_MAP(pc8_map) MCFG_CPU_IO_MAP(pc8_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb",ibm5160_mb_device,pc_irq_callback) MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu") @@ -97,6 +98,7 @@ static MACHINE_CONFIG_START( pcherc, genpc_state ) MCFG_CPU_ADD("maincpu", V20, 4772720) MCFG_CPU_PROGRAM_MAP(pc8_map) MCFG_CPU_IO_MAP(pc8_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb",ibm5160_mb_device,pc_irq_callback) MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu") @@ -121,6 +123,7 @@ static MACHINE_CONFIG_START( pccga, genpc_state ) MCFG_CPU_ADD("maincpu", I8086, 4772720) MCFG_CPU_PROGRAM_MAP(pc16_map) MCFG_CPU_IO_MAP(pc16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb",ibm5160_mb_device,pc_irq_callback) MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu") MCFG_DEVICE_INPUT_DEFAULTS(cga) @@ -146,6 +149,7 @@ static MACHINE_CONFIG_START( pcega, genpc_state ) MCFG_CPU_ADD("maincpu", I8086, 4772720) MCFG_CPU_PROGRAM_MAP(pc16_map) MCFG_CPU_IO_MAP(pc16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb",ibm5160_mb_device,pc_irq_callback) MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu") MCFG_DEVICE_INPUT_DEFAULTS(vga) @@ -171,6 +175,7 @@ static MACHINE_CONFIG_START( xtvga, genpc_state ) MCFG_CPU_ADD("maincpu", I8086, 4772720) MCFG_CPU_PROGRAM_MAP(pc16_map) MCFG_CPU_IO_MAP(pc16_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb",ibm5160_mb_device,pc_irq_callback) MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu") MCFG_DEVICE_INPUT_DEFAULTS(vga) diff --git a/src/mess/drivers/ibmpcjr.c b/src/mess/drivers/ibmpcjr.c index 0a2d143562c..e804a143039 100644 --- a/src/mess/drivers/ibmpcjr.c +++ b/src/mess/drivers/ibmpcjr.c @@ -109,7 +109,6 @@ DRIVER_INIT_MEMBER(pcjr_state, pcjr) m_pc_int_delay_timer = timer_alloc(TIMER_IRQ_DELAY); m_pcjr_watchdog = timer_alloc(TIMER_WATCHDOG); m_keyb_signal_timer = timer_alloc(TIMER_KB_SIGNAL); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pcjr_state::pc_irq_callback),this)); } void pcjr_state::machine_reset() @@ -612,6 +611,7 @@ static MACHINE_CONFIG_START( ibmpcjr, pcjr_state) MCFG_CPU_ADD("maincpu", I8088, 4900000) MCFG_CPU_PROGRAM_MAP(ibmpcjr_map) MCFG_CPU_IO_MAP(ibmpcjr_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pcjr_state,pc_irq_callback) /* On the PC Jr the input for clock 1 seems to be selectable @@ -699,6 +699,7 @@ static MACHINE_CONFIG_DERIVED( ibmpcjx, ibmpcjr ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(ibmpcjx_map) MCFG_CPU_IO_MAP(ibmpcjx_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pcjr_state,pc_irq_callback) MCFG_DEVICE_REMOVE("fdc:0"); MCFG_FLOPPY_DRIVE_ADD("fdc:0", pcjr_floppies, "35dd", isa8_fdc_device::floppy_formats) diff --git a/src/mess/drivers/iq151.c b/src/mess/drivers/iq151.c index 6cde446a209..43a35b7eb0b 100644 --- a/src/mess/drivers/iq151.c +++ b/src/mess/drivers/iq151.c @@ -347,8 +347,6 @@ DRIVER_INIT_MEMBER(iq151_state,iq151) membank("boot")->configure_entry(0, RAM + 0xf800); membank("boot")->configure_entry(1, RAM + 0x0000); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(iq151_state::iq151_irq_callback),this)); - // keep machine pointers to slots m_carts[0] = machine().device("slot1"); m_carts[1] = machine().device("slot2"); @@ -405,6 +403,7 @@ static MACHINE_CONFIG_START( iq151, iq151_state ) MCFG_CPU_PROGRAM_MAP(iq151_mem) MCFG_CPU_IO_MAP(iq151_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", iq151_state, iq151_vblank_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(iq151_state,iq151_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/isbc.c b/src/mess/drivers/isbc.c index 85abbc9809f..f23faec7cd1 100644 --- a/src/mess/drivers/isbc.c +++ b/src/mess/drivers/isbc.c @@ -56,7 +56,6 @@ public: DECLARE_READ8_MEMBER(get_slave_ack); DECLARE_WRITE8_MEMBER(ppi_c_w); IRQ_CALLBACK_MEMBER( irq_callback ) { return m_pic_0->inta_r(); } - void driver_start() { m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(isbc_state::irq_callback),this)); } }; static ADDRESS_MAP_START(rpc86_mem, AS_PROGRAM, 16, isbc_state) @@ -223,6 +222,8 @@ static MACHINE_CONFIG_START( isbc86, isbc_state ) MCFG_CPU_ADD("maincpu", I8086, XTAL_5MHz) MCFG_CPU_PROGRAM_MAP(isbc86_mem) MCFG_CPU_IO_MAP(isbc_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(isbc_state,irq_callback) + MCFG_PIC8259_ADD("pic_0", INPUTLINE(":maincpu", 0), VCC, NULL) MCFG_DEVICE_ADD("pit", PIT8253, 0) @@ -253,6 +254,8 @@ static MACHINE_CONFIG_START( rpc86, isbc_state ) MCFG_CPU_ADD("maincpu", I8086, XTAL_5MHz) MCFG_CPU_PROGRAM_MAP(rpc86_mem) MCFG_CPU_IO_MAP(rpc86_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(isbc_state,irq_callback) + MCFG_PIC8259_ADD("pic_0", INPUTLINE(":maincpu", 0), VCC, NULL) MCFG_DEVICE_ADD("pit", PIT8253, 0) @@ -286,6 +289,8 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_CPU_ADD("maincpu", I80286, XTAL_16MHz/2) MCFG_CPU_PROGRAM_MAP(isbc286_mem) MCFG_CPU_IO_MAP(isbc286_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(isbc_state,irq_callback) + MCFG_PIC8259_ADD("pic_0", INPUTLINE(":maincpu", 0), VCC, READ8(isbc_state, get_slave_ack)) MCFG_PIC8259_ADD("pic_1", DEVWRITELINE("pic_0", pic8259_device, ir7_w), GND, NULL) diff --git a/src/mess/drivers/m20.c b/src/mess/drivers/m20.c index 7f675e38a90..483651821cf 100644 --- a/src/mess/drivers/m20.c +++ b/src/mess/drivers/m20.c @@ -823,8 +823,6 @@ void m20_state::machine_reset() else m_port21 = 0xff; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(m20_state::m20_irq_callback),this)); - m_fd1797->reset(); memcpy(RAM, ROM, 8); // we need only the reset vector @@ -896,6 +894,7 @@ static MACHINE_CONFIG_START( m20, m20_state ) MCFG_CPU_PROGRAM_MAP(m20_program_mem) MCFG_CPU_DATA_MAP(m20_data_mem) MCFG_CPU_IO_MAP(m20_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(m20_state,m20_irq_callback) MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("160K") diff --git a/src/mess/drivers/mbc55x.c b/src/mess/drivers/mbc55x.c index 61c1574eeca..2d96c47acaf 100644 --- a/src/mess/drivers/mbc55x.c +++ b/src/mess/drivers/mbc55x.c @@ -233,7 +233,7 @@ static MACHINE_CONFIG_START( mbc55x, mbc55x_state ) MCFG_CPU_ADD(MAINCPU_TAG, I8088, 3600000) MCFG_CPU_PROGRAM_MAP(mbc55x_mem) MCFG_CPU_IO_MAP(mbc55x_io) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mbc55x_state,mbc55x_irq_callback) /* video hardware */ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) diff --git a/src/mess/drivers/mc1502.c b/src/mess/drivers/mc1502.c index 85287eb9d0c..7d98ddd502a 100644 --- a/src/mess/drivers/mc1502.c +++ b/src/mess/drivers/mc1502.c @@ -196,7 +196,6 @@ MACHINE_START_MEMBER( mc1502_state, mc1502 ) { DBG_LOG(0,"init",("machine_start()\n")); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mc1502_state::mc1502_irq_callback),this)); /* Keyboard polling circuit holds IRQ1 high until a key is pressed, then it starts a timer that pulses IRQ1 low each @@ -251,6 +250,7 @@ static MACHINE_CONFIG_START( mc1502, mc1502_state ) MCFG_CPU_ADD("maincpu", I8088, XTAL_16MHz/3) MCFG_CPU_PROGRAM_MAP(mc1502_map) MCFG_CPU_IO_MAP(mc1502_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mc1502_state,mc1502_irq_callback) MCFG_MACHINE_START_OVERRIDE( mc1502_state, mc1502 ) MCFG_MACHINE_RESET_OVERRIDE( mc1502_state, mc1502 ) diff --git a/src/mess/drivers/mc80.c b/src/mess/drivers/mc80.c index 62aaa582ccd..16f8663c793 100644 --- a/src/mess/drivers/mc80.c +++ b/src/mess/drivers/mc80.c @@ -162,6 +162,7 @@ static MACHINE_CONFIG_START( mc8020, mc80_state ) MCFG_CPU_ADD("maincpu",Z80, XTAL_2_4576MHz) MCFG_CPU_PROGRAM_MAP(mc8020_mem) MCFG_CPU_IO_MAP(mc8020_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mc80_state,mc8020_irq_callback) MCFG_MACHINE_RESET_OVERRIDE(mc80_state,mc8020) @@ -189,6 +190,7 @@ static MACHINE_CONFIG_START( mc8030, mc80_state ) MCFG_CPU_PROGRAM_MAP(mc8030_mem) MCFG_CPU_IO_MAP(mc8030_io) MCFG_CPU_CONFIG(mc8030_daisy_chain) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mc80_state,mc8030_irq_callback) MCFG_MACHINE_RESET_OVERRIDE(mc80_state,mc8030) diff --git a/src/mess/drivers/mod8.c b/src/mess/drivers/mod8.c index 79fcdcd3992..4a4c47d7afe 100644 --- a/src/mess/drivers/mod8.c +++ b/src/mess/drivers/mod8.c @@ -130,7 +130,6 @@ IRQ_CALLBACK_MEMBER(mod8_state::mod8_irq_callback) void mod8_state::machine_reset() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mod8_state::mod8_irq_callback),this)); } WRITE8_MEMBER( mod8_state::kbd_put ) @@ -144,6 +143,7 @@ static MACHINE_CONFIG_START( mod8, mod8_state ) MCFG_CPU_ADD("maincpu",I8008, 800000) MCFG_CPU_PROGRAM_MAP(mod8_mem) MCFG_CPU_IO_MAP(mod8_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(mod8_state,mod8_irq_callback) /* video hardware */ MCFG_DEVICE_ADD(TELEPRINTER_TAG, TELEPRINTER, 0) diff --git a/src/mess/drivers/multi16.c b/src/mess/drivers/multi16.c index 2887d6972d0..695b7078be1 100644 --- a/src/mess/drivers/multi16.c +++ b/src/mess/drivers/multi16.c @@ -132,7 +132,6 @@ WRITE_LINE_MEMBER( multi16_state::multi16_set_int_line ) void multi16_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(multi16_state::multi16_irq_callback),this)); } @@ -161,7 +160,7 @@ static MACHINE_CONFIG_START( multi16, multi16_state ) MCFG_CPU_ADD("maincpu", I8086, 8000000) MCFG_CPU_PROGRAM_MAP(multi16_map) MCFG_CPU_IO_MAP(multi16_io) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(multi16_state,multi16_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/ng_aes.c b/src/mess/drivers/ng_aes.c index e67896a4162..826af07ea08 100644 --- a/src/mess/drivers/ng_aes.c +++ b/src/mess/drivers/ng_aes.c @@ -1038,9 +1038,6 @@ MACHINE_START_MEMBER(ng_aes_state,neocd) machine().device("saveram")->set_base(m_meminternal_data, 0x2000); save_pointer(NAME(m_meminternal_data), 0x2000); - // for custom vectors - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ng_aes_state::neocd_int_callback),this)); - m_bank_vectors->set_entry(0); // default to the BIOS vectors m_tempcdc->reset_cd(); @@ -1475,6 +1472,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( neocd, neogeo_base, ng_aes_state ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(neocd_main_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(ng_aes_state,neocd_int_callback) MCFG_CPU_MODIFY("audiocpu") MCFG_CPU_PROGRAM_MAP(neocd_audio_map) diff --git a/src/mess/drivers/paso1600.c b/src/mess/drivers/paso1600.c index 0614d48370a..823e9b534f2 100644 --- a/src/mess/drivers/paso1600.c +++ b/src/mess/drivers/paso1600.c @@ -300,7 +300,6 @@ WRITE_LINE_MEMBER( paso1600_state::paso1600_set_int_line ) void paso1600_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(paso1600_state::paso1600_irq_callback),this)); } @@ -342,7 +341,7 @@ static MACHINE_CONFIG_START( paso1600, paso1600_state ) MCFG_CPU_ADD("maincpu", I8086, 16000000/2) MCFG_CPU_PROGRAM_MAP(paso1600_map) MCFG_CPU_IO_MAP(paso1600_io) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(paso1600_state,paso1600_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index 627df08d59a..d26e00da795 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -679,7 +679,6 @@ IRQ_CALLBACK_MEMBER(pasogo_state::pasogo_irq_callback) void pasogo_state::machine_reset() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pasogo_state::pasogo_irq_callback),this)); m_u73_q2 = 0; m_out1 = 2; // initial state of pit output is undefined m_pc_spkrdata = 0; @@ -947,6 +946,7 @@ static MACHINE_CONFIG_START( pasogo, pasogo_state ) MCFG_CPU_PROGRAM_MAP(pasogo_mem) MCFG_CPU_IO_MAP( pasogo_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pasogo_state, pasogo_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pasogo_state,pasogo_irq_callback) MCFG_DEVICE_ADD("pit8254", PIT8254, 0) MCFG_PIT8253_CLK0(4772720/4) /* heartbeat IRQ */ diff --git a/src/mess/drivers/pc100.c b/src/mess/drivers/pc100.c index 5227d99152d..9130c00f17c 100644 --- a/src/mess/drivers/pc100.c +++ b/src/mess/drivers/pc100.c @@ -423,7 +423,6 @@ WRITE_LINE_MEMBER( pc100_state::pc100_set_int_line ) void pc100_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc100_state::pc100_irq_callback),this)); m_kanji_rom = (UINT16 *)(*memregion("kanji")); m_vram = (UINT16 *)(*memregion("vram")); } @@ -488,6 +487,7 @@ static MACHINE_CONFIG_START( pc100, pc100_state ) MCFG_CPU_PROGRAM_MAP(pc100_map) MCFG_CPU_IO_MAP(pc100_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc100_state, pc100_vblank_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc100_state,pc100_irq_callback) MCFG_TIMER_DRIVER_ADD_PERIODIC("600hz", pc100_state, pc100_600hz_irq, attotime::from_hz(MASTER_CLOCK/600)) MCFG_TIMER_DRIVER_ADD_PERIODIC("100hz", pc100_state, pc100_100hz_irq, attotime::from_hz(MASTER_CLOCK/100)) diff --git a/src/mess/drivers/pc1512.c b/src/mess/drivers/pc1512.c index 24456da71e9..a93cf1f1e7e 100644 --- a/src/mess/drivers/pc1512.c +++ b/src/mess/drivers/pc1512.c @@ -1122,9 +1122,6 @@ SLOT_INTERFACE_END void pc1512_state::machine_start() { - // register CPU IRQ callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc1512_state::pc1512_irq_callback),this)); - // set RAM size size_t ram_size = m_ram->size(); @@ -1202,9 +1199,6 @@ void pc1512_state::machine_reset() void pc1640_state::machine_start() { - // register CPU IRQ callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc1512_state::pc1512_irq_callback),this)); - // state saving save_item(NAME(m_pit1)); save_item(NAME(m_pit2)); @@ -1258,6 +1252,7 @@ static MACHINE_CONFIG_START( pc1512, pc1512_state ) MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_24MHz/3) MCFG_CPU_PROGRAM_MAP(pc1512_mem) MCFG_CPU_IO_MAP(pc1512_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc1512_state,pc1512_irq_callback) // video MCFG_FRAGMENT_ADD(pc1512_video) @@ -1361,6 +1356,7 @@ static MACHINE_CONFIG_START( pc1640, pc1640_state ) MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_24MHz/3) MCFG_CPU_PROGRAM_MAP(pc1640_mem) MCFG_CPU_IO_MAP(pc1640_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc1512_state,pc1512_irq_callback) // sound MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/pc6001.c b/src/mess/drivers/pc6001.c index 21549a89541..d946828de2b 100644 --- a/src/mess/drivers/pc6001.c +++ b/src/mess/drivers/pc6001.c @@ -2096,7 +2096,6 @@ void pc6001_state::machine_reset() m_port_c_8255=0; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc6001_state::pc6001_irq_callback),this)); m_cas_switch = 0; m_cas_offset = 0; m_timer_irq_mask = 1; @@ -2113,7 +2112,6 @@ MACHINE_RESET_MEMBER(pc6001_state,pc6001m2) m_port_c_8255=0; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc6001_state::pc6001_irq_callback),this)); m_cas_switch = 0; m_cas_offset = 0; @@ -2148,7 +2146,6 @@ MACHINE_RESET_MEMBER(pc6001_state,pc6001sr) m_port_c_8255=0; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc6001_state::pc6001_irq_callback),this)); m_cas_switch = 0; m_cas_offset = 0; @@ -2305,6 +2302,7 @@ static MACHINE_CONFIG_START( pc6001, pc6001_state ) MCFG_CPU_PROGRAM_MAP(pc6001_map) MCFG_CPU_IO_MAP(pc6001_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc6001_state, pc6001_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc6001_state,pc6001_irq_callback) // MCFG_CPU_ADD("subcpu", I8049, 7987200) @@ -2388,6 +2386,7 @@ static MACHINE_CONFIG_DERIVED( pc6601, pc6001m2 ) MCFG_CPU_PROGRAM_MAP(pc6001m2_map) MCFG_CPU_IO_MAP(pc6601_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc6001_state, pc6001_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc6001_state,pc6001_irq_callback) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pc6001sr, pc6001m2 ) @@ -2402,6 +2401,7 @@ static MACHINE_CONFIG_DERIVED( pc6001sr, pc6001m2 ) MCFG_CPU_PROGRAM_MAP(pc6001sr_map) MCFG_CPU_IO_MAP(pc6001sr_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc6001_state, pc6001sr_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc6001_state,pc6001_irq_callback) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c index 985abe4f43d..248ee99cb76 100644 --- a/src/mess/drivers/pc8801.c +++ b/src/mess/drivers/pc8801.c @@ -2393,8 +2393,6 @@ INTERRUPT_GEN_MEMBER(pc8801_state::pc8801_vrtc_irq) void pc8801_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc8801_state::pc8801_irq_callback),this)); - machine().device("upd765:0")->get_device()->set_rpm(300); machine().device("upd765:1")->get_device()->set_rpm(300); machine().device("upd765")->set_rate(250000); @@ -2609,6 +2607,7 @@ static MACHINE_CONFIG_START( pc8801, pc8801_state ) MCFG_CPU_PROGRAM_MAP(pc8801_mem) MCFG_CPU_IO_MAP(pc8801_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc8801_state, pc8801_vrtc_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc8801_state,pc8801_irq_callback) /* sub CPU(5 inch floppy drive) */ MCFG_CPU_ADD("fdccpu", Z80, MASTER_CLOCK) /* 4 MHz */ diff --git a/src/mess/drivers/pc88va.c b/src/mess/drivers/pc88va.c index 65217c83cbd..80e4634b456 100644 --- a/src/mess/drivers/pc88va.c +++ b/src/mess/drivers/pc88va.c @@ -1653,8 +1653,6 @@ READ8_MEMBER(pc88va_state::get_slave_ack) void pc88va_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc88va_state::pc88va_irq_callback),this)); - m_t3_mouse_timer = timer_alloc(TIMER_T3_MOUSE_CALLBACK); m_t3_mouse_timer->adjust(attotime::never); floppy_image_device *floppy; @@ -1805,6 +1803,7 @@ static MACHINE_CONFIG_START( pc88va, pc88va_state ) MCFG_CPU_PROGRAM_MAP(pc88va_map) MCFG_CPU_IO_MAP(pc88va_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc88va_state, pc88va_vrtc_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc88va_state,pc88va_irq_callback) #if TEST_SUBFDC MCFG_CPU_ADD("fdccpu", Z80, 8000000) /* 8 MHz */ diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c index 32da63e5b72..32e67ddbff8 100644 --- a/src/mess/drivers/pc9801.c +++ b/src/mess/drivers/pc9801.c @@ -3334,8 +3334,6 @@ IRQ_CALLBACK_MEMBER(pc9801_state::irq_callback) MACHINE_START_MEMBER(pc9801_state,pc9801_common) { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc9801_state::irq_callback),this)); - m_rtc->cs_w(1); m_rtc->oe_w(1); @@ -3584,6 +3582,7 @@ static MACHINE_CONFIG_START( pc9801, pc9801_state ) MCFG_CPU_PROGRAM_MAP(pc9801_map) MCFG_CPU_IO_MAP(pc9801_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc9801_state, pc9801_vrtc_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc9801_state,irq_callback) MCFG_MACHINE_START_OVERRIDE(pc9801_state,pc9801f) MCFG_MACHINE_RESET_OVERRIDE(pc9801_state,pc9801f) @@ -3684,6 +3683,7 @@ static MACHINE_CONFIG_START( pc9801rs, pc9801_state ) MCFG_CPU_PROGRAM_MAP(pc9801rs_map) MCFG_CPU_IO_MAP(pc9801rs_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc9801_state, pc9801_vrtc_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc9801_state,irq_callback) MCFG_MACHINE_START_OVERRIDE(pc9801_state,pc9801rs) MCFG_MACHINE_RESET_OVERRIDE(pc9801_state,pc9801rs) @@ -3772,7 +3772,7 @@ static MACHINE_CONFIG_DERIVED( pc9801ux, pc9801rs ) MCFG_CPU_IO_MAP(pc9801ux_io) MCFG_80286_A20(pc9801_state, pc9801_286_a20) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc9801_state, pc9801_vrtc_irq) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc9801_state,irq_callback) // MCFG_I8237_REPLACE("i8237", 10000000, pc9801rs_dmac_intf) // unknown clock MACHINE_CONFIG_END @@ -3781,6 +3781,7 @@ static MACHINE_CONFIG_DERIVED( pc9801bx2, pc9801rs ) MCFG_CPU_PROGRAM_MAP(pc9801rs_map) MCFG_CPU_IO_MAP(pc9801bx2_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc9801_state, pc9801_vrtc_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc9801_state,irq_callback) MCFG_MACHINE_START_OVERRIDE(pc9801_state,pc9801bx2) MACHINE_CONFIG_END @@ -3790,6 +3791,7 @@ static MACHINE_CONFIG_START( pc9821, pc9801_state ) MCFG_CPU_PROGRAM_MAP(pc9821_map) MCFG_CPU_IO_MAP(pc9821_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc9801_state, pc9801_vrtc_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc9801_state,irq_callback) MCFG_MACHINE_START_OVERRIDE(pc9801_state,pc9821) MCFG_MACHINE_RESET_OVERRIDE(pc9801_state,pc9821) @@ -3877,6 +3879,7 @@ static MACHINE_CONFIG_DERIVED( pc9821v20, pc9821 ) MCFG_CPU_PROGRAM_MAP(pc9821_map) MCFG_CPU_IO_MAP(pc9821_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pc9801_state, pc9801_vrtc_irq) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pc9801_state,irq_callback) MACHINE_CONFIG_END /* took from "raw" memory dump, uncomment ROM_FILL if you want to play with it */ diff --git a/src/mess/drivers/pk8000.c b/src/mess/drivers/pk8000.c index 9800cfdb936..c5f0953683d 100644 --- a/src/mess/drivers/pk8000.c +++ b/src/mess/drivers/pk8000.c @@ -332,7 +332,6 @@ void pk8000_state::machine_start() void pk8000_state::machine_reset() { pk8000_set_bank(0); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pk8000_state::pk8000_irq_callback),this)); } void pk8000_state::video_start() @@ -360,6 +359,7 @@ static MACHINE_CONFIG_START( pk8000, pk8000_state ) MCFG_CPU_PROGRAM_MAP(pk8000_mem) MCFG_CPU_IO_MAP(pk8000_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pk8000_state, pk8000_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pk8000_state,pk8000_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/pk8020.c b/src/mess/drivers/pk8020.c index 04a216d9d4d..c930ca23b71 100644 --- a/src/mess/drivers/pk8020.c +++ b/src/mess/drivers/pk8020.c @@ -205,6 +205,7 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state ) MCFG_CPU_PROGRAM_MAP(pk8020_mem) MCFG_CPU_IO_MAP(pk8020_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pk8020_state, pk8020_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(pk8020_state,pk8020_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/poisk1.c b/src/mess/drivers/poisk1.c index 12210e79f41..1cd966165c3 100644 --- a/src/mess/drivers/poisk1.c +++ b/src/mess/drivers/poisk1.c @@ -197,8 +197,6 @@ DRIVER_INIT_MEMBER( p1_state, poisk1 ) MACHINE_START_MEMBER( p1_state, poisk1 ) { DBG_LOG(0,"init",("machine_start()\n")); - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(p1_state::p1_irq_callback),this)); } MACHINE_RESET_MEMBER( p1_state, poisk1 ) @@ -239,6 +237,7 @@ static MACHINE_CONFIG_START( poisk1, p1_state ) MCFG_CPU_ADD("maincpu", I8088, 5000000) MCFG_CPU_PROGRAM_MAP(poisk1_map) MCFG_CPU_IO_MAP(poisk1_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(p1_state,p1_irq_callback) MCFG_MACHINE_START_OVERRIDE( p1_state, poisk1 ) MCFG_MACHINE_RESET_OVERRIDE( p1_state, poisk1 ) diff --git a/src/mess/drivers/poly88.c b/src/mess/drivers/poly88.c index 3f38473c3b3..76db2ee3082 100644 --- a/src/mess/drivers/poly88.c +++ b/src/mess/drivers/poly88.c @@ -172,7 +172,7 @@ static MACHINE_CONFIG_START( poly88, poly88_state ) MCFG_CPU_PROGRAM_MAP(poly88_mem) MCFG_CPU_IO_MAP(poly88_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", poly88_state, poly88_interrupt) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(poly88_state,poly88_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/portfoli.c b/src/mess/drivers/portfoli.c index 9062b3765cc..e215dc604a0 100644 --- a/src/mess/drivers/portfoli.c +++ b/src/mess/drivers/portfoli.c @@ -749,9 +749,6 @@ void portfolio_state::machine_start() { address_space &program = m_maincpu->space(AS_PROGRAM); - /* set CPU interrupt vector callback */ - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(portfolio_state::portfolio_int_ack),this)); - /* memory expansions */ switch (m_ram->size()) { @@ -821,6 +818,7 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_CPU_ADD(M80C88A_TAG, I8088, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(portfolio_mem) MCFG_CPU_IO_MAP(portfolio_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(portfolio_state,portfolio_int_ack) /* video hardware */ MCFG_SCREEN_ADD(SCREEN_TAG, LCD) diff --git a/src/mess/drivers/prestige.c b/src/mess/drivers/prestige.c index e75e5a11ed7..8acdc095a7a 100644 --- a/src/mess/drivers/prestige.c +++ b/src/mess/drivers/prestige.c @@ -423,8 +423,6 @@ void prestige_state::machine_start() UINT8 *ram = m_ram->pointer(); memset(ram, 0x00, m_ram->size()); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(prestige_state::prestige_int_ack),this)); - m_bank1->configure_entries(0, 64, rom, 0x4000); m_bank1->configure_entries(64,32, cart, 0x4000); m_bank2->configure_entries(0, 64, rom, 0x4000); @@ -484,6 +482,7 @@ static MACHINE_CONFIG_START( prestige_base, prestige_state ) MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(prestige_mem) MCFG_CPU_IO_MAP(prestige_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(prestige_state,prestige_int_ack) MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", prestige_state, irq_timer, attotime::from_msec(10)) diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index 1465bff4f7e..bab325308de 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -686,7 +686,6 @@ INPUT_PORTS_END void qx10_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(qx10_state::irq_callback),this)); } void qx10_state::machine_reset() @@ -788,6 +787,7 @@ static MACHINE_CONFIG_START( qx10, qx10_state ) MCFG_CPU_ADD("maincpu",Z80, MAIN_CLK / 4) MCFG_CPU_PROGRAM_MAP(qx10_mem) MCFG_CPU_IO_MAP(qx10_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(qx10_state,irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/sm1800.c b/src/mess/drivers/sm1800.c index afb8f86c62a..2d6ce18ce8f 100644 --- a/src/mess/drivers/sm1800.c +++ b/src/mess/drivers/sm1800.c @@ -77,7 +77,6 @@ IRQ_CALLBACK_MEMBER(sm1800_state::sm1800_irq_callback) void sm1800_state::machine_reset() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(sm1800_state::sm1800_irq_callback),this)); } INTERRUPT_GEN_MEMBER(sm1800_state::sm1800_vblank_interrupt) @@ -168,6 +167,7 @@ static MACHINE_CONFIG_START( sm1800, sm1800_state ) MCFG_CPU_PROGRAM_MAP(sm1800_mem) MCFG_CPU_IO_MAP(sm1800_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", sm1800_state, sm1800_vblank_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(sm1800_state,sm1800_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/trs80m2.c b/src/mess/drivers/trs80m2.c index 544f91878ae..ae0d73925a0 100644 --- a/src/mess/drivers/trs80m2.c +++ b/src/mess/drivers/trs80m2.c @@ -755,9 +755,6 @@ void trs80m16_state::machine_start() { trs80m2_state::machine_start(); - // register CPU IRQ callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(trs80m16_state::trs80m16_irq_callback),this)); - // register for state saving save_item(NAME(m_ual)); save_item(NAME(m_limit)); @@ -859,6 +856,7 @@ static MACHINE_CONFIG_START( trs80m16, trs80m16_state ) MCFG_CPU_CONFIG(trs80m2_daisy_chain) MCFG_CPU_PROGRAM_MAP(z80_mem) MCFG_CPU_IO_MAP(m16_z80_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(trs80m16_state,trs80m16_irq_callback) MCFG_CPU_ADD(M68000_TAG, M68000, XTAL_24MHz/4) MCFG_CPU_PROGRAM_MAP(m68000_mem) diff --git a/src/mess/drivers/tsispch.c b/src/mess/drivers/tsispch.c index 93016faf6cd..8ee2229e2af 100644 --- a/src/mess/drivers/tsispch.c +++ b/src/mess/drivers/tsispch.c @@ -260,7 +260,6 @@ void tsispch_state::machine_reset() int i; for (i=0; i<32; i++) m_infifo[i] = 0; m_infifo_tail_ptr = m_infifo_head_ptr = 0; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(tsispch_state::irq_callback),this)); fprintf(stderr,"machine reset\n"); } @@ -398,6 +397,7 @@ static MACHINE_CONFIG_START( prose2k, tsispch_state ) MCFG_CPU_ADD("maincpu", I8086, 8000000) /* VERIFIED clock, unknown divider */ MCFG_CPU_PROGRAM_MAP(i8086_mem) MCFG_CPU_IO_MAP(i8086_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(tsispch_state,irq_callback) /* TODO: the UPD7720 has a 10KHz clock to its INT pin */ /* TODO: the UPD7720 has a 2MHz clock to its SCK pin */ diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c index 2d96226a70e..f6ca3a94d7f 100644 --- a/src/mess/drivers/v1050.c +++ b/src/mess/drivers/v1050.c @@ -972,9 +972,6 @@ void v1050_state::machine_start() // initialize RTC m_rtc->cs1_w(1); - // set CPU interrupt callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(v1050_state::v1050_int_ack),this)); - // setup memory banking UINT8 *ram = m_ram->pointer(); @@ -1031,6 +1028,8 @@ static MACHINE_CONFIG_START( v1050, v1050_state ) MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(v1050_mem) MCFG_CPU_IO_MAP(v1050_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(v1050_state,v1050_int_ack) + MCFG_QUANTUM_PERFECT_CPU(Z80_TAG) MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_15_36MHz/16) diff --git a/src/mess/drivers/vector06.c b/src/mess/drivers/vector06.c index 642ecb1e2e3..a588316296f 100644 --- a/src/mess/drivers/vector06.c +++ b/src/mess/drivers/vector06.c @@ -166,7 +166,7 @@ static MACHINE_CONFIG_START( vector06, vector06_state ) MCFG_CPU_PROGRAM_MAP(vector06_mem) MCFG_CPU_IO_MAP(vector06_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", vector06_state, vector06_interrupt) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(vector06_state,vector06_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index 3afd53500d3..91408dff270 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -895,9 +895,6 @@ SLOT_INTERFACE_END void victor9k_state::machine_start() { - // set interrupt callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(victor9k_state::victor9k_irq_callback),this)); - // set floppy callbacks m_floppy0->setup_ready_cb(floppy_image_device::ready_cb(FUNC(victor9k_state::ready0_cb), this)); m_floppy0->setup_load_cb(floppy_image_device::load_cb(FUNC(victor9k_state::load0_cb), this)); @@ -928,6 +925,7 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state ) // basic machine hardware MCFG_CPU_ADD(I8088_TAG, I8088, XTAL_30MHz/6) MCFG_CPU_PROGRAM_MAP(victor9k_mem) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(victor9k_state,victor9k_irq_callback) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_30MHz/6) MCFG_CPU_IO_MAP(floppy_io) diff --git a/src/mess/drivers/vidbrain.c b/src/mess/drivers/vidbrain.c index 3639dbd9ef2..7ea34c3416b 100644 --- a/src/mess/drivers/vidbrain.c +++ b/src/mess/drivers/vidbrain.c @@ -502,9 +502,6 @@ void vidbrain_state::device_timer(emu_timer &timer, device_timer_id id, int para void vidbrain_state::machine_start() { - // register IRQ callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vidbrain_state::vidbrain_int_ack),this)); - // allocate timers m_timer_ne555 = timer_alloc(TIMER_JOYSTICK); @@ -540,6 +537,7 @@ static MACHINE_CONFIG_START( vidbrain, vidbrain_state ) MCFG_CPU_ADD(F3850_TAG, F8, XTAL_4MHz/2) MCFG_CPU_PROGRAM_MAP(vidbrain_mem) MCFG_CPU_IO_MAP(vidbrain_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(vidbrain_state,vidbrain_int_ack) // video hardware MCFG_DEFAULT_LAYOUT(layout_vidbrain) diff --git a/src/mess/drivers/vixen.c b/src/mess/drivers/vixen.c index 62c0400b78d..378a4ae7695 100644 --- a/src/mess/drivers/vixen.c +++ b/src/mess/drivers/vixen.c @@ -695,9 +695,6 @@ IRQ_CALLBACK_MEMBER(vixen_state::vixen_int_ack) void vixen_state::machine_start() { - // interrupt callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vixen_state::vixen_int_ack),this)); - // configure memory banking UINT8 *ram = m_ram->pointer(); @@ -759,6 +756,7 @@ static MACHINE_CONFIG_START( vixen, vixen_state ) MCFG_CPU_ADD(Z8400A_TAG, Z80, XTAL_23_9616MHz/6) MCFG_CPU_PROGRAM_MAP(vixen_mem) MCFG_CPU_IO_MAP(vixen_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(vixen_state,vixen_int_ack) // video hardware MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) diff --git a/src/mess/drivers/votrpss.c b/src/mess/drivers/votrpss.c index 7d8e141ec84..80d53ac1f61 100644 --- a/src/mess/drivers/votrpss.c +++ b/src/mess/drivers/votrpss.c @@ -179,7 +179,6 @@ INPUT_PORTS_END void votrpss_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(votrpss_state::irq_ack),this)); } TIMER_DEVICE_CALLBACK_MEMBER( votrpss_state::irq_timer ) @@ -266,6 +265,7 @@ static MACHINE_CONFIG_START( votrpss, votrpss_state ) MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) /* 4.000 MHz, verified */ MCFG_CPU_PROGRAM_MAP(votrpss_mem) MCFG_CPU_IO_MAP(votrpss_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(votrpss_state,irq_ack) /* video hardware */ //MCFG_DEFAULT_LAYOUT(layout_votrpss) diff --git a/src/mess/drivers/vt100.c b/src/mess/drivers/vt100.c index bd271f22dde..cf76256432b 100644 --- a/src/mess/drivers/vt100.c +++ b/src/mess/drivers/vt100.c @@ -360,8 +360,6 @@ void vt100_state::machine_reset() output_set_value("l4_led", 1); m_key_scan = 0; - - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vt100_state::vt100_irq_callback),this)); } READ8_MEMBER( vt100_state::vt100_read_video_ram_r ) @@ -404,7 +402,7 @@ static MACHINE_CONFIG_START( vt100, vt100_state ) MCFG_CPU_PROGRAM_MAP(vt100_mem) MCFG_CPU_IO_MAP(vt100_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", vt100_state, vt100_vertical_interrupt) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(vt100_state,vt100_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -456,8 +454,9 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( vt102, vt100 ) MCFG_CPU_REPLACE("maincpu",I8085A, XTAL_24_8832MHz / 9) MCFG_CPU_PROGRAM_MAP(vt100_mem) - MCFG_CPU_IO_MAP(vt100_io) + MCFG_CPU_IO_MAP(vt100_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", vt100_state, vt100_vertical_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(vt100_state,vt100_irq_callback) MACHINE_CONFIG_END /* VT1xx models: diff --git a/src/mess/drivers/wangpc.c b/src/mess/drivers/wangpc.c index 96b87e48331..ab07b55ca25 100644 --- a/src/mess/drivers/wangpc.c +++ b/src/mess/drivers/wangpc.c @@ -1009,9 +1009,6 @@ WRITE_LINE_MEMBER( wangpc_state::bus_irq2_w ) void wangpc_state::machine_start() { - // register CPU IRQ callback - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(wangpc_state::wangpc_irq_callback),this)); - // connect floppy callbacks m_floppy0->setup_load_cb(floppy_image_device::load_cb(FUNC(wangpc_state::on_disk0_load), this)); m_floppy0->setup_unload_cb(floppy_image_device::unload_cb(FUNC(wangpc_state::on_disk0_unload), this)); @@ -1104,6 +1101,7 @@ static MACHINE_CONFIG_START( wangpc, wangpc_state ) MCFG_CPU_ADD(I8086_TAG, I8086, 8000000) MCFG_CPU_PROGRAM_MAP(wangpc_mem) MCFG_CPU_IO_MAP(wangpc_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(wangpc_state,wangpc_irq_callback) //MCFG_QUANTUM_PERFECT_CPU(I8086_TAG) // devices diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c index 8998e8f3410..2762f5a865a 100644 --- a/src/mess/drivers/x68k.c +++ b/src/mess/drivers/x68k.c @@ -1641,8 +1641,6 @@ DRIVER_INIT_MEMBER(x68k_state,x68000) // copy last half of BIOS to a user region, to use for inital startup memcpy(user2,(rom+0xff0000),0x10000); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(x68k_state::x68k_int_ack),this)); - m_scanline_timer = timer_alloc(TIMER_X68K_HSYNC); m_raster_irq = timer_alloc(TIMER_X68K_CRTC_RASTER_IRQ); m_vblank_irq = timer_alloc(TIMER_X68K_CRTC_VBLANK_IRQ); @@ -1690,6 +1688,8 @@ static MACHINE_CONFIG_START( x68000, x68k_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */ MCFG_CPU_PROGRAM_MAP(x68k_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(x68k_state,x68k_int_ack) + MCFG_QUANTUM_TIME(attotime::from_hz(60)) MCFG_MACHINE_START_OVERRIDE(x68k_state, x68000 ) @@ -1814,6 +1814,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( x68030, x68ksupr ) MCFG_CPU_REPLACE("maincpu", M68030, 25000000) /* 25 MHz 68EC030 */ MCFG_CPU_PROGRAM_MAP(x68030_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(x68k_state,x68k_int_ack) MACHINE_CONFIG_END ROM_START( x68000 ) diff --git a/src/mess/drivers/z100.c b/src/mess/drivers/z100.c index 95a38083adf..9bce3a86811 100644 --- a/src/mess/drivers/z100.c +++ b/src/mess/drivers/z100.c @@ -702,7 +702,6 @@ static const floppy_interface z100_floppy_interface = void z100_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(z100_state::z100_irq_callback),this)); m_mc6845 = machine().device("crtc"); } @@ -727,7 +726,7 @@ static MACHINE_CONFIG_START( z100, z100_state ) MCFG_CPU_ADD("maincpu",I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(z100_mem) MCFG_CPU_IO_MAP(z100_io) - + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(z100_state,z100_irq_callback) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/machine/amstrad.c b/src/mess/machine/amstrad.c index 36dd1fe3de2..a46a1a7303c 100644 --- a/src/mess/machine/amstrad.c +++ b/src/mess/machine/amstrad.c @@ -2933,7 +2933,6 @@ void amstrad_state::amstrad_common_init() (const UINT8*)amstrad_cycle_table_ex); /* Juergen is a cool dude! */ - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(amstrad_state::amstrad_cpu_acknowledge_int),this)); } TIMER_CALLBACK_MEMBER(amstrad_state::cb_set_resolution) diff --git a/src/mess/machine/at.c b/src/mess/machine/at.c index f3a0e6f07ef..82dc1b35190 100644 --- a/src/mess/machine/at.c +++ b/src/mess/machine/at.c @@ -323,7 +323,6 @@ IRQ_CALLBACK_MEMBER(at_state::at_irq_callback) MACHINE_START_MEMBER(at_state,at) { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(at_state::at_irq_callback),this)); } MACHINE_RESET_MEMBER(at_state,at) diff --git a/src/mess/machine/b2m.c b/src/mess/machine/b2m.c index 17c32a1fcb5..313aaacdf7a 100644 --- a/src/mess/machine/b2m.c +++ b/src/mess/machine/b2m.c @@ -308,6 +308,5 @@ void b2m_state::machine_reset() m_b2m_side = 0; m_b2m_drive = 0; - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(b2m_state::b2m_irq_callback),this)); b2m_set_bank(7); } diff --git a/src/mess/machine/bk.c b/src/mess/machine/bk.c index 6a040116e3f..79dee805c8b 100644 --- a/src/mess/machine/bk.c +++ b/src/mess/machine/bk.c @@ -78,8 +78,6 @@ IRQ_CALLBACK_MEMBER(bk_state::bk0010_irq_callback) void bk_state::machine_reset() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(bk_state::bk0010_irq_callback),this)); - m_kbd_state = 0; m_scrool = 01330; } diff --git a/src/mess/machine/dai.c b/src/mess/machine/dai.c index 03bdcead5e4..b1a0752f5dc 100644 --- a/src/mess/machine/dai.c +++ b/src/mess/machine/dai.c @@ -77,8 +77,6 @@ IRQ_CALLBACK_MEMBER(dai_state::int_ack) void dai_state::machine_start() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(dai_state::int_ack),this)); - membank("bank2")->configure_entries(0, 4, memregion("maincpu")->base() + 0x010000, 0x1000); timer_set(attotime::zero, TIMER_BOOTSTRAP); timer_set(attotime::from_hz(100), TIMER_TMS5501); diff --git a/src/mess/machine/galaxy.c b/src/mess/machine/galaxy.c index 7df71e318ab..8a870a4eec4 100644 --- a/src/mess/machine/galaxy.c +++ b/src/mess/machine/galaxy.c @@ -184,7 +184,6 @@ MACHINE_RESET_MEMBER(galaxy_state,galaxy) if (ioport("ROM2")->read()) membank("bank10")->set_base(memregion("maincpu")->base() + 0x1000); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxy_state::galaxy_irq_callback),this)); m_interrupts_enabled = TRUE; } @@ -198,8 +197,6 @@ MACHINE_RESET_MEMBER(galaxy_state,galaxyp) UINT8 *ROM = memregion("maincpu")->base(); address_space &space = m_maincpu->space(AS_PROGRAM); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxy_state::galaxy_irq_callback),this)); - ROM[0x0037] = 0x29; ROM[0x03f9] = 0xcd; ROM[0x03fa] = 0x00; diff --git a/src/mess/machine/genpc.c b/src/mess/machine/genpc.c index a050479450b..cfc50f8fa64 100644 --- a/src/mess/machine/genpc.c +++ b/src/mess/machine/genpc.c @@ -586,8 +586,6 @@ IRQ_CALLBACK_MEMBER(ibm5160_mb_device::pc_irq_callback) void ibm5160_mb_device::device_reset() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ibm5160_mb_device::pc_irq_callback),this)); - m_u73_q2 = 0; m_out1 = 2; // initial state of pit output is undefined m_pc_spkrdata = 0; diff --git a/src/mess/machine/mbc55x.c b/src/mess/machine/mbc55x.c index 367df4e7c1d..b08a42d50f0 100644 --- a/src/mess/machine/mbc55x.c +++ b/src/mess/machine/mbc55x.c @@ -330,7 +330,6 @@ void mbc55x_state::machine_reset() { set_ram_size(); keyboard_reset(); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mbc55x_state::mbc55x_irq_callback),this)); } void mbc55x_state::machine_start() diff --git a/src/mess/machine/mc80.c b/src/mess/machine/mc80.c index 9ac678da883..f4530f0067e 100644 --- a/src/mess/machine/mc80.c +++ b/src/mess/machine/mc80.c @@ -20,7 +20,6 @@ IRQ_CALLBACK_MEMBER(mc80_state::mc8020_irq_callback) MACHINE_RESET_MEMBER(mc80_state,mc8020) { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mc80_state::mc8020_irq_callback),this)); } WRITE_LINE_MEMBER( mc80_state::ctc_z0_w ) @@ -114,7 +113,6 @@ IRQ_CALLBACK_MEMBER(mc80_state::mc8030_irq_callback ) MACHINE_RESET_MEMBER(mc80_state,mc8030) { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mc80_state::mc8030_irq_callback),this)); } READ8_MEMBER( mc80_state::zve_port_a_r ) diff --git a/src/mess/machine/megacd.c b/src/mess/machine/megacd.c index 05abbf8ce29..e61558806f8 100644 --- a/src/mess/machine/megacd.c +++ b/src/mess/machine/megacd.c @@ -255,6 +255,7 @@ static MACHINE_CONFIG_FRAGMENT( segacd_fragment ) MCFG_CPU_ADD("segacd_68k", M68000, SEGACD_CLOCK ) /* 12.5 MHz */ MCFG_CPU_PROGRAM_MAP(segacd_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, sega_segacd_device,segacd_sub_int_callback) MCFG_DEVICE_ADD("cdc", LC89510, 0) // cd controller @@ -1717,8 +1718,6 @@ void sega_segacd_device::device_start() - m_scdcpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(sega_segacd_device::segacd_sub_int_callback),this)); - space.install_read_handler (0x0000070, 0x0000073, read16_delegate(FUNC(sega_segacd_device::scd_hint_vector_r),this) ); segacd_stampmap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(sega_segacd_device::get_stampmap_16x16_1x1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); diff --git a/src/mess/machine/pk8020.c b/src/mess/machine/pk8020.c index a95ca363766..838a759387e 100644 --- a/src/mess/machine/pk8020.c +++ b/src/mess/machine/pk8020.c @@ -916,7 +916,6 @@ void pk8020_state::machine_start() void pk8020_state::machine_reset() { pk8020_set_bank(0); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pk8020_state::pk8020_irq_callback),this)); m_sound_gate = 0; m_sound_level = 0; diff --git a/src/mess/machine/poly88.c b/src/mess/machine/poly88.c index 01b8a498d64..ee08bf7ed72 100644 --- a/src/mess/machine/poly88.c +++ b/src/mess/machine/poly88.c @@ -226,7 +226,6 @@ DRIVER_INIT_MEMBER(poly88_state,poly88) void poly88_state::machine_reset() { - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(poly88_state::poly88_irq_callback),this)); m_intr = 0; m_last_code = 0; } diff --git a/src/mess/machine/vector06.c b/src/mess/machine/vector06.c index f33a9b8c7fc..20f93af4c34 100644 --- a/src/mess/machine/vector06.c +++ b/src/mess/machine/vector06.c @@ -149,7 +149,6 @@ void vector06_state::machine_reset() { address_space &space = m_maincpu->space(AS_PROGRAM); - m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vector06_state::vector06_irq_callback),this)); space.install_read_bank (0x0000, 0x7fff, "bank1"); space.install_write_bank(0x0000, 0x7fff, "bank2"); space.install_read_bank (0x8000, 0xffff, "bank3");