mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
IRQ_CALLBACK modernization part 3 (no whatsnew)
This commit is contained in:
parent
34bf46e829
commit
ad69d72a53
@ -163,6 +163,7 @@ public:
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region);
|
||||
void irq_init();
|
||||
void irq_raise(int level);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -1325,14 +1326,13 @@ ADDRESS_MAP_END
|
||||
#endif
|
||||
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(bnstars_state::irq_callback)
|
||||
{
|
||||
bnstars_state *state = device->machine().driver_data<bnstars_state>();
|
||||
int i;
|
||||
for(i=15; i>=0 && !(state->m_irqreq & (1<<i)); i--);
|
||||
state->m_irqreq &= ~(1<<i);
|
||||
if(!state->m_irqreq)
|
||||
device->execute().set_input_line(0, CLEAR_LINE);
|
||||
for(i=15; i>=0 && !(m_irqreq & (1<<i)); i--);
|
||||
m_irqreq &= ~(1<<i);
|
||||
if(!m_irqreq)
|
||||
device.execute().set_input_line(0, CLEAR_LINE);
|
||||
return i;
|
||||
}
|
||||
|
||||
@ -1340,7 +1340,7 @@ void bnstars_state::irq_init()
|
||||
{
|
||||
m_irqreq = 0;
|
||||
machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(bnstars_state::irq_callback),this));
|
||||
}
|
||||
|
||||
void bnstars_state::irq_raise(int level)
|
||||
|
@ -181,6 +181,7 @@ public:
|
||||
DECLARE_DRIVER_INIT(calchase);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -803,10 +804,9 @@ static INPUT_PORTS_START( calchase )
|
||||
INPUT_PORTS_END
|
||||
#endif
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(calchase_state::irq_callback)
|
||||
{
|
||||
calchase_state *state = device->machine().driver_data<calchase_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void calchase_state::machine_start()
|
||||
@ -814,7 +814,7 @@ 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);
|
||||
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(calchase_state::irq_callback),this));
|
||||
|
||||
m_pit8254 = machine().device( "pit8254" );
|
||||
m_pic8259_1 = machine().device( "pic8259_1" );
|
||||
|
@ -418,6 +418,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(get_slave_ack);
|
||||
DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out0_changed);
|
||||
DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out2_changed);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
/*
|
||||
@ -1575,14 +1576,13 @@ static const struct pic8259_interface chihiro_pic8259_2_config =
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(chihiro_state::irq_callback)
|
||||
{
|
||||
chihiro_state *chst=device->machine().driver_data<chihiro_state>();
|
||||
int r = 0;
|
||||
r = pic8259_acknowledge(chst->chihiro_devs.pic8259_2);
|
||||
r = pic8259_acknowledge(chihiro_devs.pic8259_2);
|
||||
if (r==0)
|
||||
{
|
||||
r = pic8259_acknowledge(chst->chihiro_devs.pic8259_1);
|
||||
r = pic8259_acknowledge(chihiro_devs.pic8259_1);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
@ -1805,7 +1805,7 @@ 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);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().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" );
|
||||
|
@ -194,6 +194,7 @@ public:
|
||||
void screen_eof_crystal(screen_device &screen, bool state);
|
||||
INTERRUPT_GEN_MEMBER(crystal_interrupt);
|
||||
TIMER_CALLBACK_MEMBER(Timercb);
|
||||
IRQ_CALLBACK_MEMBER(icallback);
|
||||
};
|
||||
|
||||
static void IntReq( running_machine &machine, int num )
|
||||
@ -271,10 +272,9 @@ WRITE32_MEMBER(crystal_state::IntAck_w)
|
||||
m_IntHigh = (data >> 8) & 7;
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK( icallback )
|
||||
IRQ_CALLBACK_MEMBER(crystal_state::icallback)
|
||||
{
|
||||
crystal_state *state = device->machine().driver_data<crystal_state>();
|
||||
address_space &space = device->memory().space(AS_PROGRAM);
|
||||
address_space &space = device.memory().space(AS_PROGRAM);
|
||||
UINT32 IntPend = space.read_dword(0x01800c0c);
|
||||
int i;
|
||||
|
||||
@ -282,7 +282,7 @@ static IRQ_CALLBACK( icallback )
|
||||
{
|
||||
if (BIT(IntPend, i))
|
||||
{
|
||||
return (state->m_IntHigh << 5) | i;
|
||||
return (m_IntHigh << 5) | i;
|
||||
}
|
||||
}
|
||||
return 0; //This should never happen
|
||||
@ -582,7 +582,7 @@ void crystal_state::machine_start()
|
||||
m_ds1302 = machine().device<ds1302_device>("rtc");
|
||||
m_vr0video = machine().device("vr0");
|
||||
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(icallback);
|
||||
machine().device("maincpu")->execute().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);
|
||||
|
||||
@ -611,7 +611,7 @@ void crystal_state::machine_reset()
|
||||
memset(m_vidregs, 0, 0x10000);
|
||||
m_FlipCount = 0;
|
||||
m_IntHigh = 0;
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(icallback);
|
||||
machine().device("maincpu")->execute().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;
|
||||
|
@ -165,6 +165,7 @@ public:
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
UINT32 screen_update_funkball(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
void funkball_state::video_start()
|
||||
@ -1090,10 +1091,9 @@ static void funkball_set_keyb_int(running_machine &machine, int state)
|
||||
pic8259_ir1_w(drvstate->m_pic8259_1, state);
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(funkball_state::irq_callback)
|
||||
{
|
||||
funkball_state *state = device->machine().driver_data<funkball_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void funkball_state::machine_start()
|
||||
@ -1102,7 +1102,7 @@ void funkball_state::machine_start()
|
||||
|
||||
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, funkball_set_keyb_int);
|
||||
|
||||
m_maincpu->set_irq_acknowledge_callback(irq_callback);
|
||||
m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(funkball_state::irq_callback),this));
|
||||
|
||||
kbdc8042_init(machine(), &at8042);
|
||||
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
virtual void palette_init();
|
||||
UINT32 screen_update_galaxygame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(galaxygame_irq);
|
||||
IRQ_CALLBACK_MEMBER(galaxygame_irq_callback);
|
||||
};
|
||||
|
||||
/*************************************
|
||||
@ -294,9 +295,9 @@ void galaxygame_state::palette_init()
|
||||
palette_set_color(machine(),1,RGB_WHITE); /* white */
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(galaxygame_irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(galaxygame_state::galaxygame_irq_callback)
|
||||
{
|
||||
device->execute().set_input_line(0, CLEAR_LINE);
|
||||
device.execute().set_input_line(0, CLEAR_LINE);
|
||||
return 0x40;
|
||||
}
|
||||
|
||||
@ -316,7 +317,7 @@ void galaxygame_state::machine_reset()
|
||||
m_point_display_list_index = 0;
|
||||
m_interrupt = 0;
|
||||
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(galaxygame_irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxygame_state::galaxygame_irq_callback),this));
|
||||
}
|
||||
|
||||
static const struct t11_setup t11_data =
|
||||
|
@ -120,6 +120,7 @@ public:
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_gamecstl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -602,10 +603,9 @@ static INPUT_PORTS_START(gamecstl)
|
||||
PORT_START("pc_keyboard_7")
|
||||
INPUT_PORTS_END
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(gamecstl_state::irq_callback)
|
||||
{
|
||||
gamecstl_state *state = device->machine().driver_data<gamecstl_state>();
|
||||
return pic8259_acknowledge(state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void gamecstl_state::machine_start()
|
||||
@ -621,7 +621,7 @@ void gamecstl_state::machine_reset()
|
||||
{
|
||||
machine().root_device().membank("bank1")->set_base(machine().root_device().memregion("bios")->base() + 0x30000);
|
||||
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(gamecstl_state::irq_callback),this));
|
||||
}
|
||||
|
||||
|
||||
|
@ -103,6 +103,7 @@ public:
|
||||
UINT8 m_atapi_data[ATAPI_DATA_SIZE];
|
||||
|
||||
DECLARE_DRIVER_INIT(gammagic);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
//static void atapi_irq(running_machine &machine, int state);
|
||||
@ -622,16 +623,15 @@ static INPUT_PORTS_START( gammagic )
|
||||
INPUT_PORTS_END
|
||||
#endif
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(gammagic_state::irq_callback)
|
||||
{
|
||||
gammagic_state *state = device->machine().driver_data<gammagic_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
static MACHINE_START(gammagic)
|
||||
{
|
||||
gammagic_state *state = machine.driver_data<gammagic_state>();
|
||||
machine.device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine.device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(gammagic_state::irq_callback),state));
|
||||
|
||||
state->m_pit8254 = machine.device( "pit8254" );
|
||||
state->m_pic8259_1 = machine.device( "pic8259_1" );
|
||||
|
@ -359,7 +359,7 @@ static DEVICE_IMAGE_LOAD( jaguar );
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static IRQ_CALLBACK(jaguar_irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(jaguar_state::jaguar_irq_callback)
|
||||
{
|
||||
return (irqline == 6) ? 0x40 : -1;
|
||||
}
|
||||
@ -375,7 +375,7 @@ static IRQ_CALLBACK(jaguar_irq_callback)
|
||||
void jaguar_state::machine_reset()
|
||||
{
|
||||
if (!m_is_cojag)
|
||||
m_main_cpu->set_irq_acknowledge_callback(jaguar_irq_callback);
|
||||
m_main_cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(jaguar_state::jaguar_irq_callback),this));
|
||||
|
||||
m_protection_check = 0;
|
||||
|
||||
|
@ -199,6 +199,7 @@ public:
|
||||
DECLARE_READ32_MEMBER(speedup10_r);
|
||||
DECLARE_READ32_MEMBER(speedup11_r);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(sound_timer_callback);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
// Display controller registers
|
||||
@ -1047,10 +1048,9 @@ static INPUT_PORTS_START(mediagx)
|
||||
PORT_BIT( 0xf00, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(mediagx_state::irq_callback)
|
||||
{
|
||||
mediagx_state *state = device->machine().driver_data<mediagx_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void mediagx_state::machine_start()
|
||||
@ -1069,7 +1069,7 @@ void mediagx_state::machine_reset()
|
||||
{
|
||||
UINT8 *rom = memregion("bios")->base();
|
||||
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mediagx_state::irq_callback),this));
|
||||
|
||||
memcpy(m_bios_ram, rom, 0x40000);
|
||||
machine().device("maincpu")->reset();
|
||||
|
@ -98,6 +98,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(midqslvr_pic8259_1_set_int_line);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -643,10 +644,9 @@ static void midqslvr_set_keyb_int(running_machine &machine, int state)
|
||||
pic8259_ir1_w(drvstate->m_pic8259_1, state);
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(midqslvr_state::irq_callback)
|
||||
{
|
||||
midqslvr_state *state = device->machine().driver_data<midqslvr_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void midqslvr_state::machine_start()
|
||||
@ -661,7 +661,7 @@ void midqslvr_state::machine_start()
|
||||
|
||||
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, midqslvr_set_keyb_int);
|
||||
|
||||
m_maincpu->set_irq_acknowledge_callback(irq_callback);
|
||||
m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(midqslvr_state::irq_callback),this));
|
||||
intel82439tx_init(machine());
|
||||
|
||||
kbdc8042_init(machine(), &at8042);
|
||||
|
@ -699,19 +699,17 @@ WRITE16_MEMBER(model1_state::bank_w)
|
||||
|
||||
|
||||
|
||||
static void irq_raise(running_machine &machine, int level)
|
||||
void model1_state::irq_raise(int level)
|
||||
{
|
||||
model1_state *state = machine.driver_data<model1_state>();
|
||||
// logerror("irq: raising %d\n", level);
|
||||
// irq_status |= (1 << level);
|
||||
state->m_last_irq = level;
|
||||
machine.device("maincpu")->execute().set_input_line(0, HOLD_LINE);
|
||||
m_last_irq = level;
|
||||
machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(model1_state::irq_callback)
|
||||
{
|
||||
model1_state *state = device->machine().driver_data<model1_state>();
|
||||
return state->m_last_irq;
|
||||
return m_last_irq;
|
||||
}
|
||||
// vf
|
||||
// 1 = fe3ed4
|
||||
@ -727,10 +725,10 @@ static IRQ_CALLBACK(irq_callback)
|
||||
// 3 = ff54c
|
||||
// other = ff568/ff574
|
||||
|
||||
static void irq_init(running_machine &machine)
|
||||
void model1_state::irq_init()
|
||||
{
|
||||
machine.device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
|
||||
machine.device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(model1_state::irq_callback),this));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt)
|
||||
@ -739,11 +737,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt)
|
||||
|
||||
if (scanline == 384)
|
||||
{
|
||||
irq_raise(machine(), 1);
|
||||
irq_raise(1);
|
||||
}
|
||||
else if(scanline == 384/2)
|
||||
{
|
||||
irq_raise(machine(), m_sound_irq);
|
||||
irq_raise(m_sound_irq);
|
||||
|
||||
// if the FIFO has something in it, signal the 68k too
|
||||
if (m_fifo_rptr != m_fifo_wptr)
|
||||
@ -756,7 +754,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt)
|
||||
MACHINE_RESET_MEMBER(model1_state,model1)
|
||||
{
|
||||
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1000000);
|
||||
irq_init(machine());
|
||||
irq_init();
|
||||
model1_tgp_reset(machine(), !strcmp(machine().system().name, "swa") || !strcmp(machine().system().name, "wingwar") || !strcmp(machine().system().name, "wingwaru") || !strcmp(machine().system().name, "wingwarj"));
|
||||
if (!strcmp(machine().system().name, "swa"))
|
||||
{
|
||||
@ -775,7 +773,7 @@ MACHINE_RESET_MEMBER(model1_state,model1)
|
||||
MACHINE_RESET_MEMBER(model1_state,model1_vr)
|
||||
{
|
||||
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1000000);
|
||||
irq_init(machine());
|
||||
irq_init();
|
||||
model1_vr_tgp_reset(machine());
|
||||
m_sound_irq = 3;
|
||||
|
||||
|
@ -38,6 +38,7 @@ public:
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_photon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(pk8000_interrupt);
|
||||
IRQ_CALLBACK_MEMBER(pk8000_irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -191,7 +192,7 @@ INTERRUPT_GEN_MEMBER(photon_state::pk8000_interrupt)
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(pk8000_irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(photon_state::pk8000_irq_callback)
|
||||
{
|
||||
return 0xff;
|
||||
}
|
||||
@ -200,7 +201,7 @@ static IRQ_CALLBACK(pk8000_irq_callback)
|
||||
void photon_state::machine_reset()
|
||||
{
|
||||
pk8000_set_bank(machine(),0);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(pk8000_irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(photon_state::pk8000_irq_callback),this));
|
||||
}
|
||||
|
||||
void photon_state::video_start()
|
||||
|
@ -57,6 +57,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(at_pit8254_out2_changed);
|
||||
DECLARE_DRIVER_INIT(photoply);
|
||||
virtual void machine_start();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -226,10 +227,9 @@ static const struct pic8259_interface pic8259_2_config =
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(photoply_state::irq_callback)
|
||||
{
|
||||
photoply_state *state = device->machine().driver_data<photoply_state>();
|
||||
return pic8259_acknowledge(state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(photoply_state::at_pit8254_out0_changed)
|
||||
@ -342,7 +342,7 @@ static void photoply_set_keyb_int(running_machine &machine, int state)
|
||||
|
||||
void photoply_state::machine_start()
|
||||
{
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(photoply_state::irq_callback),this));
|
||||
m_pit8253 = machine().device( "pit8254" );
|
||||
m_pic8259_1 = machine().device( "pic8259_1" );
|
||||
m_pic8259_2 = machine().device( "pic8259_2" );
|
||||
|
@ -90,6 +90,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(queen_pic8259_1_set_int_line);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -507,10 +508,9 @@ static void queen_set_keyb_int(running_machine &machine, int state)
|
||||
pic8259_ir1_w(drvstate->m_pic8259_1, state);
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(queen_state::irq_callback)
|
||||
{
|
||||
queen_state *state = device->machine().driver_data<queen_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void queen_state::machine_start()
|
||||
@ -520,7 +520,7 @@ void queen_state::machine_start()
|
||||
|
||||
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, queen_set_keyb_int);
|
||||
|
||||
m_maincpu->set_irq_acknowledge_callback(irq_callback);
|
||||
m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(queen_state::irq_callback),this));
|
||||
intel82439tx_init(machine());
|
||||
|
||||
kbdc8042_init(machine(), &at8042);
|
||||
|
@ -41,8 +41,6 @@
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static IRQ_CALLBACK( irq_callback );
|
||||
|
||||
class rastersp_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -133,7 +131,7 @@ public:
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void update_irq(UINT32 which, UINT32 state);
|
||||
void upload_palette(UINT32 word1, UINT32 word2);
|
||||
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
protected:
|
||||
// driver_device overrides
|
||||
virtual void machine_reset();
|
||||
@ -151,7 +149,7 @@ protected:
|
||||
|
||||
void rastersp_state::machine_start()
|
||||
{
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(rastersp_state::irq_callback),this));
|
||||
|
||||
m_nvram8 = auto_alloc_array(machine(), UINT8, NVRAM_SIZE);
|
||||
|
||||
@ -358,29 +356,27 @@ UINT32 rastersp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static IRQ_CALLBACK( irq_callback )
|
||||
IRQ_CALLBACK_MEMBER(rastersp_state::irq_callback)
|
||||
{
|
||||
rastersp_state *state = device->machine().driver_data<rastersp_state>();
|
||||
|
||||
UINT8 vector = 0;
|
||||
|
||||
if (state->m_irq_status & (1 << rastersp_state::IRQ_SCSI))
|
||||
if (m_irq_status & (1 << IRQ_SCSI))
|
||||
{
|
||||
vector = 11;
|
||||
}
|
||||
else if (state->m_irq_status & (1 << rastersp_state::IRQ_DSP))
|
||||
else if (m_irq_status & (1 << IRQ_DSP))
|
||||
{
|
||||
state->update_irq(rastersp_state::IRQ_DSP, CLEAR_LINE);
|
||||
update_irq(IRQ_DSP, CLEAR_LINE);
|
||||
vector = 12;
|
||||
}
|
||||
else if (state->m_irq_status & (1 << rastersp_state::IRQ_VBLANK))
|
||||
else if (m_irq_status & (1 << IRQ_VBLANK))
|
||||
{
|
||||
state->update_irq(rastersp_state::IRQ_VBLANK, CLEAR_LINE);
|
||||
update_irq(IRQ_VBLANK, CLEAR_LINE);
|
||||
vector = 13;
|
||||
}
|
||||
else
|
||||
{
|
||||
fatalerror("Unknown x86 IRQ (m_irq_status = %x)", state->m_irq_status);
|
||||
fatalerror("Unknown x86 IRQ (m_irq_status = %x)", m_irq_status);
|
||||
}
|
||||
|
||||
return vector;
|
||||
|
@ -102,6 +102,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(savquest_pic8259_1_set_int_line);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
// Intel 82439TX System Controller (MXTC)
|
||||
@ -606,10 +607,9 @@ static void savquest_set_keyb_int(running_machine &machine, int state)
|
||||
pic8259_ir1_w(drvstate->m_pic8259_1, state);
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(savquest_state::irq_callback)
|
||||
{
|
||||
savquest_state *state = device->machine().driver_data<savquest_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void savquest_state::machine_start()
|
||||
@ -622,7 +622,7 @@ void savquest_state::machine_start()
|
||||
|
||||
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, savquest_set_keyb_int);
|
||||
|
||||
m_maincpu->set_irq_acknowledge_callback(irq_callback);
|
||||
m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(savquest_state::irq_callback),this));
|
||||
intel82439tx_init(machine());
|
||||
|
||||
kbdc8042_init(machine(), &at8042);
|
||||
|
@ -81,6 +81,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(get_slave_ack);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -236,10 +237,9 @@ static const struct pit8253_config su2000_pit8254_config =
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static IRQ_CALLBACK( pc_irq_callback )
|
||||
IRQ_CALLBACK_MEMBER(su2000_state::irq_callback)
|
||||
{
|
||||
su2000_state *state = device->machine().driver_data<su2000_state>();
|
||||
return pic8259_acknowledge(state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
|
||||
@ -271,7 +271,7 @@ void su2000_state::machine_start()
|
||||
space.install_write_bank(0x100000, ram_limit - 1, "hma_bank");
|
||||
membank("hma_bank")->set_base(m_pc_ram + 0xa0000);
|
||||
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(pc_irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(su2000_state::irq_callback),this));
|
||||
|
||||
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, su2000_set_keyb_int);
|
||||
|
||||
|
@ -290,16 +290,15 @@ MACHINE_RESET_MEMBER(taitol_state,horshoes)
|
||||
}
|
||||
|
||||
|
||||
static IRQ_CALLBACK( irq_callback )
|
||||
IRQ_CALLBACK_MEMBER(taitol_state::irq_callback)
|
||||
{
|
||||
taitol_state *state = device->machine().driver_data<taitol_state>();
|
||||
return state->m_irq_adr_table[state->m_last_irq_level];
|
||||
return m_irq_adr_table[m_last_irq_level];
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(taitol_state::vbl_interrupt)
|
||||
{
|
||||
int scanline = param;
|
||||
m_maincpu->set_irq_acknowledge_callback(irq_callback);
|
||||
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)
|
||||
|
@ -83,6 +83,7 @@ public:
|
||||
virtual void machine_reset();
|
||||
virtual void palette_init();
|
||||
UINT32 screen_update_taitowlf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
#if !ENABLE_VGA
|
||||
@ -532,15 +533,14 @@ static INPUT_PORTS_START(taitowlf)
|
||||
INPUT_PORTS_END
|
||||
#endif
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(taitowlf_state::irq_callback)
|
||||
{
|
||||
taitowlf_state *state = device->machine().driver_data<taitowlf_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void taitowlf_state::machine_start()
|
||||
{
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(taitowlf_state::irq_callback),this));
|
||||
|
||||
m_pit8254 = machine().device( "pit8254" );
|
||||
m_pic8259_1 = machine().device( "pic8259_1" );
|
||||
|
@ -69,6 +69,7 @@ public:
|
||||
DECLARE_DRIVER_INIT(voyager);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
@ -644,15 +645,14 @@ static INPUT_PORTS_START( voyager )
|
||||
INPUT_PORTS_END
|
||||
#endif
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(voyager_state::irq_callback)
|
||||
{
|
||||
voyager_state *state = device->machine().driver_data<voyager_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void voyager_state::machine_start()
|
||||
{
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(voyager_state::irq_callback),this));
|
||||
|
||||
m_pit8254 = machine().device( "pit8254" );
|
||||
m_pic8259_1 = machine().device( "pic8259_1" );
|
||||
|
@ -115,6 +115,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(xtom3d_pic8259_1_set_int_line);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
// Intel 82439TX System Controller (MXTC)
|
||||
@ -635,10 +636,9 @@ static void xtom3d_set_keyb_int(running_machine &machine, int state)
|
||||
pic8259_ir1_w(drvstate->m_pic8259_1, state);
|
||||
}
|
||||
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(xtom3d_state::irq_callback)
|
||||
{
|
||||
xtom3d_state *state = device->machine().driver_data<xtom3d_state>();
|
||||
return pic8259_acknowledge( state->m_pic8259_1);
|
||||
return pic8259_acknowledge(m_pic8259_1);
|
||||
}
|
||||
|
||||
void xtom3d_state::machine_start()
|
||||
@ -653,7 +653,7 @@ void xtom3d_state::machine_start()
|
||||
|
||||
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, xtom3d_set_keyb_int);
|
||||
|
||||
m_maincpu->set_irq_acknowledge_callback(irq_callback);
|
||||
m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(xtom3d_state::irq_callback),this));
|
||||
intel82439tx_init(machine());
|
||||
|
||||
kbdc8042_init(machine(), &at8042);
|
||||
|
@ -214,7 +214,7 @@ public:
|
||||
int quickload(device_image_interface &image, const char *file_type, int quickload_size);
|
||||
void cart_start();
|
||||
int cart_load(device_image_interface &image);
|
||||
|
||||
IRQ_CALLBACK_MEMBER(jaguar_irq_callback);
|
||||
protected:
|
||||
// timer IDs
|
||||
enum
|
||||
|
@ -121,6 +121,8 @@ public:
|
||||
|
||||
DECLARE_READ8_MEMBER(megadriv_68k_YM2612_read);
|
||||
DECLARE_WRITE8_MEMBER(megadriv_68k_YM2612_write);
|
||||
IRQ_CALLBACK_MEMBER(genesis_int_callback);
|
||||
void megadriv_init_common();
|
||||
};
|
||||
|
||||
class md_boot_state : public md_base_state
|
||||
|
@ -140,6 +140,9 @@ public:
|
||||
UINT32 screen_update_model1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
void screen_eof_model1(screen_device &screen, bool state);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(model1_interrupt);
|
||||
void irq_raise(int level);
|
||||
void irq_init();
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
|
||||
|
@ -122,6 +122,7 @@ public:
|
||||
UINT32 screen_update_taitol(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void screen_eof_taitol(screen_device &screen, bool state);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(vbl_interrupt);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
};
|
||||
|
||||
/*----------- defined in video/taito_l.c -----------*/
|
||||
|
@ -1091,18 +1091,16 @@ void genesis_vdp_lv4irqline_callback_genesis_68k(running_machine &machine, bool
|
||||
}
|
||||
|
||||
/* Callback when the 68k takes an IRQ */
|
||||
static IRQ_CALLBACK(genesis_int_callback)
|
||||
IRQ_CALLBACK_MEMBER(md_base_state::genesis_int_callback)
|
||||
{
|
||||
md_base_state *state = device->machine().driver_data<md_base_state>();
|
||||
|
||||
if (irqline==4)
|
||||
{
|
||||
state->m_vdp->vdp_clear_irq4_pending();
|
||||
m_vdp->vdp_clear_irq4_pending();
|
||||
}
|
||||
|
||||
if (irqline==6)
|
||||
{
|
||||
state->m_vdp->vdp_clear_irq6_pending();
|
||||
m_vdp->vdp_clear_irq6_pending();
|
||||
}
|
||||
|
||||
return (0x60+irqline*4)/4; // vector address
|
||||
@ -1335,45 +1333,45 @@ static int megadriv_tas_callback(device_t *device)
|
||||
return 0; // writeback not allowed
|
||||
}
|
||||
|
||||
static void megadriv_init_common(running_machine &machine)
|
||||
void md_base_state::megadriv_init_common()
|
||||
{
|
||||
/* Look to see if this system has the standard Sound Z80 */
|
||||
_genesis_snd_z80_cpu = machine.device<cpu_device>("genesis_snd_z80");
|
||||
_genesis_snd_z80_cpu = machine().device<cpu_device>("genesis_snd_z80");
|
||||
if (_genesis_snd_z80_cpu != NULL)
|
||||
{
|
||||
//printf("GENESIS Sound Z80 cpu found '%s'\n", _genesis_snd_z80_cpu->tag() );
|
||||
|
||||
genz80.z80_prgram = auto_alloc_array(machine, UINT8, 0x2000);
|
||||
machine.root_device().membank("bank1")->set_base(genz80.z80_prgram );
|
||||
genz80.z80_prgram = auto_alloc_array(machine(), UINT8, 0x2000);
|
||||
machine().root_device().membank("bank1")->set_base(genz80.z80_prgram );
|
||||
}
|
||||
|
||||
/* Look to see if this system has the 32x Master SH2 */
|
||||
_32x_master_cpu = machine.device<cpu_device>(_32X_MASTER_TAG);
|
||||
_32x_master_cpu = machine().device<cpu_device>(_32X_MASTER_TAG);
|
||||
if (_32x_master_cpu != NULL)
|
||||
{
|
||||
printf("32x MASTER SH2 cpu found '%s'\n", _32x_master_cpu->tag() );
|
||||
}
|
||||
|
||||
/* Look to see if this system has the 32x Slave SH2 */
|
||||
_32x_slave_cpu = machine.device<cpu_device>(_32X_SLAVE_TAG);
|
||||
_32x_slave_cpu = machine().device<cpu_device>(_32X_SLAVE_TAG);
|
||||
if (_32x_slave_cpu != NULL)
|
||||
{
|
||||
printf("32x SLAVE SH2 cpu found '%s'\n", _32x_slave_cpu->tag() );
|
||||
}
|
||||
|
||||
_svp_cpu = machine.device<cpu_device>("svp");
|
||||
_svp_cpu = machine().device<cpu_device>("svp");
|
||||
if (_svp_cpu != NULL)
|
||||
{
|
||||
printf("SVP (cpu) found '%s'\n", _svp_cpu->tag() );
|
||||
}
|
||||
|
||||
machine.device("maincpu")->execute().set_irq_acknowledge_callback(genesis_int_callback);
|
||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(md_base_state::genesis_int_callback),this));
|
||||
megadriv_backupram = NULL;
|
||||
megadriv_backupram_length = 0;
|
||||
|
||||
vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_default;
|
||||
|
||||
m68k_set_tas_callback(machine.device("maincpu"), megadriv_tas_callback);
|
||||
m68k_set_tas_callback(machine().device("maincpu"), megadriv_tas_callback);
|
||||
|
||||
// the drivers which need 6 buttons pad set this to 1 in their init befare calling the megadrive init
|
||||
if (megadrive_6buttons_pad)
|
||||
@ -1394,7 +1392,7 @@ static void megadriv_init_common(running_machine &machine)
|
||||
some games specify a single address, (start 200001, end 200001)
|
||||
this usually means there is serial eeprom instead */
|
||||
int i;
|
||||
UINT16 *rom = (UINT16*)machine.root_device().memregion("maincpu")->base();
|
||||
UINT16 *rom = (UINT16*)machine().root_device().memregion("maincpu")->base();
|
||||
|
||||
mame_printf_debug("DEBUG:: Header: Backup RAM string (ignore for games without)\n");
|
||||
for (i=0;i<12;i++)
|
||||
@ -1411,7 +1409,7 @@ static void megadriv_init_common(running_machine &machine)
|
||||
/* if we have an SVP cpu then do some extra initilization for it */
|
||||
if (_svp_cpu != NULL)
|
||||
{
|
||||
svp_init(machine);
|
||||
svp_init(machine());
|
||||
}
|
||||
|
||||
|
||||
@ -1422,7 +1420,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadriv_c2)
|
||||
genvdp_use_cram = 0;
|
||||
genesis_other_hacks = 0;
|
||||
|
||||
megadriv_init_common(machine());
|
||||
megadriv_init_common();
|
||||
megadriv_framerate = 60;
|
||||
}
|
||||
|
||||
@ -1433,7 +1431,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadriv)
|
||||
genvdp_use_cram = 1;
|
||||
genesis_other_hacks = 1;
|
||||
|
||||
megadriv_init_common(machine());
|
||||
megadriv_init_common();
|
||||
megadriv_framerate = 60;
|
||||
}
|
||||
|
||||
@ -1442,7 +1440,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadrij)
|
||||
genvdp_use_cram = 1;
|
||||
genesis_other_hacks = 1;
|
||||
|
||||
megadriv_init_common(machine());
|
||||
megadriv_init_common();
|
||||
megadriv_framerate = 60;
|
||||
}
|
||||
|
||||
@ -1451,7 +1449,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadrie)
|
||||
genvdp_use_cram = 1;
|
||||
genesis_other_hacks = 1;
|
||||
|
||||
megadriv_init_common(machine());
|
||||
megadriv_init_common();
|
||||
megadriv_framerate = 50;
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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())
|
||||
|
@ -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));
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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 = m_vector;
|
||||
|
||||
UINT16 vector = state->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);
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -189,6 +189,8 @@ public:
|
||||
void aleste_interrupt(bool state);
|
||||
|
||||
DECLARE_FLOPPY_FORMATS( floppy_formats );
|
||||
|
||||
IRQ_CALLBACK_MEMBER(amstrad_cpu_acknowledge_int);
|
||||
};
|
||||
|
||||
|
||||
|
@ -112,6 +112,7 @@ public:
|
||||
// video state
|
||||
optional_shared_ptr<UINT16> m_video_ram;
|
||||
UINT8 m_video;
|
||||
IRQ_CALLBACK_MEMBER(fp_irq_callback);
|
||||
};
|
||||
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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_ */
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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];
|
||||
|
@ -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 -----------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -133,6 +133,7 @@ public:
|
||||
|
||||
DECLARE_DRIVER_INIT(vixen);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(vsync_tick);
|
||||
IRQ_CALLBACK_MEMBER(vixen_int_ack);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
@ -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 )
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user