remove lots of MCFG_ (nw)

This commit is contained in:
Vas Crabb 2018-07-17 04:46:25 +10:00
parent 18eb2b394f
commit a28b2b5a19
53 changed files with 1156 additions and 1309 deletions

View File

@ -122,30 +122,30 @@ MACHINE_CONFIG_START(a2bus_pcxporter_device::device_add_mconfig)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
MCFG_DEVICE_DISABLE() MCFG_DEVICE_DISABLE()
MCFG_DEVICE_ADD(m_pit8253, PIT8253, 0) PIT8253(config, m_pit8253, 0);
MCFG_PIT8253_CLK0(A2BUS_7M_CLOCK / 6.0) // heartbeat IRQ m_pit8253->set_clk<0>(A2BUS_7M_CLOCK / 6.0); // heartbeat IRQ
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(m_pic8259, pic8259_device, ir0_w)) m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
MCFG_PIT8253_CLK1(A2BUS_7M_CLOCK / 6.0) // dram refresh m_pit8253->set_clk<1>(A2BUS_7M_CLOCK / 6.0); // DRAM refresh
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, a2bus_pcxporter_device, pc_pit8253_out1_changed)) m_pit8253->out_handler<1>().set(FUNC(a2bus_pcxporter_device::pc_pit8253_out1_changed));
MCFG_PIT8253_CLK2(A2BUS_7M_CLOCK / 6.0) // pio port c pin 4, and speaker polling enough m_pit8253->set_clk<2>(A2BUS_7M_CLOCK / 6.0); // PIO port C pin 4, and speaker polling enough
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, a2bus_pcxporter_device, pc_pit8253_out2_changed)) m_pit8253->out_handler<2>().set(FUNC(a2bus_pcxporter_device::pc_pit8253_out2_changed));
MCFG_DEVICE_ADD(m_dma8237, PCXPORT_DMAC, A2BUS_7M_CLOCK / 2) PCXPORT_DMAC(config, m_dma8237, A2BUS_7M_CLOCK / 2);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dma_hrq_changed)) m_dma8237->out_hreq_callback().set(FUNC(a2bus_pcxporter_device::pc_dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dma8237_out_eop)) m_dma8237->out_eop_callback().set(FUNC(a2bus_pcxporter_device::pc_dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, a2bus_pcxporter_device, pc_dma_read_byte)) m_dma8237->in_memr_callback().set(FUNC(a2bus_pcxporter_device::pc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, a2bus_pcxporter_device, pc_dma_write_byte)) m_dma8237->out_memw_callback().set(FUNC(a2bus_pcxporter_device::pc_dma_write_byte));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, a2bus_pcxporter_device, pc_dma8237_1_dack_r)) m_dma8237->in_ior_callback<1>().set(FUNC(a2bus_pcxporter_device::pc_dma8237_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, a2bus_pcxporter_device, pc_dma8237_2_dack_r)) m_dma8237->in_ior_callback<2>().set(FUNC(a2bus_pcxporter_device::pc_dma8237_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, a2bus_pcxporter_device, pc_dma8237_3_dack_r)) m_dma8237->in_ior_callback<3>().set(FUNC(a2bus_pcxporter_device::pc_dma8237_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, a2bus_pcxporter_device, pc_dma8237_0_dack_w)) m_dma8237->out_iow_callback<0>().set(FUNC(a2bus_pcxporter_device::pc_dma8237_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, a2bus_pcxporter_device, pc_dma8237_1_dack_w)) m_dma8237->out_iow_callback<1>().set(FUNC(a2bus_pcxporter_device::pc_dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, a2bus_pcxporter_device, pc_dma8237_2_dack_w)) m_dma8237->out_iow_callback<2>().set(FUNC(a2bus_pcxporter_device::pc_dma8237_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, a2bus_pcxporter_device, pc_dma8237_3_dack_w)) m_dma8237->out_iow_callback<3>().set(FUNC(a2bus_pcxporter_device::pc_dma8237_3_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dack0_w)) m_dma8237->out_dack_callback<0>().set(FUNC(a2bus_pcxporter_device::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dack1_w)) m_dma8237->out_dack_callback<1>().set(FUNC(a2bus_pcxporter_device::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dack2_w)) m_dma8237->out_dack_callback<2>().set(FUNC(a2bus_pcxporter_device::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, a2bus_pcxporter_device, pc_dack3_w)) m_dma8237->out_dack_callback<3>().set(FUNC(a2bus_pcxporter_device::pc_dack3_w));
PIC8259(config, m_pic8259, 0); PIC8259(config, m_pic8259, 0);
m_pic8259->out_int_callback().set_inputline(m_v30, 0); m_pic8259->out_int_callback().set_inputline(m_v30, 0);
@ -169,8 +169,7 @@ MACHINE_CONFIG_START(a2bus_pcxporter_device::device_add_mconfig)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND, 0) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, m_isabus, pc_isa8_cards, "cga", true) // FIXME: determine ISA bus clock MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, m_isabus, pc_isa8_cards, "cga", true) // FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, m_isabus, pc_isa8_cards, "fdc_xt", true) MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, m_isabus, pc_isa8_cards, "fdc_xt", true)

View File

@ -21,40 +21,40 @@ DEFINE_DEVICE_TYPE(AL_MAGICSOUND, al_magicsound_device, "al_magicsound", "Aleste
MACHINE_CONFIG_START(al_magicsound_device::device_add_mconfig) MACHINE_CONFIG_START(al_magicsound_device::device_add_mconfig)
MCFG_DEVICE_ADD( "dmac", AM9517A, XTAL(4'000'000) ) // CLK from expansion port AM9517A(config, m_dmac, 4_MHz_XTAL); // CLK from expansion port
// According to the schematics, the TC pin (EOP on western chips) is connected to NMI on the expansion port. // According to the schematics, the TC pin (EOP on western chips) is connected to NMI on the expansion port.
// NMIs seem to occur too quickly when this is active, so either EOP is not triggered at the correct time, or // NMIs seem to occur too quickly when this is active, so either EOP is not triggered at the correct time, or
// the K1810WT37 is different to the i8237/AM9517A // the K1810WT37 is different to the i8237/AM9517A
//MCFG_I8237_OUT_EOP_CB(WRITELINE("^", cpc_expansion_slot_device, nmi_w)) // MCFG_DEVCB_INVERT //m_dmac->out_eop_callback().set(DEVICE_SELF_OWNER, FUNC(cpc_expansion_slot_device::nmi_w))/*.invert()*/;
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dmac", am9517a_device, hack_w)) m_dmac->out_hreq_callback().set(m_dmac, FUNC(am9517a_device::hack_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, al_magicsound_device, dma_read_byte)) m_dmac->in_memr_callback().set(FUNC(al_magicsound_device::dma_read_byte));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, al_magicsound_device, dma_write_byte)) m_dmac->out_iow_callback<0>().set(FUNC(al_magicsound_device::dma_write_byte));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, al_magicsound_device, dma_write_byte)) m_dmac->out_iow_callback<1>().set(FUNC(al_magicsound_device::dma_write_byte));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, al_magicsound_device, dma_write_byte)) m_dmac->out_iow_callback<2>().set(FUNC(al_magicsound_device::dma_write_byte));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, al_magicsound_device, dma_write_byte)) m_dmac->out_iow_callback<3>().set(FUNC(al_magicsound_device::dma_write_byte));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, al_magicsound_device, dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(al_magicsound_device::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, al_magicsound_device, dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(al_magicsound_device::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, al_magicsound_device, dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(al_magicsound_device::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, al_magicsound_device, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(al_magicsound_device::dack3_w));
// Timing does not seem to be correct. // Timing does not seem to be correct.
// According to the schematics, the clock is from the clock pin on the expansion port (4MHz), and // According to the schematics, the clock is from the clock pin on the expansion port (4MHz), and
// passes through an inverter to each CLK pin on both timers. This seems to be too fast. // passes through an inverter to each CLK pin on both timers. This seems to be too fast.
// Timer outputs to SAM0/1/2/3 are sample clocks for each sound channel, D/A0 is the low bit of the channel select. // Timer outputs to SAM0/1/2/3 are sample clocks for each sound channel, D/A0 is the low bit of the channel select.
MCFG_DEVICE_ADD("timer1", PIT8254, 0) PIT8254(config, m_timer1, 0);
MCFG_PIT8253_CLK0(XTAL(4'000'000)) m_timer1->set_clk<0>(4_MHz_XTAL);
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, al_magicsound_device, sam0_w)) m_timer1->out_handler<0>().set(FUNC(al_magicsound_device::sam0_w));
MCFG_PIT8253_CLK1(XTAL(4'000'000)) m_timer1->set_clk<1>(4_MHz_XTAL);
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, al_magicsound_device, sam1_w)) m_timer1->out_handler<1>().set(FUNC(al_magicsound_device::sam1_w));
MCFG_PIT8253_CLK2(XTAL(4'000'000)) m_timer1->set_clk<2>(4_MHz_XTAL);
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, al_magicsound_device, sam2_w)) m_timer1->out_handler<2>().set(FUNC(al_magicsound_device::sam2_w));
MCFG_DEVICE_ADD("timer2", PIT8254, 0) PIT8254(config, m_timer2, 0);
MCFG_PIT8253_CLK0(XTAL(4'000'000)) m_timer2->set_clk<0>(4_MHz_XTAL);
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, al_magicsound_device, sam3_w)) m_timer2->out_handler<0>().set(FUNC(al_magicsound_device::sam3_w));
MCFG_PIT8253_CLK1(XTAL(4'000'000)) m_timer2->set_clk<1>(4_MHz_XTAL);
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, al_magicsound_device, da0_w)) m_timer2->out_handler<1>().set(FUNC(al_magicsound_device::da0_w));
MCFG_PIT8253_CLK2(XTAL(4'000'000)) m_timer2->set_clk<2>(4_MHz_XTAL);
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
@ -74,7 +74,8 @@ al_magicsound_device::al_magicsound_device(const machine_config &mconfig, const
m_dac(*this,"dac"), m_dac(*this,"dac"),
m_dmac(*this,"dmac"), m_dmac(*this,"dmac"),
m_timer1(*this,"timer1"), m_timer1(*this,"timer1"),
m_timer2(*this,"timer2"), m_current_channel(0), m_ramptr(nullptr), m_current_output(0) m_timer2(*this,"timer2"),
m_current_channel(0), m_ramptr(nullptr), m_current_output(0)
{ {
} }

View File

@ -26,55 +26,55 @@
//------------------------------------------------- //-------------------------------------------------
MACHINE_CONFIG_START(southbridge_device::device_add_mconfig) MACHINE_CONFIG_START(southbridge_device::device_add_mconfig)
MCFG_DEVICE_ADD("pit8254", PIT8254, 0) PIT8254(config, m_pit8254, 0);
MCFG_PIT8253_CLK0(4772720/4) // heartbeat IRQ m_pit8254->set_clk<0>(4772720/4); // heartbeat IRQ
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, southbridge_device, at_pit8254_out0_changed)) m_pit8254->out_handler<0>().set(FUNC(southbridge_device::at_pit8254_out0_changed));
MCFG_PIT8253_CLK1(4772720/4) // dram refresh m_pit8254->set_clk<1>(4772720/4); // DRAM refresh
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, southbridge_device, at_pit8254_out1_changed)) m_pit8254->out_handler<1>().set(FUNC(southbridge_device::at_pit8254_out1_changed));
MCFG_PIT8253_CLK2(4772720/4) // pio port c pin 4, and speaker polling enough m_pit8254->set_clk<2>(4772720/4); // PIO port C pin 4, and speaker polling enough
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, southbridge_device, at_pit8254_out2_changed)) m_pit8254->out_handler<2>().set(FUNC(southbridge_device::at_pit8254_out2_changed));
MCFG_DEVICE_ADD( "dma8237_1", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_1, XTAL(14'318'181)/3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma8237_2", am9517a_device, dreq0_w)) m_dma8237_1->out_hreq_callback().set(m_dma8237_2, FUNC(am9517a_device::dreq0_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, southbridge_device, at_dma8237_out_eop)) m_dma8237_1->out_eop_callback().set(FUNC(southbridge_device::at_dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, southbridge_device, pc_dma_read_byte)) m_dma8237_1->in_memr_callback().set(FUNC(southbridge_device::pc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, southbridge_device, pc_dma_write_byte)) m_dma8237_1->out_memw_callback().set(FUNC(southbridge_device::pc_dma_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, southbridge_device, pc_dma8237_0_dack_r)) m_dma8237_1->in_ior_callback<0>().set(FUNC(southbridge_device::pc_dma8237_0_dack_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, southbridge_device, pc_dma8237_1_dack_r)) m_dma8237_1->in_ior_callback<1>().set(FUNC(southbridge_device::pc_dma8237_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, southbridge_device, pc_dma8237_2_dack_r)) m_dma8237_1->in_ior_callback<2>().set(FUNC(southbridge_device::pc_dma8237_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, southbridge_device, pc_dma8237_3_dack_r)) m_dma8237_1->in_ior_callback<3>().set(FUNC(southbridge_device::pc_dma8237_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, southbridge_device, pc_dma8237_0_dack_w)) m_dma8237_1->out_iow_callback<0>().set(FUNC(southbridge_device::pc_dma8237_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, southbridge_device, pc_dma8237_1_dack_w)) m_dma8237_1->out_iow_callback<1>().set(FUNC(southbridge_device::pc_dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, southbridge_device, pc_dma8237_2_dack_w)) m_dma8237_1->out_iow_callback<2>().set(FUNC(southbridge_device::pc_dma8237_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, southbridge_device, pc_dma8237_3_dack_w)) m_dma8237_1->out_iow_callback<3>().set(FUNC(southbridge_device::pc_dma8237_3_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, southbridge_device, pc_dack0_w)) m_dma8237_1->out_dack_callback<0>().set(FUNC(southbridge_device::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, southbridge_device, pc_dack1_w)) m_dma8237_1->out_dack_callback<1>().set(FUNC(southbridge_device::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, southbridge_device, pc_dack2_w)) m_dma8237_1->out_dack_callback<2>().set(FUNC(southbridge_device::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, southbridge_device, pc_dack3_w)) m_dma8237_1->out_dack_callback<3>().set(FUNC(southbridge_device::pc_dack3_w));
MCFG_DEVICE_ADD( "dma8237_2", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_2, XTAL(14'318'181)/3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, southbridge_device, pc_dma_hrq_changed)) m_dma8237_2->out_hreq_callback().set(FUNC(southbridge_device::pc_dma_hrq_changed));
MCFG_I8237_IN_MEMR_CB(READ8(*this, southbridge_device, pc_dma_read_word)) m_dma8237_2->in_memr_callback().set(FUNC(southbridge_device::pc_dma_read_word));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, southbridge_device, pc_dma_write_word)) m_dma8237_2->out_memw_callback().set(FUNC(southbridge_device::pc_dma_write_word));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, southbridge_device, pc_dma8237_5_dack_r)) m_dma8237_2->in_ior_callback<1>().set(FUNC(southbridge_device::pc_dma8237_5_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, southbridge_device, pc_dma8237_6_dack_r)) m_dma8237_2->in_ior_callback<2>().set(FUNC(southbridge_device::pc_dma8237_6_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, southbridge_device, pc_dma8237_7_dack_r)) m_dma8237_2->in_ior_callback<3>().set(FUNC(southbridge_device::pc_dma8237_7_dack_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, southbridge_device, pc_dma8237_5_dack_w)) m_dma8237_2->out_iow_callback<1>().set(FUNC(southbridge_device::pc_dma8237_5_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, southbridge_device, pc_dma8237_6_dack_w)) m_dma8237_2->out_iow_callback<2>().set(FUNC(southbridge_device::pc_dma8237_6_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, southbridge_device, pc_dma8237_7_dack_w)) m_dma8237_2->out_iow_callback<3>().set(FUNC(southbridge_device::pc_dma8237_7_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, southbridge_device, pc_dack4_w)) m_dma8237_2->out_dack_callback<0>().set(FUNC(southbridge_device::pc_dack4_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, southbridge_device, pc_dack5_w)) m_dma8237_2->out_dack_callback<1>().set(FUNC(southbridge_device::pc_dack5_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, southbridge_device, pc_dack6_w)) m_dma8237_2->out_dack_callback<2>().set(FUNC(southbridge_device::pc_dack6_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, southbridge_device, pc_dack7_w)) m_dma8237_2->out_dack_callback<3>().set(FUNC(southbridge_device::pc_dack7_w));
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0) PIC8259(config, m_pic8259_master, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(":maincpu", 0)) m_pic8259_master->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic8259_master->in_sp_callback().set_constant(1);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, southbridge_device, get_slave_ack)) m_pic8259_master->read_slave_ack_callback().set(FUNC(southbridge_device::get_slave_ack));
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0) PIC8259(config, m_pic8259_slave, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir2_w)) m_pic8259_slave->out_int_callback().set(m_pic8259_master, FUNC(pic8259_device::ir2_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic8259_slave->in_sp_callback().set_constant(0);
MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", nullptr, false) MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", nullptr, false)
MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE("pic8259_slave", pic8259_device, ir6_w)) MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE("pic8259_slave", pic8259_device, ir6_w))
@ -86,8 +86,7 @@ MACHINE_CONFIG_START(southbridge_device::device_add_mconfig)
// sound hardware // sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND, 0) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_DEVICE_ADD("isabus", ISA16, 0) MCFG_DEVICE_ADD("isabus", ISA16, 0)
MCFG_ISA16_CPU(":maincpu") MCFG_ISA16_CPU(":maincpu")
@ -111,8 +110,8 @@ MACHINE_CONFIG_START(southbridge_device::device_add_mconfig)
MCFG_ISA_OUT_DRQ7_CB(WRITELINE("dma8237_2", am9517a_device, dreq3_w)) MCFG_ISA_OUT_DRQ7_CB(WRITELINE("dma8237_2", am9517a_device, dreq3_w))
MACHINE_CONFIG_END MACHINE_CONFIG_END
southbridge_device::southbridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) southbridge_device::southbridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
: device_t(mconfig, type, tag, owner, clock), device_t(mconfig, type, tag, owner, clock),
m_maincpu(*this, ":maincpu"), m_maincpu(*this, ":maincpu"),
m_pic8259_master(*this, "pic8259_master"), m_pic8259_master(*this, "pic8259_master"),
m_pic8259_slave(*this, "pic8259_slave"), m_pic8259_slave(*this, "pic8259_slave"),

View File

@ -488,36 +488,36 @@ WRITE_LINE_MEMBER(v53_base_device::internal_irq_w)
MACHINE_CONFIG_START(v53_base_device::device_add_mconfig) MACHINE_CONFIG_START(v53_base_device::device_add_mconfig)
MCFG_DEVICE_ADD("pit", PIT8254, 0) // functionality identical to uPD71054 PIT8254(config, m_v53tcu, 0); // functionality identical to uPD71054
MCFG_PIT8253_CLK0(16000000) // manual implicitly claims that these runs at same speed as the CPU m_v53tcu->set_clk<0>(16000000); // manual implicitly claims that these runs at same speed as the CPU
MCFG_PIT8253_CLK1(16000000) m_v53tcu->set_clk<1>(16000000);
MCFG_PIT8253_CLK2(16000000) m_v53tcu->set_clk<2>(16000000);
MCFG_PIT8253_OUT0_HANDLER(WRITELINE( *this, v53_base_device, tcu_out0_trampoline_cb )) m_v53tcu->out_handler<0>().set([this] (int state) { m_out0_handler(state); });
MCFG_PIT8253_OUT1_HANDLER(WRITELINE( *this, v53_base_device, tcu_out1_trampoline_cb )) m_v53tcu->out_handler<1>().set([this] (int state) { m_out1_handler(state); });
MCFG_PIT8253_OUT2_HANDLER(WRITELINE( *this, v53_base_device, tcu_out2_trampoline_cb )) m_v53tcu->out_handler<2>().set([this] (int state) { m_out2_handler(state); });
MCFG_DEVICE_ADD("upd71071dma", V53_DMAU, 4000000) V53_DMAU(config, m_v53dmau, 4000000);
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, v53_base_device, hreq_trampoline_cb)) m_v53dmau->out_hreq_callback().set([this] (int state) { m_out_hreq_cb(state); });
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(*this, v53_base_device, eop_trampoline_cb)) m_v53dmau->out_eop_callback().set([this] (int state) { m_out_eop_cb(state); });
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, v53_base_device, dma_memr_trampoline_r)) m_v53dmau->in_memr_callback().set([this] (address_space &space, offs_t offset) { return m_in_memr_cb(space, offset); });
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(*this, v53_base_device, dma_memw_trampoline_w)) m_v53dmau->out_memw_callback().set([this] (address_space &space, offs_t offset, uint8_t data) { m_out_memw_cb(space, offset, data); });
MCFG_AM9517A_IN_IOR_0_CB(READ8(*this, v53_base_device, dma_io_0_trampoline_r)) m_v53dmau->in_ior_callback<0>().set([this] (address_space &space, offs_t offset) { return m_in_ior_0_cb(space, offset); });
MCFG_AM9517A_IN_IOR_1_CB(READ8(*this, v53_base_device, dma_io_1_trampoline_r)) m_v53dmau->in_ior_callback<1>().set([this] (address_space &space, offs_t offset) { return m_in_ior_1_cb(space, offset); });
MCFG_AM9517A_IN_IOR_2_CB(READ8(*this, v53_base_device, dma_io_2_trampoline_r)) m_v53dmau->in_ior_callback<2>().set([this] (address_space &space, offs_t offset) { return m_in_ior_2_cb(space, offset); });
MCFG_AM9517A_IN_IOR_3_CB(READ8(*this, v53_base_device, dma_io_3_trampoline_r)) m_v53dmau->in_ior_callback<3>().set([this] (address_space &space, offs_t offset) { return m_in_ior_3_cb(space, offset); });
MCFG_AM9517A_OUT_IOW_0_CB(WRITE8(*this, v53_base_device, dma_io_0_trampoline_w)) m_v53dmau->out_iow_callback<0>().set([this] (address_space &space, offs_t offset, uint8_t data) { m_out_iow_0_cb(space, offset, data); });
MCFG_AM9517A_OUT_IOW_1_CB(WRITE8(*this, v53_base_device, dma_io_1_trampoline_w)) m_v53dmau->out_iow_callback<1>().set([this] (address_space &space, offs_t offset, uint8_t data) { m_out_iow_1_cb(space, offset, data); });
MCFG_AM9517A_OUT_IOW_2_CB(WRITE8(*this, v53_base_device, dma_io_2_trampoline_w)) m_v53dmau->out_iow_callback<2>().set([this] (address_space &space, offs_t offset, uint8_t data) { m_out_iow_2_cb(space, offset, data); });
MCFG_AM9517A_OUT_IOW_3_CB(WRITE8(*this, v53_base_device, dma_io_3_trampoline_w)) m_v53dmau->out_iow_callback<3>().set([this] (address_space &space, offs_t offset, uint8_t data) { m_out_iow_3_cb(space, offset, data); });
MCFG_AM9517A_OUT_DACK_0_CB(WRITELINE(*this, v53_base_device, dma_dack0_trampoline_w)) m_v53dmau->out_dack_callback<0>().set([this] (int state) { m_out_dack_0_cb(state); });
MCFG_AM9517A_OUT_DACK_1_CB(WRITELINE(*this, v53_base_device, dma_dack1_trampoline_w)) m_v53dmau->out_dack_callback<1>().set([this] (int state) { m_out_dack_1_cb(state); });
MCFG_AM9517A_OUT_DACK_2_CB(WRITELINE(*this, v53_base_device, dma_dack2_trampoline_w)) m_v53dmau->out_dack_callback<2>().set([this] (int state) { m_out_dack_2_cb(state); });
MCFG_AM9517A_OUT_DACK_3_CB(WRITELINE(*this, v53_base_device, dma_dack3_trampoline_w)) m_v53dmau->out_dack_callback<3>().set([this] (int state) { m_out_dack_3_cb(state); });
pic8259_device &upd71059pic(PIC8259(config, "upd71059pic", 0)); PIC8259(config, m_v53icu, 0);
upd71059pic.out_int_callback().set(FUNC(v53_base_device::internal_irq_w)); m_v53icu->out_int_callback().set(FUNC(v53_base_device::internal_irq_w));
upd71059pic.in_sp_callback().set_constant(1); m_v53icu->in_sp_callback().set_constant(1);
upd71059pic.read_slave_ack_callback().set(FUNC(v53_base_device::get_pic_ack)); m_v53icu->read_slave_ack_callback().set(FUNC(v53_base_device::get_pic_ack));
MCFG_DEVICE_ADD("v53scu", V53_SCU, 0) MCFG_DEVICE_ADD("v53scu", V53_SCU, 0)
MCFG_I8251_TXD_HANDLER(WRITELINE(*this, v53_base_device, scu_txd_trampoline_cb)) MCFG_I8251_TXD_HANDLER(WRITELINE(*this, v53_base_device, scu_txd_trampoline_cb))
@ -531,8 +531,8 @@ MACHINE_CONFIG_START(v53_base_device::device_add_mconfig)
MACHINE_CONFIG_END MACHINE_CONFIG_END
v53_base_device::v53_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type) v53_base_device::v53_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type) :
: nec_common_device(mconfig, type, tag, owner, clock, true, prefetch_size, prefetch_cycles, chip_type), nec_common_device(mconfig, type, tag, owner, clock, true, prefetch_size, prefetch_cycles, chip_type),
m_io_space_config( "io", ENDIANNESS_LITTLE, 16, 16, 0, address_map_constructor(FUNC(v53_base_device::v53_internal_port_map), this) ), m_io_space_config( "io", ENDIANNESS_LITTLE, 16, 16, 0, address_map_constructor(FUNC(v53_base_device::v53_internal_port_map), this) ),
m_v53tcu(*this, "pit"), m_v53tcu(*this, "pit"),
m_v53dmau(*this, "upd71071dma"), m_v53dmau(*this, "upd71071dma"),

View File

