bublbobl.cpp, kikikai.cpp: Eliminate set_input_line_vector

This commit is contained in:
AJR 2020-12-10 23:10:38 -05:00
parent 7b7303773b
commit d5af76fd3c
6 changed files with 26 additions and 10 deletions

View File

@ -1004,6 +1004,8 @@ void bublbobl_state::bublbobl_nomcu(machine_config &config)
void bublbobl_state::bublbobl(machine_config &config)
{
bublbobl_nomcu(config);
m_maincpu->set_irq_acknowledge_callback(FUNC(bublbobl_state::mcram_vect_r));
M6801(config, m_mcu, XTAL(4'000'000)); // actually 6801U4 - xtal is 4MHz, divided by 4 internally
m_mcu->set_addrmap(AS_PROGRAM, &bublbobl_state::mcu_map);
@ -1065,6 +1067,7 @@ MACHINE_RESET_MEMBER(bub68705_state, bub68705)
void bub68705_state::bub68705(machine_config &config)
{
bublbobl_nomcu(config);
m_maincpu->set_irq_acknowledge_callback(FUNC(bublbobl_state::mcram_vect_r));
/* basic machine hardware */
M68705P3(config, m_mcu, XTAL(4'000'000)); // xtal is 4MHz, divided by 4 internally

View File

@ -637,6 +637,7 @@ void kikikai_state::kicknrun(machine_config& config)
// Not too sure IRQs are triggered by MCU..
m_maincpu->set_vblank_int("screen", FUNC(kikikai_state::kikikai_interrupt));
m_maincpu->set_irq_acknowledge_callback(FUNC(kikikai_state::mcram_vect_r));
M6801(config, m_mcu, XTAL(4'000'000)); // actually 6801U4 - xtal is 4MHz, divided by 4 internally
m_mcu->set_addrmap(AS_PROGRAM, &kikikai_state::mcu_map);
@ -656,12 +657,14 @@ void kikikai_simulation_state::kikikai(machine_config &config)
// IRQs should be triggered by the MCU, but we don't have it
m_maincpu->set_vblank_int("screen", FUNC(kikikai_simulation_state::kikikai_interrupt));
m_maincpu->set_irq_acknowledge_callback(FUNC(kikikai_simulation_state::mcram_vect_r));
}
void mexico86_state::mexico86_68705(machine_config& config)
{
base(config);
m_maincpu->set_irq_acknowledge_callback(FUNC(mexico86_state::mcram_vect_r));
M68705P3(config, m_68705mcu, 4000000); /* xtal is 4MHz, divided by 4 internally */
m_68705mcu->portc_r().set_ioport("IN0");

View File

@ -99,6 +99,7 @@ public:
uint8_t tokiob_mcu_r();
void bublbobl_soundcpu_reset_w(uint8_t data);
uint8_t common_sound_semaphores_r();
IRQ_CALLBACK_MEMBER(mcram_vect_r);
uint8_t bublbobl_mcu_ddr1_r();
void bublbobl_mcu_ddr1_w(uint8_t data);
uint8_t bublbobl_mcu_ddr2_r();

View File

@ -41,6 +41,8 @@ protected:
virtual void machine_start() override;
virtual void machine_reset() override;
IRQ_CALLBACK_MEMBER(mcram_vect_r);
private:
/* memory pointers */
required_shared_ptr<u8> m_mainram;

View File

@ -153,6 +153,11 @@ uint8_t bublbobl_state::common_sound_semaphores_r()
return ret;
}
IRQ_CALLBACK_MEMBER(bublbobl_state::mcram_vect_r)
{
m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
return m_mcu_sharedram[0];
}
/***************************************************************************
@ -222,8 +227,7 @@ void bublbobl_state::bublbobl_mcu_port1_w(uint8_t data)
if ((m_port1_out & 0x40) && (~data & 0x40))
{
// logerror("triggering IRQ on main CPU\n");
m_maincpu->set_input_line_vector(0, m_mcu_sharedram[0]); // Z80
m_maincpu->set_input_line(0, HOLD_LINE);
m_maincpu->set_input_line(0, ASSERT_LINE);
}
// bit 7: select read or write shared RAM
@ -473,8 +477,7 @@ void bub68705_state::port_b_w(offs_t offset, uint8_t data, uint8_t mem_mask)
/* hack to get random EXTEND letters (who is supposed to do this? 68705? PAL?) */
m_mcu_sharedram[0x7c] = machine().rand() % 6;
m_maincpu->set_input_line_vector(0, m_mcu_sharedram[0]); // Z80
m_maincpu->set_input_line(0, HOLD_LINE);
m_maincpu->set_input_line(0, ASSERT_LINE);
}
if (BIT(mem_mask, 6) && !BIT(data, 6) && BIT(m_port_b_out, 6))

View File

@ -187,8 +187,7 @@ void kikikai_simulation_state::mcu_simulate( )
INTERRUPT_GEN_MEMBER(kikikai_state::kikikai_interrupt)
{
device.execute().set_input_line_vector(0, m_mcu_sharedram[0]); // Z80
device.execute().set_input_line(0, HOLD_LINE);
device.execute().set_input_line(0, ASSERT_LINE);
}
@ -197,8 +196,14 @@ INTERRUPT_GEN_MEMBER(kikikai_simulation_state::kikikai_interrupt)
if (m_kikikai_simulated_mcu_running)
mcu_simulate();
device.execute().set_input_line_vector(0, m_mcu_sharedram[0]); // Z80
device.execute().set_input_line(0, HOLD_LINE);
device.execute().set_input_line(0, ASSERT_LINE);
}
IRQ_CALLBACK_MEMBER(kikikai_state::mcram_vect_r)
{
m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
return m_mcu_sharedram[0];
}
#if 0
@ -323,8 +328,7 @@ void mexico86_state::mexico86_68705_port_b_w(offs_t offset, u8 data, u8 mem_mask
if (BIT(mem_mask, 5) && BIT(data, 5) && !BIT(m_port_b_out, 5))
{
m_maincpu->set_input_line_vector(0, m_mcu_sharedram[0]); // Z80
m_maincpu->set_input_line(0, HOLD_LINE); // HOLD_LINE works better in Z80 interrupt mode 1.
m_maincpu->set_input_line(0, ASSERT_LINE);
m_68705mcu->set_input_line(M68705_IRQ_LINE, CLEAR_LINE);
}