From be08f549a925f3c4470e7dca204dab598c8c8606 Mon Sep 17 00:00:00 2001 From: cracyc Date: Mon, 19 Aug 2013 19:18:10 +0000 Subject: [PATCH] (mess) compis: try to fix irq lines (nw) --- src/mess/drivers/compis.c | 6 ++++-- src/mess/includes/compis.h | 6 +++--- src/mess/machine/compis.c | 15 ++++++++------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c index de32dd934f7..009233a41e8 100644 --- a/src/mess/drivers/compis.c +++ b/src/mess/drivers/compis.c @@ -349,6 +349,7 @@ static MACHINE_CONFIG_START( compis, compis_state ) MCFG_CPU_PROGRAM_MAP(compis_mem) MCFG_CPU_IO_MAP(compis_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", compis_state, compis_vblank_int) + MCFG_80186_IRQ_SLAVE_ACK(DEVREAD8(DEVICE_SELF_OWNER, compis_state, compis_irq_callback)) //MCFG_CPU_CONFIG(i86_address_mask) //MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -372,7 +373,7 @@ static MACHINE_CONFIG_START( compis, compis_state ) MCFG_PIT8253_ADD( "pit8253", compis_pit8253_config ) MCFG_PIT8254_ADD( "pit8254", compis_pit8254_config ) MCFG_PIC8259_ADD( "pic8259_master", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, READ8(compis_state, get_slave_ack) ) - MCFG_PIC8259_ADD( "pic8259_slave", WRITELINE(compis_state, compis_pic8259_slave_set_int_line), GND, NULL ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir2_w), GND, NULL ) MCFG_I8255_ADD( "ppi8255", compis_ppi_interface ) MCFG_UPD7220_ADD("upd7220", XTAL_4_433619MHz/2, hgdc_intf, upd7220_map) //unknown clock MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics) @@ -393,6 +394,7 @@ static MACHINE_CONFIG_START( compis2, compis_state ) MCFG_CPU_PROGRAM_MAP(compis_mem) MCFG_CPU_IO_MAP(compis_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", compis_state, compis_vblank_int) + MCFG_80186_IRQ_SLAVE_ACK(DEVREAD8(DEVICE_SELF_OWNER, compis_state, compis_irq_callback)) //MCFG_CPU_CONFIG(i86_address_mask) //MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -412,7 +414,7 @@ static MACHINE_CONFIG_START( compis2, compis_state ) MCFG_PIT8253_ADD( "pit8253", compis_pit8253_config ) MCFG_PIT8254_ADD( "pit8254", compis_pit8254_config ) MCFG_PIC8259_ADD( "pic8259_master", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, READ8(compis_state, get_slave_ack) ) - MCFG_PIC8259_ADD( "pic8259_slave", WRITELINE(compis_state, compis_pic8259_slave_set_int_line), GND, NULL ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir2_w), GND, NULL ) MCFG_I8255_ADD( "ppi8255", compis_ppi_interface ) MCFG_UPD7220_ADD("upd7220", XTAL_4_433619MHz/2, hgdc_intf, upd7220_map) //unknown clock MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics) diff --git a/src/mess/includes/compis.h b/src/mess/includes/compis.h index cc4f6a7b3ed..ffaed5d4557 100644 --- a/src/mess/includes/compis.h +++ b/src/mess/includes/compis.h @@ -163,8 +163,8 @@ public: DECLARE_READ16_MEMBER(compis_osp_pit_r); DECLARE_WRITE16_MEMBER(compis_osp_pit_w); DECLARE_WRITE_LINE_MEMBER(compis_usart_rxready); - DECLARE_WRITE_LINE_MEMBER(compis_pic8259_master_set_int_line); - DECLARE_WRITE_LINE_MEMBER(compis_pic8259_slave_set_int_line); +// DECLARE_WRITE_LINE_MEMBER(compis_pic8259_master_set_int_line); +// DECLARE_WRITE_LINE_MEMBER(compis_pic8259_slave_set_int_line); DECLARE_READ8_MEMBER(get_slave_ack); // i186_state m_i186; TYP_COMPIS m_compis; @@ -188,7 +188,7 @@ public: // TIMER_CALLBACK_MEMBER(internal_timer_int); // TIMER_CALLBACK_MEMBER(dma_timer_callback); // IRQ_CALLBACK_MEMBER(int_callback); -// IRQ_CALLBACK_MEMBER(compis_irq_callback); + DECLARE_READ8_MEMBER(compis_irq_callback); void compis_irq_set(UINT8 irq); void compis_keyb_update(); void compis_keyb_init(); diff --git a/src/mess/machine/compis.c b/src/mess/machine/compis.c index e9b5d91759c..583081394f2 100644 --- a/src/mess/machine/compis.c +++ b/src/mess/machine/compis.c @@ -158,7 +158,7 @@ void compis_state::compis_keyb_init() /*-------------------------------------------------------------------------*/ void compis_state::compis_fdc_reset() { - machine().device("i8272a")->reset(); + m_fdc->reset(); } void compis_state::compis_fdc_tc(int state) @@ -1256,7 +1256,7 @@ void compis_state::compis_cpu_init() * *************************************************************/ -WRITE_LINE_MEMBER( compis_state::compis_pic8259_master_set_int_line ) +/*WRITE_LINE_MEMBER( compis_state::compis_pic8259_master_set_int_line ) { // m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } @@ -1265,7 +1265,7 @@ WRITE_LINE_MEMBER( compis_state::compis_pic8259_slave_set_int_line ) { if (m_8259m) m_8259m->ir2_w(state); -} +}*/ READ8_MEMBER( compis_state::get_slave_ack ) { @@ -1276,10 +1276,10 @@ READ8_MEMBER( compis_state::get_slave_ack ) } -//IRQ_CALLBACK_MEMBER(compis_state::compis_irq_callback) -//{ -// return m_8259m->inta_r(); -//} +READ8_MEMBER(compis_state::compis_irq_callback) +{ + return m_8259m->inta_r(); +} DRIVER_INIT_MEMBER(compis_state,compis) @@ -1292,6 +1292,7 @@ void compis_state::machine_start() { /* CPU */ compis_cpu_init(); + m_fdc->setup_intrq_cb(i8272a_device::line_cb(FUNC(compis_state::fdc_irq), this)); } /*-------------------------------------------------------------------------*/ /* Name: compis */