@ -164,9 +164,6 @@ public:
template <class Object> devcb_base &set_out0_handler(Object &&cb) { return m_out0_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_out0_handler(Object &&cb) { return m_out0_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out1_handler(Object &&cb) { return m_out1_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_out1_handler(Object &&cb) { return m_out1_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out2_handler(Object &&cb) { return m_out2_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_out2_handler(Object &&cb) { return m_out2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(tcu_out0_trampoline_cb){ m_out0_handler(state); }
DECLARE_WRITE_LINE_MEMBER(tcu_out1_trampoline_cb){ m_out1_handler(state); }
DECLARE_WRITE_LINE_MEMBER(tcu_out2_trampoline_cb){ m_out2_handler(state); }
// DMAU // DMAU
template<class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } template<class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
@ -260,22 +257,6 @@ protected:
devcb_write_line m_out_dack_2_cb; devcb_write_line m_out_dack_2_cb;
devcb_write_line m_out_dack_3_cb; devcb_write_line m_out_dack_3_cb;
DECLARE_WRITE_LINE_MEMBER(hreq_trampoline_cb) { m_out_hreq_cb(state); }
DECLARE_WRITE_LINE_MEMBER(eop_trampoline_cb) { m_out_eop_cb(state); }
DECLARE_READ8_MEMBER(dma_memr_trampoline_r) { return m_in_memr_cb(space, offset); }
DECLARE_WRITE8_MEMBER(dma_memw_trampoline_w) { m_out_memw_cb(space, offset, data); }
DECLARE_READ8_MEMBER(dma_io_0_trampoline_r) { return m_in_ior_0_cb(space, offset); }
DECLARE_READ8_MEMBER(dma_io_1_trampoline_r) { return m_in_ior_1_cb(space, offset); }
DECLARE_READ8_MEMBER(dma_io_2_trampoline_r) { return m_in_ior_2_cb(space, offset); }
DECLARE_READ8_MEMBER(dma_io_3_trampoline_r) { return m_in_ior_3_cb(space, offset); }
DECLARE_WRITE8_MEMBER(dma_io_0_trampoline_w) { m_out_iow_0_cb(space, offset, data); }
DECLARE_WRITE8_MEMBER(dma_io_1_trampoline_w) { m_out_iow_1_cb(space, offset, data); }
DECLARE_WRITE8_MEMBER(dma_io_2_trampoline_w) { m_out_iow_2_cb(space, offset, data); }
DECLARE_WRITE8_MEMBER(dma_io_3_trampoline_w) { m_out_iow_3_cb(space, offset, data); }
DECLARE_WRITE_LINE_MEMBER(dma_dack0_trampoline_w) { m_out_dack_0_cb(state); }
DECLARE_WRITE_LINE_MEMBER(dma_dack1_trampoline_w) { m_out_dack_1_cb(state); }
DECLARE_WRITE_LINE_MEMBER(dma_dack2_trampoline_w) { m_out_dack_2_cb(state); }
DECLARE_WRITE_LINE_MEMBER(dma_dack3_trampoline_w) { m_out_dack_3_cb(state); }
DECLARE_READ8_MEMBER(get_pic_ack); DECLARE_READ8_MEMBER(get_pic_ack);
DECLARE_WRITE_LINE_MEMBER(internal_irq_w); DECLARE_WRITE_LINE_MEMBER(internal_irq_w);
}; };

View File

@ -63,6 +63,11 @@ public:
template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_speaker_callback(Object &&cb) { return m_speaker_cb.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_speaker_callback(Object &&cb) { return m_speaker_cb.set_callback(std::forward<Object>(cb)); }
auto system_reset_callback() { return m_system_reset_cb.bind(); }
auto gate_a20_callback() { return m_gate_a20_cb.bind(); }
auto input_buffer_full_callback() { return m_input_buffer_full_cb.bind(); }
auto output_buffer_empty_callback() { return m_output_buffer_empty_cb.bind(); }
auto speaker_callback() { return m_speaker_cb.bind(); }
DECLARE_READ8_MEMBER( data_r ); DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w ); DECLARE_WRITE8_MEMBER( data_w );

View File

@ -51,19 +51,12 @@ public:
// construction/destruction // construction/destruction
am9517a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); am9517a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
auto out_hreq_callback() { return m_out_hreq_cb.bind(); } auto out_hreq_callback() { return m_out_hreq_cb.bind(); }
auto out_eop_callback() { return m_out_eop_cb.bind(); } auto out_eop_callback() { return m_out_eop_cb.bind(); }
template <class Object> devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
auto in_memr_callback() { return m_in_memr_cb.bind(); } auto in_memr_callback() { return m_in_memr_cb.bind(); }
auto out_memw_callback() { return m_out_memw_cb.bind(); } auto out_memw_callback() { return m_out_memw_cb.bind(); }
template <unsigned C, class Object> devcb_base &set_in_ior_callback(Object &&cb) { return m_in_ior_cb[C].set_callback(std::forward<Object>(cb)); }
template <unsigned C, class Object> devcb_base &set_out_iow_callback(Object &&cb) { return m_out_iow_cb[C].set_callback(std::forward<Object>(cb)); }
template <unsigned C, class Object> devcb_base &set_out_dack_callback(Object &&cb) { return m_out_dack_cb[C].set_callback(std::forward<Object>(cb)); }
template <unsigned C> auto in_ior_callback() { return m_in_ior_cb[C].bind(); } template <unsigned C> auto in_ior_callback() { return m_in_ior_cb[C].bind(); }
template <unsigned C> auto out_iow_callback() { return m_out_iow_cb[C].bind(); } template <unsigned C> auto out_iow_callback() { return m_out_iow_cb[C].bind(); }
template <unsigned C> auto out_dack_callback() { return m_out_dack_cb[C].bind(); } template <unsigned C> auto out_dack_callback() { return m_out_dack_cb[C].bind(); }
@ -180,74 +173,4 @@ DECLARE_DEVICE_TYPE(AM9517A, am9517a_device)
DECLARE_DEVICE_TYPE(V53_DMAU, upd71071_v53_device) DECLARE_DEVICE_TYPE(V53_DMAU, upd71071_v53_device)
DECLARE_DEVICE_TYPE(PCXPORT_DMAC, pcxport_dmac_device) DECLARE_DEVICE_TYPE(PCXPORT_DMAC, pcxport_dmac_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define MCFG_AM9517A_OUT_HREQ_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_EOP_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_eop_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_MEMR_CB(_devcb) \
downcast<am9517a_device &>(*device).set_in_memr_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_MEMW_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_memw_callback(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_0_CB(_devcb) \
downcast<am9517a_device &>(*device).set_in_ior_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_1_CB(_devcb) \
downcast<am9517a_device &>(*device).set_in_ior_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_2_CB(_devcb) \
downcast<am9517a_device &>(*device).set_in_ior_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_3_CB(_devcb) \
downcast<am9517a_device &>(*device).set_in_ior_callback<3>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_0_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_iow_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_1_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_iow_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_2_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_iow_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_3_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_iow_callback<3>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_0_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_dack_callback<0>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_1_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_dack_callback<1>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_2_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_dack_callback<2>(DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_3_CB(_devcb) \
downcast<am9517a_device &>(*device).set_out_dack_callback<3>(DEVCB_##_devcb);
#define MCFG_I8237_OUT_HREQ_CB MCFG_AM9517A_OUT_HREQ_CB
#define MCFG_I8237_OUT_EOP_CB MCFG_AM9517A_OUT_EOP_CB
#define MCFG_I8237_IN_MEMR_CB MCFG_AM9517A_IN_MEMR_CB
#define MCFG_I8237_OUT_MEMW_CB MCFG_AM9517A_OUT_MEMW_CB
#define MCFG_I8237_IN_IOR_0_CB MCFG_AM9517A_IN_IOR_0_CB
#define MCFG_I8237_IN_IOR_1_CB MCFG_AM9517A_IN_IOR_1_CB
#define MCFG_I8237_IN_IOR_2_CB MCFG_AM9517A_IN_IOR_2_CB
#define MCFG_I8237_IN_IOR_3_CB MCFG_AM9517A_IN_IOR_3_CB
#define MCFG_I8237_OUT_IOW_0_CB MCFG_AM9517A_OUT_IOW_0_CB
#define MCFG_I8237_OUT_IOW_1_CB MCFG_AM9517A_OUT_IOW_1_CB
#define MCFG_I8237_OUT_IOW_2_CB MCFG_AM9517A_OUT_IOW_2_CB
#define MCFG_I8237_OUT_IOW_3_CB MCFG_AM9517A_OUT_IOW_3_CB
#define MCFG_I8237_OUT_DACK_0_CB MCFG_AM9517A_OUT_DACK_0_CB
#define MCFG_I8237_OUT_DACK_1_CB MCFG_AM9517A_OUT_DACK_1_CB
#define MCFG_I8237_OUT_DACK_2_CB MCFG_AM9517A_OUT_DACK_2_CB
#define MCFG_I8237_OUT_DACK_3_CB MCFG_AM9517A_OUT_DACK_3_CB
#endif // MAME_MACHINE_AM9517_H #endif // MAME_MACHINE_AM9517_H

View File

@ -96,60 +96,62 @@ const float cs4031_device::m_dma_clock_divider[] =
// device_add_mconfig - add device configuration // device_add_mconfig - add device configuration
//------------------------------------------------- //-------------------------------------------------
MACHINE_CONFIG_START(cs4031_device::device_add_mconfig) void cs4031_device::device_add_mconfig(machine_config &config)
MCFG_DEVICE_ADD("dma1", AM9517A, 0) {
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma2", am9517a_device, dreq0_w)) AM9517A(config, m_dma1, 0);
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, cs4031_device, dma1_eop_w)) m_dma1->out_hreq_callback().set(m_dma2, FUNC(am9517a_device::dreq0_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, cs4031_device, dma_read_byte)) m_dma1->out_eop_callback().set(FUNC(cs4031_device::dma1_eop_w));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, cs4031_device, dma_write_byte)) m_dma1->in_memr_callback().set(FUNC(cs4031_device::dma_read_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, cs4031_device, dma1_ior0_r)) m_dma1->out_memw_callback().set(FUNC(cs4031_device::dma_write_byte));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, cs4031_device, dma1_ior1_r)) m_dma1->in_ior_callback<0>().set(FUNC(cs4031_device::dma1_ior0_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, cs4031_device, dma1_ior2_r)) m_dma1->in_ior_callback<1>().set(FUNC(cs4031_device::dma1_ior1_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, cs4031_device, dma1_ior3_r)) m_dma1->in_ior_callback<2>().set(FUNC(cs4031_device::dma1_ior2_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, cs4031_device, dma1_iow0_w)) m_dma1->in_ior_callback<3>().set(FUNC(cs4031_device::dma1_ior3_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, cs4031_device, dma1_iow1_w)) m_dma1->out_iow_callback<0>().set(FUNC(cs4031_device::dma1_iow0_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, cs4031_device, dma1_iow2_w)) m_dma1->out_iow_callback<1>().set(FUNC(cs4031_device::dma1_iow1_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, cs4031_device, dma1_iow3_w)) m_dma1->out_iow_callback<2>().set(FUNC(cs4031_device::dma1_iow2_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, cs4031_device, dma1_dack0_w)) m_dma1->out_iow_callback<3>().set(FUNC(cs4031_device::dma1_iow3_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, cs4031_device, dma1_dack1_w)) m_dma1->out_dack_callback<0>().set(FUNC(cs4031_device::dma1_dack0_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, cs4031_device, dma1_dack2_w)) m_dma1->out_dack_callback<1>().set(FUNC(cs4031_device::dma1_dack1_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, cs4031_device, dma1_dack3_w)) m_dma1->out_dack_callback<2>().set(FUNC(cs4031_device::dma1_dack2_w));
MCFG_DEVICE_ADD("dma2", AM9517A, 0) m_dma1->out_dack_callback<3>().set(FUNC(cs4031_device::dma1_dack3_w));
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, cs4031_device, dma2_hreq_w))
MCFG_I8237_IN_MEMR_CB(READ8(*this, cs4031_device, dma_read_word))
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, cs4031_device, dma_write_word))
MCFG_I8237_IN_IOR_1_CB(READ8(*this, cs4031_device, dma2_ior1_r))
MCFG_I8237_IN_IOR_2_CB(READ8(*this, cs4031_device, dma2_ior2_r))
MCFG_I8237_IN_IOR_3_CB(READ8(*this, cs4031_device, dma2_ior3_r))
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, cs4031_device, dma2_iow1_w))
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, cs4031_device, dma2_iow2_w))
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, cs4031_device, dma2_iow3_w))
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, cs4031_device, dma2_dack0_w))
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, cs4031_device, dma2_dack1_w))
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, cs4031_device, dma2_dack2_w))
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, cs4031_device, dma2_dack3_w))
MCFG_DEVICE_ADD("intc1", PIC8259, 0) AM9517A(config, m_dma2, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, cs4031_device, intc1_int_w)) m_dma2->out_hreq_callback().set(FUNC(cs4031_device::dma2_hreq_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_dma2->in_memr_callback().set(FUNC(cs4031_device::dma_read_word));
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, cs4031_device, intc1_slave_ack_r)) m_dma2->out_memw_callback().set(FUNC(cs4031_device::dma_write_word));
m_dma2->in_ior_callback<1>().set(FUNC(cs4031_device::dma2_ior1_r));
m_dma2->in_ior_callback<2>().set(FUNC(cs4031_device::dma2_ior2_r));
m_dma2->in_ior_callback<3>().set(FUNC(cs4031_device::dma2_ior3_r));
m_dma2->out_iow_callback<1>().set(FUNC(cs4031_device::dma2_iow1_w));
m_dma2->out_iow_callback<2>().set(FUNC(cs4031_device::dma2_iow2_w));
m_dma2->out_iow_callback<3>().set(FUNC(cs4031_device::dma2_iow3_w));
m_dma2->out_dack_callback<0>().set(FUNC(cs4031_device::dma2_dack0_w));
m_dma2->out_dack_callback<1>().set(FUNC(cs4031_device::dma2_dack1_w));
m_dma2->out_dack_callback<2>().set(FUNC(cs4031_device::dma2_dack2_w));
m_dma2->out_dack_callback<3>().set(FUNC(cs4031_device::dma2_dack3_w));
MCFG_DEVICE_ADD("intc2", PIC8259, 0) PIC8259(config, m_intc1, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("intc1", pic8259_device, ir2_w)) m_intc1->out_int_callback().set(FUNC(cs4031_device::intc1_int_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_intc1->in_sp_callback().set_constant(1);
m_intc1->read_slave_ack_callback().set(FUNC(cs4031_device::intc1_slave_ack_r));
MCFG_DEVICE_ADD("ctc", PIT8254, 0) PIC8259(config, m_intc2, 0);
MCFG_PIT8253_CLK0(XTAL(14'318'181) / 12.0) m_intc2->out_int_callback().set(m_intc1, FUNC(pic8259_device::ir2_w));
MCFG_PIT8253_OUT0_HANDLER(WRITELINE("intc1", pic8259_device, ir0_w)) m_intc2->in_sp_callback().set_constant(0);
MCFG_PIT8253_CLK1(XTAL(14'318'181) / 12.0)
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, cs4031_device, ctc_out1_w))
MCFG_PIT8253_CLK2(XTAL(14'318'181) / 12.0)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, cs4031_device, ctc_out2_w))
MCFG_DS12885_ADD("rtc") PIT8254(config, m_ctc, 0);
MCFG_MC146818_IRQ_HANDLER(WRITELINE("intc2", pic8259_device, ir0_w)) m_ctc->set_clk<0>(XTAL(14'318'181) / 12.0);
MCFG_MC146818_CENTURY_INDEX(0x32) m_ctc->out_handler<0>().set(m_intc1, FUNC(pic8259_device::ir0_w));
MACHINE_CONFIG_END m_ctc->set_clk<1>(XTAL(14'318'181) / 12.0);
m_ctc->out_handler<1>().set(FUNC(cs4031_device::ctc_out1_w));
m_ctc->set_clk<2>(XTAL(14'318'181) / 12.0);
m_ctc->out_handler<2>().set(FUNC(cs4031_device::ctc_out2_w));
DS12885(config, m_rtc);
m_rtc->irq_callback().set(m_intc2, FUNC(pic8259_device::ir0_w));
m_rtc->set_century_index(0x32);
}
//************************************************************************** //**************************************************************************

View File

@ -14,7 +14,7 @@ class ds12885_device : public mc146818_device
{ {
public: public:
// construction/destruction // construction/destruction
ds12885_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ds12885_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 32'768);
protected: protected:
virtual int data_size() override { return 128; } virtual int data_size() override { return 128; }

View File

@ -406,38 +406,38 @@ DEFINE_DEVICE_TYPE(IBM5160_MOTHERBOARD, ibm5160_mb_device, "ibm5160_mb", "IBM 51
//------------------------------------------------- //-------------------------------------------------
MACHINE_CONFIG_START(ibm5160_mb_device::device_add_mconfig) MACHINE_CONFIG_START(ibm5160_mb_device::device_add_mconfig)
MCFG_DEVICE_ADD("pit8253", PIT8253, 0) PIT8253(config, m_pit8253, 0);
MCFG_PIT8253_CLK0(XTAL(14'318'181)/12.0) /* heartbeat IRQ */ m_pit8253->set_clk<0>(XTAL(14'318'181)/12.0); // heartbeat IRQ
MCFG_PIT8253_OUT0_HANDLER(WRITELINE("pic8259", pic8259_device, ir0_w)) m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
MCFG_PIT8253_CLK1(XTAL(14'318'181)/12.0) /* dram refresh */ m_pit8253->set_clk<1>(XTAL(14'318'181)/12.0); // DRAM refresh
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, ibm5160_mb_device, pc_pit8253_out1_changed)) m_pit8253->out_handler<1>().set(FUNC(ibm5160_mb_device::pc_pit8253_out1_changed));
MCFG_PIT8253_CLK2(XTAL(14'318'181)/12.0) /* pio port c pin 4, and speaker polling enough */ m_pit8253->set_clk<2>(XTAL(14'318'181)/12.0); // PIO port C pin 4, and speaker polling enough
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, ibm5160_mb_device, pc_pit8253_out2_changed)) m_pit8253->out_handler<2>().set(FUNC(ibm5160_mb_device::pc_pit8253_out2_changed));
MCFG_DEVICE_ADD( "dma8237", AM9517A, XTAL(14'318'181)/3.0 ) AM9517A(config, m_dma8237, XTAL(14'318'181)/3.0);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, ibm5160_mb_device, pc_dma_hrq_changed)) m_dma8237->out_hreq_callback().set(FUNC(ibm5160_mb_device::pc_dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, ibm5160_mb_device, pc_dma8237_out_eop)) m_dma8237->out_eop_callback().set(FUNC(ibm5160_mb_device::pc_dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, ibm5160_mb_device, pc_dma_read_byte)) m_dma8237->in_memr_callback().set(FUNC(ibm5160_mb_device::pc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, ibm5160_mb_device, pc_dma_write_byte)) m_dma8237->out_memw_callback().set(FUNC(ibm5160_mb_device::pc_dma_write_byte));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, ibm5160_mb_device, pc_dma8237_1_dack_r)) m_dma8237->in_ior_callback<1>().set(FUNC(ibm5160_mb_device::pc_dma8237_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, ibm5160_mb_device, pc_dma8237_2_dack_r)) m_dma8237->in_ior_callback<2>().set(FUNC(ibm5160_mb_device::pc_dma8237_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, ibm5160_mb_device, pc_dma8237_3_dack_r)) m_dma8237->in_ior_callback<3>().set(FUNC(ibm5160_mb_device::pc_dma8237_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, ibm5160_mb_device, pc_dma8237_0_dack_w)) m_dma8237->out_iow_callback<0>().set(FUNC(ibm5160_mb_device::pc_dma8237_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, ibm5160_mb_device, pc_dma8237_1_dack_w)) m_dma8237->out_iow_callback<1>().set(FUNC(ibm5160_mb_device::pc_dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, ibm5160_mb_device, pc_dma8237_2_dack_w)) m_dma8237->out_iow_callback<2>().set(FUNC(ibm5160_mb_device::pc_dma8237_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, ibm5160_mb_device, pc_dma8237_3_dack_w)) m_dma8237->out_iow_callback<3>().set(FUNC(ibm5160_mb_device::pc_dma8237_3_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, ibm5160_mb_device, pc_dack0_w)) m_dma8237->out_dack_callback<0>().set(FUNC(ibm5160_mb_device::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, ibm5160_mb_device, pc_dack1_w)) m_dma8237->out_dack_callback<1>().set(FUNC(ibm5160_mb_device::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, ibm5160_mb_device, pc_dack2_w)) m_dma8237->out_dack_callback<2>().set(FUNC(ibm5160_mb_device::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, ibm5160_mb_device, pc_dack3_w)) m_dma8237->out_dack_callback<3>().set(FUNC(ibm5160_mb_device::pc_dack3_w));
MCFG_DEVICE_ADD("pic8259", PIC8259, 0) PIC8259(config, m_pic8259, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, ibm5160_mb_device, pic_int_w)) m_pic8259->out_int_callback().set(FUNC(ibm5160_mb_device::pic_int_w));
MCFG_DEVICE_ADD("ppi8255", I8255A, 0) I8255A(config, m_ppi8255, 0);
MCFG_I8255_IN_PORTA_CB(READ8(*this, ibm5160_mb_device, pc_ppi_porta_r)) m_ppi8255->in_pa_callback().set(FUNC(ibm5160_mb_device::pc_ppi_porta_r));
MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, ibm5160_mb_device, pc_ppi_portb_w)) m_ppi8255->out_pb_callback().set(FUNC(ibm5160_mb_device::pc_ppi_portb_w));
MCFG_I8255_IN_PORTC_CB(READ8(*this, ibm5160_mb_device, pc_ppi_portc_r)) m_ppi8255->in_pc_callback().set(FUNC(ibm5160_mb_device::pc_ppi_portc_r));
MCFG_DEVICE_ADD("isa", ISA8, 0) MCFG_DEVICE_ADD("isa", ISA8, 0)
MCFG_ISA8_CPU(":maincpu") MCFG_ISA8_CPU(":maincpu")
@ -457,8 +457,7 @@ MACHINE_CONFIG_START(ibm5160_mb_device::device_add_mconfig)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND, 0) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -69,6 +69,10 @@ public:
template <class Object> devcb_base &set_di_rd_callback(Object &&cb) { return m_read_di.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_di_rd_callback(Object &&cb) { return m_read_di.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_do_wr_callback(Object &&cb) { return m_write_do.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_do_wr_callback(Object &&cb) { return m_write_do.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_md_rd_callback(Object &&cb) { return m_read_md.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_md_rd_callback(Object &&cb) { return m_read_md.set_callback(std::forward<Object>(cb)); }
auto int_wr_callback() { return m_write_int.bind(); }
auto di_rd_callback() { return m_read_di.bind(); }
auto do_wr_callback() { return m_write_do.bind(); }
auto md_rd_callback() { return m_read_md.bind(); }
// data read handlers // data read handlers
DECLARE_READ8_MEMBER(read); DECLARE_READ8_MEMBER(read);

View File

@ -47,60 +47,59 @@ void i82371sb_isa_device::internal_io_map(address_map &map)
//------------------------------------------------- //-------------------------------------------------
MACHINE_CONFIG_START(i82371sb_isa_device::device_add_mconfig) MACHINE_CONFIG_START(i82371sb_isa_device::device_add_mconfig)
MCFG_DEVICE_ADD("pit8254", PIT8254, 0) PIT8254(config, m_pit8254, 0);
MCFG_PIT8253_CLK0(4772720/4) /* heartbeat IRQ */ m_pit8254->set_clk<0>(4772720/4); // heartbeat IRQ
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, i82371sb_isa_device, at_pit8254_out0_changed)) m_pit8254->out_handler<0>().set(FUNC(i82371sb_isa_device::at_pit8254_out0_changed));
MCFG_PIT8253_CLK1(4772720/4) /* dram refresh */ m_pit8254->set_clk<1>(4772720/4); // DRAM refresh
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, i82371sb_isa_device, at_pit8254_out1_changed)) m_pit8254->out_handler<1>().set(FUNC(i82371sb_isa_device::at_pit8254_out1_changed));
MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */ m_pit8254->set_clk<2>(4772720/4); // PIO port C pin 4, and speaker polling enough
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, i82371sb_isa_device, at_pit8254_out2_changed)) m_pit8254->out_handler<2>().set(FUNC(i82371sb_isa_device::at_pit8254_out2_changed));
MCFG_DEVICE_ADD( "dma8237_1", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_1, XTAL(14'318'181)/3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma8237_2", am9517a_device, dreq0_w)) m_dma8237_1->out_hreq_callback().set(m_dma8237_2, FUNC(am9517a_device::dreq0_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, i82371sb_isa_device, at_dma8237_out_eop)) m_dma8237_1->out_eop_callback().set(FUNC(i82371sb_isa_device::at_dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, i82371sb_isa_device, pc_dma_read_byte)) m_dma8237_1->in_memr_callback().set(FUNC(i82371sb_isa_device::pc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, i82371sb_isa_device, pc_dma_write_byte)) m_dma8237_1->out_memw_callback().set(FUNC(i82371sb_isa_device::pc_dma_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, i82371sb_isa_device, pc_dma8237_0_dack_r)) m_dma8237_1->in_ior_callback<0>().set(FUNC(i82371sb_isa_device::pc_dma8237_0_dack_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, i82371sb_isa_device, pc_dma8237_1_dack_r)) m_dma8237_1->in_ior_callback<1>().set(FUNC(i82371sb_isa_device::pc_dma8237_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, i82371sb_isa_device, pc_dma8237_2_dack_r)) m_dma8237_1->in_ior_callback<2>().set(FUNC(i82371sb_isa_device::pc_dma8237_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, i82371sb_isa_device, pc_dma8237_3_dack_r)) m_dma8237_1->in_ior_callback<3>().set(FUNC(i82371sb_isa_device::pc_dma8237_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, i82371sb_isa_device, pc_dma8237_0_dack_w)) m_dma8237_1->out_iow_callback<0>().set(FUNC(i82371sb_isa_device::pc_dma8237_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, i82371sb_isa_device, pc_dma8237_1_dack_w)) m_dma8237_1->out_iow_callback<1>().set(FUNC(i82371sb_isa_device::pc_dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, i82371sb_isa_device, pc_dma8237_2_dack_w)) m_dma8237_1->out_iow_callback<2>().set(FUNC(i82371sb_isa_device::pc_dma8237_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, i82371sb_isa_device, pc_dma8237_3_dack_w)) m_dma8237_1->out_iow_callback<3>().set(FUNC(i82371sb_isa_device::pc_dma8237_3_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack0_w)) m_dma8237_1->out_dack_callback<0>().set(FUNC(i82371sb_isa_device::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack1_w)) m_dma8237_1->out_dack_callback<1>().set(FUNC(i82371sb_isa_device::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack2_w)) m_dma8237_1->out_dack_callback<2>().set(FUNC(i82371sb_isa_device::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack3_w)) m_dma8237_1->out_dack_callback<3>().set(FUNC(i82371sb_isa_device::pc_dack3_w));
MCFG_DEVICE_ADD( "dma8237_2", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_2, XTAL(14'318'181)/3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, i82371sb_isa_device, pc_dma_hrq_changed)) m_dma8237_2->out_hreq_callback().set(FUNC(i82371sb_isa_device::pc_dma_hrq_changed));
MCFG_I8237_IN_MEMR_CB(READ8(*this, i82371sb_isa_device, pc_dma_read_word)) m_dma8237_2->in_memr_callback().set(FUNC(i82371sb_isa_device::pc_dma_read_word));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, i82371sb_isa_device, pc_dma_write_word)) m_dma8237_2->out_memw_callback().set(FUNC(i82371sb_isa_device::pc_dma_write_word));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, i82371sb_isa_device, pc_dma8237_5_dack_r)) m_dma8237_2->in_ior_callback<1>().set(FUNC(i82371sb_isa_device::pc_dma8237_5_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, i82371sb_isa_device, pc_dma8237_6_dack_r)) m_dma8237_2->in_ior_callback<2>().set(FUNC(i82371sb_isa_device::pc_dma8237_6_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, i82371sb_isa_device, pc_dma8237_7_dack_r)) m_dma8237_2->in_ior_callback<3>().set(FUNC(i82371sb_isa_device::pc_dma8237_7_dack_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, i82371sb_isa_device, pc_dma8237_5_dack_w)) m_dma8237_2->out_iow_callback<1>().set(FUNC(i82371sb_isa_device::pc_dma8237_5_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, i82371sb_isa_device, pc_dma8237_6_dack_w)) m_dma8237_2->out_iow_callback<2>().set(FUNC(i82371sb_isa_device::pc_dma8237_6_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, i82371sb_isa_device, pc_dma8237_7_dack_w)) m_dma8237_2->out_iow_callback<3>().set(FUNC(i82371sb_isa_device::pc_dma8237_7_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack4_w)) m_dma8237_2->out_dack_callback<0>().set(FUNC(i82371sb_isa_device::pc_dack4_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack5_w)) m_dma8237_2->out_dack_callback<1>().set(FUNC(i82371sb_isa_device::pc_dack5_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack6_w)) m_dma8237_2->out_dack_callback<2>().set(FUNC(i82371sb_isa_device::pc_dack6_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, i82371sb_isa_device, pc_dack7_w)) m_dma8237_2->out_dack_callback<3>().set(FUNC(i82371sb_isa_device::pc_dack7_w));
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0) PIC8259(config, m_pic8259_master, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(":maincpu", 0)) m_pic8259_master->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic8259_master->in_sp_callback().set_constant(1);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, i82371sb_isa_device, get_slave_ack)) m_pic8259_master->read_slave_ack_callback().set(FUNC(i82371sb_isa_device::get_slave_ack));
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0) PIC8259(config, m_pic8259_slave, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir2_w)) m_pic8259_slave->out_int_callback().set(m_pic8259_master, FUNC(pic8259_device::ir2_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic8259_slave->in_sp_callback().set_constant(0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND, 0) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_DEVICE_ADD("isabus", ISA16, 0) MCFG_DEVICE_ADD("isabus", ISA16, 0)
MCFG_ISA16_CPU(":maincpu") MCFG_ISA16_CPU(":maincpu")

View File

@ -37,25 +37,6 @@ Data Link Controller
#include "osdcore.h" #include "osdcore.h"
//**************************************************************************
// DEVICE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_MB89374_IRQ_CB(_devcb) \
downcast<mb89374_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MB89374_PO0_CB(_devcb) \
downcast<mb89374_device &>(*device).set_out_po_callback<0>(DEVCB_##_devcb);
#define MCFG_MB89374_PO1_CB(_devcb) \
downcast<mb89374_device &>(*device).set_out_po_callback<1>(DEVCB_##_devcb);
#define MCFG_MB89374_PO2_CB(_devcb) \
downcast<mb89374_device &>(*device).set_out_po_callback<2>(DEVCB_##_devcb);
#define MCFG_MB89374_PO3_CB(_devcb) \
downcast<mb89374_device &>(*device).set_out_po_callback<3>(DEVCB_##_devcb);
class mb89374_device : public device_t, class mb89374_device : public device_t,
public device_execute_interface public device_execute_interface
@ -64,8 +45,8 @@ public:
// construction/destruction // construction/destruction
mb89374_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); mb89374_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } auto out_irq_callback() { return m_out_irq_cb.bind(); }
template <unsigned N, class Object> devcb_base &set_out_po_callback(Object &&cb) { return m_out_po_cb[N].set_callback(std::forward<Object>(cb)); } template <unsigned N> auto out_po_callback() { return m_out_po_cb[N].bind(); }
// read/write handlers // read/write handlers
DECLARE_READ8_MEMBER( read ); DECLARE_READ8_MEMBER( read );

View File

@ -273,15 +273,15 @@ MACHINE_CONFIG_START(pdc_device::device_add_mconfig)
/* DMA Controller - Intel P8237A-5 */ /* DMA Controller - Intel P8237A-5 */
/* Channel 0: uPD765a Floppy Disk Controller */ /* Channel 0: uPD765a Floppy Disk Controller */
/* Channel 1: M68K main system memory */ /* Channel 1: M68K main system memory */
MCFG_DEVICE_ADD(FDCDMA_TAG, AM9517A, XTAL(10'000'000) / 2) AM9517A(config, m_dma8237, 10_MHz_XTAL / 2);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, pdc_device, i8237_hreq_w)) m_dma8237->out_hreq_callback().set(FUNC(pdc_device::i8237_hreq_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, pdc_device, i8237_eop_w)) m_dma8237->out_eop_callback().set(FUNC(pdc_device::i8237_eop_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, pdc_device, i8237_dma_mem_r)) m_dma8237->in_memr_callback().set(FUNC(pdc_device::i8237_dma_mem_r));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, pdc_device, i8237_dma_mem_w)) m_dma8237->out_memw_callback().set(FUNC(pdc_device::i8237_dma_mem_w));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, pdc_device, i8237_fdc_dma_r)) m_dma8237->in_ior_callback<0>().set(FUNC(pdc_device::i8237_fdc_dma_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, pdc_device, i8237_fdc_dma_w)) m_dma8237->out_iow_callback<0>().set(FUNC(pdc_device::i8237_fdc_dma_w));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, pdc_device, m68k_dma_r)) m_dma8237->in_ior_callback<1>().set(FUNC(pdc_device::m68k_dma_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, pdc_device, m68k_dma_w)) m_dma8237->out_iow_callback<1>().set(FUNC(pdc_device::m68k_dma_w));
/* Hard Disk Controller - HDC9224 */ /* Hard Disk Controller - HDC9224 */
MCFG_DEVICE_ADD(HDC_TAG, HDC9224, 0) MCFG_DEVICE_ADD(HDC_TAG, HDC9224, 0)

