summaryrefslogtreecommitdiffstats
path: root/src/mess
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess')
-rw-r--r--src/mess/drivers/abc1600.c13
-rw-r--r--src/mess/drivers/apricot.c8
-rw-r--r--src/mess/drivers/apricotp.c8
-rw-r--r--src/mess/drivers/atarist.c14
-rw-r--r--src/mess/drivers/cbm2.c10
-rw-r--r--src/mess/drivers/m20.c7
-rw-r--r--src/mess/drivers/multi16.c7
-rw-r--r--src/mess/drivers/paso1600.c7
-rw-r--r--src/mess/drivers/pc1512.c10
-rw-r--r--src/mess/drivers/pc8801.c29
-rw-r--r--src/mess/drivers/portfoli.c18
-rw-r--r--src/mess/drivers/trs80m2.c8
-rw-r--r--src/mess/drivers/v1050.c10
-rw-r--r--src/mess/drivers/victor9k.c8
-rw-r--r--src/mess/drivers/vidbrain.c18
-rw-r--r--src/mess/drivers/vixen.c6
-rw-r--r--src/mess/drivers/wangpc.c8
-rw-r--r--src/mess/drivers/x1.c27
-rw-r--r--src/mess/drivers/z100.c7
-rw-r--r--src/mess/includes/abc1600.h2
-rw-r--r--src/mess/includes/amstrad.h2
-rw-r--r--src/mess/includes/apricotp.h1
-rw-r--r--src/mess/includes/atarist.h3
-rw-r--r--src/mess/includes/bk.h1
-rw-r--r--src/mess/includes/cbm2.h2
-rw-r--r--src/mess/includes/compis.h2
-rw-r--r--src/mess/includes/mc80.h2
-rw-r--r--src/mess/includes/pc1512.h1
-rw-r--r--src/mess/includes/portfoli.h1
-rw-r--r--src/mess/includes/rmnimbus.h1
-rw-r--r--src/mess/includes/trs80m2.h4
-rw-r--r--src/mess/includes/v1050.h1
-rw-r--r--src/mess/includes/victor9k.h1
-rw-r--r--src/mess/includes/vidbrain.h2
-rw-r--r--src/mess/includes/vixen.h1
-rw-r--r--src/mess/includes/wangpc.h2
-rw-r--r--src/mess/machine/amstrad.c29
-rw-r--r--src/mess/machine/bk.c9
-rw-r--r--src/mess/machine/compis.c44
-rw-r--r--src/mess/machine/mc80.c8
-rw-r--r--src/mess/machine/rmnimbus.c59
-rw-r--r--src/mess/machine/tf20.c4
-rw-r--r--src/mess/machine/tf20.h2
43 files changed, 204 insertions, 203 deletions
diff --git a/src/mess/drivers/abc1600.c b/src/mess/drivers/abc1600.c
index a1ec80f253c..59ee49a3157 100644
--- a/src/mess/drivers/abc1600.c
+++ b/src/mess/drivers/abc1600.c
@@ -1798,26 +1798,25 @@ static ABC1600BUS_INTERFACE( bus2_intf )
//**************************************************************************
//-------------------------------------------------
-// IRQ_CALLBACK( abc1600_int_ack )
+// IRQ_CALLBACK_MEMBER( abc1600_int_ack )
//-------------------------------------------------
-static IRQ_CALLBACK( abc1600_int_ack )
+IRQ_CALLBACK_MEMBER( abc1600_state::abc1600_int_ack )
{
- abc1600_state *state = device->machine().driver_data<abc1600_state>();
int data = 0;
switch (irqline)
{
case M68K_IRQ_2:
- data = state->m_cio->intack_r();
+ data = m_cio->intack_r();
break;
case M68K_IRQ_5:
- data = state->m_dart->m1_r();
+ data = m_dart->m1_r();
break;
case M68K_IRQ_7:
- state->m_maincpu->set_input_line(M68K_IRQ_7, CLEAR_LINE);
+ m_maincpu->set_input_line(M68K_IRQ_7, CLEAR_LINE);
data = M68K_INT_ACK_AUTOVECTOR;
break;
@@ -1834,7 +1833,7 @@ static IRQ_CALLBACK( abc1600_int_ack )
void abc1600_state::machine_start()
{
// interrupt callback
- m_maincpu->set_irq_acknowledge_callback(abc1600_int_ack);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(abc1600_state::abc1600_int_ack),this));
// floppy callbacks
m_fdc->setup_intrq_cb(wd_fdc_t::line_cb(FUNC(abc1600_state::fdc_intrq_w), this));
diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c
index 2fde5240d0c..4fad7195f14 100644
--- a/src/mess/drivers/apricot.c
+++ b/src/mess/drivers/apricot.c
@@ -66,6 +66,7 @@ public:
virtual void palette_init();
UINT32 screen_update_apricot(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(apricot_sio_irq_w);
+ IRQ_CALLBACK_MEMBER(apricot_irq_ack);
};
@@ -142,10 +143,9 @@ static const z80sio_interface apricot_z80sio_intf =
INTERRUPTS
***************************************************************************/
-static IRQ_CALLBACK( apricot_irq_ack )
+IRQ_CALLBACK_MEMBER(apricot_state::apricot_irq_ack)
{
- apricot_state *state = device->machine().driver_data<apricot_state>();
- return pic8259_acknowledge(state->m_pic);
+ return pic8259_acknowledge(m_pic);
}
static const struct pic8259_interface apricot_pic8259_intf =
@@ -266,7 +266,7 @@ DRIVER_INIT_MEMBER(apricot_state,apricot)
prg.unmap_readwrite(0x40000, 0xeffff);
prg.install_ram(0x00000, ram_size - 1, ram);
- m_maincpu->set_irq_acknowledge_callback(apricot_irq_ack);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(apricot_state::apricot_irq_ack),this));
m_video_mode = 0;
m_display_on = 1;
diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c
index 67ac254119f..b0e34bd263b 100644
--- a/src/mess/drivers/apricotp.c
+++ b/src/mess/drivers/apricotp.c
@@ -416,11 +416,9 @@ static APRICOT_KEYBOARD_INTERFACE( kb_intf )
// pic8259_interface pic_intf
//-------------------------------------------------
-static IRQ_CALLBACK( fp_irq_callback )
+ IRQ_CALLBACK_MEMBER(fp_state::fp_irq_callback)
{
- fp_state *state = device->machine().driver_data<fp_state>();
-
- return pic8259_acknowledge(state->m_pic);
+ return pic8259_acknowledge(m_pic);
}
/*
@@ -588,7 +586,7 @@ void fp_state::machine_start()
m_fdc->setup_drq_cb(wd_fdc_t::line_cb(FUNC(fp_state::fdc_drq_w), this));
// register CPU IRQ callback
- m_maincpu->set_irq_acknowledge_callback(fp_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);
diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c
index 2a3428ca3e0..beaae222510 100644
--- a/src/mess/drivers/atarist.c
+++ b/src/mess/drivers/atarist.c
@@ -2114,16 +2114,14 @@ static const centronics_interface centronics_intf =
//**************************************************************************
//-------------------------------------------------
-// IRQ_CALLBACK( atarist_int_ack )
+// IRQ_CALLBACK_MEMBER( atarist_int_ack )
//-------------------------------------------------
-static IRQ_CALLBACK( atarist_int_ack )
+IRQ_CALLBACK_MEMBER(st_state::atarist_int_ack)
{
- st_state *state = device->machine().driver_data<st_state>();
-
if (irqline == M68K_IRQ_6)
{
- return state->m_mfp->get_vector();
+ return m_mfp->get_vector();
}
return M68K_INT_ACK_AUTOVECTOR;
@@ -2199,7 +2197,7 @@ void st_state::machine_start()
configure_memory();
// set CPU interrupt callback
- m_maincpu->set_irq_acknowledge_callback(atarist_int_ack);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(st_state::atarist_int_ack),this));
// allocate timers
m_mouse_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(st_state::st_mouse_tick),this));
@@ -2256,7 +2254,7 @@ void ste_state::machine_start()
configure_memory();
/* set CPU interrupt callback */
- m_maincpu->set_irq_acknowledge_callback(atarist_int_ack);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(st_state::atarist_int_ack),this));
/* allocate timers */
m_dmasound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ste_state::atariste_dmasound_tick),this));
@@ -2296,7 +2294,7 @@ void stbook_state::machine_start()
}
/* set CPU interrupt callback */
- m_maincpu->set_irq_acknowledge_callback(atarist_int_ack);
+ 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();
diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c
index e9a19c04e3b..76dc65b93b1 100644
--- a/src/mess/drivers/cbm2.c
+++ b/src/mess/drivers/cbm2.c
@@ -1725,11 +1725,9 @@ static IEEE488_INTERFACE( ieee488_intf )
// pic8259_interface ext_pic_intf
//-------------------------------------------------
-static IRQ_CALLBACK( pic_irq_callback )
+IRQ_CALLBACK_MEMBER(cbm2_state::pic_irq_callback)
{
- cbm2_state *state = device->machine().driver_data<cbm2_state>();
-
- return pic8259_acknowledge(state->m_ext_pic);
+ return pic8259_acknowledge(m_ext_pic);
}
static pic8259_interface ext_pic_intf =
@@ -2002,7 +2000,7 @@ 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(pic_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);
@@ -2018,7 +2016,7 @@ 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(pic_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);
diff --git a/src/mess/drivers/m20.c b/src/mess/drivers/m20.c
index 993c0feb310..78b4ac2a31b 100644
--- a/src/mess/drivers/m20.c
+++ b/src/mess/drivers/m20.c
@@ -108,6 +108,7 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
void fdc_intrq_w(bool state);
+ IRQ_CALLBACK_MEMBER(m20_irq_callback);
};
@@ -798,12 +799,12 @@ DRIVER_INIT_MEMBER(m20_state,m20)
{
}
-static IRQ_CALLBACK( m20_irq_callback )
+IRQ_CALLBACK_MEMBER(m20_state::m20_irq_callback)
{
if (! irqline)
return 0xff; // NVI, value ignored
else
- return pic8259_acknowledge(device->machine().device("i8259"));
+ return pic8259_acknowledge(machine().device("i8259"));
}
void m20_state::machine_start()
@@ -823,7 +824,7 @@ void m20_state::machine_reset()
else
m_port21 = 0xff;
- m_maincpu->set_irq_acknowledge_callback(m20_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(m20_state::m20_irq_callback),this));
m_fd1797->reset();
diff --git a/src/mess/drivers/multi16.c b/src/mess/drivers/multi16.c
index 69b0d35cda4..b885ea526c5 100644
--- a/src/mess/drivers/multi16.c
+++ b/src/mess/drivers/multi16.c
@@ -33,6 +33,7 @@ public:
virtual void machine_reset();
virtual void video_start();
UINT32 screen_update_multi16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ IRQ_CALLBACK_MEMBER(multi16_irq_callback);
};
@@ -116,9 +117,9 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( multi16 )
INPUT_PORTS_END
-static IRQ_CALLBACK(multi16_irq_callback)
+IRQ_CALLBACK_MEMBER(multi16_state::multi16_irq_callback)
{
- return pic8259_acknowledge( device->machine().device("pic8259") );
+ return pic8259_acknowledge( machine().device("pic8259") );
}
WRITE_LINE_MEMBER( multi16_state::multi16_set_int_line )
@@ -136,7 +137,7 @@ static const struct pic8259_interface multi16_pic8259_config =
void multi16_state::machine_start()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(multi16_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(multi16_state::multi16_irq_callback),this));
}
diff --git a/src/mess/drivers/paso1600.c b/src/mess/drivers/paso1600.c
index edc61558ae2..3d152ab4926 100644
--- a/src/mess/drivers/paso1600.c
+++ b/src/mess/drivers/paso1600.c
@@ -56,6 +56,7 @@ public:
virtual void machine_reset();
virtual void video_start();
UINT32 screen_update_paso1600(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ IRQ_CALLBACK_MEMBER(paso1600_irq_callback);
};
#define mc6845_h_char_total (m_crtc_vreg[0])
@@ -274,9 +275,9 @@ static MC6845_INTERFACE( mc6845_intf )
NULL /* update address callback */
};
-static IRQ_CALLBACK(paso1600_irq_callback)
+IRQ_CALLBACK_MEMBER(paso1600_state::paso1600_irq_callback)
{
- return pic8259_acknowledge( device->machine().device( "pic8259" ) );
+ return pic8259_acknowledge( machine().device( "pic8259" ) );
}
WRITE_LINE_MEMBER( paso1600_state::paso1600_set_int_line )
@@ -294,7 +295,7 @@ static const struct pic8259_interface paso1600_pic8259_config =
void paso1600_state::machine_start()
{
- m_maincpu->set_irq_acknowledge_callback(paso1600_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(paso1600_state::paso1600_irq_callback),this));
}
diff --git a/src/mess/drivers/pc1512.c b/src/mess/drivers/pc1512.c
index 42e4e6c789a..9e8d97e9e15 100644
--- a/src/mess/drivers/pc1512.c
+++ b/src/mess/drivers/pc1512.c
@@ -911,11 +911,9 @@ static I8237_INTERFACE( dmac_intf )
// pic8259_interface pic_intf
//-------------------------------------------------
-static IRQ_CALLBACK( pc1512_irq_callback )
+IRQ_CALLBACK_MEMBER(pc1512_state::pc1512_irq_callback)
{
- pc1512_state *state = device->machine().driver_data<pc1512_state>();
-
- return pic8259_acknowledge(state->m_pic);
+ return pic8259_acknowledge(m_pic);
}
static const struct pic8259_interface pic_intf =
@@ -1099,7 +1097,7 @@ SLOT_INTERFACE_END
void pc1512_state::machine_start()
{
// register CPU IRQ callback
- m_maincpu->set_irq_acknowledge_callback(pc1512_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();
@@ -1179,7 +1177,7 @@ void pc1512_state::machine_reset()
void pc1640_state::machine_start()
{
// register CPU IRQ callback
- m_maincpu->set_irq_acknowledge_callback(pc1512_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));
diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c
index 6a3293a647d..f01a21e7cca 100644
--- a/src/mess/drivers/pc8801.c
+++ b/src/mess/drivers/pc8801.c
@@ -483,6 +483,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(pic_enlg_w);
DECLARE_READ8_MEMBER(opn_porta_r);
DECLARE_READ8_MEMBER(opn_portb_r);
+ IRQ_CALLBACK_MEMBER(pc8801_irq_callback);
};
@@ -2308,12 +2309,11 @@ static I8214_INTERFACE( pic_intf )
DEVCB_DRIVER_LINE_MEMBER(pc8801_state,pic_enlg_w)
};
-static IRQ_CALLBACK( pc8801_irq_callback )
+IRQ_CALLBACK_MEMBER(pc8801_state::pc8801_irq_callback)
{
- pc8801_state *state = device->machine().driver_data<pc8801_state>();
- UINT8 vector = (7 - state->m_pic->a_r());
+ UINT8 vector = (7 - m_pic->a_r());
- state->m_int_state &= ~(1<<vector);
+ m_int_state &= ~(1<<vector);
m_maincpu->set_input_line(0,CLEAR_LINE);
return vector << 1;
@@ -2344,27 +2344,26 @@ INTERRUPT_GEN_MEMBER(pc8801_state::pc8801_vrtc_irq)
#include "debugger.h"
-static IRQ_CALLBACK( pc8801_irq_callback )
+IRQ_CALLBACK_MEMBER(pc8801_state::pc8801_irq_callback)
{
- pc8801_state *state = device->machine().driver_data<pc8801_state>();
- if(state->m_sound_irq_latch)
+ if(m_sound_irq_latch)
{
- state->m_sound_irq_latch = 0;
+ m_sound_irq_latch = 0;
return 4*2;
}
- else if(state->m_vrtc_irq_latch)
+ else if(m_vrtc_irq_latch)
{
- state->m_vrtc_irq_latch = 0;
+ m_vrtc_irq_latch = 0;
return 1*2;
}
- else if(state->m_timer_irq_latch)
+ else if(m_timer_irq_latch)
{
- state->m_timer_irq_latch = 0;
+ m_timer_irq_latch = 0;
return 2*2;
}
- printf("IRQ triggered but no vector on the bus! %02x %02x %02x %02x\n",state->m_i8214_irq_level,state->m_sound_irq_latch,state->m_vrtc_irq_latch,state->m_timer_irq_latch);
- debugger_break(device->machine());
+ printf("IRQ triggered but no vector on the bus! %02x %02x %02x %02x\n",m_i8214_irq_level,m_sound_irq_latch,m_vrtc_irq_latch,m_timer_irq_latch);
+ debugger_break(machine());
return 4*2; //TODO: mustn't happen
}
@@ -2412,7 +2411,7 @@ INTERRUPT_GEN_MEMBER(pc8801_state::pc8801_vrtc_irq)
void pc8801_state::machine_start()
{
- m_maincpu->set_irq_acknowledge_callback(pc8801_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc8801_state::pc8801_irq_callback),this));
machine().device<upd765a_device>("upd765")->setup_intrq_cb(upd765a_device::line_cb(FUNC(pc8801_state::fdc_irq_w), this));
machine().device<floppy_connector>("upd765:0")->get_device()->set_rpm(300);
diff --git a/src/mess/drivers/portfoli.c b/src/mess/drivers/portfoli.c
index 9bd5785c70d..dcd54286874 100644
--- a/src/mess/drivers/portfoli.c
+++ b/src/mess/drivers/portfoli.c
@@ -161,24 +161,22 @@ WRITE8_MEMBER( portfolio_state::sivr_w )
}
//-------------------------------------------------
-// IRQ_CALLBACK( portfolio_int_ack )
+// IRQ_CALLBACK_MEMBER( portfolio_int_ack )
//-------------------------------------------------
-static IRQ_CALLBACK( portfolio_int_ack )
+IRQ_CALLBACK_MEMBER(portfolio_state::portfolio_int_ack)
{
- portfolio_state *state = device->machine().driver_data<portfolio_state>();
-
- UINT8 vector = state->m_sivr;
+ UINT8 vector = m_sivr;
for (int i = 0; i < 4; i++)
{
- if (BIT(state->m_ip, i))
+ if (BIT(m_ip, i))
{
// clear interrupt pending bit
- state->m_ip &= ~(1 << i);
+ m_ip &= ~(1 << i);
if (i == 3)
- vector = state->m_sivr;
+ vector = m_sivr;
else
vector = INTERRUPT_VECTOR[i];
@@ -186,7 +184,7 @@ static IRQ_CALLBACK( portfolio_int_ack )
}
}
- state->check_interrupt();
+ check_interrupt();
return vector;
}
@@ -761,7 +759,7 @@ void portfolio_state::machine_start()
address_space &program = m_maincpu->space(AS_PROGRAM);
/* set CPU interrupt vector callback */
- m_maincpu->set_irq_acknowledge_callback(portfolio_int_ack);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(portfolio_state::portfolio_int_ack),this));
/* memory expansions */
switch (machine().device<ram_device>(RAM_TAG)->size())
diff --git a/src/mess/drivers/trs80m2.c b/src/mess/drivers/trs80m2.c
index 1f19d96be87..8d32366ebe9 100644
--- a/src/mess/drivers/trs80m2.c
+++ b/src/mess/drivers/trs80m2.c
@@ -723,11 +723,9 @@ static const z80_daisy_config trs80m2_daisy_chain[] =
// pic8259_interface pic_intf
//-------------------------------------------------
-static IRQ_CALLBACK( trs80m16_irq_callback )
+IRQ_CALLBACK_MEMBER(trs80m16_state::trs80m16_irq_callback)
{
- trs80m16_state *state = device->machine().driver_data<trs80m16_state>();
-
- return pic8259_acknowledge(state->m_pic);
+ return pic8259_acknowledge(m_pic);
}
static const struct pic8259_interface pic_intf =
@@ -775,7 +773,7 @@ void trs80m16_state::machine_start()
trs80m2_state::machine_start();
// register CPU IRQ callback
- m_maincpu->set_irq_acknowledge_callback(trs80m16_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));
diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c
index bb9456c7848..3775fd65d32 100644
--- a/src/mess/drivers/v1050.c
+++ b/src/mess/drivers/v1050.c
@@ -982,15 +982,13 @@ LEGACY_FLOPPY_OPTIONS_END
// Machine Initialization
-static IRQ_CALLBACK( v1050_int_ack )
+IRQ_CALLBACK_MEMBER(v1050_state::v1050_int_ack)
{
- v1050_state *state = device->machine().driver_data<v1050_state>();
-
- UINT8 vector = 0xf0 | (state->m_pic->a_r() << 1);
+ UINT8 vector = 0xf0 | (m_pic->a_r() << 1);
//logerror("Interrupt Acknowledge Vector: %02x\n", vector);
- state->m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
return vector;
}
@@ -1011,7 +1009,7 @@ void v1050_state::machine_start()
m_rtc->cs1_w(1);
// set CPU interrupt callback
- m_maincpu->set_irq_acknowledge_callback(v1050_int_ack);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(v1050_state::v1050_int_ack),this));
// setup memory banking
UINT8 *ram = machine().device<ram_device>(RAM_TAG)->pointer();
diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c
index 9dc949a58d2..9d004652d5e 100644
--- a/src/mess/drivers/victor9k.c
+++ b/src/mess/drivers/victor9k.c
@@ -915,17 +915,15 @@ static IEEE488_INTERFACE( ieee488_intf )
// Machine Initialization
-static IRQ_CALLBACK( victor9k_irq_callback )
+IRQ_CALLBACK_MEMBER(victor9k_state::victor9k_irq_callback)
{
- victor9k_state *state = device->machine().driver_data<victor9k_state>();
-
- return pic8259_acknowledge(state->m_pic);
+ return pic8259_acknowledge(m_pic);
}
void victor9k_state::machine_start()
{
// set interrupt callback
- m_maincpu->set_irq_acknowledge_callback(victor9k_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(victor9k_state::victor9k_irq_callback),this));
// memory banking
address_space &program = m_maincpu->space(AS_PROGRAM);
diff --git a/src/mess/drivers/vidbrain.c b/src/mess/drivers/vidbrain.c
index 56667836b91..e5ca3a171d1 100644
--- a/src/mess/drivers/vidbrain.c
+++ b/src/mess/drivers/vidbrain.c
@@ -482,29 +482,27 @@ static VIDEOBRAIN_EXPANSION_INTERFACE( expansion_intf )
//**************************************************************************
//-------------------------------------------------
-// IRQ_CALLBACK( vidbrain_int_ack )
+// IRQ_CALLBACK_MEMBER(vidbrain_int_ack)
//-------------------------------------------------
-static IRQ_CALLBACK( vidbrain_int_ack )
+IRQ_CALLBACK_MEMBER(vidbrain_state::vidbrain_int_ack)
{
- vidbrain_state *state = device->machine().driver_data<vidbrain_state>();
-
- UINT16 vector = state->m_vector;
+ UINT16 vector = m_vector;
- switch (state->m_int_enable)
+ switch (m_int_enable)
{
case 1:
vector |= 0x80;
- state->m_ext_int_latch = 0;
+ m_ext_int_latch = 0;
break;
case 3:
vector &= ~0x80;
- state->m_timer_int_latch = 0;
+ m_timer_int_latch = 0;
break;
}
- state->interrupt_check();
+ interrupt_check();
return vector;
}
@@ -530,7 +528,7 @@ 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(vidbrain_int_ack);
+ 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);
diff --git a/src/mess/drivers/vixen.c b/src/mess/drivers/vixen.c
index 70a181910ac..c40d6a991ac 100644
--- a/src/mess/drivers/vixen.c
+++ b/src/mess/drivers/vixen.c
@@ -727,10 +727,10 @@ void vixen_state::fdc_intrq_w(bool state)
//**************************************************************************
//-------------------------------------------------
-// IRQ_CALLBACK( vixen )
+// IRQ_CALLBACK_MEMBER( vixen_int_ack )
//-------------------------------------------------
-static IRQ_CALLBACK( vixen_int_ack )
+IRQ_CALLBACK_MEMBER(vixen_state::vixen_int_ack)
{
// D0 is pulled low
return 0xfe;
@@ -744,7 +744,7 @@ static IRQ_CALLBACK( vixen_int_ack )
void vixen_state::machine_start()
{
// interrupt callback
- m_maincpu->set_irq_acknowledge_callback(vixen_int_ack);
+ 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();
diff --git a/src/mess/drivers/wangpc.c b/src/mess/drivers/wangpc.c
index 23cf111ef37..c549046192b 100644
--- a/src/mess/drivers/wangpc.c
+++ b/src/mess/drivers/wangpc.c
@@ -743,11 +743,9 @@ void wangpc_state::check_level2_interrupts()
pic8259_ir2_w(m_pic, state);
}
-static IRQ_CALLBACK( wangpc_irq_callback )
+IRQ_CALLBACK_MEMBER(wangpc_state::wangpc_irq_callback)
{
- wangpc_state *state = device->machine().driver_data<wangpc_state>();
-
- return pic8259_acknowledge(state->m_pic);
+ return pic8259_acknowledge(m_pic);
}
static const struct pic8259_interface pic_intf =
@@ -1099,7 +1097,7 @@ SLOT_INTERFACE_END
void wangpc_state::machine_start()
{
// register CPU IRQ callback
- m_maincpu->set_irq_acknowledge_callback(wangpc_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(wangpc_state::wangpc_irq_callback),this));
// connect serial keyboard
m_uart->connect(m_kb);
diff --git a/src/mess/drivers/x1.c b/src/mess/drivers/x1.c
index c83b02a9fb6..71769713a1a 100644
--- a/src/mess/drivers/x1.c
+++ b/src/mess/drivers/x1.c
@@ -2347,24 +2347,23 @@ static const cassette_interface x1_cassette_interface =
*************************************/
#ifdef UNUSED_FUNCTION
-static IRQ_CALLBACK(x1_irq_callback)
+IRQ_CALLBACK_MEMBER(x1_state::x1_irq_callback)
{
- x1_state *state = device->machine().driver_data<x1_state>();
- if(state->m_ctc_irq_flag != 0)
+ if(m_ctc_irq_flag != 0)
{
- state->m_ctc_irq_flag = 0;
- if(state->m_key_irq_flag == 0) // if no other devices are pulling the IRQ line high
- device->execute().set_input_line(0, CLEAR_LINE);
- return state->m_irq_vector;
+ m_ctc_irq_flag = 0;
+ if(m_key_irq_flag == 0) // if no other devices are pulling the IRQ line high
+ device.execute().set_input_line(0, CLEAR_LINE);
+ return m_irq_vector;
}
- if(state->m_key_irq_flag != 0)
+ if(m_key_irq_flag != 0)
{
- state->m_key_irq_flag = 0;
- if(state->m_ctc_irq_flag == 0) // if no other devices are pulling the IRQ line high
- device->execute().set_input_line(0, CLEAR_LINE);
- return state->m_key_irq_vector;
+ m_key_irq_flag = 0;
+ if(m_ctc_irq_flag == 0) // if no other devices are pulling the IRQ line high
+ device.execute().set_input_line(0, CLEAR_LINE);
+ return m_key_irq_vector;
}
- return state->m_irq_vector;
+ return m_irq_vector;
}
#endif
@@ -2442,7 +2441,7 @@ MACHINE_RESET_MEMBER(x1_state,x1)
m_io_bank_mode = 0;
- //machine().device("x1_cpu")->execute().set_irq_acknowledge_callback(x1_irq_callback);
+ //machine().device("x1_cpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(x1_state::x1_irq_callback),this));
m_cmt_current_cmd = 0;
m_cmt_test = 0;
diff --git a/src/mess/drivers/z100.c b/src/mess/drivers/z100.c
index ebdce4713cf..5319c1a9510 100644
--- a/src/mess/drivers/z100.c
+++ b/src/mess/drivers/z100.c
@@ -206,6 +206,7 @@ public:
virtual void palette_init();
UINT32 screen_update_z100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
+ IRQ_CALLBACK_MEMBER(z100_irq_callback);
};
#define mc6845_h_char_total (m_crtc_vreg[0])
@@ -594,9 +595,9 @@ INPUT_PORTS_START( z100 )
PORT_CONFSETTING( 0x01, "Color" )
INPUT_PORTS_END
-static IRQ_CALLBACK(z100_irq_callback)
+IRQ_CALLBACK_MEMBER(z100_state::z100_irq_callback)
{
- return pic8259_acknowledge( device->machine().device( "pic8259_master" ) );
+ return pic8259_acknowledge( machine().device( "pic8259_master" ) );
}
WRITE_LINE_MEMBER( z100_state::z100_pic_irq )
@@ -751,7 +752,7 @@ void z100_state::palette_init()
void z100_state::machine_start()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(z100_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(z100_state::z100_irq_callback),this));
m_mc6845 = machine().device<mc6845_device>("crtc");
}
diff --git a/src/mess/includes/abc1600.h b/src/mess/includes/abc1600.h
index 8ea6dc1f1bf..f86e0454233 100644
--- a/src/mess/includes/abc1600.h
+++ b/src/mess/includes/abc1600.h
@@ -157,6 +157,8 @@ public:
DECLARE_WRITE8_MEMBER( cio_pc_w );
DECLARE_WRITE_LINE_MEMBER( nmi_w );
+
+ IRQ_CALLBACK_MEMBER( abc1600_int_ack );
void fdc_intrq_w(bool state);
void fdc_drq_w(bool state);
diff --git a/src/mess/includes/amstrad.h b/src/mess/includes/amstrad.h
index d798ec69147..2720ce2b78b 100644
--- a/src/mess/includes/amstrad.h
+++ b/src/mess/includes/amstrad.h
@@ -189,6 +189,8 @@ public:
void aleste_interrupt(bool state);
DECLARE_FLOPPY_FORMATS( floppy_formats );
+
+ IRQ_CALLBACK_MEMBER(amstrad_cpu_acknowledge_int);
};
diff --git a/src/mess/includes/apricotp.h b/src/mess/includes/apricotp.h
index 824573a8ee4..5dc56708fde 100644
--- a/src/mess/includes/apricotp.h
+++ b/src/mess/includes/apricotp.h
@@ -112,6 +112,7 @@ public:
// video state
optional_shared_ptr<UINT16> m_video_ram;
UINT8 m_video;
+ IRQ_CALLBACK_MEMBER(fp_irq_callback);
};
diff --git a/src/mess/includes/atarist.h b/src/mess/includes/atarist.h
index 576cfccd35c..ed86ac27c99 100644
--- a/src/mess/includes/atarist.h
+++ b/src/mess/includes/atarist.h
@@ -315,6 +315,7 @@ public:
TIMER_CALLBACK_MEMBER(atarist_shifter_tick);
TIMER_CALLBACK_MEMBER(atarist_glue_tick);
TIMER_CALLBACK_MEMBER(atarist_blitter_tick);
+ IRQ_CALLBACK_MEMBER(atarist_int_ack);
};
class megast_state : public st_state
@@ -370,7 +371,7 @@ public:
TIMER_CALLBACK_MEMBER(atariste_dmasound_tick);
TIMER_CALLBACK_MEMBER(atariste_microwire_tick);
-
+
void dmasound_set_state(int level);
void dmasound_tick();
void microwire_shift();
diff --git a/src/mess/includes/bk.h b/src/mess/includes/bk.h
index faafa357e5a..81bc7758c6e 100644
--- a/src/mess/includes/bk.h
+++ b/src/mess/includes/bk.h
@@ -38,6 +38,7 @@ public:
virtual void video_start();
UINT32 screen_update_bk0010(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(keyboard_callback);
+ IRQ_CALLBACK_MEMBER(bk0010_irq_callback);
};
#endif /* BK_H_ */
diff --git a/src/mess/includes/cbm2.h b/src/mess/includes/cbm2.h
index ceb37b07d30..a2447eadd2c 100644
--- a/src/mess/includes/cbm2.h
+++ b/src/mess/includes/cbm2.h
@@ -206,6 +206,8 @@ public:
DECLARE_READ8_MEMBER( ext_cia_pb_r );
DECLARE_WRITE8_MEMBER( ext_cia_pb_w );
+ IRQ_CALLBACK_MEMBER(pic_irq_callback);
+
// memory state
int m_dramon;
int m_busen1;
diff --git a/src/mess/includes/compis.h b/src/mess/includes/compis.h
index e5a4b319dad..2ae2e7cea0a 100644
--- a/src/mess/includes/compis.h
+++ b/src/mess/includes/compis.h
@@ -187,6 +187,8 @@ public:
INTERRUPT_GEN_MEMBER(compis_vblank_int);
TIMER_CALLBACK_MEMBER(internal_timer_int);
TIMER_CALLBACK_MEMBER(dma_timer_callback);
+ IRQ_CALLBACK_MEMBER(int_callback);
+ IRQ_CALLBACK_MEMBER(compis_irq_callback);
};
diff --git a/src/mess/includes/mc80.h b/src/mess/includes/mc80.h
index c55a5b327ad..bacbdfbb980 100644
--- a/src/mess/includes/mc80.h
+++ b/src/mess/includes/mc80.h
@@ -46,6 +46,8 @@ public:
UINT32 screen_update_mc8030(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(mc8020_kbd);
DECLARE_WRITE_LINE_MEMBER(ctc_z2_w);
+ IRQ_CALLBACK_MEMBER(mc8020_irq_callback);
+ IRQ_CALLBACK_MEMBER(mc8030_irq_callback);
};
diff --git a/src/mess/includes/pc1512.h b/src/mess/includes/pc1512.h
index 23548dccf3d..bc3395a7e1e 100644
--- a/src/mess/includes/pc1512.h
+++ b/src/mess/includes/pc1512.h
@@ -160,6 +160,7 @@ public:
DECLARE_INPUT_CHANGED_MEMBER( mouse_x_changed );
DECLARE_INPUT_CHANGED_MEMBER( mouse_y_changed );
DECLARE_FLOPPY_FORMATS( floppy_formats );
+ IRQ_CALLBACK_MEMBER(pc1512_irq_callback);
// system status register
int m_pit1;
diff --git a/src/mess/includes/portfoli.h b/src/mess/includes/portfoli.h
index 15a920f1d23..fcf1a41e2ac 100644
--- a/src/mess/includes/portfoli.h
+++ b/src/mess/includes/portfoli.h
@@ -111,6 +111,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(system_tick);
TIMER_DEVICE_CALLBACK_MEMBER(counter_tick);
DECLARE_READ8_MEMBER(hd61830_rd_r);
+ IRQ_CALLBACK_MEMBER(portfolio_int_ack);
};
#endif
diff --git a/src/mess/includes/rmnimbus.h b/src/mess/includes/rmnimbus.h
index 027a24dec7d..97afcbf348b 100644
--- a/src/mess/includes/rmnimbus.h
+++ b/src/mess/includes/rmnimbus.h
@@ -467,4 +467,5 @@ public:
DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_msg_w);
DECLARE_WRITE_LINE_MEMBER(nimbus_scsi_req_w);
void nimbus_scsi_linechange( UINT8 mask, UINT8 state );
+ IRQ_CALLBACK_MEMBER(int_callback);
};
diff --git a/src/mess/includes/trs80m2.h b/src/mess/includes/trs80m2.h
index 565e5aba530..390128c2d5c 100644
--- a/src/mess/includes/trs80m2.h
+++ b/src/mess/includes/trs80m2.h
@@ -125,7 +125,7 @@ public:
int m_rtc_int;
int m_enable_rtc_int;
- TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick);
+ TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick);
};
class trs80m16_state : public trs80m2_state
@@ -144,6 +144,8 @@ public:
DECLARE_WRITE8_MEMBER( ual_w );
DECLARE_WRITE8_MEMBER( tcl_w );
+
+ IRQ_CALLBACK_MEMBER(trs80m16_irq_callback);
UINT16 m_ual;
UINT8 m_limit[2];
diff --git a/src/mess/includes/v1050.h b/src/mess/includes/v1050.h
index aec7cb536c2..c0fb3025ec6 100644
--- a/src/mess/includes/v1050.h
+++ b/src/mess/includes/v1050.h
@@ -184,6 +184,7 @@ public:
DECLARE_WRITE8_MEMBER(m6502_ppi_pc_w);
DECLARE_WRITE8_MEMBER(misc_ppi_pb_w);
DECLARE_READ8_MEMBER(misc_ppi_pc_r);
+ IRQ_CALLBACK_MEMBER(v1050_int_ack);
};
//----------- defined in video/v1050.c -----------
diff --git a/src/mess/includes/victor9k.h b/src/mess/includes/victor9k.h
index 726f37589c4..b8a4958be87 100644
--- a/src/mess/includes/victor9k.h
+++ b/src/mess/includes/victor9k.h
@@ -127,6 +127,7 @@ public:
int m_side; /* selected side */
DECLARE_WRITE_LINE_MEMBER(mux_serial_b_w);
DECLARE_WRITE_LINE_MEMBER(mux_serial_a_w);
+ IRQ_CALLBACK_MEMBER(victor9k_irq_callback);
};
#endif
diff --git a/src/mess/includes/vidbrain.h b/src/mess/includes/vidbrain.h
index 654a2f5e754..bd99b1f4730 100644
--- a/src/mess/includes/vidbrain.h
+++ b/src/mess/includes/vidbrain.h
@@ -97,6 +97,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( ext_int_w );
DECLARE_WRITE_LINE_MEMBER( hblank_w );
+ IRQ_CALLBACK_MEMBER(vidbrain_int_ack);
+
void interrupt_check();
// F3853 SMI state
diff --git a/src/mess/includes/vixen.h b/src/mess/includes/vixen.h
index d2443e360f4..9bb48bc6a40 100644
--- a/src/mess/includes/vixen.h
+++ b/src/mess/includes/vixen.h
@@ -133,6 +133,7 @@ public:
DECLARE_DRIVER_INIT(vixen);
TIMER_DEVICE_CALLBACK_MEMBER(vsync_tick);
+ IRQ_CALLBACK_MEMBER(vixen_int_ack);
};
#endif
diff --git a/src/mess/includes/wangpc.h b/src/mess/includes/wangpc.h
index 176dbed3c9a..ee23d971eba 100644
--- a/src/mess/includes/wangpc.h
+++ b/src/mess/includes/wangpc.h
@@ -165,6 +165,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( bus_irq2_w );
DECLARE_FLOPPY_FORMATS( floppy_formats );
+
+ IRQ_CALLBACK_MEMBER(wangpc_irq_callback);
void fdc_irq(bool state);
void fdc_drq(bool state);
diff --git a/src/mess/machine/amstrad.c b/src/mess/machine/amstrad.c
index 1a004c9ab39..0977c48c463 100644
--- a/src/mess/machine/amstrad.c
+++ b/src/mess/machine/amstrad.c
@@ -2670,28 +2670,27 @@ READ8_MEMBER(amstrad_state::amstrad_psg_porta_read)
/* called when cpu acknowledges int */
/* reset top bit of interrupt line counter */
/* this ensures that the next interrupt is no closer than 32 lines */
-static IRQ_CALLBACK(amstrad_cpu_acknowledge_int)
+IRQ_CALLBACK_MEMBER(amstrad_state::amstrad_cpu_acknowledge_int)
{
- amstrad_state *state = device->machine().driver_data<amstrad_state>();
// DMA interrupts can be automatically cleared if bit 0 of &6805 is set to 0
- if( state->m_asic.enabled && state->m_plus_irq_cause != 0x06 && state->m_asic.dma_clear & 0x01)
+ if( m_asic.enabled && m_plus_irq_cause != 0x06 && m_asic.dma_clear & 0x01)
{
- logerror("IRQ: Not cleared, IRQ was called by DMA [%i]\n",state->m_plus_irq_cause);
- state->m_asic.ram[0x2c0f] &= ~0x80; // not a raster interrupt, so this bit is reset
- return (state->m_asic.ram[0x2805] & 0xf8) | state->m_plus_irq_cause;
+ logerror("IRQ: Not cleared, IRQ was called by DMA [%i]\n",m_plus_irq_cause);
+ m_asic.ram[0x2c0f] &= ~0x80; // not a raster interrupt, so this bit is reset
+ return (m_asic.ram[0x2805] & 0xf8) | m_plus_irq_cause;
}
- device->machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
- state->m_gate_array.hsync_counter &= 0x1F;
- if ( state->m_asic.enabled )
+ machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
+ m_gate_array.hsync_counter &= 0x1F;
+ if ( m_asic.enabled )
{
- if(state->m_plus_irq_cause == 6) // bit 7 is set "if last interrupt acknowledge cycle was caused by a raster interrupt"
- state->m_asic.ram[0x2c0f] |= 0x80;
+ if(m_plus_irq_cause == 6) // bit 7 is set "if last interrupt acknowledge cycle was caused by a raster interrupt"
+ m_asic.ram[0x2c0f] |= 0x80;
else
{
- state->m_asic.ram[0x2c0f] &= ~0x80;
- state->m_asic.ram[0x2c0f] &= (0x40 >> state->m_plus_irq_cause/2);
+ m_asic.ram[0x2c0f] &= ~0x80;
+ m_asic.ram[0x2c0f] &= (0x40 >> m_plus_irq_cause/2);
}
- return (state->m_asic.ram[0x2805] & 0xf8) | state->m_plus_irq_cause;
+ return (m_asic.ram[0x2805] & 0xf8) | m_plus_irq_cause;
}
return 0xFF;
}
@@ -2898,7 +2897,7 @@ static void amstrad_common_init(running_machine &machine)
(const UINT8*)amstrad_cycle_table_ex);
/* Juergen is a cool dude! */
- state->m_maincpu->set_irq_acknowledge_callback(amstrad_cpu_acknowledge_int);
+ state->m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(amstrad_state::amstrad_cpu_acknowledge_int),state));
}
TIMER_CALLBACK_MEMBER(amstrad_state::cb_set_resolution)
diff --git a/src/mess/machine/bk.c b/src/mess/machine/bk.c
index a99f8c92f96..f87f1c2a5c2 100644
--- a/src/mess/machine/bk.c
+++ b/src/mess/machine/bk.c
@@ -70,16 +70,15 @@ void bk_state::machine_start()
machine().scheduler().timer_pulse(attotime::from_hz(2400), timer_expired_delegate(FUNC(bk_state::keyboard_callback),this));
}
-static IRQ_CALLBACK(bk0010_irq_callback)
+IRQ_CALLBACK_MEMBER(bk_state::bk0010_irq_callback)
{
- bk_state *state = device->machine().driver_data<bk_state>();
- device->execute().set_input_line(0, CLEAR_LINE);
- return state->m_key_irq_vector;
+ device.execute().set_input_line(0, CLEAR_LINE);
+ return m_key_irq_vector;
}
void bk_state::machine_reset()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(bk0010_irq_callback);
+ machine().device("maincpu")->execute().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/compis.c b/src/mess/machine/compis.c
index e0a2274c86e..88de15f4bdc 100644
--- a/src/mess/machine/compis.c
+++ b/src/mess/machine/compis.c
@@ -345,39 +345,38 @@ WRITE16_MEMBER( compis_state::compis_usart_w )
* 80186 interrupt controller
*
*************************************/
-static IRQ_CALLBACK(int_callback)
+IRQ_CALLBACK_MEMBER(compis_state::int_callback)
{
- compis_state *state = device->machine().driver_data<compis_state>();
if (LOG_INTERRUPTS)
- logerror("(%f) **** Acknowledged interrupt vector %02X\n", device->machine().time().as_double(), state->m_i186.intr.poll_status & 0x1f);
+ logerror("(%f) **** Acknowledged interrupt vector %02X\n", machine().time().as_double(), m_i186.intr.poll_status & 0x1f);
/* clear the interrupt */
- device->execute().set_input_line(0, CLEAR_LINE);
- state->m_i186.intr.pending = 0;
+ device.execute().set_input_line(0, CLEAR_LINE);
+ m_i186.intr.pending = 0;
/* clear the request and set the in-service bit */
#if LATCH_INTS
- state->m_i186.intr.request &= ~state->m_i186.intr.ack_mask;
+ m_i186.intr.request &= ~m_i186.intr.ack_mask;
#else
- state->m_i186.intr.request &= ~(state->m_i186.intr.ack_mask & 0x0f);
+ m_i186.intr.request &= ~(m_i186.intr.ack_mask & 0x0f);
#endif
- state->m_i186.intr.in_service |= state->m_i186.intr.ack_mask;
- if (state->m_i186.intr.ack_mask == 0x0001)
+ m_i186.intr.in_service |= m_i186.intr.ack_mask;
+ if (m_i186.intr.ack_mask == 0x0001)
{
- switch (state->m_i186.intr.poll_status & 0x1f)
+ switch (m_i186.intr.poll_status & 0x1f)
{
- case 0x08: state->m_i186.intr.status &= ~0x01; break;
- case 0x12: state->m_i186.intr.status &= ~0x02; break;
- case 0x13: state->m_i186.intr.status &= ~0x04; break;
+ case 0x08: m_i186.intr.status &= ~0x01; break;
+ case 0x12: m_i186.intr.status &= ~0x02; break;
+ case 0x13: m_i186.intr.status &= ~0x04; break;
}
}
- state->m_i186.intr.ack_mask = 0;
+ m_i186.intr.ack_mask = 0;
/* a request no longer pending */
- state->m_i186.intr.poll_status &= ~0x8000;
+ m_i186.intr.poll_status &= ~0x8000;
/* return the vector */
- return state->m_i186.intr.poll_status & 0x1f;
+ return m_i186.intr.poll_status & 0x1f;
}
@@ -819,7 +818,7 @@ READ16_MEMBER( compis_state::compis_i186_internal_port_r )
case 0x12:
if (LOG_PORTS) logerror("%05X:read 80186 interrupt poll\n", m_maincpu->pc());
if (m_i186.intr.poll_status & 0x8000)
- int_callback(machine().device("maincpu"), 0);
+ int_callback(*machine().device("maincpu"), 0);
return m_i186.intr.poll_status;
case 0x13:
@@ -1152,7 +1151,7 @@ WRITE16_MEMBER( compis_state::compis_i186_internal_port_w )
/* we need to do this at a time when the I86 context is swapped in */
/* this register is generally set once at startup and never again, so it's a good */
/* time to set it up */
- m_maincpu->set_irq_acknowledge_callback(int_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(compis_state::int_callback),this));
break;
case 0x60:
@@ -1293,16 +1292,15 @@ const struct pic8259_interface compis_pic8259_slave_config =
};
-static IRQ_CALLBACK( compis_irq_callback )
+IRQ_CALLBACK_MEMBER(compis_state::compis_irq_callback)
{
- compis_state *state = device->machine().driver_data<compis_state>();
- return pic8259_acknowledge(state->m_8259m);
+ return pic8259_acknowledge(m_8259m);
}
DRIVER_INIT_MEMBER(compis_state,compis)
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(compis_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(compis_state::compis_irq_callback),this));
memset (&m_compis, 0, sizeof (m_compis) );
}
@@ -1324,7 +1322,7 @@ void compis_state::machine_reset()
compis_keyb_init(this);
/* OSP PIC 8259 */
- m_maincpu->set_irq_acknowledge_callback(compis_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(compis_state::compis_irq_callback),this));
}
/*-------------------------------------------------------------------------*/
diff --git a/src/mess/machine/mc80.c b/src/mess/machine/mc80.c
index 72b8eb50284..355856cc87d 100644
--- a/src/mess/machine/mc80.c
+++ b/src/mess/machine/mc80.c
@@ -13,14 +13,14 @@
/* Implementation for MC80.2x */
/*****************************************************************************/
-static IRQ_CALLBACK( mc8020_irq_callback )
+IRQ_CALLBACK_MEMBER(mc80_state::mc8020_irq_callback)
{
return 0x00;
}
MACHINE_RESET_MEMBER(mc80_state,mc8020)
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(mc8020_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mc80_state::mc8020_irq_callback),this));
}
WRITE_LINE_MEMBER( mc80_state::ctc_z0_w )
@@ -107,14 +107,14 @@ WRITE8_MEMBER( mc80_state::mc8030_eprom_prog_w )
{
}
-static IRQ_CALLBACK( mc8030_irq_callback )
+IRQ_CALLBACK_MEMBER(mc80_state::mc8030_irq_callback )
{
return 0x20;
}
MACHINE_RESET_MEMBER(mc80_state,mc8030)
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(mc8030_irq_callback);
+ machine().device("maincpu")->execute().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/rmnimbus.c b/src/mess/machine/rmnimbus.c
index b38f6269827..3852016dcc6 100644
--- a/src/mess/machine/rmnimbus.c
+++ b/src/mess/machine/rmnimbus.c
@@ -194,67 +194,66 @@ static void mouse_js_reset(running_machine &machine);
* 80186 interrupt controller
*
*************************************/
-static IRQ_CALLBACK(int_callback)
+IRQ_CALLBACK_MEMBER(rmnimbus_state::int_callback)
{
- rmnimbus_state *state = device->machine().driver_data<rmnimbus_state>();
UINT8 vector;
UINT16 old;
UINT16 oldreq;
if (LOG_INTERRUPTS)
- logerror("(%f) **** Acknowledged interrupt vector %02X\n", device->machine().time().as_double(), state->m_i186.intr.poll_status & 0x1f);
+ logerror("(%f) **** Acknowledged interrupt vector %02X\n", machine().time().as_double(), m_i186.intr.poll_status & 0x1f);
/* clear the interrupt */
- device->execute().set_input_line(0, CLEAR_LINE);
- state->m_i186.intr.pending = 0;
+ device.execute().set_input_line(0, CLEAR_LINE);
+ m_i186.intr.pending = 0;
- oldreq=state->m_i186.intr.request;
+ oldreq=m_i186.intr.request;
/* clear the request and set the in-service bit */
#if LATCH_INTS
- state->m_i186.intr.request &= ~state->m_i186.intr.ack_mask;
+ m_i186.intr.request &= ~m_i186.intr.ack_mask;
#else
- state->m_i186.intr.request &= ~(state->m_i186.intr.ack_mask & 0x0f);
+ m_i186.intr.request &= ~(m_i186.intr.ack_mask & 0x0f);
#endif
- if((LOG_INTERRUPTS) && (state->m_i186.intr.request!=oldreq))
- logerror("i186.intr.request changed from %02X to %02X\n",oldreq,state->m_i186.intr.request);
+ if((LOG_INTERRUPTS) && (m_i186.intr.request!=oldreq))
+ logerror("i186.intr.request changed from %02X to %02X\n",oldreq,m_i186.intr.request);
- old=state->m_i186.intr.in_service;
+ old=m_i186.intr.in_service;
- state->m_i186.intr.in_service |= state->m_i186.intr.ack_mask;
+ m_i186.intr.in_service |= m_i186.intr.ack_mask;
- if((LOG_INTERRUPTS) && (state->m_i186.intr.in_service!=old))
- logerror("i186.intr.in_service changed from %02X to %02X\n",old,state->m_i186.intr.in_service);
+ if((LOG_INTERRUPTS) && (m_i186.intr.in_service!=old))
+ logerror("i186.intr.in_service changed from %02X to %02X\n",old,m_i186.intr.in_service);
- if (state->m_i186.intr.ack_mask == 0x0001)
+ if (m_i186.intr.ack_mask == 0x0001)
{
- switch (state->m_i186.intr.poll_status & 0x1f)
+ switch (m_i186.intr.poll_status & 0x1f)
{
- case 0x08: state->m_i186.intr.status &= ~0x01; break;
- case 0x12: state->m_i186.intr.status &= ~0x02; break;
- case 0x13: state->m_i186.intr.status &= ~0x04; break;
+ case 0x08: m_i186.intr.status &= ~0x01; break;
+ case 0x12: m_i186.intr.status &= ~0x02; break;
+ case 0x13: m_i186.intr.status &= ~0x04; break;
}
}
- state->m_i186.intr.ack_mask = 0;
+ m_i186.intr.ack_mask = 0;
/* a request no longer pending */
- state->m_i186.intr.poll_status &= ~0x8000;
+ m_i186.intr.poll_status &= ~0x8000;
/* return the vector */
- switch(state->m_i186.intr.poll_status & 0x1F)
+ switch(m_i186.intr.poll_status & 0x1F)
{
- case 0x0C : vector=(state->m_i186.intr.ext[0] & EXTINT_CTRL_CASCADE) ? state->m_i186.intr.ext_vector[0] : (state->m_i186.intr.poll_status & 0x1f); break;
- case 0x0D : vector=(state->m_i186.intr.ext[1] & EXTINT_CTRL_CASCADE) ? state->m_i186.intr.ext_vector[1] : (state->m_i186.intr.poll_status & 0x1f); break;
+ case 0x0C : vector=(m_i186.intr.ext[0] & EXTINT_CTRL_CASCADE) ? m_i186.intr.ext_vector[0] : (m_i186.intr.poll_status & 0x1f); break;
+ case 0x0D : vector=(m_i186.intr.ext[1] & EXTINT_CTRL_CASCADE) ? m_i186.intr.ext_vector[1] : (m_i186.intr.poll_status & 0x1f); break;
default :
- vector=state->m_i186.intr.poll_status & 0x1f; break;
+ vector=m_i186.intr.poll_status & 0x1f; break;
}
if (LOG_INTERRUPTS)
{
- logerror("i186.intr.ext[0]=%04X i186.intr.ext[1]=%04X\n",state->m_i186.intr.ext[0],state->m_i186.intr.ext[1]);
- logerror("Ext vectors : %02X %02X\n",state->m_i186.intr.ext_vector[0],state->m_i186.intr.ext_vector[1]);
- logerror("Int %02X Calling vector %02X\n",state->m_i186.intr.poll_status,vector);
+ logerror("i186.intr.ext[0]=%04X i186.intr.ext[1]=%04X\n",m_i186.intr.ext[0],m_i186.intr.ext[1]);
+ logerror("Ext vectors : %02X %02X\n",m_i186.intr.ext_vector[0],m_i186.intr.ext_vector[1]);
+ logerror("Int %02X Calling vector %02X\n",m_i186.intr.poll_status,vector);
}
return vector;
@@ -855,7 +854,7 @@ READ16_MEMBER(rmnimbus_state::nimbus_i186_internal_port_r)
case 0x12:
if (LOG_PORTS) logerror("%05X:read 80186 interrupt poll\n", space.device().safe_pc());
if (m_i186.intr.poll_status & 0x8000)
- int_callback(machine().device(MAINCPU_TAG), 0);
+ int_callback(*machine().device(MAINCPU_TAG), 0);
return m_i186.intr.poll_status;
case 0x13:
@@ -1167,7 +1166,7 @@ WRITE16_MEMBER(rmnimbus_state::nimbus_i186_internal_port_w)
/* we need to do this at a time when the I86 context is swapped in */
/* this register is generally set once at startup and never again, so it's a good */
/* time to set it up */
- space.device().execute().set_irq_acknowledge_callback(int_callback);
+ space.device().execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(rmnimbus_state::int_callback),this));
break;
case 0x60:
diff --git a/src/mess/machine/tf20.c b/src/mess/machine/tf20.c
index 61088b58fe6..7bc2096a57c 100644
--- a/src/mess/machine/tf20.c
+++ b/src/mess/machine/tf20.c
@@ -182,7 +182,7 @@ 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(irq_callback);
+ m_cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(epson_tf20_device::irq_callback),this));
m_fd0 = subdevice<floppy_connector>("5a:0")->get_device();
m_fd1 = subdevice<floppy_connector>("5a:1")->get_device();
@@ -237,7 +237,7 @@ void epson_tf20_device::device_timer(emu_timer &timer, device_timer_id id, int p
// irq vector callback
//-------------------------------------------------
-IRQ_CALLBACK( epson_tf20_device::irq_callback )
+IRQ_CALLBACK_MEMBER( epson_tf20_device::irq_callback )
{
return 0x00;
}
diff --git a/src/mess/machine/tf20.h b/src/mess/machine/tf20.h
index a799fe7bf42..6b98cd01487 100644
--- a/src/mess/machine/tf20.h
+++ b/src/mess/machine/tf20.h
@@ -42,7 +42,7 @@ public:
DECLARE_READ8_MEMBER( rom_disable_r );
DECLARE_READ8_MEMBER( upd765_tc_r );
DECLARE_WRITE8_MEMBER( fdc_control_w );
- static IRQ_CALLBACK( irq_callback );
+ IRQ_CALLBACK_MEMBER( irq_callback );
void fdc_irq(bool state);