summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mess/drivers/esq5505.c23
-rw-r--r--src/mess/drivers/fk1.c11
-rw-r--r--src/mess/drivers/mod8.c5
-rw-r--r--src/mess/drivers/pc6001.c15
-rw-r--r--src/mess/includes/galaxy.h6
-rw-r--r--src/mess/includes/poly88.h1
-rw-r--r--src/mess/machine/galaxy.c11
-rw-r--r--src/mess/machine/poly88.c7
-rw-r--r--src/mess/video/galaxy.c7
9 files changed, 41 insertions, 45 deletions
diff --git a/src/mess/drivers/esq5505.c b/src/mess/drivers/esq5505.c
index 4fae3c4a6de..727f936b395 100644
--- a/src/mess/drivers/esq5505.c
+++ b/src/mess/drivers/esq5505.c
@@ -181,6 +181,7 @@ public:
DECLARE_DRIVER_INIT(sq1);
DECLARE_DRIVER_INIT(denib);
DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
+ IRQ_CALLBACK_MEMBER(maincpu_irq_acknowledge_callback);
};
FLOPPY_FORMATS_MEMBER( esq5505_state::floppy_formats )
@@ -191,29 +192,29 @@ static SLOT_INTERFACE_START( ensoniq_floppies )
SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
SLOT_INTERFACE_END
-static int maincpu_irq_acknowledge_callback(device_t *device, int irqnum) {
+IRQ_CALLBACK_MEMBER(esq5505_state::maincpu_irq_acknowledge_callback)
+{
// We immediately update the interrupt presented to the CPU, so that it doesn't
// end up retrying the same interrupt over and over. We then return the appropriate vector.
- esq5505_state *esq5505 = device->machine().driver_data<esq5505_state>();
int vector = 0;
- switch(irqnum) {
+ switch(irqline) {
case 1:
- esq5505->otis_irq_state = 0;
+ otis_irq_state = 0;
vector = M68K_INT_ACK_AUTOVECTOR;
break;
case 2:
- esq5505->dmac_irq_state = 0;
- vector = esq5505->dmac_irq_vector;
+ dmac_irq_state = 0;
+ vector = dmac_irq_vector;
break;
case 3:
- esq5505->duart_irq_state = 0;
- vector = esq5505->duart_irq_vector;
+ duart_irq_state = 0;
+ vector = duart_irq_vector;
break;
default:
- printf("\nUnexpected IRQ ACK Callback: IRQ %d\n", irqnum);
+ printf("\nUnexpected IRQ ACK Callback: IRQ %d\n", irqline);
return 0;
}
- esq5505->update_irq_to_maincpu();
+ update_irq_to_maincpu();
return vector;
}
@@ -221,7 +222,7 @@ void esq5505_state::machine_reset()
{
m_rom = (UINT16 *)(void *)machine().root_device().memregion("osrom")->base();
m_ram = (UINT16 *)(void *)machine().root_device().memshare("osram")->ptr();
- m_maincpu->set_irq_acknowledge_callback(maincpu_irq_acknowledge_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(esq5505_state::maincpu_irq_acknowledge_callback),this));
}
void esq5505_state::update_irq_to_maincpu() {
diff --git a/src/mess/drivers/fk1.c b/src/mess/drivers/fk1.c
index 50e3af653fd..9ad7fa07149 100644
--- a/src/mess/drivers/fk1.c
+++ b/src/mess/drivers/fk1.c
@@ -54,6 +54,7 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
TIMER_DEVICE_CALLBACK_MEMBER(vsync_callback);
+ IRQ_CALLBACK_MEMBER(fk1_irq_callback);
};
@@ -404,12 +405,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(fk1_state::keyboard_callback)
0 ? PRINTER
*/
-static IRQ_CALLBACK (fk1_irq_callback)
+IRQ_CALLBACK_MEMBER(fk1_state::fk1_irq_callback)
{
- fk1_state *state = device->machine().driver_data<fk1_state>();
-
- logerror("IRQ %02x\n", state->m_int_vector*2);
- return state->m_int_vector * 2;
+ logerror("IRQ %02x\n", m_int_vector*2);
+ return m_int_vector * 2;
}
TIMER_DEVICE_CALLBACK_MEMBER(fk1_state::vsync_callback)
@@ -430,7 +429,7 @@ void fk1_state::machine_reset()
membank("bank3")->set_base(ram + 0x8000);
membank("bank4")->set_base(ram + 0xc000);
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(fk1_irq_callback);
+ machine().device("maincpu")->execute().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)
diff --git a/src/mess/drivers/mod8.c b/src/mess/drivers/mod8.c
index 127d7884daf..bc9aaf1a508 100644
--- a/src/mess/drivers/mod8.c
+++ b/src/mess/drivers/mod8.c
@@ -36,6 +36,7 @@ public:
UINT8 m_tty_key_data;
int m_tty_cnt;
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(mod8_irq_callback);
};
WRITE8_MEMBER( mod8_state::out_w )
@@ -82,14 +83,14 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( mod8 )
INPUT_PORTS_END
-static IRQ_CALLBACK ( mod8_irq_callback )
+IRQ_CALLBACK_MEMBER(mod8_state::mod8_irq_callback)
{
return 0xC0; // LAA - NOP equivalent
}
void mod8_state::machine_reset()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(mod8_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mod8_state::mod8_irq_callback),this));
}
WRITE8_MEMBER( mod8_state::kbd_put )
diff --git a/src/mess/drivers/pc6001.c b/src/mess/drivers/pc6001.c
index 534060eda08..e0805a4df8f 100644
--- a/src/mess/drivers/pc6001.c
+++ b/src/mess/drivers/pc6001.c
@@ -266,7 +266,7 @@ public:
DECLARE_WRITE8_MEMBER(pc6001_8255_portc_w);
DECLARE_READ8_MEMBER(pc6001_8255_portc_r);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(pc6001_cass);
-
+ IRQ_CALLBACK_MEMBER(pc6001_irq_callback);
protected:
required_device<cpu_device> m_maincpu;
required_device<device_t> m_cassette;
@@ -1906,11 +1906,10 @@ INTERRUPT_GEN_MEMBER(pc6001_state::pc6001sr_interrupt)
device.execute().set_input_line(0, ASSERT_LINE);
}
-static IRQ_CALLBACK ( pc6001_irq_callback )
+IRQ_CALLBACK_MEMBER(pc6001_state::pc6001_irq_callback)
{
- pc6001_state *state = device->machine().driver_data<pc6001_state>();
- device->execute().set_input_line(0, CLEAR_LINE);
- return state->m_irq_vector;
+ device.execute().set_input_line(0, CLEAR_LINE);
+ return m_irq_vector;
}
READ8_MEMBER(pc6001_state::pc6001_8255_porta_r)
@@ -2156,7 +2155,7 @@ void pc6001_state::machine_reset()
m_port_c_8255=0;
- m_maincpu->set_irq_acknowledge_callback(pc6001_irq_callback);
+ 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;
@@ -2173,7 +2172,7 @@ MACHINE_RESET_MEMBER(pc6001_state,pc6001m2)
m_port_c_8255=0;
- m_maincpu->set_irq_acknowledge_callback(pc6001_irq_callback);
+ 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;
@@ -2208,7 +2207,7 @@ MACHINE_RESET_MEMBER(pc6001_state,pc6001sr)
m_port_c_8255=0;
- m_maincpu->set_irq_acknowledge_callback(pc6001_irq_callback);
+ 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;
diff --git a/src/mess/includes/galaxy.h b/src/mess/includes/galaxy.h
index 41c596c866f..b7b1e4272f7 100644
--- a/src/mess/includes/galaxy.h
+++ b/src/mess/includes/galaxy.h
@@ -41,7 +41,8 @@ public:
UINT32 screen_update_galaxy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(galaxy_interrupt);
TIMER_CALLBACK_MEMBER(gal_video);
-
+ IRQ_CALLBACK_MEMBER(galaxy_irq_callback);
+ void galaxy_set_timer();
protected:
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cassette;
@@ -54,7 +55,4 @@ protected:
/*----------- defined in machine/galaxy.c -----------*/
SNAPSHOT_LOAD( galaxy );
-/*----------- defined in video/galaxy.c -----------*/
-void galaxy_set_timer(running_machine &machine);
-
#endif /* GALAXY_H_ */
diff --git a/src/mess/includes/poly88.h b/src/mess/includes/poly88.h
index e893c46d149..d62dbc19713 100644
--- a/src/mess/includes/poly88.h
+++ b/src/mess/includes/poly88.h
@@ -54,6 +54,7 @@ public:
TIMER_CALLBACK_MEMBER(poly88_cassette_timer_callback);
TIMER_CALLBACK_MEMBER(setup_machine_state);
DECLARE_WRITE_LINE_MEMBER(poly88_usart_rxready);
+ IRQ_CALLBACK_MEMBER(poly88_irq_callback);
protected:
required_device<cpu_device> m_maincpu;
diff --git a/src/mess/machine/galaxy.c b/src/mess/machine/galaxy.c
index 062ab01c329..3587282ff5b 100644
--- a/src/mess/machine/galaxy.c
+++ b/src/mess/machine/galaxy.c
@@ -46,11 +46,10 @@ INTERRUPT_GEN_MEMBER(galaxy_state::galaxy_interrupt)
device.execute().set_input_line(0, HOLD_LINE);
}
-static IRQ_CALLBACK ( galaxy_irq_callback )
+IRQ_CALLBACK_MEMBER(galaxy_state::galaxy_irq_callback)
{
- galaxy_state *state = device->machine().driver_data<galaxy_state>();
- galaxy_set_timer(device->machine());
- state->m_interrupts_enabled = TRUE;
+ galaxy_set_timer();
+ m_interrupts_enabled = TRUE;
return 0xff;
}
@@ -187,7 +186,7 @@ MACHINE_RESET_MEMBER(galaxy_state,galaxy)
if (ioport("ROM2")->read())
membank("bank10")->set_base(memregion("maincpu")->base() + 0x1000);
- m_maincpu->set_irq_acknowledge_callback(galaxy_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxy_state::galaxy_irq_callback),this));
m_interrupts_enabled = TRUE;
}
@@ -201,7 +200,7 @@ 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(galaxy_irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxy_state::galaxy_irq_callback),this));
ROM[0x0037] = 0x29;
ROM[0x03f9] = 0xcd;
diff --git a/src/mess/machine/poly88.c b/src/mess/machine/poly88.c
index ff0eb279bbe..c02cc3f9546 100644
--- a/src/mess/machine/poly88.c
+++ b/src/mess/machine/poly88.c
@@ -130,10 +130,9 @@ TIMER_CALLBACK_MEMBER(poly88_state::keyboard_callback)
}
}
-static IRQ_CALLBACK (poly88_irq_callback)
+IRQ_CALLBACK_MEMBER(poly88_state::poly88_irq_callback)
{
- poly88_state *state = device->machine().driver_data<poly88_state>();
- return state->m_int_vector;
+ return m_int_vector;
}
TIMER_CALLBACK_MEMBER(poly88_state::poly88_cassette_timer_callback)
@@ -208,7 +207,7 @@ DRIVER_INIT_MEMBER(poly88_state,poly88)
void poly88_state::machine_reset()
{
- m_maincpu->set_irq_acknowledge_callback(poly88_irq_callback);
+ 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/video/galaxy.c b/src/mess/video/galaxy.c
index 96853d23cd0..e16baab5fd1 100644
--- a/src/mess/video/galaxy.c
+++ b/src/mess/video/galaxy.c
@@ -102,11 +102,10 @@ TIMER_CALLBACK_MEMBER(galaxy_state::gal_video)
}
}
-void galaxy_set_timer(running_machine &machine)
+void galaxy_state::galaxy_set_timer()
{
- galaxy_state *state = machine.driver_data<galaxy_state>();
- state->m_gal_cnt = 0;
- state->m_gal_video_timer->adjust(attotime::zero, 0, attotime::from_hz(6144000 / 8));
+ m_gal_cnt = 0;
+ m_gal_video_timer->adjust(attotime::zero, 0, attotime::from_hz(6144000 / 8));
}
void galaxy_state::video_start()