View File

@ -46,55 +46,55 @@ void sis85c496_host_device::internal_io_map(address_map &map)
} }
MACHINE_CONFIG_START(sis85c496_host_device::device_add_mconfig) MACHINE_CONFIG_START(sis85c496_host_device::device_add_mconfig)
MCFG_DEVICE_ADD("pit8254", PIT8254, 0) PIT8254(config, m_pit8254, 0);
MCFG_PIT8253_CLK0(4772720/4) /* heartbeat IRQ */ m_pit8254->set_clk<0>(4772720/4); // heartbeat IRQ
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, sis85c496_host_device, at_pit8254_out0_changed)) m_pit8254->out_handler<0>().set(FUNC(sis85c496_host_device::at_pit8254_out0_changed));
MCFG_PIT8253_CLK1(4772720/4) /* dram refresh */ m_pit8254->set_clk<1>(4772720/4); // DRAM refresh
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, sis85c496_host_device, at_pit8254_out1_changed)) m_pit8254->out_handler<1>().set(FUNC(sis85c496_host_device::at_pit8254_out1_changed));
MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */ m_pit8254->set_clk<2>(4772720/4); // PIO port C pin 4, and speaker polling enough
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, sis85c496_host_device, at_pit8254_out2_changed)) m_pit8254->out_handler<2>().set(FUNC(sis85c496_host_device::at_pit8254_out2_changed));
MCFG_DEVICE_ADD( "dma8237_1", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_1, XTAL(14'318'181)/3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma8237_2", am9517a_device, dreq0_w)) m_dma8237_1->out_hreq_callback().set(m_dma8237_2, FUNC(am9517a_device::dreq0_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, sis85c496_host_device, at_dma8237_out_eop)) m_dma8237_1->out_eop_callback().set(FUNC(sis85c496_host_device::at_dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, sis85c496_host_device, pc_dma_read_byte)) m_dma8237_1->in_memr_callback().set(FUNC(sis85c496_host_device::pc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, sis85c496_host_device, pc_dma_write_byte)) m_dma8237_1->out_memw_callback().set(FUNC(sis85c496_host_device::pc_dma_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, sis85c496_host_device, pc_dma8237_0_dack_r)) m_dma8237_1->in_ior_callback<0>().set(FUNC(sis85c496_host_device::pc_dma8237_0_dack_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, sis85c496_host_device, pc_dma8237_1_dack_r)) m_dma8237_1->in_ior_callback<1>().set(FUNC(sis85c496_host_device::pc_dma8237_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, sis85c496_host_device, pc_dma8237_2_dack_r)) m_dma8237_1->in_ior_callback<2>().set(FUNC(sis85c496_host_device::pc_dma8237_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, sis85c496_host_device, pc_dma8237_3_dack_r)) m_dma8237_1->in_ior_callback<3>().set(FUNC(sis85c496_host_device::pc_dma8237_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, sis85c496_host_device, pc_dma8237_0_dack_w)) m_dma8237_1->out_iow_callback<0>().set(FUNC(sis85c496_host_device::pc_dma8237_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, sis85c496_host_device, pc_dma8237_1_dack_w)) m_dma8237_1->out_iow_callback<1>().set(FUNC(sis85c496_host_device::pc_dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, sis85c496_host_device, pc_dma8237_2_dack_w)) m_dma8237_1->out_iow_callback<2>().set(FUNC(sis85c496_host_device::pc_dma8237_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, sis85c496_host_device, pc_dma8237_3_dack_w)) m_dma8237_1->out_iow_callback<3>().set(FUNC(sis85c496_host_device::pc_dma8237_3_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, sis85c496_host_device, pc_dack0_w)) m_dma8237_1->out_dack_callback<0>().set(FUNC(sis85c496_host_device::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, sis85c496_host_device, pc_dack1_w)) m_dma8237_1->out_dack_callback<1>().set(FUNC(sis85c496_host_device::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, sis85c496_host_device, pc_dack2_w)) m_dma8237_1->out_dack_callback<2>().set(FUNC(sis85c496_host_device::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, sis85c496_host_device, pc_dack3_w)) m_dma8237_1->out_dack_callback<3>().set(FUNC(sis85c496_host_device::pc_dack3_w));
MCFG_DEVICE_ADD( "dma8237_2", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_2, XTAL(14'318'181)/3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, sis85c496_host_device, pc_dma_hrq_changed)) m_dma8237_2->out_hreq_callback().set(FUNC(sis85c496_host_device::pc_dma_hrq_changed));
MCFG_I8237_IN_MEMR_CB(READ8(*this, sis85c496_host_device, pc_dma_read_word)) m_dma8237_2->in_memr_callback().set(FUNC(sis85c496_host_device::pc_dma_read_word));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, sis85c496_host_device, pc_dma_write_word)) m_dma8237_2->out_memw_callback().set(FUNC(sis85c496_host_device::pc_dma_write_word));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, sis85c496_host_device, pc_dma8237_5_dack_r)) m_dma8237_2->in_ior_callback<1>().set(FUNC(sis85c496_host_device::pc_dma8237_5_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, sis85c496_host_device, pc_dma8237_6_dack_r)) m_dma8237_2->in_ior_callback<2>().set(FUNC(sis85c496_host_device::pc_dma8237_6_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, sis85c496_host_device, pc_dma8237_7_dack_r)) m_dma8237_2->in_ior_callback<3>().set(FUNC(sis85c496_host_device::pc_dma8237_7_dack_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, sis85c496_host_device, pc_dma8237_5_dack_w)) m_dma8237_2->out_iow_callback<1>().set(FUNC(sis85c496_host_device::pc_dma8237_5_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, sis85c496_host_device, pc_dma8237_6_dack_w)) m_dma8237_2->out_iow_callback<2>().set(FUNC(sis85c496_host_device::pc_dma8237_6_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, sis85c496_host_device, pc_dma8237_7_dack_w)) m_dma8237_2->out_iow_callback<3>().set(FUNC(sis85c496_host_device::pc_dma8237_7_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, sis85c496_host_device, pc_dack4_w)) m_dma8237_2->out_dack_callback<0>().set(FUNC(sis85c496_host_device::pc_dack4_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, sis85c496_host_device, pc_dack5_w)) m_dma8237_2->out_dack_callback<1>().set(FUNC(sis85c496_host_device::pc_dack5_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, sis85c496_host_device, pc_dack6_w)) m_dma8237_2->out_dack_callback<2>().set(FUNC(sis85c496_host_device::pc_dack6_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, sis85c496_host_device, pc_dack7_w)) m_dma8237_2->out_dack_callback<3>().set(FUNC(sis85c496_host_device::pc_dack7_w));
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0) PIC8259(config, m_pic8259_master, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, sis85c496_host_device, cpu_int_w)) m_pic8259_master->out_int_callback().set(FUNC(sis85c496_host_device::cpu_int_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic8259_master->in_sp_callback().set_constant(1);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, sis85c496_host_device, get_slave_ack)) m_pic8259_master->read_slave_ack_callback().set(FUNC(sis85c496_host_device::get_slave_ack));
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0) PIC8259(config, m_pic8259_slave, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir2_w)) m_pic8259_slave->out_int_callback().set(m_pic8259_master, FUNC(pic8259_device::ir2_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic8259_slave->in_sp_callback().set_constant(0);
MCFG_DEVICE_ADD("keybc", AT_KEYBOARD_CONTROLLER, XTAL(12'000'000)) MCFG_DEVICE_ADD("keybc", AT_KEYBOARD_CONTROLLER, XTAL(12'000'000))
MCFG_AT_KEYBOARD_CONTROLLER_SYSTEM_RESET_CB(WRITELINE(*this, sis85c496_host_device, cpu_reset_w)) MCFG_AT_KEYBOARD_CONTROLLER_SYSTEM_RESET_CB(WRITELINE(*this, sis85c496_host_device, cpu_reset_w))
@ -107,14 +107,13 @@ MACHINE_CONFIG_START(sis85c496_host_device::device_add_mconfig)
MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE("keybc", at_keyboard_controller_device, keyboard_data_w)) MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE("keybc", at_keyboard_controller_device, keyboard_data_w))
MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL) MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL)
MCFG_DS12885_ADD("rtc") DS12885(config, m_ds12885);
MCFG_MC146818_IRQ_HANDLER(WRITELINE("pic8259_slave", pic8259_device, ir0_w)) m_ds12885->irq_callback().set(m_pic8259_slave, FUNC(pic8259_device::ir0_w));
MCFG_MC146818_CENTURY_INDEX(0x32) m_ds12885->set_century_index(0x32);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND, 0) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -22,58 +22,59 @@
DEFINE_DEVICE_TYPE(WD7600, wd7600_device, "wd7600", "Western Digital WD7600 chipset") DEFINE_DEVICE_TYPE(WD7600, wd7600_device, "wd7600", "Western Digital WD7600 chipset")
MACHINE_CONFIG_START(wd7600_device::device_add_mconfig) MACHINE_CONFIG_START(wd7600_device::device_add_mconfig)
MCFG_DEVICE_ADD("dma1", AM9517A, 0) AM9517A(config, m_dma1, 0);
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma2", am9517a_device, dreq0_w)) m_dma1->out_hreq_callback().set(m_dma2, FUNC(am9517a_device::dreq0_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, wd7600_device, dma1_eop_w)) m_dma1->out_eop_callback().set(FUNC(wd7600_device::dma1_eop_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, wd7600_device, dma_read_byte)) m_dma1->in_memr_callback().set(FUNC(wd7600_device::dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, wd7600_device, dma_write_byte)) m_dma1->out_memw_callback().set(FUNC(wd7600_device::dma_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, wd7600_device, dma1_ior0_r)) m_dma1->in_ior_callback<0>().set(FUNC(wd7600_device::dma1_ior0_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, wd7600_device, dma1_ior1_r)) m_dma1->in_ior_callback<1>().set(FUNC(wd7600_device::dma1_ior1_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, wd7600_device, dma1_ior2_r)) m_dma1->in_ior_callback<2>().set(FUNC(wd7600_device::dma1_ior2_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, wd7600_device, dma1_ior3_r)) m_dma1->in_ior_callback<3>().set(FUNC(wd7600_device::dma1_ior3_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, wd7600_device, dma1_iow0_w)) m_dma1->out_iow_callback<0>().set(FUNC(wd7600_device::dma1_iow0_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, wd7600_device, dma1_iow1_w)) m_dma1->out_iow_callback<1>().set(FUNC(wd7600_device::dma1_iow1_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, wd7600_device, dma1_iow2_w)) m_dma1->out_iow_callback<2>().set(FUNC(wd7600_device::dma1_iow2_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, wd7600_device, dma1_iow3_w)) m_dma1->out_iow_callback<3>().set(FUNC(wd7600_device::dma1_iow3_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, wd7600_device, dma1_dack0_w)) m_dma1->out_dack_callback<0>().set(FUNC(wd7600_device::dma1_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, wd7600_device, dma1_dack1_w)) m_dma1->out_dack_callback<1>().set(FUNC(wd7600_device::dma1_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, wd7600_device, dma1_dack2_w)) m_dma1->out_dack_callback<2>().set(FUNC(wd7600_device::dma1_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, wd7600_device, dma1_dack3_w)) m_dma1->out_dack_callback<3>().set(FUNC(wd7600_device::dma1_dack3_w));
MCFG_DEVICE_ADD("dma2", AM9517A, 0)
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, wd7600_device, dma2_hreq_w))
MCFG_I8237_IN_MEMR_CB(READ8(*this, wd7600_device, dma_read_word))
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, wd7600_device, dma_write_word))
MCFG_I8237_IN_IOR_1_CB(READ8(*this, wd7600_device, dma2_ior1_r))
MCFG_I8237_IN_IOR_2_CB(READ8(*this, wd7600_device, dma2_ior2_r))
MCFG_I8237_IN_IOR_3_CB(READ8(*this, wd7600_device, dma2_ior3_r))
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, wd7600_device, dma2_iow1_w))
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, wd7600_device, dma2_iow2_w))
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, wd7600_device, dma2_iow3_w))
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, wd7600_device, dma2_dack0_w))
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, wd7600_device, dma2_dack1_w))
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, wd7600_device, dma2_dack2_w))
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, wd7600_device, dma2_dack3_w))
MCFG_DEVICE_ADD("intc1", PIC8259, 0) AM9517A(config, m_dma2, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, wd7600_device, pic1_int_w)) m_dma2->out_hreq_callback().set(FUNC(wd7600_device::dma2_hreq_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_dma2->in_memr_callback().set(FUNC(wd7600_device::dma_read_word));
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, wd7600_device, pic1_slave_ack_r)) m_dma2->out_memw_callback().set(FUNC(wd7600_device::dma_write_word));
m_dma2->in_ior_callback<1>().set(FUNC(wd7600_device::dma2_ior1_r));
m_dma2->in_ior_callback<2>().set(FUNC(wd7600_device::dma2_ior2_r));
m_dma2->in_ior_callback<3>().set(FUNC(wd7600_device::dma2_ior3_r));
m_dma2->out_iow_callback<1>().set(FUNC(wd7600_device::dma2_iow1_w));
m_dma2->out_iow_callback<2>().set(FUNC(wd7600_device::dma2_iow2_w));
m_dma2->out_iow_callback<3>().set(FUNC(wd7600_device::dma2_iow3_w));
m_dma2->out_dack_callback<0>().set(FUNC(wd7600_device::dma2_dack0_w));
m_dma2->out_dack_callback<1>().set(FUNC(wd7600_device::dma2_dack1_w));
m_dma2->out_dack_callback<2>().set(FUNC(wd7600_device::dma2_dack2_w));
m_dma2->out_dack_callback<3>().set(FUNC(wd7600_device::dma2_dack3_w));
MCFG_DEVICE_ADD("intc2", PIC8259, 0) PIC8259(config, m_pic1, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("intc1", pic8259_device, ir2_w)) m_pic1->out_int_callback().set(FUNC(wd7600_device::pic1_int_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic1->in_sp_callback().set_constant(1);
m_pic1->read_slave_ack_callback().set(FUNC(wd7600_device::pic1_slave_ack_r));
MCFG_DEVICE_ADD("ctc", PIT8254, 0) PIC8259(config, m_pic2, 0);
MCFG_PIT8253_CLK0(XTAL(14'318'181) / 12.0) m_pic2->out_int_callback().set(m_pic1, FUNC(pic8259_device::ir2_w));
MCFG_PIT8253_OUT0_HANDLER(WRITELINE("intc1", pic8259_device, ir0_w)) m_pic2->in_sp_callback().set_constant(0);
MCFG_PIT8253_CLK1(XTAL(14'318'181) / 12.0)
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, wd7600_device, ctc_out1_w))
MCFG_PIT8253_CLK2(XTAL(14'318'181) / 12.0)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, wd7600_device, ctc_out2_w))
MCFG_DS12885_ADD("rtc") PIT8254(config, m_ctc, 0);
MCFG_MC146818_IRQ_HANDLER(WRITELINE("intc2", pic8259_device, ir0_w)) m_ctc->set_clk<0>(XTAL(14'318'181) / 12.0);
MCFG_MC146818_CENTURY_INDEX(0x32) m_ctc->out_handler<0>().set(m_pic1, FUNC(pic8259_device::ir0_w));
m_ctc->set_clk<1>(XTAL(14'318'181) / 12.0);
m_ctc->out_handler<1>().set(FUNC(wd7600_device::ctc_out1_w));
m_ctc->set_clk<2>(XTAL(14'318'181) / 12.0);
m_ctc->out_handler<2>().set(FUNC(wd7600_device::ctc_out2_w));
DS12885(config, m_rtc);
m_rtc->irq_callback().set(m_pic2, FUNC(pic8259_device::ir0_w));
m_rtc->set_century_index(0x32);
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -94,6 +95,9 @@ wd7600_device::wd7600_device(const machine_config &mconfig, const char *tag, dev
m_pic2(*this, "intc2"), m_pic2(*this, "intc2"),
m_ctc(*this, "ctc"), m_ctc(*this, "ctc"),
m_rtc(*this, "rtc"), m_rtc(*this, "rtc"),
m_cpu(*this, finder_base::DUMMY_TAG),
m_keybc(*this, finder_base::DUMMY_TAG),
m_bios(*this, finder_base::DUMMY_TAG),
m_portb(0x0f), m_portb(0x0f),
m_iochck(1), m_iochck(1),
m_nmi_mask(1), m_nmi_mask(1),
@ -104,7 +108,8 @@ wd7600_device::wd7600_device(const machine_config &mconfig, const char *tag, dev
m_dma_eop(0), m_dma_eop(0),
m_dma_high_byte(0xff), m_dma_high_byte(0xff),
m_dma_channel(-1) m_dma_channel(-1)
{} {
}
void wd7600_device::device_start() void wd7600_device::device_start()
@ -126,13 +131,10 @@ void wd7600_device::device_start()
m_write_a20m.resolve_safe(); m_write_a20m.resolve_safe();
m_write_spkr.resolve_safe(); m_write_spkr.resolve_safe();
device_t *cpu = machine().device(m_cputag); m_space = &m_cpu->space(AS_PROGRAM);
m_space = &cpu->memory().space(AS_PROGRAM); m_space_io = &m_cpu->space(AS_IO);
m_space_io = &cpu->memory().space(AS_IO);
m_isa = machine().root_device().memregion(m_isatag)->base(); m_isa = machine().root_device().memregion(m_isatag)->base();
m_bios = machine().root_device().memregion(m_biostag)->base();
m_keybc = downcast<at_keyboard_controller_device *>(machine().device(m_keybctag));
m_ram = ram_dev->pointer(); m_ram = ram_dev->pointer();
uint32_t ram_size = ram_dev->size(); uint32_t ram_size = ram_dev->size();
@ -147,15 +149,15 @@ void wd7600_device::device_start()
// install video BIOS (we should use the VGA BIOS at the beginning of the system BIOS ROM, but that gives a // install video BIOS (we should use the VGA BIOS at the beginning of the system BIOS ROM, but that gives a
// blank display (but still runs)) // blank display (but still runs))
//m_space->install_rom(0x000c0000, 0x000cffff, m_bios); //m_space->install_rom(0x000c0000, 0x000cffff, &m_bios[0x00000]);
m_space->install_rom(0x000c0000, 0x000cffff, m_isa); m_space->install_rom(0x000c0000, 0x000cffff, m_isa);
// install BIOS ROM at cpu initial pc // install BIOS ROM at cpu initial pc
m_space->install_rom(0x000f0000, 0x000fffff, m_bios + 0x10000); m_space->install_rom(0x000f0000, 0x000fffff, &m_bios[0x10000]);
if(m_space->addrmask() == 0xffffffff) // 32-bit address space only if(m_space->addrmask() == 0xffffffff) // 32-bit address space only
m_space->install_rom(0xffff0000, 0xffffffff, m_bios + 0x10000); m_space->install_rom(0xffff0000, 0xffffffff, &m_bios[0x10000]);
else else
m_space->install_rom(0x00ff0000, 0x00ffffff, m_bios + 0x10000); m_space->install_rom(0x00ff0000, 0x00ffffff, &m_bios[0x10000]);
// install i/o accesses // install i/o accesses
if (m_space_io->data_width() == 16) if (m_space_io->data_width() == 16)
@ -300,7 +302,7 @@ READ8_MEMBER( wd7600_device::keyb_data_r )
{ {
uint8_t ret = m_keybc->data_r(space,0); uint8_t ret = m_keybc->data_r(space,0);
// LOG("WD7600: keyboard data read %02x\n", ret); // LOG("WD7600: keyboard data read %02x\n", ret);
return ret; return ret;
} }
WRITE8_MEMBER( wd7600_device::keyb_cmd_w ) WRITE8_MEMBER( wd7600_device::keyb_cmd_w )

View File

@ -78,10 +78,10 @@ public:
template <class Object> devcb_base &set_spkr_callback(Object &&spkr) { return m_write_spkr.set_callback(std::forward<Object>(spkr)); } template <class Object> devcb_base &set_spkr_callback(Object &&spkr) { return m_write_spkr.set_callback(std::forward<Object>(spkr)); }
// inline configuration // inline configuration
void set_cputag(const char *tag) { m_cputag = tag; } template <typename T> void set_cputag(T &&tag) { m_cpu.set_tag(std::forward<T>(tag)); }
void set_isatag(const char *tag) { m_isatag = tag; } void set_isatag(const char *tag) { m_isatag = tag; }
void set_biostag(const char *tag) { m_biostag = tag; } template <typename T> void set_biostag(T &&tag) { m_bios.set_tag(std::forward<T>(tag)); }
void set_keybctag(const char *tag) { m_keybctag = tag; } template <typename T> void set_keybctag(T &&tag) { m_keybc.set_tag(std::forward<T>(tag)); }
// input lines // input lines
DECLARE_WRITE_LINE_MEMBER( irq01_w ) { m_pic1->ir1_w(state); } DECLARE_WRITE_LINE_MEMBER( irq01_w ) { m_pic1->ir1_w(state); }
@ -195,6 +195,10 @@ private:
required_device<pit8254_device> m_ctc; required_device<pit8254_device> m_ctc;
required_device<ds12885_device> m_rtc; required_device<ds12885_device> m_rtc;
required_device<device_memory_interface> m_cpu;
required_device<at_keyboard_controller_device> m_keybc;
required_region_ptr<uint8_t> m_bios;
offs_t page_offset(); offs_t page_offset();
void set_dma_channel(int channel, bool state); void set_dma_channel(int channel, bool state);
void keyboard_gatea20(int state); void keyboard_gatea20(int state);
@ -202,10 +206,7 @@ private:
void a20m(); void a20m();
// internal state // internal state
const char *m_cputag;
const char *m_isatag; const char *m_isatag;
const char *m_biostag;
const char *m_keybctag;
uint8_t m_portb; uint8_t m_portb;
int m_iochck; int m_iochck;
int m_nmi_mask; int m_nmi_mask;
@ -228,9 +229,7 @@ private:
address_space *m_space; address_space *m_space;
address_space *m_space_io; address_space *m_space_io;
uint8_t *m_isa; uint8_t *m_isa;
uint8_t *m_bios;
uint8_t *m_ram; uint8_t *m_ram;
at_keyboard_controller_device *m_keybc;
}; };
// device type definition // device type definition

View File

@ -20,21 +20,6 @@
#pragma once #pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_MM5837_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, MM5837, 0)
#define MCFG_MM5837_VDD(_voltage) \
downcast<mm5837_device &>(*device).set_vdd_voltage(_voltage);
#define MCFG_MM5837_OUTPUT_CB(_devcb) \
downcast<mm5837_device &>(*device).set_output_callback(DEVCB_##_devcb);
//************************************************************************** //**************************************************************************
// TYPE DEFINITIONS // TYPE DEFINITIONS
//************************************************************************** //**************************************************************************
@ -43,11 +28,11 @@ class mm5837_device : public device_t
{ {
public: public:
// construction/destruction // construction/destruction
mm5837_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); mm5837_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
// configuration // configuration
void set_vdd_voltage(int voltage) { m_vdd = voltage; } void set_vdd_voltage(int voltage) { m_vdd = voltage; }
template <class Object> devcb_base &set_output_callback(Object &&cb) { return m_output_cb.set_callback(std::forward<Object>(cb)); } auto output_callback() { return m_output_cb.bind(); }
protected: protected:
// device-level overrides // device-level overrides

View File

@ -28,6 +28,7 @@
#include "machine/pit8253.h" #include "machine/pit8253.h"
#include "machine/pic8259.h" #include "machine/pic8259.h"
#include "machine/bankdev.h" #include "machine/bankdev.h"
#include "machine/input_merger.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/clock.h" #include "machine/clock.h"
@ -489,29 +490,30 @@ MACHINE_CONFIG_START(a7150_state::a7150)
// MCFG_I8255_OUT_PORTB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) // MCFG_I8255_OUT_PORTB_CB(WRITE8("cent_data_out", output_latch_device, bus_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, a7150_state, ppi_c_w)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, a7150_state, ppi_c_w))
MCFG_DEVICE_ADD("pit8253", PIT8253, 0) PIT8253(config, m_pit8253, 0);
MCFG_PIT8253_CLK0(XTAL(14'745'600)/4) m_pit8253->set_clk<0>(14.7456_MHz_XTAL/4);
MCFG_PIT8253_OUT0_HANDLER(WRITELINE("pic8259", pic8259_device, ir2_w)) m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir2_w));
MCFG_PIT8253_CLK1(XTAL(14'745'600)/4) m_pit8253->set_clk<1>(14.7456_MHz_XTAL/4);
MCFG_PIT8253_CLK2(XTAL(14'745'600)/4) m_pit8253->set_clk<2>(14.7456_MHz_XTAL/4);
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, a7150_state, a7150_tmr2_w)) m_pit8253->out_handler<2>().set(FUNC(a7150_state::a7150_tmr2_w));
MCFG_DEVICE_ADD("uart8251", I8251, 0) INPUT_MERGER_ANY_HIGH(config, "uart_irq").output_handler().set(m_pic8259, FUNC(pic8259_device::ir4_w));
MCFG_I8251_TXD_HANDLER(WRITELINE(*this, a7150_state, ifss_write_txd))
MCFG_I8251_DTR_HANDLER(WRITELINE(*this, a7150_state, ifss_write_dtr)) I8251(config, m_uart8251, 0);
MCFG_I8251_RTS_HANDLER(WRITELINE(*this, a7150_state, ifss_loopback_w)) m_uart8251->txd_handler().set(FUNC(a7150_state::ifss_write_txd));
MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir4_w)) m_uart8251->dtr_handler().set(FUNC(a7150_state::ifss_write_dtr));
MCFG_I8251_TXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir4_w)) m_uart8251->rts_handler().set(FUNC(a7150_state::ifss_loopback_w));
m_uart8251->rxrdy_handler().set("uart_irq", FUNC(input_merger_device::in_w<0>));
m_uart8251->txrdy_handler().set("uart_irq", FUNC(input_merger_device::in_w<1>));
// IFSS port on processor card -- keyboard runs at 28800 8N2 // IFSS port on processor card -- keyboard runs at 28800 8N2
MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard") RS232_PORT(config, m_rs232, default_rs232_devices, "keyboard");
MCFG_RS232_RXD_HANDLER(WRITELINE("uart8251", i8251_device, write_rxd)) m_rs232->rxd_handler().set(m_uart8251, FUNC(i8251_device::write_rxd));
MCFG_RS232_CTS_HANDLER(WRITELINE("uart8251", i8251_device, write_cts)) m_rs232->cts_handler().set(m_uart8251, FUNC(i8251_device::write_cts));
MCFG_RS232_DSR_HANDLER(WRITELINE("uart8251", i8251_device, write_dsr)) m_rs232->dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr));
MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("keyboard", kbd_rs232_defaults) m_rs232->set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(kbd_rs232_defaults));
MCFG_DEVICE_ADD("isbc_215g", ISBC_215G, 0x4a, "maincpu") ISBC_215G(config, "isbc_215g", 0, 0x4a, m_maincpu).irq_callback().set(m_pic8259, FUNC(pic8259_device::ir5_w));
MCFG_ISBC_215_IRQ(WRITELINE("pic8259", pic8259_device, ir5_w))
// KGS K7070 graphics terminal controlling ABG K7072 framebuffer // KGS K7070 graphics terminal controlling ABG K7072 framebuffer
MCFG_DEVICE_ADD("gfxcpu", Z80, XTAL(16'000'000)/4) MCFG_DEVICE_ADD("gfxcpu", Z80, XTAL(16'000'000)/4)
@ -519,12 +521,12 @@ MACHINE_CONFIG_START(a7150_state::a7150)
MCFG_DEVICE_IO_MAP(k7070_cpu_io) MCFG_DEVICE_IO_MAP(k7070_cpu_io)
MCFG_Z80_DAISY_CHAIN(k7070_daisy_chain) MCFG_Z80_DAISY_CHAIN(k7070_daisy_chain)
MCFG_DEVICE_ADD("video_bankdev", ADDRESS_MAP_BANK, 0) ADDRESS_MAP_BANK(config, m_video_bankdev, 0);
MCFG_DEVICE_PROGRAM_MAP(k7070_cpu_banked) m_video_bankdev->set_map(&a7150_state::k7070_cpu_banked);
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG) m_video_bankdev->set_endianness(ENDIANNESS_BIG);
MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(18) m_video_bankdev->set_addr_width(18);
MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(8) m_video_bankdev->set_data_width(8);
MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000) m_video_bankdev->set_stride(0x10000);
clock_device &ctc_clock(CLOCK(config, "ctc_clock", 1230750)); clock_device &ctc_clock(CLOCK(config, "ctc_clock", 1230750));
ctc_clock.signal_handler().set(m_ctc, FUNC(z80ctc_device::trg0)); ctc_clock.signal_handler().set(m_ctc, FUNC(z80ctc_device::trg0));

