kopunch.cpp: Acknowledge coin IRQs

This commit is contained in:
AJR 2021-01-05 22:58:21 -05:00
parent 84733b68d8
commit ffadc63b78
2 changed files with 8 additions and 13 deletions

View File

@ -45,24 +45,18 @@
********************************************************/
INTERRUPT_GEN_MEMBER(kopunch_state::vblank_interrupt)
{
device.execute().set_input_line(I8085_RST75_LINE, ASSERT_LINE);
device.execute().set_input_line(I8085_RST75_LINE, CLEAR_LINE);
}
INPUT_CHANGED_MEMBER(kopunch_state::left_coin_inserted)
{
// left coin insertion causes a rst6.5 (vector 0x34)
if (newval)
m_maincpu->set_input_line(I8085_RST65_LINE, HOLD_LINE);
m_maincpu->set_input_line(I8085_RST65_LINE, ASSERT_LINE);
}
INPUT_CHANGED_MEMBER(kopunch_state::right_coin_inserted)
{
// right coin insertion causes a rst5.5 (vector 0x2c)
if (newval)
m_maincpu->set_input_line(I8085_RST55_LINE, HOLD_LINE);
m_maincpu->set_input_line(I8085_RST55_LINE, ASSERT_LINE);
}
@ -122,8 +116,11 @@ void kopunch_state::lamp_w(uint8_t data)
void kopunch_state::coin_w(uint8_t data)
{
machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
machine().bookkeeping().coin_counter_w(1, ~data & 0x40);
// toggles from FF to 00 to FF after output mode is configured, so probably no coin counters here
if (!BIT(data, 7))
m_maincpu->set_input_line(I8085_RST65_LINE, CLEAR_LINE);
if (!BIT(data, 6))
m_maincpu->set_input_line(I8085_RST55_LINE, CLEAR_LINE);
// if ((data & 0x3f) != 0x3e)
// printf("port 34 = %02x ",data);
@ -239,7 +236,6 @@ void kopunch_state::kopunch(machine_config &config)
I8085A(config, m_maincpu, 4000000); // 4 MHz?
m_maincpu->set_addrmap(AS_PROGRAM, &kopunch_state::kopunch_map);
m_maincpu->set_addrmap(AS_IO, &kopunch_state::kopunch_io_map);
m_maincpu->set_vblank_int("screen", FUNC(kopunch_state::vblank_interrupt));
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
// $30 - always $9b (PPI mode 0, ports A & B & C as input)
@ -274,6 +270,7 @@ void kopunch_state::kopunch(machine_config &config)
screen.set_visarea(0*8, 32*8-1, 2*8, 28*8-1);
screen.set_screen_update(FUNC(kopunch_state::screen_update_kopunch));
screen.set_palette("palette");
screen.screen_vblank().set_inputline(m_maincpu, I8085_RST75_LINE);
GFXDECODE(config, m_gfxdecode, "palette", gfx_kopunch);
PALETTE(config, "palette", FUNC(kopunch_state::kopunch_palette), 8);

View File

@ -41,8 +41,6 @@ private:
void scroll_y_w(uint8_t data);
void gfxbank_w(uint8_t data);
INTERRUPT_GEN_MEMBER(vblank_interrupt);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
void kopunch_palette(palette_device &palette) const;