diff --git a/src/mess/drivers/apollo.c b/src/mess/drivers/apollo.c index 41dd3752547..70f1efc7a74 100644 --- a/src/mess/drivers/apollo.c +++ b/src/mess/drivers/apollo.c @@ -278,12 +278,13 @@ static void apollo_bus_error(running_machine &machine) apollo_csr_set_status_register(APOLLO_CSR_SR_CPU_TIMEOUT, APOLLO_CSR_SR_CPU_TIMEOUT); } -static IRQ_CALLBACK(apollo_irq_acknowledge) { +IRQ_CALLBACK_MEMBER(apollo_state::apollo_irq_acknowledge) +{ int result = M68K_INT_ACK_AUTOVECTOR; - device->machine().device(MAINCPU)->execute().set_input_line(irqline, CLEAR_LINE); + machine().device(MAINCPU)->execute().set_input_line(irqline, CLEAR_LINE); - DLOG2(("apollo_irq_acknowledge: interrupt level=%d", irqline)); + MLOG2(("apollo_irq_acknowledge: interrupt level=%d", irqline)); if (irqline == 6) { result = apollo_pic_acknowledge(device, irqline); @@ -1080,7 +1081,7 @@ DRIVER_INIT_MEMBER(apollo_state,dn3500) { // MLOG1(("driver_init_dn3500")); - machine().device(MAINCPU)->execute().set_irq_acknowledge_callback(apollo_irq_acknowledge); + machine().device(MAINCPU)->execute().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 */ m68k_set_reset_callback(machine().device(MAINCPU), apollo_reset_instr_callback); diff --git a/src/mess/drivers/ng_aes.c b/src/mess/drivers/ng_aes.c index df390e0c929..cabc5f1901b 100644 --- a/src/mess/drivers/ng_aes.c +++ b/src/mess/drivers/ng_aes.c @@ -66,7 +66,6 @@ extern const char layout_neogeo[]; -static IRQ_CALLBACK(neocd_int_callback); /* Stubs for various functions called by the FBA code, replace with MAME specifics later */ @@ -178,6 +177,7 @@ public: DECLARE_DRIVER_INIT(neocdz); DECLARE_DRIVER_INIT(neocdzj); + IRQ_CALLBACK_MEMBER(neocd_int_callback); }; @@ -1117,7 +1117,7 @@ MACHINE_START_MEMBER(ng_aes_state,neocd) save_pointer(NAME(m_memcard_data), 0x2000); // for custom vectors - machine().device("maincpu")->execute().set_irq_acknowledge_callback(neocd_int_callback); + machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ng_aes_state::neocd_int_callback),this)); neogeo_set_main_cpu_vector_table_source(machine(), 0); // default to the BIOS vectors @@ -1539,15 +1539,13 @@ MACHINE_CONFIG_END /* NeoCD uses custom vectors on IRQ4 to handle various events from the CDC */ -static IRQ_CALLBACK(neocd_int_callback) +IRQ_CALLBACK_MEMBER(ng_aes_state::neocd_int_callback) { - ng_aes_state *state = device->machine().driver_data(); - if (irqline==4) { - if (state->get_nNeoCDIRQVectorAck()) { - state->set_nNeoCDIRQVectorAck(0); - return state->get_nNeoCDIRQVector(); + if (get_nNeoCDIRQVectorAck()) { + set_nNeoCDIRQVectorAck(0); + return get_nNeoCDIRQVector(); } } diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index 3353ab857c3..c7769fed204 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -73,6 +73,7 @@ public: INTERRUPT_GEN_MEMBER(pasogo_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(vg230_timer); DECLARE_WRITE_LINE_MEMBER(pasogo_pic8259_set_int_line); + IRQ_CALLBACK_MEMBER(pasogo_irq_callback); }; @@ -456,14 +457,14 @@ INTERRUPT_GEN_MEMBER(pasogo_state::pasogo_interrupt) // machine.device("maincpu")->execute().set_input_line(UPD7810_INTFE1, PULSE_LINE); } -static IRQ_CALLBACK(pasogo_irq_callback) +IRQ_CALLBACK_MEMBER(pasogo_state::pasogo_irq_callback) { - return pic8259_acknowledge( device->machine().device("pic8259")); + return pic8259_acknowledge( machine().device("pic8259")); } void pasogo_state::machine_reset() { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(pasogo_irq_callback); + machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pasogo_state::pasogo_irq_callback),this)); } //static const unsigned i86_address_mask = 0x000fffff; diff --git a/src/mess/drivers/vt100.c b/src/mess/drivers/vt100.c index b80cf3532a0..a6a789f48de 100644 --- a/src/mess/drivers/vt100.c +++ b/src/mess/drivers/vt100.c @@ -62,6 +62,7 @@ public: UINT32 screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(vt100_vertical_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback); + IRQ_CALLBACK_MEMBER(vt100_irq_callback); }; @@ -335,11 +336,10 @@ UINT32 vt100_state::screen_update_vt100(screen_device &screen, bitmap_ind16 &bit // A4 - receiver // A5 - vertical fequency // all other set to 1 -static IRQ_CALLBACK(vt100_irq_callback) +IRQ_CALLBACK_MEMBER(vt100_state::vt100_irq_callback) { - vt100_state *state = device->machine().driver_data(); - UINT8 ret = 0xc7 | (state->m_keyboard_int << 3) | (state->m_receiver_int << 4) | (state->m_vertical_int << 5); - state->m_receiver_int = 0; + UINT8 ret = 0xc7 | (m_keyboard_int << 3) | (m_receiver_int << 4) | (m_vertical_int << 5); + m_receiver_int = 0; return ret; } @@ -363,7 +363,7 @@ void vt100_state::machine_reset() m_key_scan = 0; - machine().device("maincpu")->execute().set_irq_acknowledge_callback(vt100_irq_callback); + machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(vt100_state::vt100_irq_callback),this)); } READ8_MEMBER( vt100_state::vt100_read_video_ram_r ) diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c index 51b6bda740f..3cb67dec14c 100644 --- a/src/mess/drivers/x68k.c +++ b/src/mess/drivers/x68k.c @@ -1820,33 +1820,31 @@ INTERRUPT_GEN_MEMBER(x68k_state::x68k_vsync_irq) #endif } -static IRQ_CALLBACK(x68k_int_ack) +IRQ_CALLBACK_MEMBER(x68k_state::x68k_int_ack) { - x68k_state *state = device->machine().driver_data(); - if(irqline == 6) // MFP { - state->m_mfp.current_irq = -1; - if(state->m_current_vector[6] != 0x4b && state->m_current_vector[6] != 0x4c) - state->m_current_vector[6] = state->m_mfpdev->get_vector(); + m_mfp.current_irq = -1; + if(m_current_vector[6] != 0x4b && m_current_vector[6] != 0x4c) + m_current_vector[6] = m_mfpdev->get_vector(); else - device->machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,state->m_current_vector[irqline]); - logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",state->m_current_vector[6],irqline); - return state->m_current_vector[6]; + machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); + logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",m_current_vector[6],irqline); + return m_current_vector[6]; } - device->machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,state->m_current_vector[irqline]); + machine().device("maincpu")->execute().set_input_line_and_vector(irqline,CLEAR_LINE,m_current_vector[irqline]); if(irqline == 1) // IOSC { - state->m_ioc.irqstatus &= ~0xf0; + m_ioc.irqstatus &= ~0xf0; } if(irqline == 5) // SCC { - state->m_mouse.irqactive = 0; + m_mouse.irqactive = 0; } - logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",state->m_current_vector[irqline],irqline); - return state->m_current_vector[irqline]; + logerror("SYS: IRQ acknowledged (vector=0x%02x, line = %i)\n",m_current_vector[irqline],irqline); + return m_current_vector[irqline]; } WRITE_LINE_MEMBER(x68k_state::x68k_scsi_irq) @@ -2587,7 +2585,7 @@ DRIVER_INIT_MEMBER(x68k_state,x68000) mfp_init(); - machine().device("maincpu")->execute().set_irq_acknowledge_callback(x68k_int_ack); + machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(x68k_state::x68k_int_ack),this)); // init keyboard m_keyboard.delay = 500; // 3*100+200 diff --git a/src/mess/includes/apollo.h b/src/mess/includes/apollo.h index 8654c1f3dea..b4ccc4b84e5 100644 --- a/src/mess/includes/apollo.h +++ b/src/mess/includes/apollo.h @@ -187,6 +187,8 @@ public: void fdc_interrupt(bool state); void fdc_dma_drq(bool state); DECLARE_FLOPPY_FORMATS( floppy_formats ); + IRQ_CALLBACK_MEMBER(apollo_irq_acknowledge); + IRQ_CALLBACK_MEMBER(apollo_pic_acknowledge); }; MACHINE_CONFIG_EXTERN( apollo ); @@ -250,8 +252,6 @@ DECLARE_READ8_DEVICE_HANDLER( apollo_pic8259_master_r ); DECLARE_WRITE8_DEVICE_HANDLER(apollo_pic8259_slave_w ); DECLARE_READ8_DEVICE_HANDLER( apollo_pic8259_slave_r ); -IRQ_CALLBACK(apollo_pic_acknowledge); - /*----------- machine/apollo_ptm.c -----------*/ DECLARE_WRITE8_DEVICE_HANDLER( apollo_ptm_w ); diff --git a/src/mess/includes/at.h b/src/mess/includes/at.h index 6259a564765..bc6bdb8e1ff 100644 --- a/src/mess/includes/at.h +++ b/src/mess/includes/at.h @@ -183,6 +183,7 @@ public: DECLARE_MACHINE_START(at); DECLARE_MACHINE_RESET(at); void pc_set_dma_channel(int channel, int state); + IRQ_CALLBACK_MEMBER(at_irq_callback); }; diff --git a/src/mess/includes/b2m.h b/src/mess/includes/b2m.h index 1a461d88222..8bb4929d0fc 100644 --- a/src/mess/includes/b2m.h +++ b/src/mess/includes/b2m.h @@ -65,6 +65,7 @@ public: DECLARE_WRITE_LINE_MEMBER(b2m_pic_set_int_line); void b2m_fdc_drq(bool state); DECLARE_FLOPPY_FORMATS( b2m_floppy_formats ); + IRQ_CALLBACK_MEMBER(b2m_irq_callback); }; /*----------- defined in machine/b2m.c -----------*/ diff --git a/src/mess/includes/genpc.h b/src/mess/includes/genpc.h index 060127da6d4..b3236ef46ef 100644 --- a/src/mess/includes/genpc.h +++ b/src/mess/includes/genpc.h @@ -72,7 +72,7 @@ public: UINT8 m_ppi_shift_register; UINT8 m_ppi_shift_enable; - static IRQ_CALLBACK(pc_irq_callback); + IRQ_CALLBACK_MEMBER(pc_irq_callback); // interface to the keyboard DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ); diff --git a/src/mess/includes/mbc55x.h b/src/mess/includes/mbc55x.h index b456a8d2fbf..18b66a8ff8e 100644 --- a/src/mess/includes/mbc55x.h +++ b/src/mess/includes/mbc55x.h @@ -158,6 +158,7 @@ public: virtual void palette_init(); void screen_eof_mbc55x(screen_device &screen, bool state); TIMER_CALLBACK_MEMBER(keyscan_callback); + IRQ_CALLBACK_MEMBER(mbc55x_irq_callback); }; /*----------- defined in drivers/mbc55x.c -----------*/ diff --git a/src/mess/includes/pc.h b/src/mess/includes/pc.h index 5322cf8ccd2..2b163bfa9e2 100644 --- a/src/mess/includes/pc.h +++ b/src/mess/includes/pc.h @@ -147,6 +147,7 @@ public: void pc_eop_w(int channel, bool state); void mc1502_fdc_irq_drq(bool state); DECLARE_FLOPPY_FORMATS( floppy_formats ); + IRQ_CALLBACK_MEMBER(pc_irq_callback); }; /*----------- defined in machine/pc.c -----------*/ diff --git a/src/mess/includes/pk8020.h b/src/mess/includes/pk8020.h index 9921942f938..edee9c1d8d1 100644 --- a/src/mess/includes/pk8020.h +++ b/src/mess/includes/pk8020.h @@ -54,6 +54,7 @@ public: DECLARE_WRITE_LINE_MEMBER(pk8020_pit_out0); DECLARE_WRITE_LINE_MEMBER(pk8020_pit_out1); DECLARE_WRITE_LINE_MEMBER(pk8020_pic_set_int_line); + IRQ_CALLBACK_MEMBER(pk8020_irq_callback); }; diff --git a/src/mess/includes/x68k.h b/src/mess/includes/x68k.h index d849fda0d05..37668f39939 100644 --- a/src/mess/includes/x68k.h +++ b/src/mess/includes/x68k.h @@ -369,6 +369,7 @@ public: DECLARE_READ32_MEMBER(x68k_gvram32_r); DECLARE_WRITE32_MEMBER(x68k_tvram32_w); DECLARE_READ32_MEMBER(x68k_tvram32_r); + IRQ_CALLBACK_MEMBER(x68k_int_ack); private: inline void x68k_plot_pixel(bitmap_ind16 &bitmap, int x, int y, UINT32 color); void x68k_crtc_text_copy(int src, int dest); diff --git a/src/mess/machine/apollo.c b/src/mess/machine/apollo.c index 4efc3b982fc..157e0ad1236 100644 --- a/src/mess/machine/apollo.c +++ b/src/mess/machine/apollo.c @@ -675,15 +675,16 @@ static void apollo_pic_set_irq_line(device_t *device, int irq, int state) { } } -IRQ_CALLBACK(apollo_pic_acknowledge) { - UINT32 vector = pic8259_acknowledge(get_pic8259_master(device)); +IRQ_CALLBACK_MEMBER(apollo_state::apollo_pic_acknowledge) +{ + UINT32 vector = pic8259_acknowledge(get_pic8259_master(&device)); if ((vector & 0x0f) == APOLLO_IRQ_PIC_SLAVE) { - vector = pic8259_acknowledge(get_pic8259_slave(device)); + vector = pic8259_acknowledge(get_pic8259_slave(&device)); } // don't log ptm interrupts if (vector != APOLLO_IRQ_VECTOR+APOLLO_IRQ_PTM) { - DLOG1(("apollo_pic_acknowledge: irq=%d vector=%x", vector & 0x0f, vector)); + MLOG1(("apollo_pic_acknowledge: irq=%d vector=%x", vector & 0x0f, vector)); } if (apollo_is_dn3000()) { diff --git a/src/mess/machine/at.c b/src/mess/machine/at.c index b84d3282779..b6a15c06da1 100644 --- a/src/mess/machine/at.c +++ b/src/mess/machine/at.c @@ -350,15 +350,14 @@ DRIVER_INIT_MEMBER(at_state,atvga) init_at_common(machine()); } -static IRQ_CALLBACK(at_irq_callback) +IRQ_CALLBACK_MEMBER(at_state::at_irq_callback) { - at_state *st = device->machine().driver_data(); - return pic8259_acknowledge(st->m_pic8259_master); + return pic8259_acknowledge(m_pic8259_master); } MACHINE_START_MEMBER(at_state,at) { - machine().device("maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); + machine().device("maincpu")->execute().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 be13452bd8f..f139c180042 100644 --- a/src/mess/machine/b2m.c +++ b/src/mess/machine/b2m.c @@ -347,10 +347,9 @@ void b2m_state::machine_start() machine().save().register_postload(save_prepost_delegate(FUNC(b2m_postload), this)); } -static IRQ_CALLBACK(b2m_irq_callback) +IRQ_CALLBACK_MEMBER(b2m_state::b2m_irq_callback) { - b2m_state *state = device->machine().driver_data(); - return pic8259_acknowledge(state->m_pic); + return pic8259_acknowledge(m_pic); } const struct pic8259_interface b2m_pic8259_config = @@ -372,6 +371,6 @@ void b2m_state::machine_reset() m_b2m_side = 0; m_b2m_drive = 0; - machine().device("maincpu")->execute().set_irq_acknowledge_callback(b2m_irq_callback); + machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(b2m_state::b2m_irq_callback),this)); b2m_set_bank(machine(), 7); } diff --git a/src/mess/machine/genpc.c b/src/mess/machine/genpc.c index b8e1365910a..619be1255f1 100644 --- a/src/mess/machine/genpc.c +++ b/src/mess/machine/genpc.c @@ -652,10 +652,9 @@ void ibm5160_mb_device::device_start() membank( "bank10" )->set_base( machine().device(RAM_TAG)->pointer() ); } -IRQ_CALLBACK(ibm5160_mb_device::pc_irq_callback) +IRQ_CALLBACK_MEMBER(ibm5160_mb_device::pc_irq_callback) { - device_t *pic = device->machine().device("mb:pic8259"); - return pic8259_acknowledge( pic ); + return pic8259_acknowledge(m_pic8259); } @@ -665,7 +664,7 @@ IRQ_CALLBACK(ibm5160_mb_device::pc_irq_callback) void ibm5160_mb_device::device_reset() { - m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); + 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 diff --git a/src/mess/machine/i82371ab.c b/src/mess/machine/i82371ab.c index 30bc73d49a4..53b12a2f43f 100644 --- a/src/mess/machine/i82371ab.c +++ b/src/mess/machine/i82371ab.c @@ -208,12 +208,6 @@ void i82371ab_device::pci_write(pci_bus_device *pcibus, int function, int offset } } -static IRQ_CALLBACK(at_irq_callback) -{ - device_t *pic = device->machine().device(":pcibus:1:i82371ab:pic8259_master"); - return pic8259_acknowledge(pic); -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -223,8 +217,6 @@ void i82371ab_device::device_start() southbridge_device::device_start(); /* setup save states */ save_item(NAME(m_regs)); - - machine().device(":maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); } //------------------------------------------------- diff --git a/src/mess/machine/i82371sb.c b/src/mess/machine/i82371sb.c index 430be55674b..d3def3f4b41 100644 --- a/src/mess/machine/i82371sb.c +++ b/src/mess/machine/i82371sb.c @@ -138,12 +138,6 @@ void i82371sb_device::pci_write(pci_bus_device *pcibus, int function, int offset //logerror("i82371sb_pci_write: write to undefined function %d\n", function); } -static IRQ_CALLBACK(at_irq_callback) -{ - device_t *pic = device->machine().device(":pcibus:1:i82371sb:pic8259_master"); - return pic8259_acknowledge(pic); -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -153,8 +147,6 @@ void i82371sb_device::device_start() southbridge_device::device_start(); /* setup save states */ save_item(NAME(m_regs)); - - machine().device(":maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); } //------------------------------------------------- diff --git a/src/mess/machine/mbc55x.c b/src/mess/machine/mbc55x.c index e473c4a4fe1..05376e01cc0 100644 --- a/src/mess/machine/mbc55x.c +++ b/src/mess/machine/mbc55x.c @@ -126,10 +126,9 @@ WRITE8_MEMBER(mbc55x_state::mbcpic8259_w) pic8259_w(m_pic, space, offset>>1, data); } -static IRQ_CALLBACK(mbc55x_irq_callback) +IRQ_CALLBACK_MEMBER(mbc55x_state::mbc55x_irq_callback) { - mbc55x_state *state = device->machine().driver_data(); - return pic8259_acknowledge( state->m_pic ); + return pic8259_acknowledge(m_pic); } /* PIT8253 Configuration */ @@ -388,7 +387,7 @@ void mbc55x_state::machine_reset() { set_ram_size(machine()); keyboard_reset(machine()); - machine().device(MAINCPU_TAG)->execute().set_irq_acknowledge_callback(mbc55x_irq_callback); + machine().device(MAINCPU_TAG)->execute().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/pc.c b/src/mess/machine/pc.c index 598dce7f241..e8b792698dc 100644 --- a/src/mess/machine/pc.c +++ b/src/mess/machine/pc.c @@ -1463,10 +1463,9 @@ DRIVER_INIT_MEMBER(pc_state,pc1640) mess_init_pc_common(machine(), PCCOMMON_KEYBOARD_PC, pc_set_keyb_int, pc_set_irq_line); } -static IRQ_CALLBACK(pc_irq_callback) +IRQ_CALLBACK_MEMBER(pc_state::pc_irq_callback) { - pc_state *st = device->machine().driver_data(); - return pic8259_acknowledge( st->m_pic8259 ); + return pic8259_acknowledge(m_pic8259); } @@ -1475,7 +1474,7 @@ MACHINE_START_MEMBER(pc_state,pc) m_pic8259 = machine().device("pic8259"); m_pit8253 = machine().device("pit8253"); m_maincpu = machine().device("maincpu" ); - m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc_state::pc_irq_callback),this)); pc_fdc_interface *fdc = machine().device("fdc"); fdc->setup_intrq_cb(pc_fdc_interface::line_cb(FUNC(pc_state::fdc_interrupt), this)); @@ -1511,7 +1510,7 @@ MACHINE_RESET_MEMBER(pc_state,pc) MACHINE_START_MEMBER(pc_state,mc1502) { m_maincpu = machine().device("maincpu" ); - m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc_state::pc_irq_callback),this)); m_pic8259 = machine().device("pic8259"); m_pit8253 = machine().device("pit8253"); @@ -1539,7 +1538,7 @@ MACHINE_START_MEMBER(pc_state,pcjr) m_pcjr_watchdog = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pc_state::pcjr_fdc_watchdog),this)); pcjr_keyb.keyb_signal_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pc_state::pcjr_keyb_signal_callback),this)); m_maincpu = machine().device("maincpu"); - m_maincpu->set_irq_acknowledge_callback(pc_irq_callback); + m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc_state::pc_irq_callback),this)); machine().device("upd765")->set_ready_line_connected(false); diff --git a/src/mess/machine/pk8020.c b/src/mess/machine/pk8020.c index 61437309efc..c5e784fe2ca 100644 --- a/src/mess/machine/pk8020.c +++ b/src/mess/machine/pk8020.c @@ -984,15 +984,15 @@ const struct pic8259_interface pk8020_pic8259_config = DEVCB_NULL }; -static IRQ_CALLBACK( pk8020_irq_callback ) +IRQ_CALLBACK_MEMBER(pk8020_state::pk8020_irq_callback) { - return pic8259_acknowledge(device->machine().device("pic8259")); + return pic8259_acknowledge(machine().device("pic8259")); } void pk8020_state::machine_reset() { pk8020_set_bank(machine(),0); - machine().device("maincpu")->execute().set_irq_acknowledge_callback(pk8020_irq_callback); + machine().device("maincpu")->execute().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/southbridge.c b/src/mess/machine/southbridge.c index b5a31ab7def..8a429a781f5 100644 --- a/src/mess/machine/southbridge.c +++ b/src/mess/machine/southbridge.c @@ -180,14 +180,12 @@ southbridge_device::southbridge_device(const machine_config &mconfig, device_typ * Init functions * **********************************************************/ -/* -IRQ_CALLBACK(southbridge_device::at_irq_callback) + +IRQ_CALLBACK_MEMBER(southbridge_device::at_irq_callback) { - device_t *pic = device->machine().device(":pcibus:1:i82371ab:pic8259_master"); - //return pic8259_acknowledge(m_pic8259_master); - return pic8259_acknowledge(pic); + return pic8259_acknowledge(m_pic8259_master); } -*/ + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -209,7 +207,7 @@ void southbridge_device::device_start() m_at_offset1 = 0xff; - //machine().device(":maincpu")->execute().set_irq_acknowledge_callback(at_irq_callback); + machine().device(":maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(southbridge_device::at_irq_callback),this)); } //------------------------------------------------- diff --git a/src/mess/machine/southbridge.h b/src/mess/machine/southbridge.h index 4bf03a3ce70..df537a75d67 100644 --- a/src/mess/machine/southbridge.h +++ b/src/mess/machine/southbridge.h @@ -72,7 +72,7 @@ protected: virtual void device_reset(); public: - //static IRQ_CALLBACK(at_irq_callback); + IRQ_CALLBACK_MEMBER(at_irq_callback); required_device m_maincpu; required_device m_pic8259_master; required_device m_pic8259_slave;