View File

@ -943,11 +943,11 @@ MACHINE_CONFIG_START(apc_state::apc)
MCFG_DEVICE_IO_MAP(apc_io) MCFG_DEVICE_IO_MAP(apc_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb)
MCFG_DEVICE_ADD(m_pit, PIT8253, 0) PIT8253(config, m_pit, 0);
MCFG_PIT8253_CLK0(MAIN_CLOCK) /* heartbeat IRQ */ m_pit->set_clk<0>(MAIN_CLOCK); // heartbeat IRQ
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(m_i8259_m, pic8259_device, ir3_w)) m_pit->out_handler<0>().set(m_i8259_m, FUNC(pic8259_device::ir3_w));
MCFG_PIT8253_CLK1(MAIN_CLOCK) /* Memory Refresh */ m_pit->set_clk<1>(MAIN_CLOCK); // Memory Refresh
MCFG_PIT8253_CLK2(MAIN_CLOCK) /* RS-232c */ m_pit->set_clk<2>(MAIN_CLOCK); // RS-232c
PIC8259(config, m_i8259_m, 0); PIC8259(config, m_i8259_m, 0);
m_i8259_m->out_int_callback().set_inputline(m_maincpu, 0); m_i8259_m->out_int_callback().set_inputline(m_maincpu, 0);
@ -958,17 +958,17 @@ MACHINE_CONFIG_START(apc_state::apc)
m_i8259_s->out_int_callback().set(m_i8259_m, FUNC(pic8259_device::ir7_w)); // TODO: check ir7_w m_i8259_s->out_int_callback().set(m_i8259_m, FUNC(pic8259_device::ir7_w)); // TODO: check ir7_w
m_i8259_s->in_sp_callback().set_constant(0); m_i8259_s->in_sp_callback().set_constant(0);
MCFG_DEVICE_ADD(m_dmac, AM9517A, MAIN_CLOCK) AM9517A(config, m_dmac, MAIN_CLOCK);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, apc_state, apc_dma_hrq_changed)) m_dmac->out_hreq_callback().set(FUNC(apc_state::apc_dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, apc_state, apc_tc_w)) m_dmac->out_eop_callback().set(FUNC(apc_state::apc_tc_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, apc_state, apc_dma_read_byte)) m_dmac->in_memr_callback().set(FUNC(apc_state::apc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, apc_state, apc_dma_write_byte)) m_dmac->out_memw_callback().set(FUNC(apc_state::apc_dma_write_byte));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, apc_state, fdc_r)) m_dmac->in_ior_callback<1>().set(FUNC(apc_state::fdc_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, apc_state, fdc_w)) m_dmac->out_iow_callback<1>().set(FUNC(apc_state::fdc_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, apc_state, apc_dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(apc_state::apc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, apc_state, apc_dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(apc_state::apc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, apc_state, apc_dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(apc_state::apc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, apc_state, apc_dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(apc_state::apc_dack3_w));
MCFG_NVRAM_ADD_1FILL(m_cmos) MCFG_NVRAM_ADD_1FILL(m_cmos)
MCFG_UPD1990A_ADD(m_rtc, XTAL(32'768), NOOP, NOOP) MCFG_UPD1990A_ADD(m_rtc, XTAL(32'768), NOOP, NOOP)
@ -981,12 +981,12 @@ MACHINE_CONFIG_START(apc_state::apc)
MCFG_SOFTWARE_LIST_ADD("disk_list","apc") MCFG_SOFTWARE_LIST_ADD("disk_list","apc")
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
MCFG_SCREEN_UPDATE_DRIVER(apc_state, screen_update) m_screen->set_screen_update(FUNC(apc_state::screen_update));
MCFG_SCREEN_SIZE(640, 494) m_screen->set_size(640, 494);
MCFG_SCREEN_VISIBLE_AREA(0*8, 640-1, 0*8, 494-1) m_screen->set_visarea(0*8, 640-1, 0*8, 494-1);
MCFG_PALETTE_ADD_3BIT_BRG(m_palette) MCFG_PALETTE_ADD_3BIT_BRG(m_palette)

View File

@ -50,15 +50,12 @@
#define I8086_TAG "ic7" #define I8086_TAG "ic7"
#define I8284_TAG "ic30" #define I8284_TAG "ic30"
#define I8237_TAG "ic17"
#define I8259A_TAG "ic51" #define I8259A_TAG "ic51"
#define I8253A5_TAG "ic20"
#define TMS4500_TAG "ic42" #define TMS4500_TAG "ic42"
#define MC6845_TAG "ic69" #define MC6845_TAG "ic69"
#define HD63B01V1_TAG "ic29" #define HD63B01V1_TAG "ic29"
#define AD7574_TAG "ic34" #define AD7574_TAG "ic34"
#define AD1408_TAG "ic37" #define AD1408_TAG "ic37"
#define Z80SIO0_TAG "ic6"
#define WD2797_TAG "ic5" #define WD2797_TAG "ic5"
#define SN76489AN_TAG "ic13" #define SN76489AN_TAG "ic13"
#define CENTRONICS_TAG "centronics" #define CENTRONICS_TAG "centronics"
@ -87,22 +84,22 @@ class fp_state : public driver_device
{ {
public: public:
fp_state(const machine_config &mconfig, device_type type, const char *tag) fp_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, I8086_TAG), , m_maincpu(*this, I8086_TAG)
m_soundcpu(*this, HD63B01V1_TAG), , m_soundcpu(*this, HD63B01V1_TAG)
m_dmac(*this, I8237_TAG), , m_dmac(*this, "ic17")
m_pic(*this, I8259A_TAG), , m_pic(*this, I8259A_TAG)
m_pit(*this, I8253A5_TAG), , m_pit(*this, "ic20")
m_sio(*this, Z80SIO0_TAG), , m_sio(*this, "ic6")
m_fdc(*this, WD2797_TAG), , m_fdc(*this, WD2797_TAG)
m_crtc(*this, MC6845_TAG), , m_crtc(*this, MC6845_TAG)
m_ram(*this, RAM_TAG), , m_ram(*this, RAM_TAG)
m_floppy0(*this, WD2797_TAG":0"), , m_floppy0(*this, WD2797_TAG":0")
m_floppy1(*this, WD2797_TAG":1"), , m_floppy1(*this, WD2797_TAG":1")
m_floppy(nullptr), , m_floppy(nullptr)
m_centronics(*this, CENTRONICS_TAG), , m_centronics(*this, CENTRONICS_TAG)
m_work_ram(*this, "work_ram"), , m_work_ram(*this, "work_ram")
m_video_ram(*this, "video_ram") , m_video_ram(*this, "video_ram")
{ } { }
void fp(machine_config &config); void fp(machine_config &config);
@ -634,35 +631,35 @@ MACHINE_CONFIG_START(fp_state::fp)
/* Devices */ /* Devices */
MCFG_DEVICE_ADD(APRICOT_KEYBOARD_TAG, APRICOT_KEYBOARD, 0) MCFG_DEVICE_ADD(APRICOT_KEYBOARD_TAG, APRICOT_KEYBOARD, 0)
MCFG_DEVICE_ADD(I8237_TAG, AM9517A, 250000) AM9517A(config, m_dmac, 250000);
MCFG_I8237_OUT_EOP_CB(WRITELINE(I8259A_TAG, pic8259_device, ir7_w)) m_dmac->out_eop_callback().set(m_pic, FUNC(pic8259_device::ir7_w));
MCFG_I8237_IN_IOR_1_CB(READ8(WD2797_TAG, wd_fdc_device_base, data_r)) m_dmac->in_ior_callback<1>().set(m_fdc, FUNC(wd_fdc_device_base::data_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(WD2797_TAG, wd_fdc_device_base, data_w)) m_dmac->out_iow_callback<1>().set(m_fdc, FUNC(wd_fdc_device_base::data_w));
MCFG_DEVICE_ADD(I8259A_TAG, PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0)) m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD(I8253A5_TAG, PIT8253, 0) PIT8253(config, m_pit, 0);
MCFG_PIT8253_CLK0(2000000) m_pit->set_clk<0>(2000000);
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(I8259A_TAG, pic8259_device, ir0_w)) m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
MCFG_PIT8253_CLK1(2000000) m_pit->set_clk<1>(2000000);
MCFG_PIT8253_CLK2(2000000) m_pit->set_clk<2>(2000000);
MCFG_DEVICE_ADD(Z80SIO0_TAG, Z80SIO, 2500000) Z80SIO(config, m_sio, 2500000);
MCFG_Z80SIO_OUT_INT_CB(WRITELINE(I8259A_TAG, pic8259_device, ir4_w)) m_sio->out_int_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
MCFG_DEVICE_ADD(WD2797_TAG, WD2797, 2000000) WD2797(config, m_fdc, 2000000);
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(I8259A_TAG, pic8259_device, ir1_w)) m_fdc->intrq_wr_callback().set(m_pic, FUNC(pic8259_device::ir1_w));
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(I8237_TAG, am9517a_device, dreq1_w)) m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq1_w));
MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", fp_floppies, "d32w", fp_state::floppy_formats) FLOPPY_CONNECTOR(config, m_floppy0, fp_floppies, "d32w", fp_state::floppy_formats);
MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", fp_floppies, nullptr, fp_state::floppy_formats) FLOPPY_CONNECTOR(config, m_floppy1, fp_floppies, nullptr, fp_state::floppy_formats);
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") CENTRONICS(config, m_centronics, centronics_devices, "printer");
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, fp_state, write_centronics_busy)) m_centronics->busy_handler().set(FUNC(fp_state::write_centronics_busy));
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, fp_state, write_centronics_select)) m_centronics->select_handler().set(FUNC(fp_state::write_centronics_select));
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, fp_state, write_centronics_fault)) m_centronics->fault_handler().set(FUNC(fp_state::write_centronics_fault));
MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, fp_state, write_centronics_perror)) m_centronics->perror_handler().set(FUNC(fp_state::write_centronics_perror));
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)

View File

@ -1136,23 +1136,23 @@ MACHINE_CONFIG_START(attache_state::attache)
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("psg", AY8912, 8_MHz_XTAL / 4) AY8912(config, m_psg, 8_MHz_XTAL / 4);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) m_psg->add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_DEVICE_ADD("rtc", MSM5832, 32.768_kHz_XTAL) MSM5832(config, m_rtc, 32.768_kHz_XTAL);
MCFG_DEVICE_ADD("pio", Z80PIO, 8_MHz_XTAL / 2) Z80PIO(config, m_pio, 8_MHz_XTAL / 2);
MCFG_Z80PIO_IN_PA_CB(READ8(*this, attache_state, pio_portA_r)) m_pio->in_pa_callback().set(FUNC(attache_state::pio_portA_r));
MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, attache_state, pio_portA_w)) m_pio->out_pa_callback().set(FUNC(attache_state::pio_portA_w));
MCFG_Z80PIO_IN_PB_CB(READ8(*this, attache_state, pio_portB_r)) m_pio->in_pb_callback().set(FUNC(attache_state::pio_portB_r));
MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, attache_state, pio_portB_w)) m_pio->out_pb_callback().set(FUNC(attache_state::pio_portB_w));
MCFG_DEVICE_ADD("sio", Z80SIO, 8_MHz_XTAL / 2) Z80SIO(config, m_sio, 8_MHz_XTAL / 2);
MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232a", rs232_port_device, write_txd)) m_sio->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232a", rs232_port_device, write_rts)) m_sio->out_rtsa_callback().set("rs232a", FUNC(rs232_port_device::write_rts));
MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232b", rs232_port_device, write_txd)) m_sio->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232b", rs232_port_device, write_rts)) m_sio->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) m_sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr) MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w)) MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w))
@ -1172,14 +1172,14 @@ MACHINE_CONFIG_START(attache_state::attache)
brc.signal_handler().set(m_ctc, FUNC(z80ctc_device::trg0)); brc.signal_handler().set(m_ctc, FUNC(z80ctc_device::trg0));
brc.signal_handler().append(m_ctc, FUNC(z80ctc_device::trg1)); brc.signal_handler().append(m_ctc, FUNC(z80ctc_device::trg1));
MCFG_DEVICE_ADD("dma", AM9517A, 8_MHz_XTAL / 4) AM9517A(config, m_dma, 8_MHz_XTAL / 4);
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, attache_state, hreq_w)) m_dma->out_hreq_callback().set(FUNC(attache_state::hreq_w));
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(*this, attache_state, eop_w)) m_dma->out_eop_callback().set(FUNC(attache_state::eop_w));
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, attache_state, dma_mem_r)) m_dma->in_memr_callback().set(FUNC(attache_state::dma_mem_r));
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(*this, attache_state, dma_mem_w)) m_dma->out_memw_callback().set(FUNC(attache_state::dma_mem_w));
MCFG_AM9517A_IN_IOR_0_CB(READ8(*this, attache_state, fdc_dma_r)) m_dma->in_ior_callback<0>().set(FUNC(attache_state::fdc_dma_r));
MCFG_AM9517A_OUT_IOW_0_CB(WRITE8(*this, attache_state, fdc_dma_w)) m_dma->out_iow_callback<0>().set(FUNC(attache_state::fdc_dma_w));
// MCFG_AM9517A_OUT_DACK_0_CB(WRITELINE(*this, attache_state, fdc_dack_w)) // m_dma->out_dack_callback<0>().set(FUNC(attache_state::fdc_dack_w));
UPD765A(config, m_fdc, true, true); UPD765A(config, m_fdc, true, true);
m_fdc->intrq_wr_callback().set(m_ctc, FUNC(z80ctc_device::trg3)); m_fdc->intrq_wr_callback().set(m_ctc, FUNC(z80ctc_device::trg3));
@ -1220,23 +1220,23 @@ MACHINE_CONFIG_START(attache816_state::attache816)
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("psg", AY8912, 8_MHz_XTAL / 4) AY8912(config, m_psg, 8_MHz_XTAL / 4);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) m_psg->add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_DEVICE_ADD("rtc", MSM5832, 32.768_kHz_XTAL) MSM5832(config, m_rtc, 32.768_kHz_XTAL);
MCFG_DEVICE_ADD("pio", Z80PIO, 8_MHz_XTAL / 2) Z80PIO(config, m_pio, 8_MHz_XTAL / 2);
MCFG_Z80PIO_IN_PA_CB(READ8(*this, attache_state, pio_portA_r)) m_pio->in_pa_callback().set(FUNC(attache_state::pio_portA_r));
MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, attache_state, pio_portA_w)) m_pio->out_pa_callback().set(FUNC(attache_state::pio_portA_w));
MCFG_Z80PIO_IN_PB_CB(READ8(*this, attache_state, pio_portB_r)) m_pio->in_pb_callback().set(FUNC(attache_state::pio_portB_r));
MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, attache_state, pio_portB_w)) m_pio->out_pb_callback().set(FUNC(attache_state::pio_portB_w));
MCFG_DEVICE_ADD("sio", Z80SIO, 8_MHz_XTAL / 2) Z80SIO(config, m_sio, 8_MHz_XTAL / 2);
MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232a", rs232_port_device, write_txd)) m_sio->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232a", rs232_port_device, write_rts)) m_sio->out_rtsa_callback().set("rs232a", FUNC(rs232_port_device::write_rts));
MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("rs232b", rs232_port_device, write_txd)) m_sio->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("rs232b", rs232_port_device, write_rts)) m_sio->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) m_sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr) MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w)) MCFG_RS232_RXD_HANDLER(WRITELINE("sio", z80sio_device, rxa_w))
@ -1263,14 +1263,14 @@ MACHINE_CONFIG_START(attache816_state::attache816)
m_ppi->out_pc_callback().set(FUNC(attache816_state::x86_dsr)).bit(0); m_ppi->out_pc_callback().set(FUNC(attache816_state::x86_dsr)).bit(0);
m_ppi->out_pc_callback().append(FUNC(attache816_state::ppi_irq)).bit(7).invert(); m_ppi->out_pc_callback().append(FUNC(attache816_state::ppi_irq)).bit(7).invert();
MCFG_DEVICE_ADD("dma", AM9517A, 8_MHz_XTAL / 4) AM9517A(config, m_dma, 8_MHz_XTAL / 4);
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, attache_state, hreq_w)) m_dma->out_hreq_callback().set(FUNC(attache_state::hreq_w));
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(*this, attache_state, eop_w)) m_dma->out_eop_callback().set(FUNC(attache_state::eop_w));
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, attache_state, dma_mem_r)) m_dma->in_memr_callback().set(FUNC(attache_state::dma_mem_r));
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(*this, attache_state, dma_mem_w)) m_dma->out_memw_callback().set(FUNC(attache_state::dma_mem_w));
MCFG_AM9517A_IN_IOR_0_CB(READ8(*this, attache_state, fdc_dma_r)) m_dma->in_ior_callback<0>().set(FUNC(attache_state::fdc_dma_r));
MCFG_AM9517A_OUT_IOW_0_CB(WRITE8(*this, attache_state, fdc_dma_w)) m_dma->out_iow_callback<0>().set(FUNC(attache_state::fdc_dma_w));
// MCFG_AM9517A_OUT_DACK_0_CB(WRITELINE(*this, attache_state, fdc_dack_w)) // m_dma->out_dack_callback<0>().set(FUNC(attache_state::fdc_dack_w));
UPD765A(config, m_fdc, true, true); UPD765A(config, m_fdc, true, true);
m_fdc->intrq_wr_callback().set(m_ctc, FUNC(z80ctc_device::trg3)); m_fdc->intrq_wr_callback().set(m_ctc, FUNC(z80ctc_device::trg3));

View File

@ -21,19 +21,19 @@
#include "screen.h" #include "screen.h"
class b16_state : public driver_device class b16_state : public driver_device
{ {
public: public:
b16_state(const machine_config &mconfig, device_type type, const char *tag) b16_state(const machine_config &mconfig, device_type type, const char *tag) :
: driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_vram(*this, "vram"), m_vram(*this, "vram"),
m_mc6845(*this, "crtc"), m_mc6845(*this, "crtc"),
m_dma8237(*this, "8237dma"), m_dma8237(*this, "8237dma"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"), m_palette(*this, "palette"),
m_char_rom(*this, "pcg") { } m_char_rom(*this, "pcg")
{ }
void b16(machine_config &config); void b16(machine_config &config);
@ -272,7 +272,6 @@ MACHINE_CONFIG_START(b16_state::b16)
MCFG_DEVICE_PROGRAM_MAP(b16_map) MCFG_DEVICE_PROGRAM_MAP(b16_map)
MCFG_DEVICE_IO_MAP(b16_io) MCFG_DEVICE_IO_MAP(b16_io)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_REFRESH_RATE(60)
@ -286,9 +285,9 @@ MACHINE_CONFIG_START(b16_state::b16)
MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8) MCFG_MC6845_CHAR_WIDTH(8)
MCFG_DEVICE_ADD(m_dma8237, AM9517A, XTAL(14'318'181)/2) AM9517A(config, m_dma8237, XTAL(14'318'181)/2);
MCFG_I8237_IN_MEMR_CB(READ8(*this, b16_state, memory_read_byte)) m_dma8237->in_memr_callback().set(FUNC(b16_state::memory_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, b16_state, memory_write_byte)) m_dma8237->out_memw_callback().set(FUNC(b16_state::memory_write_byte));
MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_b16) MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_b16)
MCFG_PALETTE_ADD(m_palette, 8) MCFG_PALETTE_ADD(m_palette, 8)

View File

@ -162,19 +162,19 @@ MACHINE_CONFIG_START(bebox_state::bebox)
MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */ MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */
MCFG_PIT8253_OUT2_HANDLER(WRITELINE("kbdc", kbdc8042_device, write_out2)) MCFG_PIT8253_OUT2_HANDLER(WRITELINE("kbdc", kbdc8042_device, write_out2))
MCFG_DEVICE_ADD( "dma8237_1", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_1, XTAL(14'318'181)/3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, bebox_state, bebox_dma_hrq_changed)) m_dma8237_1->out_hreq_callback().set(FUNC(bebox_state::bebox_dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, bebox_state, bebox_dma8237_out_eop)) m_dma8237_1->out_eop_callback().set(FUNC(bebox_state::bebox_dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, bebox_state, bebox_dma_read_byte)) m_dma8237_1->in_memr_callback().set(FUNC(bebox_state::bebox_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, bebox_state, bebox_dma_write_byte)) m_dma8237_1->out_memw_callback().set(FUNC(bebox_state::bebox_dma_write_byte));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, bebox_state, bebox_dma8237_fdc_dack_r)) m_dma8237_1->in_ior_callback<2>().set(FUNC(bebox_state::bebox_dma8237_fdc_dack_r));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, bebox_state, bebox_dma8237_fdc_dack_w)) m_dma8237_1->out_iow_callback<2>().set(FUNC(bebox_state::bebox_dma8237_fdc_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, bebox_state, pc_dack0_w)) m_dma8237_1->out_dack_callback<0>().set(FUNC(bebox_state::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, bebox_state, pc_dack1_w)) m_dma8237_1->out_dack_callback<1>().set(FUNC(bebox_state::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, bebox_state, pc_dack2_w)) m_dma8237_1->out_dack_callback<2>().set(FUNC(bebox_state::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, bebox_state, pc_dack3_w)) m_dma8237_1->out_dack_callback<3>().set(FUNC(bebox_state::pc_dack3_w));
MCFG_DEVICE_ADD( "dma8237_2", AM9517A, XTAL(14'318'181)/3 ) AM9517A(config, m_dma8237_2, XTAL(14'318'181)/3);
PIC8259(config, m_pic8259_1, 0); PIC8259(config, m_pic8259_1, 0);
m_pic8259_1->out_int_callback().set(FUNC(bebox_state::bebox_pic8259_master_set_int_line)); m_pic8259_1->out_int_callback().set(FUNC(bebox_state::bebox_pic8259_master_set_int_line));

View File

@ -46,8 +46,8 @@
class beezer_state : public driver_device class beezer_state : public driver_device
{ {
public: public:
beezer_state(const machine_config &mconfig, device_type type, const char *tag) beezer_state(const machine_config &mconfig, device_type type, const char *tag) :
: driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_sysbank(*this, "sysbank"), m_sysbank(*this, "sysbank"),
m_banked_roms(*this, "banked"), m_banked_roms(*this, "banked"),
@ -527,9 +527,9 @@ MACHINE_CONFIG_START(beezer_state::beezer)
MCFG_PTM6840_IRQ_CB(WRITELINE("audio_irqs", input_merger_device, in_w<1>)) MCFG_PTM6840_IRQ_CB(WRITELINE("audio_irqs", input_merger_device, in_w<1>))
// schematics show an input labeled VCO to channel 2, but the source is unknown // schematics show an input labeled VCO to channel 2, but the source is unknown
MCFG_MM5837_ADD("noise") mm5837_device &noise(MM5837(config, "noise"));
MCFG_MM5837_VDD(12) noise.set_vdd_voltage(12);
MCFG_MM5837_OUTPUT_CB(WRITELINE(*this, beezer_state, noise_w)) noise.output_callback().set(FUNC(beezer_state::noise_w));
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC76, 0) MCFG_DEVICE_ADD("dac", DAC76, 0)

View File

@ -358,18 +358,18 @@ MACHINE_CONFIG_START(duet16_state::duet16)
MCFG_DEVICE_IO_MAP(duet16_io) MCFG_DEVICE_IO_MAP(duet16_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb)
MCFG_DEVICE_ADD("i8741", I8741, 20_MHz_XTAL / 4) I8741(config, "i8741", 20_MHz_XTAL / 4);
MCFG_DEVICE_ADD("pic", PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_DEVICE_ADD("dmac", AM9517A, 20_MHz_XTAL / 4) AM9517A(config, m_dmac, 20_MHz_XTAL / 4);
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, duet16_state, hrq_w)) m_dmac->out_hreq_callback().set(FUNC(duet16_state::hrq_w));
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, duet16_state, dma_mem_r)) m_dmac->in_memr_callback().set(FUNC(duet16_state::dma_mem_r));
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(*this, duet16_state, dma_mem_w)) m_dmac->out_memw_callback().set(FUNC(duet16_state::dma_mem_w));
MCFG_AM9517A_IN_IOR_0_CB(READ8("fdc", upd765a_device, mdma_r)) m_dmac->in_ior_callback<0>().set(m_fdc, FUNC(upd765a_device::mdma_r));
MCFG_AM9517A_OUT_IOW_0_CB(WRITE8("fdc", upd765a_device, mdma_w)) m_dmac->out_iow_callback<0>().set(m_fdc, FUNC(upd765a_device::mdma_w));
MCFG_AM9517A_OUT_EOP_CB(WRITELINE("fdc", upd765a_device, tc_line_w)) m_dmac->out_eop_callback().set(m_fdc, FUNC(upd765a_device::tc_line_w));
pit8253_device &bgpit(PIT8253(config, "bgpit", 0)); pit8253_device &bgpit(PIT8253(config, "bgpit", 0));
bgpit.set_clk<0>(8_MHz_XTAL / 13); bgpit.set_clk<0>(8_MHz_XTAL / 13);

View File

@ -29,20 +29,14 @@ public:
fruitpc_state(const machine_config &mconfig, device_type type, const char *tag) fruitpc_state(const machine_config &mconfig, device_type type, const char *tag)
: pcat_base_state(mconfig, type, tag) : pcat_base_state(mconfig, type, tag)
, m_isabus(*this, "isa") , m_isabus(*this, "isa")
, m_inp1(*this, "INP1") , m_inp(*this, "INP%u", 1U)
, m_inp2(*this, "INP2")
, m_inp3(*this, "INP3")
, m_inp4(*this, "INP4")
{ } { }
void fruitpc(machine_config &config); void fruitpc(machine_config &config);
private: private:
required_device<isa8_device> m_isabus; required_device<isa8_device> m_isabus;
required_ioport m_inp1; required_ioport_array<4> m_inp;
required_ioport m_inp2;
required_ioport m_inp3;
required_ioport m_inp4;
DECLARE_READ8_MEMBER(fruit_inp_r); DECLARE_READ8_MEMBER(fruit_inp_r);
DECLARE_WRITE8_MEMBER(dma8237_1_dack_w); DECLARE_WRITE8_MEMBER(dma8237_1_dack_w);
@ -53,18 +47,7 @@ private:
READ8_MEMBER(fruitpc_state::fruit_inp_r) READ8_MEMBER(fruitpc_state::fruit_inp_r)
{ {
switch(offset) return m_inp[offset & 0x03]->read();
{
case 0:
return m_inp1->read();
case 1:
return m_inp2->read();
case 2:
return m_inp3->read();
case 3:
return m_inp4->read();
}
return 0;
} }
void fruitpc_state::fruitpc_map(address_map &map) void fruitpc_state::fruitpc_map(address_map &map)
@ -146,8 +129,7 @@ MACHINE_CONFIG_START(fruitpc_state::fruitpc)
/* video hardware */ /* video hardware */
pcvideo_vga(config); pcvideo_vga(config);
MCFG_DEVICE_MODIFY("dma8237_1") m_dma8237_1->out_iow_callback<1>().set(FUNC(fruitpc_state::dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, fruitpc_state, dma8237_1_dack_w))
MCFG_DEVICE_ADD("isa", ISA8, 0) MCFG_DEVICE_ADD("isa", ISA8, 0)
MCFG_ISA8_CPU("maincpu") MCFG_ISA8_CPU("maincpu")

View File

