diff options
Diffstat (limited to 'src/mame/drivers/williams.cpp')
-rw-r--r-- | src/mame/drivers/williams.cpp | 52 |
1 files changed, 24 insertions, 28 deletions
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp index 07e043307bb..45098bf8bff 100644 --- a/src/mame/drivers/williams.cpp +++ b/src/mame/drivers/williams.cpp @@ -1584,14 +1584,13 @@ MACHINE_CONFIG_START(williams_state::williams_muxed) /* basic machine hardware */ /* pia */ - MCFG_DEVICE_MODIFY("pia_0") - MCFG_PIA_READPA_HANDLER(IOPORT("IN0")) MCFG_DEVCB_MASK(0x30) - MCFG_DEVCB_CHAIN_INPUT(READ8("mux_0", ls157_device, output_r)) MCFG_DEVCB_MASK(0x0f) - MCFG_DEVCB_CHAIN_INPUT(READ8("mux_1", ls157_device, output_r)) MCFG_DEVCB_RSHIFT(-6) MCFG_DEVCB_MASK(0xc0) - MCFG_PIA_READPB_HANDLER(IOPORT("IN1")) MCFG_DEVCB_MASK(0xfc) - MCFG_DEVCB_CHAIN_INPUT(READ8("mux_1", ls157_device, output_r)) MCFG_DEVCB_RSHIFT(2) MCFG_DEVCB_MASK(0x03) - MCFG_PIA_CB2_HANDLER(WRITELINE("mux_0", ls157_device, select_w)) - MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("mux_1", ls157_device, select_w)) + m_pia[0]->readpa_handler().set_ioport("IN0").mask(0x30); + m_pia[0]->readpa_handler().append("mux_0", FUNC(ls157_device::output_r)).mask(0x0f); + m_pia[0]->readpa_handler().append("mux_1", FUNC(ls157_device::output_r)).lshift(6).mask(0xc0); + m_pia[0]->readpb_handler().set_ioport("IN1").mask(0xfc); + m_pia[0]->readpb_handler().append("mux_1", FUNC(ls157_device::output_r)).rshift(2).mask(0x03); + m_pia[0]->cb2_handler().set("mux_0", FUNC(ls157_device::select_w)); + m_pia[0]->cb2_handler().append("mux_1", FUNC(ls157_device::select_w)); MCFG_DEVICE_ADD("mux_0", LS157, 0) // IC3 on interface board (actually LS257 with OC tied low) MCFG_74157_A_IN_CB(IOPORT("INP2")) @@ -1623,9 +1622,8 @@ MACHINE_CONFIG_START(williams_state::lottofun) /* basic machine hardware */ /* pia */ - MCFG_DEVICE_MODIFY("pia_0") - MCFG_PIA_WRITEPB_HANDLER(WRITELINE("ticket", ticket_dispenser_device, motor_w)) MCFG_DEVCB_BIT(7) - MCFG_PIA_CA2_HANDLER(WRITELINE(*this, williams_state, lottofun_coin_lock_w)) + m_pia[0]->writepa_handler().set("ticket", FUNC(ticket_dispenser_device::motor_w)).bit(7); + m_pia[0]->ca2_handler().set(FUNC(williams_state::lottofun_coin_lock_w)); MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(70), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH) MACHINE_CONFIG_END @@ -1710,11 +1708,10 @@ MACHINE_CONFIG_START(blaster_state::blaster) MCFG_DEVICE_PROGRAM_MAP(sound_map_b) /* pia */ - MCFG_DEVICE_MODIFY("pia_0") - MCFG_PIA_READPB_HANDLER(READ8("mux_b", ls157_device, output_r)) MCFG_DEVCB_MASK(0x0f) - MCFG_DEVCB_CHAIN_INPUT(IOPORT("IN1")) MCFG_DEVCB_MASK(0xf0) - MCFG_PIA_CB2_HANDLER(WRITELINE("mux_a", ls157_x2_device, select_w)) - MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("mux_b", ls157_device, select_w)) + m_pia[0]->readpb_handler().set("mux_b", FUNC(ls157_device::output_r)).mask(0x0f); + m_pia[0]->readpb_handler().append_ioport("IN1").mask(0xf0); + m_pia[0]->cb2_handler().set("mux_a", FUNC(ls157_x2_device::select_w)); + m_pia[0]->cb2_handler().append("mux_b", FUNC(ls157_device::select_w)); MCFG_DEVICE_MODIFY("mux_a") // IC7 (for PA0-PA3) + IC5 (for PA4-PA7) MCFG_74157_A_IN_CB(READ8(*this, williams_state, williams_49way_port_0_r)) @@ -1805,23 +1802,23 @@ MACHINE_CONFIG_START(williams2_state::williams2) MCFG_INPUT_MERGER_ANY_HIGH("soundirq") MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("soundcpu", M6808_IRQ_LINE)) - MCFG_DEVICE_ADD("pia_0", PIA6821, 0) + MCFG_DEVICE_ADD(m_pia[0], PIA6821, 0) MCFG_PIA_READPA_HANDLER(IOPORT("IN0")) MCFG_PIA_READPB_HANDLER(IOPORT("IN1")) - MCFG_DEVICE_ADD("pia_1", PIA6821, 0) + MCFG_DEVICE_ADD(m_pia[1], PIA6821, 0) MCFG_PIA_READPA_HANDLER(IOPORT("IN2")) MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, williams2_state,williams2_snd_cmd_w)) MCFG_PIA_CB2_HANDLER(WRITELINE("pia_2", pia6821_device, ca1_w)) MCFG_PIA_IRQA_HANDLER(WRITELINE("mainirq", input_merger_any_high_device, in_w<0>)) MCFG_PIA_IRQB_HANDLER(WRITELINE("mainirq", input_merger_any_high_device, in_w<1>)) - MCFG_DEVICE_ADD("pia_2", PIA6821, 0) - MCFG_PIA_WRITEPA_HANDLER(WRITE8("pia_1", pia6821_device, portb_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8("dac", dac_byte_interface, data_w)) - MCFG_PIA_CA2_HANDLER(WRITELINE("pia_1", pia6821_device, cb1_w)) - MCFG_PIA_IRQA_HANDLER(WRITELINE("soundirq", input_merger_any_high_device, in_w<0>)) - MCFG_PIA_IRQB_HANDLER(WRITELINE("soundirq", input_merger_any_high_device, in_w<1>)) + PIA6821(config, m_pia[2], 0); + m_pia[2]->writepa_handler().set(m_pia[1], FUNC(pia6821_device::portb_w)); + m_pia[2]->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w)); + m_pia[2]->ca2_handler().set(m_pia[1], FUNC(pia6821_device::cb1_w)); + m_pia[2]->irqa_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>)); + m_pia[2]->irqb_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>)); MACHINE_CONFIG_END @@ -1897,10 +1894,9 @@ MACHINE_CONFIG_START(joust2_state::joust2) MCFG_MACHINE_RESET_OVERRIDE(joust2_state,joust2) /* pia */ - MCFG_DEVICE_MODIFY("pia_0") - MCFG_PIA_READPA_HANDLER(IOPORT("IN0")) MCFG_DEVCB_MASK(0xf0) - MCFG_DEVCB_CHAIN_INPUT(READ8("mux", ls157_device, output_r)) MCFG_DEVCB_MASK(0x0f) - MCFG_PIA_CA2_HANDLER(WRITELINE("mux", ls157_device, select_w)) + m_pia[0]->readpa_handler().set_ioport("IN0").mask(0xf0); + m_pia[0]->readpa_handler().append("mux", FUNC(ls157_device::output_r)).mask(0x0f); + m_pia[0]->ca2_handler().set("mux", FUNC(ls157_device::select_w)); MCFG_DEVICE_MODIFY("pia_1") MCFG_PIA_READPA_HANDLER(IOPORT("IN2")) |