@ -328,13 +328,13 @@ WRITE_LINE_MEMBER(isbc_state::bus_intr_out2_w)
MACHINE_CONFIG_START(isbc_state::isbc86) MACHINE_CONFIG_START(isbc_state::isbc86)
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", I8086, XTAL(5'000'000)) MCFG_DEVICE_ADD(m_maincpu, I8086, XTAL(5'000'000))
MCFG_DEVICE_PROGRAM_MAP(isbc86_mem) MCFG_DEVICE_PROGRAM_MAP(isbc86_mem)
MCFG_DEVICE_IO_MAP(isbc_io) MCFG_DEVICE_IO_MAP(isbc_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
MCFG_DEVICE_ADD("pic_0", PIC8259, 0) PIC8259(config, m_pic_0, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_DEVICE_ADD("pit", PIT8253, 0) MCFG_DEVICE_ADD("pit", PIT8253, 0)
MCFG_PIT8253_CLK0(XTAL(22'118'400)/18) MCFG_PIT8253_CLK0(XTAL(22'118'400)/18)
@ -361,13 +361,13 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(isbc_state::rpc86) MACHINE_CONFIG_START(isbc_state::rpc86)
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", I8086, XTAL(5'000'000)) MCFG_DEVICE_ADD(m_maincpu, I8086, XTAL(5'000'000))
MCFG_DEVICE_PROGRAM_MAP(rpc86_mem) MCFG_DEVICE_PROGRAM_MAP(rpc86_mem)
MCFG_DEVICE_IO_MAP(rpc86_io) MCFG_DEVICE_IO_MAP(rpc86_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
MCFG_DEVICE_ADD("pic_0", PIC8259, 0) PIC8259(config, m_pic_0, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_DEVICE_ADD("pit", PIT8253, 0) MCFG_DEVICE_ADD("pit", PIT8253, 0)
MCFG_PIT8253_CLK0(XTAL(22'118'400)/18) MCFG_PIT8253_CLK0(XTAL(22'118'400)/18)
@ -400,22 +400,22 @@ MACHINE_CONFIG_START(isbc_state::rpc86)
//MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_0", pic8259_device, ir6_w)) //MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_0", pic8259_device, ir6_w))
MACHINE_CONFIG_END MACHINE_CONFIG_END
MACHINE_CONFIG_START(isbc_state::isbc8605) void isbc_state::isbc8605(machine_config &config)
{
rpc86(config); rpc86(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_IO_MAP(isbc8605_io)
MCFG_DEVICE_ADD("isbc_208", ISBC_208, "maincpu") m_maincpu->set_addrmap(AS_IO, &isbc_state::isbc8605_io);
MCFG_ISBC_208_IRQ(WRITELINE("pic_0", pic8259_device, ir5_w))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(isbc_state::isbc8630) ISBC_208(config, "isbc_208", 0, m_maincpu).irq_callback().set(m_pic_0, FUNC(pic8259_device::ir5_w));
}
void isbc_state::isbc8630(machine_config &config)
{
rpc86(config); rpc86(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_IO_MAP(isbc8630_io)
MCFG_DEVICE_ADD("isbc_215g", ISBC_215G, 0x100, "maincpu") m_maincpu->set_addrmap(AS_IO, &isbc_state::isbc8630_io);
MCFG_ISBC_215_IRQ(WRITELINE("pic_0", pic8259_device, ir5_w))
ISBC_215G(config, "isbc_215g", 0, 0x100, m_maincpu).irq_callback().set(m_pic_0, FUNC(pic8259_device::ir5_w));
LS259(config, m_statuslatch); // U14 LS259(config, m_statuslatch); // U14
// m_statuslatch->q_out_cb<0>().set("pit", FUNC(pit8253_device::write_gate0)); // m_statuslatch->q_out_cb<0>().set("pit", FUNC(pit8253_device::write_gate0));
@ -427,23 +427,23 @@ MACHINE_CONFIG_START(isbc_state::isbc8630)
m_statuslatch->q_out_cb<5>().append_output("led0").invert(); // ds1 m_statuslatch->q_out_cb<5>().append_output("led0").invert(); // ds1
m_statuslatch->q_out_cb<6>().set_output("led1").invert(); // ds3 m_statuslatch->q_out_cb<6>().set_output("led1").invert(); // ds3
m_statuslatch->q_out_cb<7>().set([this] (int state) { m_megabyte_enable = !state; }); m_statuslatch->q_out_cb<7>().set([this] (int state) { m_megabyte_enable = !state; });
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(isbc_state::isbc286) MACHINE_CONFIG_START(isbc_state::isbc286)
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", I80286, XTAL(16'000'000)/2) MCFG_DEVICE_ADD(m_maincpu, I80286, XTAL(16'000'000)/2)
MCFG_DEVICE_PROGRAM_MAP(isbc286_mem) MCFG_DEVICE_PROGRAM_MAP(isbc286_mem)
MCFG_DEVICE_IO_MAP(isbc286_io) MCFG_DEVICE_IO_MAP(isbc286_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
MCFG_DEVICE_ADD("pic_0", PIC8259, 0) PIC8259(config, m_pic_0, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic_0->in_sp_callback().set_constant(1);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, isbc_state, get_slave_ack)) m_pic_0->read_slave_ack_callback().set(FUNC(isbc_state::get_slave_ack));
MCFG_DEVICE_ADD("pic_1", PIC8259, 0) PIC8259(config, m_pic_1, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic_0", pic8259_device, ir7_w)) m_pic_1->out_int_callback().set(m_pic_0, FUNC(pic8259_device::ir7_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic_1->in_sp_callback().set_constant(0);
MCFG_DEVICE_ADD("pit", PIT8254, 0) MCFG_DEVICE_ADD("pit", PIT8254, 0)
MCFG_PIT8253_CLK0(XTAL(22'118'400)/18) MCFG_PIT8253_CLK0(XTAL(22'118'400)/18)
@ -519,15 +519,14 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir5_w)) MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir5_w))
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_1", pic8259_device, ir6_w)) MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_1", pic8259_device, ir6_w))
MCFG_DEVICE_ADD("isbc_215g", ISBC_215G, 0x100, "maincpu") ISBC_215G(config, "isbc_215g", 0, 0x100, m_maincpu).irq_callback().set(m_pic_0, FUNC(pic8259_device::ir5_w));
MCFG_ISBC_215_IRQ(WRITELINE("pic_0", pic8259_device, ir5_w))
MACHINE_CONFIG_END MACHINE_CONFIG_END
MACHINE_CONFIG_START(isbc_state::isbc2861) void isbc_state::isbc2861(machine_config &config)
{
isbc286(config); isbc286(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &isbc_state::isbc2861_mem);
MCFG_DEVICE_PROGRAM_MAP(isbc2861_mem) }
MACHINE_CONFIG_END
/* ROM definition */ /* ROM definition */
ROM_START( isbc86 ) ROM_START( isbc86 )

View File

@ -294,10 +294,8 @@ MACHINE_CONFIG_START(m24_state::olivetti)
MCFG_DEVICE_ADD("z8000_apb", M24_Z8000, 0) MCFG_DEVICE_ADD("z8000_apb", M24_Z8000, 0)
MCFG_M24_Z8000_HALT(WRITELINE(*this, m24_state, halt_i86_w)) MCFG_M24_Z8000_HALT(WRITELINE(*this, m24_state, halt_i86_w))
MCFG_DEVICE_MODIFY("mb:dma8237") subdevice<am9517a_device>("mb:dma8237")->out_hreq_callback().set(FUNC(m24_state::dma_hrq_w));
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, m24_state, dma_hrq_w)) subdevice<pic8259_device>("mb:pic8259")->out_int_callback().set(FUNC(m24_state::int_w));
MCFG_DEVICE_MODIFY("mb:pic8259")
downcast<pic8259_device &>(*device).set_out_int_callback(DEVCB_WRITELINE(*this, m24_state, int_w));
/* software lists */ /* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150") MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")

View File

@ -89,10 +89,11 @@ class magtouch_state : public pcat_base_state
{ {
public: public:
magtouch_state(const machine_config &mconfig, device_type type, const char *tag) magtouch_state(const machine_config &mconfig, device_type type, const char *tag)
: pcat_base_state(mconfig, type, tag), : pcat_base_state(mconfig, type, tag)
m_isabus(*this, "isa"), , m_isabus(*this, "isa")
m_rombank(*this, "rombank"), , m_rombank(*this, "rombank")
m_in0(*this, "IN0"){ } , m_in0(*this, "IN0")
{ }
void magtouch(machine_config &config); void magtouch(machine_config &config);
@ -211,8 +212,7 @@ MACHINE_CONFIG_START(magtouch_state::magtouch)
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_DEVICE_MODIFY("dma8237_1") m_dma8237_1->out_iow_callback<1>().set(FUNC(magtouch_state::dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, magtouch_state, dma8237_1_dack_w))
MCFG_DEVICE_ADD("isa", ISA8, 0) MCFG_DEVICE_ADD("isa", ISA8, 0)
MCFG_ISA8_CPU("maincpu") MCFG_ISA8_CPU("maincpu")

View File

@ -466,29 +466,29 @@ MACHINE_CONFIG_START(mm1_state::mm1)
MCFG_QUANTUM_PERFECT_CPU(I8085A_TAG) MCFG_QUANTUM_PERFECT_CPU(I8085A_TAG)
// peripheral hardware // peripheral hardware
MCFG_DEVICE_ADD(I8212_TAG, I8212, 0) I8212(config, m_iop, 0);
MCFG_I8212_INT_CALLBACK(INPUTLINE(I8085A_TAG, I8085_RST65_LINE)) m_iop->int_wr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
MCFG_I8212_DI_CALLBACK(READ8(KB_TAG, mm1_keyboard_device, read)) m_iop->di_rd_callback().set(KB_TAG, FUNC(mm1_keyboard_device::read));
MCFG_DEVICE_ADD(I8237_TAG, AM9517A, 6.144_MHz_XTAL/2) AM9517A(config, m_dmac, 6.144_MHz_XTAL/2);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, mm1_state, dma_hrq_w)) m_dmac->out_hreq_callback().set(FUNC(mm1_state::dma_hrq_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, mm1_state, dma_eop_w)) m_dmac->out_eop_callback().set(FUNC(mm1_state::dma_eop_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, mm1_state, read)) m_dmac->in_memr_callback().set(FUNC(mm1_state::read));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, mm1_state, write)) m_dmac->out_memw_callback().set(FUNC(mm1_state::write));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, mm1_state, mpsc_dack_r)) m_dmac->in_ior_callback<2>().set(FUNC(mm1_state::mpsc_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(UPD765_TAG, upd765_family_device, mdma_r)) m_dmac->in_ior_callback<3>().set(m_fdc, FUNC(upd765_family_device::mdma_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(I8275_TAG, i8275_device, dack_w)) m_dmac->out_iow_callback<0>().set(m_crtc, FUNC(i8275_device::dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, mm1_state, mpsc_dack_w)) m_dmac->out_iow_callback<1>().set(FUNC(mm1_state::mpsc_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(UPD765_TAG, upd765_family_device, mdma_w)) m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(upd765_family_device::mdma_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, mm1_state, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(mm1_state::dack3_w));
MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0) PIT8253(config, m_pit, 0);
MCFG_PIT8253_CLK0(6.144_MHz_XTAL/2/2) m_pit->set_clk<0>(6.144_MHz_XTAL/2/2);
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, mm1_state, itxc_w)) m_pit->out_handler<0>().set(FUNC(mm1_state::itxc_w));
MCFG_PIT8253_CLK1(6.144_MHz_XTAL/2/2) m_pit->set_clk<1>(6.144_MHz_XTAL/2/2);
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, mm1_state, irxc_w)) m_pit->out_handler<1>().set(FUNC(mm1_state::irxc_w));
MCFG_PIT8253_CLK2(6.144_MHz_XTAL/2/2) m_pit->set_clk<2>(6.144_MHz_XTAL/2/2);
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, mm1_state, auxc_w)) m_pit->out_handler<2>().set(FUNC(mm1_state::auxc_w));
MCFG_UPD765A_ADD(UPD765_TAG, /* 16_MHz_XTAL/2/2 */ true, true) MCFG_UPD765A_ADD(UPD765_TAG, /* 16_MHz_XTAL/2/2 */ true, true)
MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE(I8085A_TAG, I8085_RST55_LINE)) MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE(I8085A_TAG, I8085_RST55_LINE))

View File

@ -52,15 +52,15 @@
class mtxl_state : public driver_device class mtxl_state : public driver_device
{ {
public: public:
mtxl_state(const machine_config &mconfig, device_type type, const char *tag) mtxl_state(const machine_config &mconfig, device_type type, const char *tag) :
: driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
#ifndef REAL_PCI_CHIPSET #ifndef REAL_PCI_CHIPSET
m_mb(*this, "mb"), m_mb(*this, "mb"),
#endif #endif
m_ram(*this, RAM_TAG), m_ram(*this, RAM_TAG),
m_iocard(*this, "dbank"), m_iocard(*this, "dbank"),
m_multikey(*this, "multikey") m_multikey(*this, "multikey")
{ } { }
void at486(machine_config &config); void at486(machine_config &config);
@ -110,19 +110,19 @@ WRITE8_MEMBER(mtxl_state::key_w)
void mtxl_state::at32_map(address_map &map) void mtxl_state::at32_map(address_map &map)
{ {
map.unmap_value_high(); map.unmap_value_high();
#ifndef REAL_PCI_CHIPSET #ifndef REAL_PCI_CHIPSET
map(0x00000000, 0x0009ffff).bankrw("bank10"); map(0x00000000, 0x0009ffff).bankrw("bank10");
map(0x000c8000, 0x000cffff).ram().share("nvram"); map(0x000c8000, 0x000cffff).ram().share("nvram");
map(0x000d0000, 0x000dffff).m(m_iocard, FUNC(address_map_bank_device::amap32)); map(0x000d0000, 0x000dffff).m(m_iocard, FUNC(address_map_bank_device::amap32));
map(0x000e0000, 0x000fffff).rom().region("bios", 0); map(0x000e0000, 0x000fffff).rom().region("bios", 0);
map(0xfffe0000, 0xffffffff).rom().region("bios", 0); map(0xfffe0000, 0xffffffff).rom().region("bios", 0);
#endif #endif
} }
void mtxl_state::at32_io(address_map &map) void mtxl_state::at32_io(address_map &map)
{ {
map.unmap_value_high(); map.unmap_value_high();
#ifndef REAL_PCI_CHIPSET #ifndef REAL_PCI_CHIPSET
map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write)); map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
map(0x0020, 0x003f).rw("mb:pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); map(0x0020, 0x003f).rw("mb:pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0x0040, 0x005f).rw("mb:pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write)); map(0x0040, 0x005f).rw("mb:pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write));
@ -133,14 +133,14 @@ void mtxl_state::at32_io(address_map &map)
map(0x00a0, 0x00bf).rw("mb:pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); map(0x00a0, 0x00bf).rw("mb:pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0x00c0, 0x00df).rw("mb:dma8237_2", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask32(0x00ff00ff); map(0x00c0, 0x00df).rw("mb:dma8237_2", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask32(0x00ff00ff);
map(0x0224, 0x0227).rw("cs4231", FUNC(ad1848_device::read), FUNC(ad1848_device::write)); map(0x0224, 0x0227).rw("cs4231", FUNC(ad1848_device::read), FUNC(ad1848_device::write));
#endif #endif
map(0x0228, 0x022b).portr("Unknown"); map(0x0228, 0x022b).portr("Unknown");
map(0x022f, 0x022f).w(FUNC(mtxl_state::bank_w)); map(0x022f, 0x022f).w(FUNC(mtxl_state::bank_w));
map(0x022d, 0x022d).rw(FUNC(mtxl_state::key_r), FUNC(mtxl_state::key_w)); map(0x022d, 0x022d).rw(FUNC(mtxl_state::key_r), FUNC(mtxl_state::key_w));
map(0x022c, 0x022c).r(FUNC(mtxl_state::coin_r)); map(0x022c, 0x022c).r(FUNC(mtxl_state::coin_r));
#ifndef REAL_PCI_CHIPSET #ifndef REAL_PCI_CHIPSET
map(0x03f8, 0x03ff).rw("ns16550", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); map(0x03f8, 0x03ff).rw("ns16550", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
#endif #endif
} }
void mtxl_state::dbank_map(address_map &map) void mtxl_state::dbank_map(address_map &map)
@ -208,11 +208,11 @@ void mtxl_state::cdrom(device_t *device)
auto ide1 = dynamic_cast<device_slot_interface *>(device->subdevice("ide:1")); auto ide1 = dynamic_cast<device_slot_interface *>(device->subdevice("ide:1"));
ide1->set_default_option(""); ide1->set_default_option("");
ide1->set_fixed(true); ide1->set_fixed(true);
MACHINE_CONFIG_END }
#endif #endif
MACHINE_CONFIG_START(mtxl_state::at486) MACHINE_CONFIG_START(mtxl_state::at486)
MCFG_DEVICE_ADD("maincpu", I486DX4, 33000000) MCFG_DEVICE_ADD(m_maincpu, I486DX4, 33000000)
MCFG_DEVICE_PROGRAM_MAP(at32_map) MCFG_DEVICE_PROGRAM_MAP(at32_map)
MCFG_DEVICE_IO_MAP(at32_io) MCFG_DEVICE_IO_MAP(at32_io)
#ifndef REAL_PCI_CHIPSET #ifndef REAL_PCI_CHIPSET
@ -235,8 +235,7 @@ MACHINE_CONFIG_START(mtxl_state::at486)
MCFG_AD1848_IRQ_CALLBACK(WRITELINE("mb:pic8259_master", pic8259_device, ir5_w)) MCFG_AD1848_IRQ_CALLBACK(WRITELINE("mb:pic8259_master", pic8259_device, ir5_w))
MCFG_AD1848_DRQ_CALLBACK(WRITELINE("mb:dma8237_1", am9517a_device, dreq1_w)) MCFG_AD1848_DRQ_CALLBACK(WRITELINE("mb:dma8237_1", am9517a_device, dreq1_w))
MCFG_DEVICE_MODIFY("mb:dma8237_1") subdevice<am9517a_device>("mb:dma8237_1")->out_iow_callback<1>().set("cs4231", FUNC(ad1848_device::dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8("cs4231", ad1848_device, dack_w))
// remove the keyboard controller and use the HLE one which allow keys to be unmapped // remove the keyboard controller and use the HLE one which allow keys to be unmapped
MCFG_DEVICE_REMOVE("mb:keybc"); MCFG_DEVICE_REMOVE("mb:keybc");

View File

@ -82,8 +82,8 @@
class ngen_state : public driver_device class ngen_state : public driver_device
{ {
public: public:
ngen_state(const machine_config &mconfig, device_type type, const char *tag) ngen_state(const machine_config &mconfig, device_type type, const char *tag) :
: driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"), m_maincpu(*this,"maincpu"),
m_i386cpu(*this,"i386cpu"), m_i386cpu(*this,"i386cpu"),
m_crtc(*this,"crtc"), m_crtc(*this,"crtc"),
@ -99,10 +99,12 @@ public:
m_hdc(*this,"hdc"), m_hdc(*this,"hdc"),
m_hdc_timer(*this,"hdc_timer"), m_hdc_timer(*this,"hdc_timer"),
m_hd_buffer(*this,"hd_buffer_ram") m_hd_buffer(*this,"hd_buffer_ram")
{} {
}
void ngen(machine_config &config); void ngen(machine_config &config);
protected:
DECLARE_READ8_MEMBER(hd_buffer_r); DECLARE_READ8_MEMBER(hd_buffer_r);
DECLARE_WRITE8_MEMBER(hd_buffer_w); DECLARE_WRITE8_MEMBER(hd_buffer_w);
@ -123,10 +125,10 @@ public:
DECLARE_READ8_MEMBER( dma_1_dack_r ) { uint16_t ret = 0xffff; m_dma_high_byte = ret & 0xff00; return ret; } DECLARE_READ8_MEMBER( dma_1_dack_r ) { uint16_t ret = 0xffff; m_dma_high_byte = ret & 0xff00; return ret; }
DECLARE_READ8_MEMBER( dma_2_dack_r ) { uint16_t ret = 0xffff; m_dma_high_byte = ret & 0xff00; return ret; } DECLARE_READ8_MEMBER( dma_2_dack_r ) { uint16_t ret = 0xffff; m_dma_high_byte = ret & 0xff00; return ret; }
DECLARE_READ8_MEMBER( dma_3_dack_r ); DECLARE_READ8_MEMBER( dma_3_dack_r );
DECLARE_WRITE8_MEMBER( dma_0_dack_w ){ popmessage("IOW0: data %02x",data); } DECLARE_WRITE8_MEMBER( dma_0_dack_w ) { popmessage("IOW0: data %02x",data); }
DECLARE_WRITE8_MEMBER( dma_1_dack_w ){ } DECLARE_WRITE8_MEMBER( dma_1_dack_w ) { }
DECLARE_WRITE8_MEMBER( dma_2_dack_w ){ } DECLARE_WRITE8_MEMBER( dma_2_dack_w ) { }
DECLARE_WRITE8_MEMBER( dma_3_dack_w ){ popmessage("IOW3: data %02x",data); } DECLARE_WRITE8_MEMBER( dma_3_dack_w ) { popmessage("IOW3: data %02x",data); }
MC6845_UPDATE_ROW(crtc_update_row); MC6845_UPDATE_ROW(crtc_update_row);
@ -134,11 +136,18 @@ public:
DECLARE_WRITE_LINE_MEMBER(fdc_irq_w); DECLARE_WRITE_LINE_MEMBER(fdc_irq_w);
protected:
void ngen386_io(address_map &map); void ngen386_io(address_map &map);
void ngen386_mem(address_map &map); void ngen386_mem(address_map &map);
void ngen386i_mem(address_map &map); void ngen386i_mem(address_map &map);
optional_device<i80186_cpu_device> m_maincpu;
optional_device<i386_device> m_i386cpu;
required_device<mc6845_device> m_crtc;
required_device<i8251_device> m_viduart;
required_device<upd7201_device> m_iouart;
required_device<am9517a_device> m_dmac;
required_device<pic8259_device> m_pic;
required_device<pit8254_device> m_pit;
private: private:
DECLARE_WRITE16_MEMBER(cpu_peripheral_cb); DECLARE_WRITE16_MEMBER(cpu_peripheral_cb);
@ -167,14 +176,6 @@ private:
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void machine_start() override; virtual void machine_start() override;
optional_device<i80186_cpu_device> m_maincpu;
optional_device<i386_device> m_i386cpu;
required_device<mc6845_device> m_crtc;
required_device<i8251_device> m_viduart;
required_device<upd7201_device> m_iouart;
required_device<am9517a_device> m_dmac;
required_device<pic8259_device> m_pic;
required_device<pit8254_device> m_pit;
optional_memory_region m_disk_rom; optional_memory_region m_disk_rom;
memory_array m_vram; memory_array m_vram;
memory_array m_fontram; memory_array m_fontram;
@ -946,43 +947,43 @@ MACHINE_CONFIG_START(ngen_state::ngen)
MCFG_80186_TMROUT0_HANDLER(WRITELINE(*this, ngen_state, cpu_timer_w)) MCFG_80186_TMROUT0_HANDLER(WRITELINE(*this, ngen_state, cpu_timer_w))
MCFG_80186_IRQ_SLAVE_ACK(READ8(*this, ngen_state, irq_cb)) MCFG_80186_IRQ_SLAVE_ACK(READ8(*this, ngen_state, irq_cb))
MCFG_DEVICE_ADD("pic", PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("maincpu", i80186_cpu_device, int0_w)) m_pic->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int0_w));
MCFG_DEVICE_ADD("pit", PIT8254, 0) PIT8254(config, m_pit, 0);
MCFG_PIT8253_CLK0(78120/4) // 19.53kHz, /4 of the CPU timer output? m_pit->set_clk<0>(78120/4); // 19.53kHz, /4 of the CPU timer output?
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, ngen_state, pit_out0_w)) // RS232 channel B baud rate m_pit->out_handler<0>().set(FUNC(ngen_state::pit_out0_w)); // RS232 channel B baud rate
MCFG_PIT8253_CLK1(14.7456_MHz_XTAL / 12) // correct? - based on patent m_pit->set_clk<1>(14.7456_MHz_XTAL / 12); // correct? - based on patent
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, ngen_state, pit_out1_w)) // RS232 channel A baud rate m_pit->out_handler<1>().set(FUNC(ngen_state::pit_out1_w)); // RS232 channel A baud rate
MCFG_PIT8253_CLK2(14.7456_MHz_XTAL / 12) m_pit->set_clk<2>(14.7456_MHz_XTAL / 12);
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, ngen_state, pit_out2_w)) m_pit->out_handler<2>().set(FUNC(ngen_state::pit_out2_w));
MCFG_DEVICE_ADD("dmac", AM9517A, 14.7456_MHz_XTAL / 3) // NEC D8237A, divisor unknown AM9517A(config, m_dmac, 14.7456_MHz_XTAL / 3); // NEC D8237A, divisor unknown
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, ngen_state, dma_hrq_changed)) m_dmac->out_hreq_callback().set(FUNC(ngen_state::dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, ngen_state, dma_eop_changed)) m_dmac->out_eop_callback().set(FUNC(ngen_state::dma_eop_changed));
MCFG_I8237_IN_MEMR_CB(READ8(*this, ngen_state, dma_read_word)) // DMA is always 16-bit m_dmac->in_memr_callback().set(FUNC(ngen_state::dma_read_word)); // DMA is always 16-bit
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, ngen_state, dma_write_word)) m_dmac->out_memw_callback().set(FUNC(ngen_state::dma_write_word));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, ngen_state, dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(ngen_state::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, ngen_state, dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(ngen_state::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, ngen_state, dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(ngen_state::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, ngen_state, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(ngen_state::dack3_w));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, ngen_state, dma_0_dack_r)) m_dmac->in_ior_callback<0>().set(FUNC(ngen_state::dma_0_dack_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, ngen_state, dma_1_dack_r)) m_dmac->in_ior_callback<1>().set(FUNC(ngen_state::dma_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, ngen_state, dma_2_dack_r)) m_dmac->in_ior_callback<2>().set(FUNC(ngen_state::dma_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, ngen_state, dma_3_dack_r)) m_dmac->in_ior_callback<3>().set(FUNC(ngen_state::dma_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, ngen_state, dma_0_dack_w)) m_dmac->out_iow_callback<0>().set(FUNC(ngen_state::dma_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, ngen_state, dma_1_dack_w)) m_dmac->out_iow_callback<1>().set(FUNC(ngen_state::dma_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, ngen_state, dma_2_dack_w)) m_dmac->out_iow_callback<2>().set(FUNC(ngen_state::dma_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, ngen_state, dma_3_dack_w)) m_dmac->out_iow_callback<3>().set(FUNC(ngen_state::dma_3_dack_w));
// I/O board // I/O board
MCFG_DEVICE_ADD("iouart", UPD7201, 0) // clocked by PIT channel 2? UPD7201(config, m_iouart, 0); // clocked by PIT channel 2?
MCFG_Z80DART_OUT_TXDA_CB(WRITELINE("rs232_a", rs232_port_device, write_txd)) m_iouart->out_txda_callback().set("rs232_a", FUNC(rs232_port_device::write_txd));
MCFG_Z80DART_OUT_TXDB_CB(WRITELINE("rs232_b", rs232_port_device, write_txd)) m_iouart->out_txdb_callback().set("rs232_b", FUNC(rs232_port_device::write_txd));
MCFG_Z80DART_OUT_DTRA_CB(WRITELINE("rs232_a", rs232_port_device, write_dtr)) m_iouart->out_dtra_callback().set("rs232_a", FUNC(rs232_port_device::write_dtr));
MCFG_Z80DART_OUT_DTRB_CB(WRITELINE("rs232_b", rs232_port_device, write_dtr)) m_iouart->out_dtrb_callback().set("rs232_b", FUNC(rs232_port_device::write_dtr));
MCFG_Z80DART_OUT_RTSA_CB(WRITELINE("rs232_a", rs232_port_device, write_rts)) m_iouart->out_rtsa_callback().set("rs232_a", FUNC(rs232_port_device::write_rts));
MCFG_Z80DART_OUT_RTSB_CB(WRITELINE("rs232_b", rs232_port_device, write_rts)) m_iouart->out_rtsb_callback().set("rs232_b", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("rs232_a", RS232_PORT, default_rs232_devices, nullptr) MCFG_DEVICE_ADD("rs232_a", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("iouart", upd7201_device, rxa_w)) MCFG_RS232_RXD_HANDLER(WRITELINE("iouart", upd7201_device, rxa_w))
@ -1057,43 +1058,43 @@ MACHINE_CONFIG_START(ngen386_state::ngen386)
MCFG_DEVICE_IO_MAP(ngen386_io) MCFG_DEVICE_IO_MAP(ngen386_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb)
MCFG_DEVICE_ADD("pic", PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("i386cpu", 0)) m_pic->out_int_callback().set_inputline(m_i386cpu, 0);
MCFG_DEVICE_ADD("pit", PIT8254, 0) PIT8254(config, m_pit, 0);
MCFG_PIT8253_CLK0(78120/4) // 19.53kHz, /4 of the CPU timer output? m_pit->set_clk<0>(78120/4); // 19.53kHz, /4 of the CPU timer output?
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, ngen_state, pit_out0_w)) // RS232 channel B baud rate m_pit->out_handler<0>().set(FUNC(ngen386_state::pit_out0_w)); // RS232 channel B baud rate
MCFG_PIT8253_CLK1(14.7456_MHz_XTAL / 12) // correct? - based on patent m_pit->set_clk<1>(14.7456_MHz_XTAL / 12); // correct? - based on patent
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, ngen_state, pit_out1_w)) // RS232 channel A baud rate m_pit->out_handler<1>().set(FUNC(ngen386_state::pit_out1_w)); // RS232 channel A baud rate
MCFG_PIT8253_CLK2(14.7456_MHz_XTAL / 12) m_pit->set_clk<2>(14.7456_MHz_XTAL / 12);
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, ngen_state, pit_out2_w)) m_pit->out_handler<2>().set(FUNC(ngen386_state::pit_out2_w));
MCFG_DEVICE_ADD("dmac", AM9517A, 14.7456_MHz_XTAL / 3) // NEC D8237A, divisor unknown AM9517A(config, m_dmac, 14.7456_MHz_XTAL / 3); // NEC D8237A, divisor unknown
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, ngen_state, dma_hrq_changed)) m_dmac->out_hreq_callback().set(FUNC(ngen386_state::dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, ngen_state, dma_eop_changed)) m_dmac->out_eop_callback().set(FUNC(ngen386_state::dma_eop_changed));
MCFG_I8237_IN_MEMR_CB(READ8(*this, ngen_state, dma_read_word)) // DMA is always 16-bit m_dmac->in_memr_callback().set(FUNC(ngen386_state::dma_read_word)); // DMA is always 16-bit
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, ngen_state, dma_write_word)) m_dmac->out_memw_callback().set(FUNC(ngen386_state::dma_write_word));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, ngen_state, dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(ngen386_state::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, ngen_state, dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(ngen386_state::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, ngen_state, dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(ngen386_state::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, ngen_state, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(ngen386_state::dack3_w));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, ngen_state, dma_0_dack_r)) m_dmac->in_ior_callback<0>().set(FUNC(ngen386_state::dma_0_dack_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, ngen_state, dma_1_dack_r)) m_dmac->in_ior_callback<1>().set(FUNC(ngen386_state::dma_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, ngen_state, dma_2_dack_r)) m_dmac->in_ior_callback<2>().set(FUNC(ngen386_state::dma_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, ngen_state, dma_3_dack_r)) m_dmac->in_ior_callback<3>().set(FUNC(ngen386_state::dma_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, ngen_state, dma_0_dack_w)) m_dmac->out_iow_callback<0>().set(FUNC(ngen386_state::dma_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, ngen_state, dma_1_dack_w)) m_dmac->out_iow_callback<1>().set(FUNC(ngen386_state::dma_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, ngen_state, dma_2_dack_w)) m_dmac->out_iow_callback<2>().set(FUNC(ngen386_state::dma_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, ngen_state, dma_3_dack_w)) m_dmac->out_iow_callback<3>().set(FUNC(ngen386_state::dma_3_dack_w));
// I/O board // I/O board
MCFG_DEVICE_ADD("iouart", UPD7201, 0) // clocked by PIT channel 2? UPD7201(config, m_iouart, 0); // clocked by PIT channel 2?
MCFG_Z80DART_OUT_TXDA_CB(WRITELINE("rs232_a", rs232_port_device, write_txd)) m_iouart->out_txda_callback().set("rs232_a", FUNC(rs232_port_device::write_txd));
MCFG_Z80DART_OUT_TXDB_CB(WRITELINE("rs232_b", rs232_port_device, write_txd)) m_iouart->out_txdb_callback().set("rs232_b", FUNC(rs232_port_device::write_txd));
MCFG_Z80DART_OUT_DTRA_CB(WRITELINE("rs232_a", rs232_port_device, write_dtr)) m_iouart->out_dtra_callback().set("rs232_a", FUNC(rs232_port_device::write_dtr));
MCFG_Z80DART_OUT_DTRB_CB(WRITELINE("rs232_b", rs232_port_device, write_dtr)) m_iouart->out_dtrb_callback().set("rs232_b", FUNC(rs232_port_device::write_dtr));
MCFG_Z80DART_OUT_RTSA_CB(WRITELINE("rs232_a", rs232_port_device, write_rts)) m_iouart->out_rtsa_callback().set("rs232_a", FUNC(rs232_port_device::write_rts));
MCFG_Z80DART_OUT_RTSB_CB(WRITELINE("rs232_b", rs232_port_device, write_rts)) m_iouart->out_rtsb_callback().set("rs232_b", FUNC(rs232_port_device::write_rts));
MCFG_DEVICE_ADD("rs232_a", RS232_PORT, default_rs232_devices, nullptr) MCFG_DEVICE_ADD("rs232_a", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("iouart", upd7201_device, rxa_w)) MCFG_RS232_RXD_HANDLER(WRITELINE("iouart", upd7201_device, rxa_w))
@ -1119,7 +1120,7 @@ MACHINE_CONFIG_START(ngen386_state::ngen386)
MCFG_MC6845_ADD("crtc", MC6845, nullptr, 19980000 / 9) // divisor unknown -- /9 gives 60Hz output, so likely correct MCFG_MC6845_ADD("crtc", MC6845, nullptr, 19980000 / 9) // divisor unknown -- /9 gives 60Hz output, so likely correct
MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(9) MCFG_MC6845_CHAR_WIDTH(9)
MCFG_MC6845_UPDATE_ROW_CB(ngen_state, crtc_update_row) MCFG_MC6845_UPDATE_ROW_CB(ngen386_state, crtc_update_row)
MCFG_VIDEO_SET_SCREEN("screen") MCFG_VIDEO_SET_SCREEN("screen")
// keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board) // keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board)
@ -1130,11 +1131,11 @@ MACHINE_CONFIG_START(ngen386_state::ngen386)
MCFG_RS232_RXD_HANDLER(WRITELINE("videouart", i8251_device, write_rxd)) MCFG_RS232_RXD_HANDLER(WRITELINE("videouart", i8251_device, write_rxd))
MCFG_DEVICE_ADD("refresh_clock", CLOCK, 19200*16) // should be 19530Hz MCFG_DEVICE_ADD("refresh_clock", CLOCK, 19200*16) // should be 19530Hz
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ngen_state,timer_clk_out)) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ngen386_state,timer_clk_out))
// floppy disk / hard disk module (WD2797 FDC, WD1010 HDC, plus an 8253 timer for each) // floppy disk / hard disk module (WD2797 FDC, WD1010 HDC, plus an 8253 timer for each)
MCFG_DEVICE_ADD("fdc", WD2797, 20_MHz_XTAL / 20) MCFG_DEVICE_ADD("fdc", WD2797, 20_MHz_XTAL / 20)
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, ngen_state,fdc_irq_w)) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, ngen386_state,fdc_irq_w))
// MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE("i386cpu",i80186_cpu_device,drq1_w)) // MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE("i386cpu",i80186_cpu_device,drq1_w))
MCFG_WD_FDC_FORCE_READY MCFG_WD_FDC_FORCE_READY
MCFG_DEVICE_ADD("fdc_timer", PIT8253, 0) MCFG_DEVICE_ADD("fdc_timer", PIT8253, 0)
@ -1148,8 +1149,8 @@ MACHINE_CONFIG_START(ngen386_state::ngen386)
// TODO: WD1010 HDC (not implemented), use WD2010 for now // TODO: WD1010 HDC (not implemented), use WD2010 for now
MCFG_DEVICE_ADD("hdc", WD2010, 20_MHz_XTAL / 4) MCFG_DEVICE_ADD("hdc", WD2010, 20_MHz_XTAL / 4)
MCFG_WD2010_OUT_INTRQ_CB(WRITELINE("pic",pic8259_device,ir2_w)) MCFG_WD2010_OUT_INTRQ_CB(WRITELINE("pic",pic8259_device,ir2_w))
MCFG_WD2010_IN_BCS_CB(READ8(*this, ngen_state,hd_buffer_r)) MCFG_WD2010_IN_BCS_CB(READ8(*this, ngen386_state,hd_buffer_r))
MCFG_WD2010_OUT_BCS_CB(WRITE8(*this, ngen_state,hd_buffer_w)) MCFG_WD2010_OUT_BCS_CB(WRITE8(*this, ngen386_state,hd_buffer_w))
MCFG_WD2010_IN_DRDY_CB(CONSTANT(1)) MCFG_WD2010_IN_DRDY_CB(CONSTANT(1))
MCFG_WD2010_IN_INDEX_CB(CONSTANT(1)) MCFG_WD2010_IN_INDEX_CB(CONSTANT(1))
MCFG_WD2010_IN_WF_CB(CONSTANT(1)) MCFG_WD2010_IN_WF_CB(CONSTANT(1))

View File

@ -891,59 +891,60 @@ MACHINE_CONFIG_START(octopus_state::octopus)
MCFG_DEVICE_PROGRAM_MAP(octopus_sub_mem) MCFG_DEVICE_PROGRAM_MAP(octopus_sub_mem)
MCFG_DEVICE_IO_MAP(octopus_sub_io) MCFG_DEVICE_IO_MAP(octopus_sub_io)
MCFG_DEVICE_ADD("dma1", AM9517A, 24_MHz_XTAL / 6) // 4MHz AM9517A(config, m_dma1, 24_MHz_XTAL / 6); // 4MHz
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma2", am9517a_device, dreq0_w)) m_dma1->out_hreq_callback().set(m_dma2, FUNC(am9517a_device::dreq0_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, octopus_state,dma_read)) m_dma1->in_memr_callback().set(FUNC(octopus_state::dma_read));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, octopus_state,dma_write)) m_dma1->out_memw_callback().set(FUNC(octopus_state::dma_write));
//MCFG_I8237_IN_IOR_0_CB(NOOP) //m_dma1->in_ior_callback<0>().set_nop();
//MCFG_I8237_IN_IOR_1_CB(NOOP) // HDC //m_dma1->in_ior_callback<1>().set_nop(); // HDC
//MCFG_I8237_IN_IOR_2_CB(NOOP) // RAM Refresh //m_dma1->in_ior_callback<2>().set_nop(); // RAM Refresh
//MCFG_I8237_IN_IOR_3_CB(NOOP) //m_dma1->in_ior_callback<3>().set_nop();
//MCFG_I8237_OUT_IOW_0_CB(NOOP) //m_dma1->out_iow_callback<0>().set_nop();
//MCFG_I8237_OUT_IOW_1_CB(NOOP) // HDC //m_dma1->out_iow_callback<1>().set_nop(); // HDC
//MCFG_I8237_OUT_IOW_2_CB(NOOP) // RAM Refresh //m_dma1->out_iow_callback<2>().set_nop(); // RAM Refresh
//MCFG_I8237_OUT_IOW_3_CB(NOOP) //m_dma1->out_iow_callback<3>().set_nop();
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, octopus_state, dack0_w)) m_dma1->out_dack_callback<0>().set(FUNC(octopus_state::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, octopus_state, dack1_w)) m_dma1->out_dack_callback<1>().set(FUNC(octopus_state::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, octopus_state, dack2_w)) m_dma1->out_dack_callback<2>().set(FUNC(octopus_state::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, octopus_state, dack3_w)) m_dma1->out_dack_callback<3>().set(FUNC(octopus_state::dack3_w));
MCFG_DEVICE_ADD("dma2", AM9517A, 24_MHz_XTAL / 6) // 4MHz
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, octopus_state, dma_hrq_changed))
MCFG_I8237_IN_MEMR_CB(READ8(*this, octopus_state,dma_read))
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, octopus_state,dma_write))
//MCFG_I8237_IN_IOR_0_CB(NOOP)
MCFG_I8237_IN_IOR_1_CB(READ8("fdc",fd1793_device,data_r)) // FDC
//MCFG_I8237_IN_IOR_2_CB(NOOP)
//MCFG_I8237_IN_IOR_3_CB(NOOP)
//MCFG_I8237_OUT_IOW_0_CB(NOOP)
MCFG_I8237_OUT_IOW_1_CB(WRITE8("fdc",fd1793_device,data_w)) // FDC
//MCFG_I8237_OUT_IOW_2_CB(NOOP)
//MCFG_I8237_OUT_IOW_3_CB(NOOP)
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, octopus_state, dack4_w))
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, octopus_state, dack5_w))
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, octopus_state, dack6_w))
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, octopus_state, dack7_w))
MCFG_DEVICE_ADD("pic_master", PIC8259, 0) AM9517A(config, m_dma2, 24_MHz_XTAL / 6); // 4MHz
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_dma2->out_hreq_callback().set(FUNC(octopus_state::dma_hrq_changed));
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_dma2->in_memr_callback().set(FUNC(octopus_state::dma_read));
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, octopus_state, get_slave_ack)) m_dma2->out_memw_callback().set(FUNC(octopus_state::dma_write));
//m_dma2->in_ior_callback<0>().set_nop();
m_dma2->in_ior_callback<1>().set(m_fdc, FUNC(fd1793_device::data_r)); // FDC
//m_dma2->in_ior_callback<2>().set_nop();
//m_dma2->in_ior_callback<3>().set_nop();
//m_dma2->out_iow_callback<0>().set_nop();
m_dma2->out_iow_callback<1>().set(m_fdc, FUNC(fd1793_device::data_w)); // FDC
//m_dma2->out_iow_callback<2>().set_nop();
//m_dma2->out_iow_callback<3>().set_nop();
m_dma2->out_dack_callback<0>().set(FUNC(octopus_state::dack4_w));
m_dma2->out_dack_callback<1>().set(FUNC(octopus_state::dack5_w));
m_dma2->out_dack_callback<2>().set(FUNC(octopus_state::dack6_w));
m_dma2->out_dack_callback<3>().set(FUNC(octopus_state::dack7_w));
MCFG_DEVICE_ADD("pic_slave", PIC8259, 0) PIC8259(config, m_pic1, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic_master", pic8259_device, ir7_w)) m_pic1->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic1->in_sp_callback().set_constant(1);
m_pic1->read_slave_ack_callback().set(FUNC(octopus_state::get_slave_ack));
PIC8259(config, m_pic2, 0);
m_pic2->out_int_callback().set(m_pic1, FUNC(pic8259_device::ir7_w));
m_pic2->in_sp_callback().set_constant(0);
// RTC (MC146818 via i8255 PPI) // RTC (MC146818 via i8255 PPI)
MCFG_DEVICE_ADD("ppi", I8255, 0) I8255(config, m_ppi, 0);
MCFG_I8255_IN_PORTA_CB(READ8(*this, octopus_state,rtc_r)) m_ppi->in_pa_callback().set(FUNC(octopus_state::rtc_r));
MCFG_I8255_IN_PORTB_CB(READ8(*this, octopus_state,cntl_r)) m_ppi->in_pb_callback().set(FUNC(octopus_state::cntl_r));
MCFG_I8255_IN_PORTC_CB(READ8(*this, octopus_state,gpo_r)) m_ppi->in_pc_callback().set(FUNC(octopus_state::gpo_r));
MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, octopus_state,rtc_w)) m_ppi->out_pa_callback().set(FUNC(octopus_state::rtc_w));
MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, octopus_state,cntl_w)) m_ppi->out_pb_callback().set(FUNC(octopus_state::cntl_w));
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, octopus_state,gpo_w)) m_ppi->out_pc_callback().set(FUNC(octopus_state::gpo_w));
MCFG_DEVICE_ADD("rtc", MC146818, 32.768_kHz_XTAL) MC146818(config, m_rtc, 32.768_kHz_XTAL);
MCFG_MC146818_IRQ_HANDLER(WRITELINE("pic_slave",pic8259_device, ir2_w)) m_rtc->irq_callback().set(m_pic2, FUNC(pic8259_device::ir2_w));
// Keyboard UART // Keyboard UART
MCFG_DEVICE_ADD("keyboard", I8251, 0) MCFG_DEVICE_ADD("keyboard", I8251, 0)

View File

@ -329,12 +329,12 @@ MACHINE_CONFIG_START(paso1600_state::paso1600)
MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8) MCFG_MC6845_CHAR_WIDTH(8)
MCFG_DEVICE_ADD("pic8259", PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_DEVICE_ADD("8237dma", AM9517A, 16000000/4) AM9517A(config, m_dma, 16000000/4);
MCFG_I8237_IN_MEMR_CB(READ8(*this, paso1600_state, pc_dma_read_byte)) m_dma->in_memr_callback().set(FUNC(paso1600_state::pc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, paso1600_state, pc_dma_write_byte)) m_dma->out_memw_callback().set(FUNC(paso1600_state::pc_dma_write_byte));
MACHINE_CONFIG_END MACHINE_CONFIG_END
ROM_START( paso1600 ) ROM_START( paso1600 )

View File

@ -1166,8 +1166,7 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
// sound // sound
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
// devices // devices
MCFG_DEVICE_ADD(PC1512_KEYBOARD_TAG, PC1512_KEYBOARD, 0) MCFG_DEVICE_ADD(PC1512_KEYBOARD_TAG, PC1512_KEYBOARD, 0)
@ -1180,25 +1179,25 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w)) MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w))
MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w)) MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w))
MCFG_DEVICE_ADD(I8237A5_TAG, AM9517A, 24_MHz_XTAL / 6) AM9517A(config, m_dmac, 24_MHz_XTAL / 6);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, pc1512_state, hrq_w)) m_dmac->out_hreq_callback().set(FUNC(pc1512_state::hrq_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, pc1512_state, eop_w)) m_dmac->out_eop_callback().set(FUNC(pc1512_state::eop_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, pc1512_state, memr_r)) m_dmac->in_memr_callback().set(FUNC(pc1512_state::memr_r));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, pc1512_state, memw_w)) m_dmac->out_memw_callback().set(FUNC(pc1512_state::memw_w));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, pc1512_state, ior1_r)) m_dmac->in_ior_callback<1>().set(FUNC(pc1512_state::ior1_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, pc1512_state, ior2_r)) m_dmac->in_ior_callback<2>().set(FUNC(pc1512_state::ior2_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, pc1512_state, ior3_r)) m_dmac->in_ior_callback<3>().set(FUNC(pc1512_state::ior3_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, pc1512_state, iow0_w)) m_dmac->out_iow_callback<0>().set(FUNC(pc1512_state::iow0_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, pc1512_state, iow1_w)) m_dmac->out_iow_callback<1>().set(FUNC(pc1512_state::iow1_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, pc1512_state, iow2_w)) m_dmac->out_iow_callback<2>().set(FUNC(pc1512_state::iow2_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, pc1512_state, iow3_w)) m_dmac->out_iow_callback<3>().set(FUNC(pc1512_state::iow3_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, pc1512_state, dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(pc1512_state::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, pc1512_state, dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(pc1512_state::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, pc1512_state, dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(pc1512_state::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, pc1512_state, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(pc1512_state::dack3_w));
MCFG_DEVICE_ADD(I8259A2_TAG, PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0)) m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0) MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0)
MCFG_PIT8253_CLK0(28.636363_MHz_XTAL / 24) MCFG_PIT8253_CLK0(28.636363_MHz_XTAL / 24)
@ -1300,8 +1299,7 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
// sound // sound
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
// devices // devices
MCFG_DEVICE_ADD(PC1512_KEYBOARD_TAG, PC1512_KEYBOARD, 0) MCFG_DEVICE_ADD(PC1512_KEYBOARD_TAG, PC1512_KEYBOARD, 0)
@ -1314,25 +1312,25 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w)) MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w))
MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w)) MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w))
MCFG_DEVICE_ADD(I8237A5_TAG, AM9517A, 24_MHz_XTAL / 6) AM9517A(config, m_dmac, 24_MHz_XTAL / 6);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, pc1512_base_state, hrq_w)) m_dmac->out_hreq_callback().set(FUNC(pc1640_state::hrq_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, pc1512_base_state, eop_w)) m_dmac->out_eop_callback().set(FUNC(pc1640_state::eop_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, pc1512_base_state, memr_r)) m_dmac->in_memr_callback().set(FUNC(pc1640_state::memr_r));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, pc1512_base_state, memw_w)) m_dmac->out_memw_callback().set(FUNC(pc1640_state::memw_w));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, pc1512_base_state, ior1_r)) m_dmac->in_ior_callback<1>().set(FUNC(pc1640_state::ior1_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, pc1512_base_state, ior2_r)) m_dmac->in_ior_callback<2>().set(FUNC(pc1640_state::ior2_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, pc1512_base_state, ior3_r)) m_dmac->in_ior_callback<3>().set(FUNC(pc1640_state::ior3_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, pc1512_base_state, iow0_w)) m_dmac->out_iow_callback<0>().set(FUNC(pc1640_state::iow0_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, pc1512_base_state, iow1_w)) m_dmac->out_iow_callback<1>().set(FUNC(pc1640_state::iow1_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, pc1512_base_state, iow2_w)) m_dmac->out_iow_callback<2>().set(FUNC(pc1640_state::iow2_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, pc1512_base_state, iow3_w)) m_dmac->out_iow_callback<3>().set(FUNC(pc1640_state::iow3_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, pc1512_base_state, dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(pc1640_state::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, pc1512_base_state, dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(pc1640_state::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, pc1512_base_state, dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(pc1640_state::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, pc1512_base_state, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(pc1640_state::dack3_w));
MCFG_DEVICE_ADD(I8259A2_TAG, PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0)) m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0) MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0)
MCFG_PIT8253_CLK0(28.636363_MHz_XTAL / 24) MCFG_PIT8253_CLK0(28.636363_MHz_XTAL / 24)

View File

@ -1631,28 +1631,28 @@ MACHINE_CONFIG_START(pc88va_state::pc88va)
MCFG_I8255_IN_PORTC_CB(READ8(*this, pc88va_state, fdc_8255_c_r)) MCFG_I8255_IN_PORTC_CB(READ8(*this, pc88va_state, fdc_8255_c_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pc88va_state, fdc_8255_c_w)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pc88va_state, fdc_8255_c_w))
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0) PIC8259(config, m_pic1, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic1->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic1->in_sp_callback().set_constant(1);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, pc88va_state, get_slave_ack)) m_pic1->read_slave_ack_callback().set(FUNC(pc88va_state::get_slave_ack));
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0) PIC8259(config, m_pic2, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir7_w)) m_pic2->out_int_callback().set(m_pic1, FUNC(pic8259_device::ir7_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic2->in_sp_callback().set_constant(0);
MCFG_DEVICE_ADD("dmac", AM9517A, 8000000) /* ch2 is FDC, ch0/3 are "user". ch1 is unused */ AM9517A(config, m_dmac, 8000000); // ch2 is FDC, ch0/3 are "user". ch1 is unused
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, pc88va_state, pc88va_hlda_w)) m_dmac->out_hreq_callback().set(FUNC(pc88va_state::pc88va_hlda_w));
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(*this, pc88va_state, pc88va_tc_w)) m_dmac->out_eop_callback().set(FUNC(pc88va_state::pc88va_tc_w));
MCFG_AM9517A_IN_IOR_2_CB(READ8(*this, pc88va_state, fdc_dma_r)) m_dmac->in_ior_callback<2>().set(FUNC(pc88va_state::fdc_dma_r));
MCFG_AM9517A_OUT_IOW_2_CB(WRITE8(*this, pc88va_state, fdc_dma_w)) m_dmac->out_iow_callback<2>().set(FUNC(pc88va_state::fdc_dma_w));
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, pc88va_state, dma_memr_cb)) m_dmac->in_memr_callback().set(FUNC(pc88va_state::dma_memr_cb));
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(*this, pc88va_state, dma_memw_cb)) m_dmac->out_memw_callback().set(FUNC(pc88va_state::dma_memw_cb));
MCFG_UPD765A_ADD("upd765", false, true) MCFG_UPD765A_ADD("upd765", false, true)
MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc88va_state, fdc_irq)) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc88va_state, fdc_irq))
MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc88va_state, fdc_drq)) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc88va_state, fdc_drq))
MCFG_FLOPPY_DRIVE_ADD("upd765:0", pc88va_floppies, "525hd", pc88va_state::floppy_formats) FLOPPY_CONNECTOR(config, m_fdd[0], pc88va_floppies, "525hd", pc88va_state::floppy_formats);
MCFG_FLOPPY_DRIVE_ADD("upd765:1", pc88va_floppies, "525hd", pc88va_state::floppy_formats) FLOPPY_CONNECTOR(config, m_fdd[1], pc88va_floppies, "525hd", pc88va_state::floppy_formats);
MCFG_SOFTWARE_LIST_ADD("disk_list","pc88va") MCFG_SOFTWARE_LIST_ADD("disk_list","pc88va")
MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_DEVICE_ADD("pit8253", PIT8253, 0)

View File

@ -2277,9 +2277,8 @@ MACHINE_CONFIG_START(pc9801_state::pc9801_sasi)
MCFG_DEVICE_ADD("sasi_data_in", INPUT_BUFFER, 0) MCFG_DEVICE_ADD("sasi_data_in", INPUT_BUFFER, 0)
MCFG_DEVICE_ADD("sasi_ctrl_in", INPUT_BUFFER, 0) MCFG_DEVICE_ADD("sasi_ctrl_in", INPUT_BUFFER, 0)
MCFG_DEVICE_MODIFY("i8237") m_dmac->in_ior_callback<0>().set(FUNC(pc9801_state::sasi_data_r));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, pc9801_state, sasi_data_r)) m_dmac->out_iow_callback<0>().set(FUNC(pc9801_state::sasi_data_w));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, pc9801_state, sasi_data_w))
MACHINE_CONFIG_END MACHINE_CONFIG_END
void pc9801_state::cdrom_headphones(device_t *device) void pc9801_state::cdrom_headphones(device_t *device)
@ -2314,42 +2313,42 @@ MACHINE_CONFIG_START(pc9801_state::pc9801_common)
m_pit8253->out_handler<2>().set(m_sio, FUNC(i8251_device::write_txc)); m_pit8253->out_handler<2>().set(m_sio, FUNC(i8251_device::write_txc));
m_pit8253->out_handler<2>().append(m_sio, FUNC(i8251_device::write_rxc)); m_pit8253->out_handler<2>().append(m_sio, FUNC(i8251_device::write_rxc));
MCFG_DEVICE_ADD("i8237", AM9517A, 5000000) // unknown clock, TODO: check channels 0 - 1 AM9517A(config, m_dmac, 5000000); // unknown clock, TODO: check channels 0 - 1
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, pc9801_state, dma_hrq_changed)) m_dmac->out_hreq_callback().set(FUNC(pc9801_state::dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, pc9801_state, tc_w)) m_dmac->out_eop_callback().set(FUNC(pc9801_state::tc_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, pc9801_state, dma_read_byte)) m_dmac->in_memr_callback().set(FUNC(pc9801_state::dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, pc9801_state, dma_write_byte)) m_dmac->out_memw_callback().set(FUNC(pc9801_state::dma_write_byte));
MCFG_I8237_IN_IOR_2_CB(READ8("upd765_2hd", upd765a_device, mdma_r)) m_dmac->in_ior_callback<2>().set(m_fdc_2hd, FUNC(upd765a_device::mdma_r));
MCFG_I8237_OUT_IOW_2_CB(WRITE8("upd765_2hd", upd765a_device, mdma_w)) m_dmac->out_iow_callback<2>().set(m_fdc_2hd, FUNC(upd765a_device::mdma_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, pc9801_state, dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(pc9801_state::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, pc9801_state, dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(pc9801_state::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, pc9801_state, dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(pc9801_state::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, pc9801_state, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(pc9801_state::dack3_w));
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0) PIC8259(config, m_pic1, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic1->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic1->in_sp_callback().set_constant(1);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, pc9801_state, get_slave_ack)) m_pic1->read_slave_ack_callback().set(FUNC(pc9801_state::get_slave_ack));
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0) PIC8259(config, m_pic2, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir7_w)) // TODO: Check ir7_w m_pic2->out_int_callback().set(m_pic1, FUNC(pic8259_device::ir7_w)); // TODO: Check ir7_w
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic2->in_sp_callback().set_constant(0);
MCFG_DEVICE_ADD("ppi8255_sys", I8255, 0) I8255(config, m_ppi_sys, 0);
MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2")) m_ppi_sys->in_pa_callback().set_ioport("DSW2");
MCFG_I8255_IN_PORTB_CB(IOPORT("DSW1")) m_ppi_sys->in_pb_callback().set_ioport("DSW1");
MCFG_I8255_IN_PORTC_CB(CONSTANT(0xa0)) // 0x80 cpu triple fault reset flag? m_ppi_sys->in_pc_callback().set_constant(0xa0); // 0x80 cpu triple fault reset flag?
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pc9801_state, ppi_sys_portc_w)) m_ppi_sys->out_pc_callback().set(FUNC(pc9801_state::ppi_sys_portc_w));
MCFG_DEVICE_ADD("ppi8255_prn", I8255, 0) I8255(config, m_ppi_prn, 0);
/* TODO: check this one */ // TODO: check this one
MCFG_I8255_IN_PORTB_CB(IOPORT("DSW5")) m_ppi_prn->in_pb_callback().set_ioport("DSW5");
pc9801_keyboard(config); pc9801_keyboard(config);
pc9801_mouse(config); pc9801_mouse(config);
pc9801_cbus(config); pc9801_cbus(config);
MCFG_DEVICE_ADD(UPD8251_TAG, I8251, 0) I8251(config, m_sio, 0);
UPD765A(config, m_fdc_2hd, true, true); UPD765A(config, m_fdc_2hd, true, true);
m_fdc_2hd->intrq_wr_callback().set(m_pic2, FUNC(pic8259_device::ir3_w)); m_fdc_2hd->intrq_wr_callback().set(m_pic2, FUNC(pic8259_device::ir3_w));
@ -2412,9 +2411,8 @@ MACHINE_CONFIG_START(pc9801_state::pc9801)
pc9801_sasi(config); pc9801_sasi(config);
MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL(32'768), NOOP, NOOP) MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL(32'768), NOOP, NOOP)
MCFG_DEVICE_MODIFY("i8237") m_dmac->in_ior_callback<3>().set(m_fdc_2dd, FUNC(upd765a_device::mdma_r));
MCFG_I8237_IN_IOR_3_CB(READ8("upd765_2dd", upd765a_device, mdma_r)) m_dmac->out_iow_callback<3>().set(m_fdc_2dd, FUNC(upd765a_device::mdma_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8("upd765_2dd", upd765a_device, mdma_w))
MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_ADD("palette", 16)
MCFG_PALETTE_INIT_OWNER(pc9801_state,pc9801) MCFG_PALETTE_INIT_OWNER(pc9801_state,pc9801)

View File

@ -187,9 +187,8 @@ MACHINE_CONFIG_START(pcat_dyn_state::pcat_dyn)
MCFG_AD1848_IRQ_CALLBACK(WRITELINE("pic8259_1", pic8259_device, ir5_w)) MCFG_AD1848_IRQ_CALLBACK(WRITELINE("pic8259_1", pic8259_device, ir5_w))
MCFG_AD1848_DRQ_CALLBACK(WRITELINE("dma8237_1", am9517a_device, dreq0_w)) MCFG_AD1848_DRQ_CALLBACK(WRITELINE("dma8237_1", am9517a_device, dreq0_w))
MCFG_DEVICE_MODIFY("dma8237_1") m_dma8237_1->out_iow_callback<0>().set("ad1848", FUNC(ad1848_device::dack_w));
MCFG_I8237_OUT_IOW_0_CB(WRITE8("ad1848", ad1848_device, dack_w)) m_dma8237_1->out_iow_callback<1>().set(FUNC(pcat_dyn_state::dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, pcat_dyn_state, dma8237_1_dack_w))
MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", pcat_dyn_state, nvram_init) MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", pcat_dyn_state, nvram_init)

View File

@ -728,12 +728,12 @@ MACHINE_CONFIG_START(qx10_state::qx10)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(50) m_screen->set_refresh_hz(50);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
MCFG_SCREEN_UPDATE_DRIVER(qx10_state, screen_update) m_screen->set_screen_update(FUNC(qx10_state::screen_update));
MCFG_SCREEN_SIZE(640, 480) m_screen->set_size(640, 480);
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) m_screen->set_visarea(0, 640-1, 0, 480-1);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_qx10) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_qx10)
MCFG_PALETTE_ADD("palette", 8) MCFG_PALETTE_ADD("palette", 8)
MCFG_PALETTE_INIT_OWNER(qx10_state, qx10) MCFG_PALETTE_INIT_OWNER(qx10_state, qx10)
@ -747,11 +747,10 @@ MACHINE_CONFIG_START(qx10_state::qx10)
1 Keyboard clock (1200bps) +5V 8259A (10E) IR5 Software timer 1 Keyboard clock (1200bps) +5V 8259A (10E) IR5 Software timer
2 Clock 1,9668MHz Memory register D7 8259 (12E) IR1 Software timer 2 Clock 1,9668MHz Memory register D7 8259 (12E) IR1 Software timer
*/ */
PIT8253(config, m_pit_1, 0);
MCFG_DEVICE_ADD("pit8253_1", PIT8253, 0) m_pit_1->set_clk<0>(1200);
MCFG_PIT8253_CLK0(1200) m_pit_1->set_clk<1>(1200);
MCFG_PIT8253_CLK1(1200) m_pit_1->set_clk<2>(MAIN_CLK / 8);
MCFG_PIT8253_CLK2(MAIN_CLK / 8)
/* /*
Timer 1 Timer 1
@ -760,21 +759,21 @@ MACHINE_CONFIG_START(qx10_state::qx10)
1 Clock 1,9668MHz +5V Keyboard clock 1200bps (Clock / 1664) 1 Clock 1,9668MHz +5V Keyboard clock 1200bps (Clock / 1664)
2 Clock 1,9668MHz +5V RS-232C baud rate 9600bps (Clock / 208) 2 Clock 1,9668MHz +5V RS-232C baud rate 9600bps (Clock / 208)
*/ */
MCFG_DEVICE_ADD("pit8253_2", PIT8253, 0) PIT8253(config, m_pit_2, 0);
MCFG_PIT8253_CLK0(MAIN_CLK / 8) m_pit_2->set_clk<0>(MAIN_CLK / 8);
MCFG_PIT8253_CLK1(MAIN_CLK / 8) m_pit_2->set_clk<1>(MAIN_CLK / 8);
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, qx10_state, keyboard_clk)) m_pit_2->out_handler<1>().set(FUNC(qx10_state::keyboard_clk));
MCFG_PIT8253_CLK2(MAIN_CLK / 8) m_pit_2->set_clk<2>(MAIN_CLK / 8);
MCFG_PIT8253_OUT2_HANDLER(WRITELINE("upd7201", z80dart_device, rxtxcb_w)) m_pit_2->out_handler<2>().set(m_scc, FUNC(z80dart_device::rxtxcb_w));
MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0) PIC8259(config, m_pic_m, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) m_pic_m->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic_m->in_sp_callback().set_constant(1);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, qx10_state, get_slave_ack)) m_pic_m->read_slave_ack_callback().set(FUNC(qx10_state::get_slave_ack));
MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0) PIC8259(config, m_pic_s, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir7_w)) m_pic_s->out_int_callback().set(m_pic_m, FUNC(pic8259_device::ir7_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic_s->in_sp_callback().set_constant(0);
MCFG_DEVICE_ADD("upd7201", UPD7201, MAIN_CLK/4) // channel b clock set by pit2 channel 2 MCFG_DEVICE_ADD("upd7201", UPD7201, MAIN_CLK/4) // channel b clock set by pit2 channel 2
// Channel A: Keyboard // Channel A: Keyboard
@ -785,20 +784,20 @@ MACHINE_CONFIG_START(qx10_state::qx10)
MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) MCFG_Z80DART_OUT_RTSB_CB(WRITELINE(RS232_TAG, rs232_port_device, write_rts))
MCFG_Z80DART_OUT_INT_CB(WRITELINE(*this, qx10_state, keyboard_irq)) MCFG_Z80DART_OUT_INT_CB(WRITELINE(*this, qx10_state, keyboard_irq))
MCFG_DEVICE_ADD("8237dma_1", AM9517A, MAIN_CLK/4) AM9517A(config, m_dma_1, MAIN_CLK/4);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, qx10_state, dma_hrq_changed)) m_dma_1->out_hreq_callback().set(FUNC(qx10_state::dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, qx10_state, tc_w)) m_dma_1->out_eop_callback().set(FUNC(qx10_state::tc_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, qx10_state, memory_read_byte)) m_dma_1->in_memr_callback().set(FUNC(qx10_state::memory_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, qx10_state, memory_write_byte)) m_dma_1->out_memw_callback().set(FUNC(qx10_state::memory_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, qx10_state, fdc_dma_r)) m_dma_1->in_ior_callback<0>().set(FUNC(qx10_state::fdc_dma_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, qx10_state, gdc_dack_r)) m_dma_1->in_ior_callback<1>().set(FUNC(qx10_state::gdc_dack_r));
//MCFG_I8237_IN_IOR_2_CB(READ8("upd7220", upd7220_device, dack_r)) //m_dma_1->in_ior_callback<2>().set(m_hgdc, FUNC(upd7220_device::dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, qx10_state, fdc_dma_w)) m_dma_1->out_iow_callback<0>().set(FUNC(qx10_state::fdc_dma_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, qx10_state, gdc_dack_w)) m_dma_1->out_iow_callback<1>().set(FUNC(qx10_state::gdc_dack_w));
//MCFG_I8237_OUT_IOW_2_CB(WRITE8("upd7220", upd7220_device, dack_w)) //m_dma_1->out_iow_callback<2>().set(m_hgdc, FUNC(upd7220_device::dack_w));
MCFG_DEVICE_ADD("8237dma_2", AM9517A, MAIN_CLK/4) AM9517A(config, m_dma_2, MAIN_CLK/4);
MCFG_DEVICE_ADD("i8255", I8255, 0) I8255(config, m_ppi, 0);
MCFG_DEVICE_ADD("upd7220", UPD7220, MAIN_CLK/6) // unk clock MCFG_DEVICE_ADD("upd7220", UPD7220, MAIN_CLK/6) // unk clock
MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map)
@ -806,14 +805,14 @@ MACHINE_CONFIG_START(qx10_state::qx10)
MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(qx10_state, hgdc_draw_text) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(qx10_state, hgdc_draw_text)
MCFG_VIDEO_SET_SCREEN("screen") MCFG_VIDEO_SET_SCREEN("screen")
MCFG_DEVICE_ADD("rtc", MC146818, 32.768_kHz_XTAL) MC146818(config, m_rtc, 32.768_kHz_XTAL);
MCFG_MC146818_IRQ_HANDLER(WRITELINE("pic8259_slave", pic8259_device, ir2_w)) m_rtc->irq_callback().set(m_pic_s, FUNC(pic8259_device::ir2_w));
UPD765A(config, m_fdc, true, true); UPD765A(config, m_fdc, true, true);
m_fdc->intrq_wr_callback().set(FUNC(qx10_state::qx10_upd765_interrupt)); m_fdc->intrq_wr_callback().set(FUNC(qx10_state::qx10_upd765_interrupt));
m_fdc->drq_wr_callback().set(m_dma_1, FUNC(am9517a_device::dreq0_w)).invert(); m_fdc->drq_wr_callback().set(m_dma_1, FUNC(am9517a_device::dreq0_w)).invert();
MCFG_FLOPPY_DRIVE_ADD("upd765:0", qx10_floppies, "525dd", floppy_image_device::default_floppy_formats) FLOPPY_CONNECTOR(config, m_floppy[0], qx10_floppies, "525dd", floppy_image_device::default_floppy_formats);
MCFG_FLOPPY_DRIVE_ADD("upd765:1", qx10_floppies, "525dd", floppy_image_device::default_floppy_formats) FLOPPY_CONNECTOR(config, m_floppy[1], qx10_floppies, "525dd", floppy_image_device::default_floppy_formats);
MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("upd7201", upd7201_device, rxb_w)) MCFG_RS232_RXD_HANDLER(WRITELINE("upd7201", upd7201_device, rxb_w))

View File

@ -63,7 +63,7 @@ public:
void init_rc702(); void init_rc702();
private: private:
DECLARE_MACHINE_RESET(rc702); virtual void machine_reset() override;
DECLARE_READ8_MEMBER(memory_read_byte); DECLARE_READ8_MEMBER(memory_read_byte);
DECLARE_WRITE8_MEMBER(memory_write_byte); DECLARE_WRITE8_MEMBER(memory_write_byte);
DECLARE_WRITE8_MEMBER(port14_w); DECLARE_WRITE8_MEMBER(port14_w);
@ -151,7 +151,7 @@ static INPUT_PORTS_START( rc702 )
PORT_DIPSETTING( 0x00, DEF_STR( On )) PORT_DIPSETTING( 0x00, DEF_STR( On ))
INPUT_PORTS_END INPUT_PORTS_END
MACHINE_RESET_MEMBER( rc702_state, rc702 ) void rc702_state::machine_reset()
{ {
membank("bankr0")->set_entry(0); // point at rom membank("bankr0")->set_entry(0); // point at rom
membank("bankw0")->set_entry(0); // always write to ram membank("bankw0")->set_entry(0); // always write to ram
@ -338,8 +338,6 @@ MACHINE_CONFIG_START(rc702_state::rc702)
MCFG_DEVICE_IO_MAP(rc702_io) MCFG_DEVICE_IO_MAP(rc702_io)
MCFG_Z80_DAISY_CHAIN(daisy_chain_intf) MCFG_Z80_DAISY_CHAIN(daisy_chain_intf)
MCFG_MACHINE_RESET_OVERRIDE(rc702_state, rc702)
CLOCK(config, "ctc_clock", 614000).signal_handler().set(FUNC(rc702_state::clock_w)); CLOCK(config, "ctc_clock", 614000).signal_handler().set(FUNC(rc702_state::clock_w));
Z80CTC(config, m_ctc1, 8_MHz_XTAL / 2); Z80CTC(config, m_ctc1, 8_MHz_XTAL / 2);
@ -351,20 +349,20 @@ MACHINE_CONFIG_START(rc702_state::rc702)
MCFG_DEVICE_ADD("sio1", Z80DART, XTAL(8'000'000) / 2) MCFG_DEVICE_ADD("sio1", Z80DART, XTAL(8'000'000) / 2)
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(8'000'000) / 2) Z80PIO(config, m_pio, 8_MHz_XTAL / 2);
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
// MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, rc702_state, portxx_w)) // parallel port // m_pio->out_pb_callback().set(FUNC(rc702_state::portxx_w)); // parallel port
MCFG_DEVICE_ADD("dma", AM9517A, XTAL(8'000'000) / 2) AM9517A(config, m_dma, 8_MHz_XTAL / 2);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, rc702_state, busreq_w)) m_dma->out_hreq_callback().set(FUNC(rc702_state::busreq_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, rc702_state, tc_w)) // inverted m_dma->out_eop_callback().set(FUNC(rc702_state::tc_w)); // inverted
MCFG_I8237_IN_MEMR_CB(READ8(*this, rc702_state, memory_read_byte)) m_dma->in_memr_callback().set(FUNC(rc702_state::memory_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, rc702_state, memory_write_byte)) m_dma->out_memw_callback().set(FUNC(rc702_state::memory_write_byte));
MCFG_I8237_IN_IOR_1_CB(READ8("fdc", upd765a_device, mdma_r)) m_dma->in_ior_callback<1>().set(m_fdc, FUNC(upd765a_device::mdma_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8("fdc", upd765a_device, mdma_w)) m_dma->out_iow_callback<1>().set(m_fdc, FUNC(upd765a_device::mdma_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8("crtc", i8275_device, dack_w)) m_dma->out_iow_callback<2>().set("crtc", FUNC(i8275_device::dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8("crtc", i8275_device, dack_w)) m_dma->out_iow_callback<3>().set("crtc", FUNC(i8275_device::dack_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, rc702_state, dack1_w)) // inverted m_dma->out_dack_callback<1>().set(FUNC(rc702_state::dack1_w)); // inverted
MCFG_UPD765A_ADD("fdc", false, true) MCFG_UPD765A_ADD("fdc", false, true)
MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("ctc1", z80ctc_device, trg3)) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("ctc1", z80ctc_device, trg3))

View File

@ -1282,37 +1282,37 @@ MACHINE_CONFIG_START(wangpc_state::wangpc)
//MCFG_QUANTUM_PERFECT_CPU(I8086_TAG) //MCFG_QUANTUM_PERFECT_CPU(I8086_TAG)
// devices // devices
MCFG_DEVICE_ADD(AM9517A_TAG, AM9517A, 4000000) AM9517A(config, m_dmac, 4000000);
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, wangpc_state, hrq_w)) m_dmac->out_hreq_callback().set(FUNC(wangpc_state::hrq_w));
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(*this, wangpc_state, eop_w)) m_dmac->out_eop_callback().set(FUNC(wangpc_state::eop_w));
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, wangpc_state, memr_r)) m_dmac->in_memr_callback().set(FUNC(wangpc_state::memr_r));
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(*this, wangpc_state, memw_w)) m_dmac->out_memw_callback().set(FUNC(wangpc_state::memw_w));
MCFG_AM9517A_IN_IOR_1_CB(READ8(WANGPC_BUS_TAG, wangpcbus_device, dack1_r)) m_dmac->in_ior_callback<1>().set(m_bus, FUNC(wangpcbus_device::dack1_r));
MCFG_AM9517A_IN_IOR_2_CB(READ8(*this, wangpc_state, ior2_r)) m_dmac->in_ior_callback<2>().set(FUNC(wangpc_state::ior2_r));
MCFG_AM9517A_IN_IOR_3_CB(READ8(WANGPC_BUS_TAG, wangpcbus_device, dack3_r)) m_dmac->in_ior_callback<3>().set(m_bus, FUNC(wangpcbus_device::dack3_r));
MCFG_AM9517A_OUT_IOW_1_CB(WRITE8(WANGPC_BUS_TAG, wangpcbus_device, dack1_w)) m_dmac->out_iow_callback<1>().set(m_bus, FUNC(wangpcbus_device::dack1_w));
MCFG_AM9517A_OUT_IOW_2_CB(WRITE8(*this, wangpc_state, iow2_w)) m_dmac->out_iow_callback<2>().set(FUNC(wangpc_state::iow2_w));
MCFG_AM9517A_OUT_IOW_3_CB(WRITE8(WANGPC_BUS_TAG, wangpcbus_device, dack3_w)) m_dmac->out_iow_callback<3>().set(m_bus, FUNC(wangpcbus_device::dack3_w));
MCFG_AM9517A_OUT_DACK_0_CB(WRITELINE(*this, wangpc_state, dack0_w)) m_dmac->out_dack_callback<0>().set(FUNC(wangpc_state::dack0_w));
MCFG_AM9517A_OUT_DACK_1_CB(WRITELINE(*this, wangpc_state, dack1_w)) m_dmac->out_dack_callback<1>().set(FUNC(wangpc_state::dack1_w));
MCFG_AM9517A_OUT_DACK_2_CB(WRITELINE(*this, wangpc_state, dack2_w)) m_dmac->out_dack_callback<2>().set(FUNC(wangpc_state::dack2_w));
MCFG_AM9517A_OUT_DACK_3_CB(WRITELINE(*this, wangpc_state, dack3_w)) m_dmac->out_dack_callback<3>().set(FUNC(wangpc_state::dack3_w));
MCFG_DEVICE_ADD(I8259A_TAG, PIC8259, 0) PIC8259(config, m_pic, 0);
MCFG_PIC8259_OUT_INT_CB(INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0)) m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) I8255A(config, m_ppi, 0);
MCFG_I8255_IN_PORTA_CB(READ8(*this, wangpc_state, ppi_pa_r)) m_ppi->in_pa_callback().set(FUNC(wangpc_state::ppi_pa_r));
MCFG_I8255_IN_PORTB_CB(READ8(*this, wangpc_state, ppi_pb_r)) m_ppi->in_pb_callback().set(FUNC(wangpc_state::ppi_pb_r));
MCFG_I8255_IN_PORTC_CB(READ8(*this, wangpc_state, ppi_pc_r)) m_ppi->in_pc_callback().set(FUNC(wangpc_state::ppi_pc_r));
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, wangpc_state, ppi_pc_w)) m_ppi->out_pc_callback().set(FUNC(wangpc_state::ppi_pc_w));
MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0) PIT8253(config, m_pit, 0);
MCFG_PIT8253_CLK0(500000) m_pit->set_clk<0>(500000);
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(I8259A_TAG, pic8259_device, ir0_w)) m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
MCFG_PIT8253_CLK1(2000000) m_pit->set_clk<1>(2000000);
MCFG_PIT8253_CLK2(500000) m_pit->set_clk<2>(500000);
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, wangpc_state, pit2_w)) m_pit->out_handler<2>().set(FUNC(wangpc_state::pit2_w));
MCFG_IM6402_ADD(IM6402_TAG, 62500*16, 62500*16) MCFG_IM6402_ADD(IM6402_TAG, 62500*16, 62500*16)
MCFG_IM6402_TRO_CALLBACK(WRITELINE("wangpckb", wangpc_keyboard_device, write_rxd)) MCFG_IM6402_TRO_CALLBACK(WRITELINE("wangpckb", wangpc_keyboard_device, write_rxd))

View File

@ -842,31 +842,28 @@ MACHINE_CONFIG_START(wicat_state::wicat)
MCFG_DEVICE_PROGRAM_MAP(wicat_video_mem) MCFG_DEVICE_PROGRAM_MAP(wicat_video_mem)
MCFG_DEVICE_IO_MAP(wicat_video_io) MCFG_DEVICE_IO_MAP(wicat_video_io)
MCFG_INPUT_MERGER_ANY_HIGH("videoirq") INPUT_MERGER_ANY_HIGH(config, m_videoirq).output_handler().set_inputline(m_videocpu, INPUT_LINE_IRQ0);
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("videocpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("videoctrl", LS259, 0) LS259(config, m_videoctrl);
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(*this, wicat_state, crtc_irq_clear_w)) m_videoctrl->q_out_cb<0>().set(FUNC(wicat_state::crtc_irq_clear_w));
MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE("tbreirq", input_merger_device, in_w<1>)) m_videoctrl->q_out_cb<6>().set("tbreirq", FUNC(input_merger_device::in_w<1>));
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE("dmairq", input_merger_device, in_w<1>)) m_videoctrl->q_out_cb<7>().set("dmairq", FUNC(input_merger_device::in_w<1>));
// Q1-Q5 are all used but unknown // Q1-Q5 are all used but unknown
MCFG_DEVICE_ADD("videodma", AM9517A, 8_MHz_XTAL) // clock is a bit of guess AM9517A(config, m_videodma, 8_MHz_XTAL); // clock is a bit of guess
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, wicat_state, dma_hrq_w)) m_videodma->out_hreq_callback().set(FUNC(wicat_state::dma_hrq_w));
MCFG_AM9517A_OUT_EOP_CB(WRITELINE("dmairq", input_merger_device, in_w<0>)) m_videodma->out_eop_callback().set("dmairq", FUNC(input_merger_device::in_w<0>));
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, wicat_state, vram_r)) m_videodma->in_memr_callback().set(FUNC(wicat_state::vram_r));
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(*this, wicat_state, vram_w)) m_videodma->out_memw_callback().set(FUNC(wicat_state::vram_w));
MCFG_AM9517A_OUT_IOW_0_CB(WRITE8("video", i8275_device, dack_w)) m_videodma->out_iow_callback<0>().set(m_crtc, FUNC(i8275_device::dack_w));
MCFG_INPUT_MERGER_ALL_HIGH("dmairq") INPUT_MERGER_ALL_HIGH(config, "dmairq").output_handler().set_inputline(m_videocpu, INPUT_LINE_NMI);
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("videocpu", INPUT_LINE_NMI))
MCFG_IM6402_ADD("videouart", 0, 1200) MCFG_IM6402_ADD("videouart", 0, 1200)
MCFG_IM6402_DR_CALLBACK(WRITELINE("videoirq", input_merger_device, in_w<2>)) MCFG_IM6402_DR_CALLBACK(WRITELINE("videoirq", input_merger_device, in_w<2>))
MCFG_IM6402_TBRE_CALLBACK(WRITELINE("tbreirq", input_merger_device, in_w<0>)) MCFG_IM6402_TBRE_CALLBACK(WRITELINE("tbreirq", input_merger_device, in_w<0>))
MCFG_INPUT_MERGER_ALL_HIGH("tbreirq") INPUT_MERGER_ALL_HIGH(config, "tbreirq").output_handler().set(m_videoirq, FUNC(input_merger_device::in_w<3>));
MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE("videoirq", input_merger_device, in_w<3>))
// terminal (2x INS2651, 1x IM6042 - one of these is for the keyboard, another communicates with the main board, the third is unknown) // terminal (2x INS2651, 1x IM6042 - one of these is for the keyboard, another communicates with the main board, the third is unknown)
MCFG_DEVICE_ADD("videouart0", MC2661, 5.0688_MHz_XTAL) // the INS2651 looks similar enough to the MC2661... MCFG_DEVICE_ADD("videouart0", MC2661, 5.0688_MHz_XTAL) // the INS2651 looks similar enough to the MC2661...

View File

@ -38,7 +38,6 @@
#define INS8250_TAG "ic106" #define INS8250_TAG "ic106"
#define AMS40041_TAG "ic126" #define AMS40041_TAG "ic126"
#define CENTRONICS_TAG "centronics" #define CENTRONICS_TAG "centronics"
#define SPEAKER_TAG "speaker"
#define ISA_BUS_TAG "isa" #define ISA_BUS_TAG "isa"
#define RS232_TAG "rs232" #define RS232_TAG "rs232"
#define SCREEN_TAG "screen" #define SCREEN_TAG "screen"
@ -57,7 +56,7 @@ public:
m_uart(*this, INS8250_TAG), m_uart(*this, INS8250_TAG),
m_centronics(*this, CENTRONICS_TAG), m_centronics(*this, CENTRONICS_TAG),
m_cent_data_out(*this, "cent_data_out"), m_cent_data_out(*this, "cent_data_out"),
m_speaker(*this, SPEAKER_TAG), m_speaker(*this, "speaker"),
m_kb(*this, PC1512_KEYBOARD_TAG), m_kb(*this, PC1512_KEYBOARD_TAG),
m_ram(*this, RAM_TAG), m_ram(*this, RAM_TAG),
m_floppy0(*this, PC_FDC_XT_TAG ":0:525dd" ), m_floppy0(*this, PC_FDC_XT_TAG ":0:525dd" ),

View File

@ -35,23 +35,6 @@
struct tsp_t
{
uint16_t tvram_vreg_offset;
uint16_t attr_offset;
uint16_t spr_offset;
uint8_t disp_on;
uint8_t spr_on;
uint8_t pitch;
uint8_t line_height;
uint8_t h_line_pos;
uint8_t blink;
uint16_t cur_pos_x,cur_pos_y;
uint8_t curn;
uint8_t curn_blink;
};
class pc88va_state : public driver_device class pc88va_state : public driver_device
{ {
public: public:
@ -64,8 +47,8 @@ public:
TIMER_PC88VA_FDC_MOTOR_START_1 TIMER_PC88VA_FDC_MOTOR_START_1
}; };
pc88va_state(const machine_config &mconfig, device_type type, const char *tag) pc88va_state(const machine_config &mconfig, device_type type, const char *tag) :
: driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_screen(*this, "screen"), m_screen(*this, "screen"),
m_fdc(*this, "upd765"), m_fdc(*this, "upd765"),
@ -79,10 +62,27 @@ public:
m_gvram(*this, "gvram"), m_gvram(*this, "gvram"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") m_palette(*this, "palette")
{ } { }
void pc88va(machine_config &config); void pc88va(machine_config &config);
protected: protected:
struct tsp_t
{
uint16_t tvram_vreg_offset;
uint16_t attr_offset;
uint16_t spr_offset;
uint8_t disp_on;
uint8_t spr_on;
uint8_t pitch;
uint8_t line_height;
uint8_t h_line_pos;
uint8_t blink;
uint16_t cur_pos_x,cur_pos_y;
uint8_t curn;
uint8_t curn_blink;
};
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void video_start() override; virtual void video_start() override;

View File

@ -1049,40 +1049,40 @@ static void apollo_isa_cards(device_slot_interface &device)
MACHINE_CONFIG_START(apollo_state::common) MACHINE_CONFIG_START(apollo_state::common)
// configuration MUST be reset first ! // configuration MUST be reset first !
MCFG_DEVICE_ADD(APOLLO_CONF_TAG, APOLLO_CONF, 0) APOLLO_CONF(config, APOLLO_CONF_TAG, 0);
MCFG_DEVICE_ADD(APOLLO_DMA1_TAG, AM9517A, 14.318181_MHz_XTAL / 3) AM9517A(config, m_dma8237_1, 14.318181_MHz_XTAL / 3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, apollo_state, apollo_dma_1_hrq_changed)) m_dma8237_1->out_hreq_callback().set(FUNC(apollo_state::apollo_dma_1_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, apollo_state, apollo_dma8237_out_eop)) m_dma8237_1->out_eop_callback().set(FUNC(apollo_state::apollo_dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, apollo_state, apollo_dma_read_byte)) m_dma8237_1->in_memr_callback().set(FUNC(apollo_state::apollo_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, apollo_state, apollo_dma_write_byte)) m_dma8237_1->out_memw_callback().set(FUNC(apollo_state::apollo_dma_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, apollo_state, pc_dma8237_0_dack_r)) m_dma8237_1->in_ior_callback<0>().set(FUNC(apollo_state::pc_dma8237_0_dack_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, apollo_state, pc_dma8237_1_dack_r)) m_dma8237_1->in_ior_callback<1>().set(FUNC(apollo_state::pc_dma8237_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, apollo_state, pc_dma8237_2_dack_r)) m_dma8237_1->in_ior_callback<2>().set(FUNC(apollo_state::pc_dma8237_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, apollo_state, pc_dma8237_3_dack_r)) m_dma8237_1->in_ior_callback<3>().set(FUNC(apollo_state::pc_dma8237_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, apollo_state, pc_dma8237_0_dack_w)) m_dma8237_1->out_iow_callback<0>().set(FUNC(apollo_state::pc_dma8237_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, apollo_state, pc_dma8237_1_dack_w)) m_dma8237_1->out_iow_callback<1>().set(FUNC(apollo_state::pc_dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, apollo_state, pc_dma8237_2_dack_w)) m_dma8237_1->out_iow_callback<2>().set(FUNC(apollo_state::pc_dma8237_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, apollo_state, pc_dma8237_3_dack_w)) m_dma8237_1->out_iow_callback<3>().set(FUNC(apollo_state::pc_dma8237_3_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, apollo_state, pc_dack0_w)) m_dma8237_1->out_dack_callback<0>().set(FUNC(apollo_state::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, apollo_state, pc_dack1_w)) m_dma8237_1->out_dack_callback<1>().set(FUNC(apollo_state::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, apollo_state, pc_dack2_w)) m_dma8237_1->out_dack_callback<2>().set(FUNC(apollo_state::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, apollo_state, pc_dack3_w)) m_dma8237_1->out_dack_callback<3>().set(FUNC(apollo_state::pc_dack3_w));
MCFG_DEVICE_ADD(APOLLO_DMA2_TAG, AM9517A, 14.318181_MHz_XTAL / 3) AM9517A(config, m_dma8237_2, 14.318181_MHz_XTAL / 3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, apollo_state, apollo_dma_2_hrq_changed)) m_dma8237_2->out_hreq_callback().set(FUNC(apollo_state::apollo_dma_2_hrq_changed));
MCFG_I8237_IN_MEMR_CB(READ8(*this, apollo_state, apollo_dma_read_word)) m_dma8237_2->in_memr_callback().set(FUNC(apollo_state::apollo_dma_read_word));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, apollo_state, apollo_dma_write_word)) m_dma8237_2->out_memw_callback().set(FUNC(apollo_state::apollo_dma_write_word));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, apollo_state, pc_dma8237_5_dack_r)) m_dma8237_2->in_ior_callback<1>().set(FUNC(apollo_state::pc_dma8237_5_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, apollo_state, pc_dma8237_6_dack_r)) m_dma8237_2->in_ior_callback<2>().set(FUNC(apollo_state::pc_dma8237_6_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, apollo_state, pc_dma8237_7_dack_r)) m_dma8237_2->in_ior_callback<3>().set(FUNC(apollo_state::pc_dma8237_7_dack_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, apollo_state, pc_dma8237_5_dack_w)) m_dma8237_2->out_iow_callback<1>().set(FUNC(apollo_state::pc_dma8237_5_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, apollo_state, pc_dma8237_6_dack_w)) m_dma8237_2->out_iow_callback<2>().set(FUNC(apollo_state::pc_dma8237_6_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, apollo_state, pc_dma8237_7_dack_w)) m_dma8237_2->out_iow_callback<3>().set(FUNC(apollo_state::pc_dma8237_7_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, apollo_state, pc_dack4_w)) m_dma8237_2->out_dack_callback<0>().set(FUNC(apollo_state::pc_dack4_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, apollo_state, pc_dack5_w)) m_dma8237_2->out_dack_callback<1>().set(FUNC(apollo_state::pc_dack5_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, apollo_state, pc_dack6_w)) m_dma8237_2->out_dack_callback<2>().set(FUNC(apollo_state::pc_dack6_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, apollo_state, pc_dack7_w)) m_dma8237_2->out_dack_callback<3>().set(FUNC(apollo_state::pc_dack7_w));
PIC8259(config, m_pic8259_master, 0); PIC8259(config, m_pic8259_master, 0);
m_pic8259_master->out_int_callback().set(FUNC(apollo_state::apollo_pic8259_master_set_int_line)); m_pic8259_master->out_int_callback().set(FUNC(apollo_state::apollo_pic8259_master_set_int_line));

View File

@ -19,8 +19,8 @@
DEFINE_DEVICE_TYPE(AT_MB, at_mb_device, "at_mb", "PC/AT Motherboard") DEFINE_DEVICE_TYPE(AT_MB, at_mb_device, "at_mb", "PC/AT Motherboard")
at_mb_device::at_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) at_mb_device::at_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
: device_t(mconfig, AT_MB, tag, owner, clock), device_t(mconfig, AT_MB, tag, owner, clock),
m_maincpu(*this, ":maincpu"), m_maincpu(*this, ":maincpu"),
m_isabus(*this, "isabus"), m_isabus(*this, "isabus"),
m_pic8259_slave(*this, "pic8259_slave"), m_pic8259_slave(*this, "pic8259_slave"),
@ -61,39 +61,39 @@ MACHINE_CONFIG_START(at_mb_device::device_add_mconfig)
MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */ MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, at_mb_device, pit8254_out2_changed)) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, at_mb_device, pit8254_out2_changed))
MCFG_DEVICE_ADD("dma8237_1", AM9517A, 14.318181_MHz_XTAL / 3) AM9517A(config, m_dma8237_1, 14.318181_MHz_XTAL / 3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma8237_2", am9517a_device, dreq0_w)) m_dma8237_1->out_hreq_callback().set(m_dma8237_2, FUNC(am9517a_device::dreq0_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, at_mb_device, dma8237_out_eop)) m_dma8237_1->out_eop_callback().set(FUNC(at_mb_device::dma8237_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, at_mb_device, dma_read_byte)) m_dma8237_1->in_memr_callback().set(FUNC(at_mb_device::dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, at_mb_device, dma_write_byte)) m_dma8237_1->out_memw_callback().set(FUNC(at_mb_device::dma_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8(*this, at_mb_device, dma8237_0_dack_r)) m_dma8237_1->in_ior_callback<0>().set(FUNC(at_mb_device::dma8237_0_dack_r));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, at_mb_device, dma8237_1_dack_r)) m_dma8237_1->in_ior_callback<1>().set(FUNC(at_mb_device::dma8237_1_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, at_mb_device, dma8237_2_dack_r)) m_dma8237_1->in_ior_callback<2>().set(FUNC(at_mb_device::dma8237_2_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, at_mb_device, dma8237_3_dack_r)) m_dma8237_1->in_ior_callback<3>().set(FUNC(at_mb_device::dma8237_3_dack_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8(*this, at_mb_device, dma8237_0_dack_w)) m_dma8237_1->out_iow_callback<0>().set(FUNC(at_mb_device::dma8237_0_dack_w));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, at_mb_device, dma8237_1_dack_w)) m_dma8237_1->out_iow_callback<1>().set(FUNC(at_mb_device::dma8237_1_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, at_mb_device, dma8237_2_dack_w)) m_dma8237_1->out_iow_callback<2>().set(FUNC(at_mb_device::dma8237_2_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, at_mb_device, dma8237_3_dack_w)) m_dma8237_1->out_iow_callback<3>().set(FUNC(at_mb_device::dma8237_3_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, at_mb_device, dack0_w)) m_dma8237_1->out_dack_callback<0>().set(FUNC(at_mb_device::dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, at_mb_device, dack1_w)) m_dma8237_1->out_dack_callback<1>().set(FUNC(at_mb_device::dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, at_mb_device, dack2_w)) m_dma8237_1->out_dack_callback<2>().set(FUNC(at_mb_device::dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, at_mb_device, dack3_w)) m_dma8237_1->out_dack_callback<3>().set(FUNC(at_mb_device::dack3_w));
MCFG_DEVICE_ADD( "dma8237_2", AM9517A, 14.318181_MHz_XTAL / 3) AM9517A(config, m_dma8237_2, 14.318181_MHz_XTAL / 3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, at_mb_device, dma_hrq_changed)) m_dma8237_2->out_hreq_callback().set(FUNC(at_mb_device::dma_hrq_changed));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, at_mb_device, dma8237_2_out_eop)) m_dma8237_2->out_eop_callback().set(FUNC(at_mb_device::dma8237_2_out_eop));
MCFG_I8237_IN_MEMR_CB(READ8(*this, at_mb_device, dma_read_word)) m_dma8237_2->in_memr_callback().set(FUNC(at_mb_device::dma_read_word));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, at_mb_device, dma_write_word)) m_dma8237_2->out_memw_callback().set(FUNC(at_mb_device::dma_write_word));
MCFG_I8237_IN_IOR_1_CB(READ8(*this, at_mb_device, dma8237_5_dack_r)) m_dma8237_2->in_ior_callback<1>().set(FUNC(at_mb_device::dma8237_5_dack_r));
MCFG_I8237_IN_IOR_2_CB(READ8(*this, at_mb_device, dma8237_6_dack_r)) m_dma8237_2->in_ior_callback<2>().set(FUNC(at_mb_device::dma8237_6_dack_r));
MCFG_I8237_IN_IOR_3_CB(READ8(*this, at_mb_device, dma8237_7_dack_r)) m_dma8237_2->in_ior_callback<3>().set(FUNC(at_mb_device::dma8237_7_dack_r));
MCFG_I8237_OUT_IOW_1_CB(WRITE8(*this, at_mb_device, dma8237_5_dack_w)) m_dma8237_2->out_iow_callback<1>().set(FUNC(at_mb_device::dma8237_5_dack_w));
MCFG_I8237_OUT_IOW_2_CB(WRITE8(*this, at_mb_device, dma8237_6_dack_w)) m_dma8237_2->out_iow_callback<2>().set(FUNC(at_mb_device::dma8237_6_dack_w));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(*this, at_mb_device, dma8237_7_dack_w)) m_dma8237_2->out_iow_callback<3>().set(FUNC(at_mb_device::dma8237_7_dack_w));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, at_mb_device, dack4_w)) m_dma8237_2->out_dack_callback<0>().set(FUNC(at_mb_device::dack4_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, at_mb_device, dack5_w)) m_dma8237_2->out_dack_callback<1>().set(FUNC(at_mb_device::dack5_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, at_mb_device, dack6_w)) m_dma8237_2->out_dack_callback<2>().set(FUNC(at_mb_device::dack6_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, at_mb_device, dack7_w)) m_dma8237_2->out_dack_callback<3>().set(FUNC(at_mb_device::dack7_w));
pic8259_device &pic8259_master(PIC8259(config, "pic8259_master", 0)); pic8259_device &pic8259_master(PIC8259(config, "pic8259_master", 0));
pic8259_master.out_int_callback().set_inputline(":maincpu", 0); pic8259_master.out_int_callback().set_inputline(":maincpu", 0);

View File

@ -32,25 +32,25 @@ static void isbc_208_floppies(device_slot_interface &device)
} }
MACHINE_CONFIG_START(isbc_208_device::device_add_mconfig) MACHINE_CONFIG_START(isbc_208_device::device_add_mconfig)
MCFG_DEVICE_ADD("dmac", AM9517A, XTAL(8'000'000)/4) AM9517A(config, m_dmac, 8_MHz_XTAL/4);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, isbc_208_device, hreq_w)) m_dmac->out_hreq_callback().set(FUNC(isbc_208_device::hreq_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, isbc_208_device, out_eop_w)) m_dmac->out_eop_callback().set(FUNC(isbc_208_device::out_eop_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, isbc_208_device, dma_read_byte)) m_dmac->in_memr_callback().set(FUNC(isbc_208_device::dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, isbc_208_device, dma_write_byte)) m_dmac->out_memw_callback().set(FUNC(isbc_208_device::dma_write_byte));
MCFG_I8237_IN_IOR_0_CB(READ8("fdc", i8272a_device, mdma_r)) m_dmac->in_ior_callback<0>().set(m_fdc, FUNC(i8272a_device::mdma_r));
MCFG_I8237_OUT_IOW_0_CB(WRITE8("fdc", i8272a_device, mdma_w)) m_dmac->out_iow_callback<0>().set(m_fdc, FUNC(i8272a_device::mdma_w));
MCFG_I8272A_ADD("fdc", true) MCFG_I8272A_ADD(m_fdc, true)
MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, isbc_208_device, irq_w)) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, isbc_208_device, irq_w))
MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dmac", am9517a_device, dreq0_w)) MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dmac", am9517a_device, dreq0_w))
MCFG_FLOPPY_DRIVE_ADD("fdc:0", isbc_208_floppies, "525dd", isbc_208_device::floppy_formats) FLOPPY_CONNECTOR(config, "fdc:0", isbc_208_floppies, "525dd", isbc_208_device::floppy_formats);
MCFG_FLOPPY_DRIVE_ADD("fdc:1", isbc_208_floppies, "525dd", isbc_208_device::floppy_formats) FLOPPY_CONNECTOR(config, "fdc:1", isbc_208_floppies, "525dd", isbc_208_device::floppy_formats);
MACHINE_CONFIG_END MACHINE_CONFIG_END
void isbc_208_device::map(address_map &map) void isbc_208_device::map(address_map &map)
{ {
map(0x00, 0x0f).rw("dmac", FUNC(am9517a_device::read), FUNC(am9517a_device::write)); map(0x00, 0x0f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
map(0x10, 0x11).m("fdc", FUNC(i8272a_device::map)); map(0x10, 0x11).m(m_fdc, FUNC(i8272a_device::map));
map(0x12, 0x15).rw(FUNC(isbc_208_device::stat_r), FUNC(isbc_208_device::aux_w)); map(0x12, 0x15).rw(FUNC(isbc_208_device::stat_r), FUNC(isbc_208_device::aux_w));
} }

View File

@ -1,6 +1,5 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Carl // copyright-holders:Carl
#ifndef MAME_MACHINE_ISBC_208_H #ifndef MAME_MACHINE_ISBC_208_H
#define MAME_MACHINE_ISBC_208_H #define MAME_MACHINE_ISBC_208_H
@ -13,8 +12,8 @@ class isbc_208_device : public device_t
{ {
public: public:
template <typename T> template <typename T>
isbc_208_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag) isbc_208_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag)
: isbc_208_device(mconfig, tag, owner, (uint32_t)0) : isbc_208_device(mconfig, tag, owner, clock)
{ {
m_maincpu.set_tag(std::forward<T>(cpu_tag)); m_maincpu.set_tag(std::forward<T>(cpu_tag));
} }
@ -25,7 +24,7 @@ public:
DECLARE_READ8_MEMBER(stat_r); DECLARE_READ8_MEMBER(stat_r);
DECLARE_WRITE8_MEMBER(aux_w); DECLARE_WRITE8_MEMBER(aux_w);
template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); } auto irq_callback() { return m_out_irq_func.bind(); }
protected: protected:
virtual void device_start() override; virtual void device_start() override;
@ -47,12 +46,9 @@ private:
DECLARE_READ8_MEMBER(dma_read_byte); DECLARE_READ8_MEMBER(dma_read_byte);
DECLARE_WRITE8_MEMBER(dma_write_byte); DECLARE_WRITE8_MEMBER(dma_write_byte);
DECLARE_WRITE_LINE_MEMBER(irq_w); DECLARE_WRITE_LINE_MEMBER(irq_w);
DECLARE_FLOPPY_FORMATS( floppy_formats ); DECLARE_FLOPPY_FORMATS(floppy_formats);
}; };
#define MCFG_ISBC_208_IRQ(_irq_line) \
downcast<isbc_208_device &>(*device).set_irq_callback(DEVCB_##_irq_line);
DECLARE_DEVICE_TYPE(ISBC_208, isbc_208_device) DECLARE_DEVICE_TYPE(ISBC_208, isbc_208_device)
#endif // MAME_MACHINE_ISBC_208_H #endif // MAME_MACHINE_ISBC_208_H

View File

@ -1,6 +1,5 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Carl // copyright-holders:Carl
#ifndef MAME_MACHINE_ISBC_215G_H #ifndef MAME_MACHINE_ISBC_215G_H
#define MAME_MACHINE_ISBC_215G_H #define MAME_MACHINE_ISBC_215G_H
@ -14,8 +13,8 @@ class isbc_215g_device : public device_t
{ {
public: public:
template <typename T> template <typename T>
isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t wakeup, T &&cpu_tag) isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint16_t wakeup, T &&cpu_tag)
: isbc_215g_device(mconfig, tag, owner, (uint32_t)0) : isbc_215g_device(mconfig, tag, owner, clock)
{ {
m_wakeup = wakeup; m_wakeup = wakeup;
m_maincpu.set_tag(std::forward<T>(cpu_tag)); m_maincpu.set_tag(std::forward<T>(cpu_tag));
@ -23,7 +22,7 @@ public:
isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); } auto irq_callback() { return m_out_irq_func.bind(); }
DECLARE_WRITE8_MEMBER(write); DECLARE_WRITE8_MEMBER(write);
DECLARE_READ16_MEMBER(io_r); DECLARE_READ16_MEMBER(io_r);
@ -31,14 +30,15 @@ public:
DECLARE_READ16_MEMBER(mem_r); DECLARE_READ16_MEMBER(mem_r);
DECLARE_WRITE16_MEMBER(mem_w); DECLARE_WRITE16_MEMBER(mem_w);
void isbc_215g_io(address_map &map);
void isbc_215g_mem(address_map &map);
protected: protected:
virtual void device_start() override; virtual void device_start() override;
virtual void device_reset() override; virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override; virtual void device_add_mconfig(machine_config &config) override;
const tiny_rom_entry *device_rom_region() const override; const tiny_rom_entry *device_rom_region() const override;
void isbc_215g_io(address_map &map);
void isbc_215g_mem(address_map &map);
private: private:
void find_sector(); void find_sector();
uint16_t read_sector(); uint16_t read_sector();
@ -84,9 +84,6 @@ private:
DECLARE_WRITE_LINE_MEMBER(isbx_irq_11_w); DECLARE_WRITE_LINE_MEMBER(isbx_irq_11_w);
}; };
#define MCFG_ISBC_215_IRQ(_irq_line) \
downcast<isbc_215g_device &>(*device).set_irq_callback(DEVCB_##_irq_line);
DECLARE_DEVICE_TYPE(ISBC_215G, isbc_215g_device) DECLARE_DEVICE_TYPE(ISBC_215G, isbc_215g_device)
#endif // MAME_MACHINE_ISBC_215G_H #endif // MAME_MACHINE_ISBC_215G_H

View File

@ -56,8 +56,6 @@ Notes:
#include "emuopts.h" #include "emuopts.h"
#define Z80_TAG "commcpu" #define Z80_TAG "commcpu"
#define DMA_TAG "commdma"
#define DLC_TAG "commdlc"
/************************************* /*************************************
* M1COMM Memory Map * M1COMM Memory Map
@ -104,26 +102,27 @@ DEFINE_DEVICE_TYPE(M1COMM, m1comm_device, "m1comm", "Model-1 Communication Board
// device_add_mconfig - add device configuration // device_add_mconfig - add device configuration
//------------------------------------------------- //-------------------------------------------------
MACHINE_CONFIG_START(m1comm_device::device_add_mconfig) void m1comm_device::device_add_mconfig(machine_config &config)
MCFG_DEVICE_ADD(Z80_TAG, Z80, 8000000) /* 32 MHz / 4 */ {
MCFG_DEVICE_PROGRAM_MAP(m1comm_mem) Z80(config, m_cpu, 8000000); // 32 MHz / 4
MCFG_DEVICE_IO_MAP(m1comm_io) m_cpu->set_memory_map(&m1comm_device::m1comm_mem);
m_cpu->set_io_map(&m1comm_device::m1comm_io);
MCFG_DEVICE_ADD(DMA_TAG, AM9517A, 8000000) /* 32 MHz / 4 */ AM9517A(config, m_dma, 8000000); // 32 MHz / 4
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, m1comm_device, dma_hreq_w)) m_dma->out_hreq_callback().set(FUNC(m1comm_device::dma_hreq_w));
MCFG_I8237_IN_MEMR_CB(READ8(*this, m1comm_device, dma_mem_r)) m_dma->in_memr_callback().set(FUNC(m1comm_device::dma_mem_r));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, m1comm_device, dma_mem_w)) m_dma->out_memw_callback().set(FUNC(m1comm_device::dma_mem_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(DLC_TAG, mb89374_device, pi3_w)) m_dma->out_dack_callback<2>().set(m_dlc, FUNC(mb89374_device::pi3_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(DLC_TAG, mb89374_device, pi2_w)) m_dma->out_dack_callback<3>().set(m_dlc, FUNC(mb89374_device::pi2_w));
MCFG_I8237_OUT_EOP_CB(WRITELINE(DLC_TAG, mb89374_device, ci_w)) m_dma->out_eop_callback().set(m_dlc, FUNC(mb89374_device::ci_w));
MCFG_I8237_IN_IOR_2_CB(READ8(DLC_TAG, mb89374_device, dma_r)) m_dma->in_ior_callback<2>().set(m_dlc, FUNC(mb89374_device::dma_r));
MCFG_I8237_OUT_IOW_3_CB(WRITE8(DLC_TAG, mb89374_device, dma_w)) m_dma->out_iow_callback<3>().set(m_dlc, FUNC(mb89374_device::dma_w));
MCFG_DEVICE_ADD(DLC_TAG, MB89374, 8000000) /* 32 MHz / 4 */ MB89374(config, m_dlc, 8000000); // 32 MHz / 4
MCFG_MB89374_PO2_CB(WRITELINE(DMA_TAG, am9517a_device, dreq3_w)) m_dlc->out_po_callback<2>().set(m_dma, FUNC(am9517a_device::dreq3_w));
MCFG_MB89374_PO3_CB(WRITELINE(DMA_TAG, am9517a_device, dreq2_w)) m_dlc->out_po_callback<3>().set(m_dma, FUNC(am9517a_device::dreq2_w));
MCFG_MB89374_IRQ_CB(WRITELINE(*this, m1comm_device, dlc_int7_w)) m_dlc->out_irq_callback().set(FUNC(m1comm_device::dlc_int7_w));
MACHINE_CONFIG_END }
//------------------------------------------------- //-------------------------------------------------
// rom_region - device-specific ROM region // rom_region - device-specific ROM region
@ -144,8 +143,8 @@ const tiny_rom_entry *m1comm_device::device_rom_region() const
m1comm_device::m1comm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : m1comm_device::m1comm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, M1COMM, tag, owner, clock), device_t(mconfig, M1COMM, tag, owner, clock),
m_cpu(*this, Z80_TAG), m_cpu(*this, Z80_TAG),
m_dma(*this, DMA_TAG), m_dma(*this, "commdma"),
m_dlc(*this, DLC_TAG) m_dlc(*this, "commdlc")
{ {
#ifdef M1COMM_SIMULATION #ifdef M1COMM_SIMULATION
// prepare localhost "filename" // prepare localhost "filename"

View File

@ -187,41 +187,42 @@ MACHINE_CONFIG_START(pcat_base_state::pcvideo_cirrus_gd5430)
MCFG_VIDEO_SET_SCREEN("screen") MCFG_VIDEO_SET_SCREEN("screen")
MACHINE_CONFIG_END MACHINE_CONFIG_END
MACHINE_CONFIG_START(pcat_base_state::pcat_common) void pcat_base_state::pcat_common(machine_config &config)
MCFG_DEVICE_ADD("pic8259_1", PIC8259, 0) {
MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) PIC8259(config, m_pic8259_1, 0);
MCFG_PIC8259_IN_SP_CB(CONSTANT(1)) m_pic8259_1->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, pcat_base_state, get_slave_ack)) m_pic8259_1->in_sp_callback().set_constant(1);
m_pic8259_1->read_slave_ack_callback().set(FUNC(pcat_base_state::get_slave_ack));
MCFG_DEVICE_ADD("pic8259_2", PIC8259, 0) PIC8259(config, m_pic8259_2, 0);
MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_1", pic8259_device, ir2_w)) m_pic8259_2->out_int_callback().set(m_pic8259_1, FUNC(pic8259_device::ir2_w));
MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) m_pic8259_2->in_sp_callback().set_constant(0);
MCFG_DEVICE_ADD("dma8237_1", AM9517A, 14.318181_MHz_XTAL / 3) AM9517A(config, m_dma8237_1, 14.318181_MHz_XTAL / 3);
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, pcat_base_state, pc_dma_hrq_changed)) m_dma8237_1->out_hreq_callback().set(FUNC(pcat_base_state::pc_dma_hrq_changed));
MCFG_I8237_IN_MEMR_CB(READ8(*this, pcat_base_state, pc_dma_read_byte)) m_dma8237_1->in_memr_callback().set(FUNC(pcat_base_state::pc_dma_read_byte));
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, pcat_base_state, pc_dma_write_byte)) m_dma8237_1->out_memw_callback().set(FUNC(pcat_base_state::pc_dma_write_byte));
MCFG_I8237_OUT_DACK_0_CB(WRITELINE(*this, pcat_base_state, pc_dack0_w)) m_dma8237_1->out_dack_callback<0>().set(FUNC(pcat_base_state::pc_dack0_w));
MCFG_I8237_OUT_DACK_1_CB(WRITELINE(*this, pcat_base_state, pc_dack1_w)) m_dma8237_1->out_dack_callback<1>().set(FUNC(pcat_base_state::pc_dack1_w));
MCFG_I8237_OUT_DACK_2_CB(WRITELINE(*this, pcat_base_state, pc_dack2_w)) m_dma8237_1->out_dack_callback<2>().set(FUNC(pcat_base_state::pc_dack2_w));
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(*this, pcat_base_state, pc_dack3_w)) m_dma8237_1->out_dack_callback<3>().set(FUNC(pcat_base_state::pc_dack3_w));
MCFG_DEVICE_ADD("dma8237_2", AM9517A, 14.318181_MHz_XTAL / 3) AM9517A(config, m_dma8237_2, 14.318181_MHz_XTAL / 3);
MCFG_DEVICE_ADD("pit8254", PIT8254, 0) PIT8254(config, m_pit8254, 0);
MCFG_PIT8253_CLK0(4772720/4) /* heartbeat IRQ */ m_pit8254->set_clk<0>(4772720/4); // heartbeat IRQ
MCFG_PIT8253_OUT0_HANDLER(WRITELINE("pic8259_1", pic8259_device, ir0_w)) m_pit8254->out_handler<0>().set(m_pic8259_1, FUNC(pic8259_device::ir0_w));
MCFG_PIT8253_CLK1(4772720/4) /* dram refresh */ m_pit8254->set_clk<1>(4772720/4); // DRAM refresh
MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */ m_pit8254->set_clk<2>(4772720/4); // PIO port C pin 4, and speaker polling enough
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, pcat_base_state, at_pit8254_out2_changed)) m_pit8254->out_handler<2>().set(FUNC(pcat_base_state::at_pit8254_out2_changed));
MCFG_DEVICE_ADD("rtc", MC146818, 32.768_kHz_XTAL) MC146818(config, m_mc146818, 32.768_kHz_XTAL);
MCFG_MC146818_IRQ_HANDLER(WRITELINE("pic8259_2", pic8259_device, ir0_w)) m_mc146818->irq_callback().set(m_pic8259_2, FUNC(pic8259_device::ir0_w));
MCFG_MC146818_CENTURY_INDEX(0x32) m_mc146818->set_century_index(0x32);
MCFG_DEVICE_ADD("kbdc", KBDC8042, 0) KBDC8042(config, m_kbdc, 0);
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386) m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) m_kbdc->system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20)) m_kbdc->gate_a20_callback().set_inputline(m_maincpu, INPUT_LINE_A20);
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("pic8259_1", pic8259_device, ir1_w)) m_kbdc->input_buffer_full_callback().set(m_pic8259_1, FUNC(pic8259_device::ir1_w));
MACHINE_CONFIG_END }

View File

@ -1,5 +1,10 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Peter Trauner // copyright-holders:Peter Trauner
#ifndef MAME_MACHINE_PCSHARE_H
#define MAME_MACHINE_PCSHARE_H
#pragma once
#include "machine/am9517a.h" #include "machine/am9517a.h"
#include "machine/pic8259.h" #include "machine/pic8259.h"
#include "machine/pit8253.h" #include "machine/pit8253.h"
@ -9,8 +14,8 @@
class pcat_base_state : public driver_device class pcat_base_state : public driver_device
{ {
public: public:
pcat_base_state(const machine_config &mconfig, device_type type, const char *tag) pcat_base_state(const machine_config &mconfig, device_type type, const char *tag) :
: driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_dma8237_1(*this, "dma8237_1"), m_dma8237_1(*this, "dma8237_1"),
m_dma8237_2(*this, "dma8237_2"), m_dma8237_2(*this, "dma8237_2"),
@ -22,15 +27,6 @@ public:
{ {
} }
required_device<cpu_device> m_maincpu;
required_device<am9517a_device> m_dma8237_1;
required_device<am9517a_device> m_dma8237_2;
required_device<pic8259_device> m_pic8259_1;
required_device<pic8259_device> m_pic8259_2;
required_device<pit8254_device> m_pit8254;
optional_device<mc146818_device> m_mc146818;
required_device<kbdc8042_device> m_kbdc;
DECLARE_WRITE_LINE_MEMBER(pc_dma_hrq_changed); DECLARE_WRITE_LINE_MEMBER(pc_dma_hrq_changed);
DECLARE_READ8_MEMBER(pc_dma_read_byte); DECLARE_READ8_MEMBER(pc_dma_read_byte);
DECLARE_WRITE8_MEMBER(pc_dma_write_byte); DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
@ -43,10 +39,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( pc_dack3_w ); DECLARE_WRITE_LINE_MEMBER( pc_dack3_w );
DECLARE_READ8_MEMBER( get_slave_ack ); DECLARE_READ8_MEMBER( get_slave_ack );
DECLARE_WRITE_LINE_MEMBER( at_pit8254_out2_changed ); DECLARE_WRITE_LINE_MEMBER( at_pit8254_out2_changed );
int m_dma_channel;
uint8_t m_dma_offset[2][4]; protected:
uint8_t m_at_pages[0x10];
int m_pit_out2;
void pcat_common(machine_config &config); void pcat_common(machine_config &config);
void pcvideo_vga(machine_config &config); void pcvideo_vga(machine_config &config);
void pcvideo_trident_vga(machine_config &config); void pcvideo_trident_vga(machine_config &config);
@ -55,4 +49,20 @@ public:
void pcvideo_cirrus_gd5430(machine_config &config); void pcvideo_cirrus_gd5430(machine_config &config);
void pcat32_io_common(address_map &map); void pcat32_io_common(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<am9517a_device> m_dma8237_1;
required_device<am9517a_device> m_dma8237_2;
required_device<pic8259_device> m_pic8259_1;
required_device<pic8259_device> m_pic8259_2;
required_device<pit8254_device> m_pit8254;
optional_device<mc146818_device> m_mc146818;
required_device<kbdc8042_device> m_kbdc;
int m_dma_channel;
uint8_t m_dma_offset[2][4];
uint8_t m_at_pages[0x10];
int m_pit_out2;
}; };
#endif // MAME_MACHINE_PCSHARE_H