diff options
author | 2014-02-23 13:00:28 +0000 | |
---|---|---|
committer | 2014-02-23 13:00:28 +0000 | |
commit | 38d827e9939c7540ebb8dccf0c5a0a869d741c11 (patch) | |
tree | 0933d63fd2a390d3d85a1a9fa04eb77608416c04 /src/mess/machine | |
parent | ed701f13e738bccb2284d9ddfb4ab9a03f89ff2d (diff) |
Converted PIT8253 to DEVCB2 [smf]
Diffstat (limited to 'src/mess/machine')
-rw-r--r-- | src/mess/machine/amstr_pc.c | 4 | ||||
-rw-r--r-- | src/mess/machine/at.c | 39 | ||||
-rw-r--r-- | src/mess/machine/b2m.c | 22 | ||||
-rw-r--r-- | src/mess/machine/bebox.c | 22 | ||||
-rw-r--r-- | src/mess/machine/cs4031.c | 33 | ||||
-rw-r--r-- | src/mess/machine/dai.c | 21 | ||||
-rw-r--r-- | src/mess/machine/europc.c | 4 | ||||
-rw-r--r-- | src/mess/machine/genpc.c | 54 | ||||
-rw-r--r-- | src/mess/machine/isa_ibm_mfc.c | 29 | ||||
-rw-r--r-- | src/mess/machine/mbc55x.c | 25 | ||||
-rw-r--r-- | src/mess/machine/mz700.c | 26 | ||||
-rw-r--r-- | src/mess/machine/mz80.c | 12 | ||||
-rw-r--r-- | src/mess/machine/pc.c | 77 | ||||
-rw-r--r-- | src/mess/machine/pk8020.c | 21 | ||||
-rw-r--r-- | src/mess/machine/pmd85.c | 29 | ||||
-rw-r--r-- | src/mess/machine/pp01.c | 21 | ||||
-rw-r--r-- | src/mess/machine/southbridge.c | 44 | ||||
-rw-r--r-- | src/mess/machine/southbridge.h | 3 | ||||
-rw-r--r-- | src/mess/machine/special.c | 28 | ||||
-rw-r--r-- | src/mess/machine/tandy1t.c | 2 |
20 files changed, 82 insertions, 434 deletions
diff --git a/src/mess/machine/amstr_pc.c b/src/mess/machine/amstr_pc.c index 0a4b40055d0..618dbc62bf9 100644 --- a/src/mess/machine/amstr_pc.c +++ b/src/mess/machine/amstr_pc.c @@ -183,7 +183,7 @@ WRITE8_MEMBER( amstrad_pc_state::pc1640_port60_w ) m_port61=data; if (data==0x30) m_port62=(m_port65&0x10)>>4; else if (data==0x34) m_port62=m_port65&0xf; - machine().device<pit8253_device>("pit8253")->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); pc_keyb_set_clock(data&0x40); break; @@ -221,7 +221,7 @@ READ8_MEMBER( amstrad_pc_state::pc1640_port60_r ) case 2: data = m_port62; - if (machine().device<pit8253_device>("pit8253")->get_output(2)) + if (m_pit_out2) data |= 0x20; break; } diff --git a/src/mess/machine/at.c b/src/mess/machine/at.c index 44e1901cb13..f3a0e6f07ef 100644 --- a/src/mess/machine/at.c +++ b/src/mess/machine/at.c @@ -30,13 +30,7 @@ READ8_MEMBER( at_state::get_slave_ack ) void at_state::at_speaker_set_spkrdata(UINT8 data) { m_at_spkrdata = data ? 1 : 0; - m_speaker->level_w(m_at_spkrdata & m_at_speaker_input); -} - -void at_state::at_speaker_set_input(UINT8 data) -{ - m_at_speaker_input = data ? 1 : 0; - m_speaker->level_w(m_at_spkrdata & m_at_speaker_input); + m_speaker->level_w(m_at_spkrdata & m_pit_out2); } @@ -55,30 +49,11 @@ WRITE_LINE_MEMBER( at_state::at_pit8254_out0_changed ) WRITE_LINE_MEMBER( at_state::at_pit8254_out2_changed ) { - at_speaker_set_input( state ); + m_pit_out2 = state ? 1 : 0; + m_speaker->level_w(m_at_spkrdata & m_pit_out2); } -const struct pit8253_interface at_pit8254_config = -{ - { - { - 4772720/4, /* heartbeat IRQ */ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(at_state, at_pit8254_out0_changed) - }, { - 4772720/4, /* dram refresh */ - DEVCB_NULL, - DEVCB_NULL - }, { - 4772720/4, /* pio port c pin 4, and speaker polling enough */ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(at_state, at_pit8254_out2_changed) - } - } -}; - - /************************************************************************* * * PC DMA stuff @@ -271,7 +246,7 @@ READ8_MEMBER( at_state::at_portb_r ) /* 0x10 is the dram refresh line bit, 15.085us. */ data |= (machine().time().as_ticks(110000) & 1) ? 0x10 : 0; - if (m_pit8254->get_output(2)) + if (m_pit_out2) data |= 0x20; else data &= ~0x20; /* ps2m30 wants this */ @@ -282,7 +257,7 @@ READ8_MEMBER( at_state::at_portb_r ) WRITE8_MEMBER( at_state::at_portb_w ) { m_at_speaker = data; - m_pit8254->gate2_w(BIT(data, 0)); + m_pit8254->write_gate2(BIT(data, 0)); at_speaker_set_spkrdata( BIT(data, 1)); m_channel_check = BIT(data, 3); m_isabus->set_nmi_state((m_nmi_enabled==0) && (m_channel_check==0)); @@ -296,7 +271,7 @@ READ8_MEMBER( at_state::ps2_portb_r ) /* 0x10 is the dram refresh line bit, 15.085us. */ data |= (machine().time().as_ticks(66291) & 1) ? 0x10 : 0; - if (m_pit8254->get_output(2)) + if (m_pit_out2) data |= 0x20; else data &= ~0x20; /* ps2m30 wants this */ @@ -354,7 +329,7 @@ MACHINE_START_MEMBER(at_state,at) MACHINE_RESET_MEMBER(at_state,at) { m_at_spkrdata = 0; - m_at_speaker_input = 0; + m_pit_out2 = 0; m_dma_channel = -1; m_cur_eop = false; } diff --git a/src/mess/machine/b2m.c b/src/mess/machine/b2m.c index 3e157e7aebc..48e7df29039 100644 --- a/src/mess/machine/b2m.c +++ b/src/mess/machine/b2m.c @@ -146,31 +146,11 @@ WRITE_LINE_MEMBER(b2m_state::bm2_pit_out1) m_speaker->level_w(state); } -const struct pit8253_interface b2m_pit8253_intf = -{ - { - { - 0, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir1_w) - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(b2m_state,bm2_pit_out1) - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pit8253", pit8253_device, clk0_w) - } - } -}; - WRITE8_MEMBER(b2m_state::b2m_8255_porta_w) { m_b2m_8255_porta = data; } + WRITE8_MEMBER(b2m_state::b2m_8255_portb_w) { m_b2m_video_scroll = data; diff --git a/src/mess/machine/bebox.c b/src/mess/machine/bebox.c index d05848c07ad..deea3655491 100644 --- a/src/mess/machine/bebox.c +++ b/src/mess/machine/bebox.c @@ -681,28 +681,6 @@ WRITE_LINE_MEMBER(bebox_state::bebox_timer0_w) } -const struct pit8253_interface bebox_pit8254_config = -{ - { - { - 4772720/4, /* heartbeat IRQ */ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(bebox_state,bebox_timer0_w) - }, - { - 4772720/4, /* dram refresh */ - DEVCB_NULL, - DEVCB_NULL - }, - { - 4772720/4, /* pio port c pin 4, and speaker polling enough */ - DEVCB_NULL, - DEVCB_NULL - } - } -}; - - /************************************* * * Flash ROM diff --git a/src/mess/machine/cs4031.c b/src/mess/machine/cs4031.c index d93f349a96e..ba35f39f55d 100644 --- a/src/mess/machine/cs4031.c +++ b/src/mess/machine/cs4031.c @@ -145,31 +145,20 @@ I8237_INTERFACE( dma2_config ) } }; -const struct pit8253_interface cs4031_pit_config = -{ - { - { - XTAL_14_31818MHz / 12, - DEVCB_LINE_VCC, - DEVCB_DEVICE_LINE_MEMBER("intc1", pic8259_device, ir0_w) - }, { - XTAL_14_31818MHz / 12, - DEVCB_LINE_VCC, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, ctc_out1_w) - }, { - XTAL_14_31818MHz / 12, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, ctc_out2_w) - } - } -}; - static MACHINE_CONFIG_FRAGMENT( cs4031 ) MCFG_I8237_ADD("dma1", 0, dma1_config) MCFG_I8237_ADD("dma2", 0, dma2_config) MCFG_PIC8259_ADD("intc1", WRITELINE(cs4031_device, intc1_int_w), VCC, READ8(cs4031_device, intc1_slave_ack_r)) MCFG_PIC8259_ADD("intc2", DEVWRITELINE("intc1", pic8259_device, ir2_w), GND, NULL) - MCFG_PIT8254_ADD("ctc", cs4031_pit_config) + + MCFG_DEVICE_ADD("ctc", PIT8254, 0) + MCFG_PIT8253_CLK0(XTAL_14_31818MHz / 12) + MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("intc1", pic8259_device, ir0_w)) + MCFG_PIT8253_CLK1(XTAL_14_31818MHz / 12) + MCFG_PIT8253_OUT1_HANDLER(WRITELINE(cs4031_device, ctc_out1_w)) + MCFG_PIT8253_CLK2(XTAL_14_31818MHz / 12) + MCFG_PIT8253_OUT2_HANDLER(WRITELINE(cs4031_device, ctc_out2_w)) + MCFG_DS12885_ADD("rtc") MCFG_MC146818_IRQ_HANDLER(WRITELINE(cs4031_device, rtc_irq_w)) MCFG_MC146818_CENTURY_INDEX(0x32) @@ -351,7 +340,7 @@ void cs4031_device::device_reset() void cs4031_device::device_reset_after_children() { // timer 2 default state - m_ctc->gate2_w(1); + m_ctc->write_gate2(1); } @@ -974,7 +963,7 @@ WRITE8_MEMBER( cs4031_device::portb_w ) if (!BIT(m_portb, 0)) m_portb |= 1 << 5; - m_ctc->gate2_w(BIT(m_portb, 0)); + m_ctc->write_gate2(BIT(m_portb, 0)); m_write_spkr(!BIT(m_portb, 1)); diff --git a/src/mess/machine/dai.c b/src/mess/machine/dai.c index b07b139aadf..c9a5082ac86 100644 --- a/src/mess/machine/dai.c +++ b/src/mess/machine/dai.c @@ -80,27 +80,6 @@ I8255A_INTERFACE( dai_ppi82555_intf ) DEVCB_NULL /* Port C write */ }; -const struct pit8253_interface dai_pit8253_intf = -{ - { - { - 2000000, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("custom", dai_sound_device, set_input_ch0), - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("custom", dai_sound_device, set_input_ch1), - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("custom", dai_sound_device, set_input_ch2), - } - } -}; - IRQ_CALLBACK_MEMBER(dai_state::int_ack) { return m_tms5501->get_vector(); diff --git a/src/mess/machine/europc.c b/src/mess/machine/europc.c index 2ed4760584c..46d7187ac04 100644 --- a/src/mess/machine/europc.c +++ b/src/mess/machine/europc.c @@ -168,7 +168,7 @@ WRITE8_MEMBER( europc_pc_state::europc_pio_w ) m_port61=data; // if (data == 0x30) pc1640.port62 = (pc1640.port65 & 0x10) >> 4; // else if (data == 0x34) pc1640.port62 = pc1640.port65 & 0xf; - space.machine().device<pit8253_device>("pit8253")->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata(BIT(data, 1)); pc_keyb_set_clock(BIT(data, 6)); break; @@ -191,7 +191,7 @@ READ8_MEMBER( europc_pc_state::europc_pio_r ) data = m_port61; break; case 2: - if (space.machine().device<pit8253_device>("pit8253")->get_output(2)) + if (m_pit_out2) data |= 0x20; break; } diff --git a/src/mess/machine/genpc.c b/src/mess/machine/genpc.c index 7b9dbe58e9b..8599dbce187 100644 --- a/src/mess/machine/genpc.c +++ b/src/mess/machine/genpc.c @@ -190,7 +190,7 @@ I8237_INTERFACE( pc_dma8237_config ) WRITE_LINE_MEMBER(ibm5160_mb_device::pc_speaker_set_spkrdata) { m_pc_spkrdata = state ? 1 : 0; - m_speaker->level_w(m_pc_spkrdata & m_pc_input); + m_speaker->level_w(m_pc_spkrdata & m_pit_out2); } @@ -214,30 +214,11 @@ WRITE_LINE_MEMBER( ibm5160_mb_device::pc_pit8253_out1_changed ) WRITE_LINE_MEMBER( ibm5160_mb_device::pc_pit8253_out2_changed ) { - m_pc_input = state ? 1 : 0; - m_speaker->level_w(m_pc_spkrdata & m_pc_input); + m_pit_out2 = state ? 1 : 0; + m_speaker->level_w(m_pc_spkrdata & m_pit_out2); } -const struct pit8253_interface pc_pit8253_config = -{ - { - { - XTAL_14_31818MHz/12, /* heartbeat IRQ */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) - }, { - XTAL_14_31818MHz/12, /* dram refresh */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_pit8253_out1_changed) - }, { - XTAL_14_31818MHz/12, /* pio port c pin 4, and speaker polling enough */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_pit8253_out2_changed) - } - } -}; - /********************************************************** * * PPI8255 interface @@ -370,7 +351,6 @@ READ8_MEMBER (ibm5160_mb_device::pc_ppi_porta_r) READ8_MEMBER ( ibm5160_mb_device::pc_ppi_portc_r ) { - int timer2_output = m_pit8253->get_output(2); int data=0xff; data&=~0x80; // no parity error @@ -391,9 +371,9 @@ READ8_MEMBER ( ibm5160_mb_device::pc_ppi_portc_r ) if ( m_ppi_portb & 0x01 ) { - data = ( data & ~0x10 ) | ( timer2_output ? 0x10 : 0x00 ); + data = ( data & ~0x10 ) | ( m_pit_out2 ? 0x10 : 0x00 ); } - data = ( data & ~0x20 ) | ( timer2_output ? 0x20 : 0x00 ); + data = ( data & ~0x20 ) | ( m_pit_out2 ? 0x20 : 0x00 ); return data; } @@ -406,7 +386,7 @@ WRITE8_MEMBER( ibm5160_mb_device::pc_ppi_portb_w ) m_ppi_portc_switch_high = data & 0x08; m_ppi_keyboard_clear = data & 0x80; m_ppi_keyb_clock = data & 0x40; - m_pit8253->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); /* If PB7 is set clear the shift register and reset the IRQ line */ @@ -492,7 +472,13 @@ const device_type IBM5160_MOTHERBOARD = &device_creator<ibm5160_mb_device>; //************************************************************************** static MACHINE_CONFIG_FRAGMENT( ibm5160_mb_config ) - MCFG_PIT8253_ADD( "pit8253", pc_pit8253_config ) + MCFG_DEVICE_ADD("pit8253", PIT8253, 0) + MCFG_PIT8253_CLK0(XTAL_14_31818MHz/12) /* heartbeat IRQ */ + MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir0_w)) + MCFG_PIT8253_CLK1(XTAL_14_31818MHz/12) /* dram refresh */ + MCFG_PIT8253_OUT1_HANDLER(WRITELINE(ibm5160_mb_device, pc_pit8253_out1_changed)) + MCFG_PIT8253_CLK2(XTAL_14_31818MHz/12) /* pio port c pin 4, and speaker polling enough */ + MCFG_PIT8253_OUT2_HANDLER(WRITELINE(ibm5160_mb_device, pc_pit8253_out2_changed)) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, pc_dma8237_config ) @@ -685,7 +671,7 @@ void ibm5160_mb_device::device_reset() m_u73_q2 = 0; m_out1 = 2; // initial state of pit output is undefined m_pc_spkrdata = 0; - m_pc_input = 0; + m_pit_out2 = 0; m_dma_channel = -1; m_cur_eop = false; memset(m_dma_offset,0,sizeof(m_dma_offset)); @@ -807,7 +793,6 @@ READ8_MEMBER (ibm5150_mb_device::pc_ppi_porta_r) READ8_MEMBER ( ibm5150_mb_device::pc_ppi_portc_r ) { - int timer2_output = m_pit8253->get_output(2); int data=0xff; data&=~0x80; // no parity error @@ -865,10 +850,10 @@ READ8_MEMBER ( ibm5150_mb_device::pc_ppi_portc_r ) { if ( m_ppi_portb & 0x01 ) { - data = ( data & ~0x10 ) | ( timer2_output ? 0x10 : 0x00 ); + data = ( data & ~0x10 ) | ( m_pit_out2 ? 0x10 : 0x00 ); } } - data = ( data & ~0x20 ) | ( timer2_output ? 0x20 : 0x00 ); + data = ( data & ~0x20 ) | ( m_pit_out2 ? 0x20 : 0x00 ); return data; } @@ -881,7 +866,7 @@ WRITE8_MEMBER( ibm5150_mb_device::pc_ppi_portb_w ) m_ppi_portc_switch_high = data & 0x08; m_ppi_keyboard_clear = data & 0x80; m_ppi_keyb_clock = data & 0x40; - m_pit8253->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); m_cassette->change_state(( data & 0x08 ) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); @@ -992,7 +977,7 @@ WRITE8_MEMBER( ec1841_mb_device::pc_ppi_portb_w ) m_ppi_portc_switch_high = data & 0x04; m_ppi_keyboard_clear = data & 0x80; m_ppi_keyb_clock = data & 0x40; - m_pit8253->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); /* If PB7 is set clear the shift register and reset the IRQ line */ @@ -1010,7 +995,6 @@ WRITE8_MEMBER( ec1841_mb_device::pc_ppi_portb_w ) READ8_MEMBER ( ec1841_mb_device::pc_ppi_portc_r ) { - int timer2_output = m_pit8253->get_output(2); int data=0xff; data&=~0x80; // no parity error @@ -1021,7 +1005,7 @@ READ8_MEMBER ( ec1841_mb_device::pc_ppi_portc_r ) data = (data & 0xf0) | (ioport("SA2")->read() & 0x0f); } - data = ( data & ~0x20 ) | ( timer2_output ? 0x20 : 0x00 ); + data = ( data & ~0x20 ) | ( m_pit_out2 ? 0x20 : 0x00 ); return data; } diff --git a/src/mess/machine/isa_ibm_mfc.c b/src/mess/machine/isa_ibm_mfc.c index ed98b8ee609..e9beae68368 100644 --- a/src/mess/machine/isa_ibm_mfc.c +++ b/src/mess/machine/isa_ibm_mfc.c @@ -264,27 +264,6 @@ WRITE_LINE_MEMBER( isa8_ibm_mfc_device::d8253_out1 ) set_pc_interrupt(PC_IRQ_TIMERB, 1); } -static const struct pit8253_interface d8253_intf = -{ - { - { - XTAL_4MHz / 8, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ibm_mfc_device, d8253_out0) - }, - { - 0, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ibm_mfc_device, d8253_out1) - }, - { - XTAL_4MHz / 2, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("d8253", pit8253_device, clk1_w) - } - } -}; - //------------------------------------------------- // uPD71051 USART @@ -324,7 +303,13 @@ static MACHINE_CONFIG_FRAGMENT( ibm_mfc ) MCFG_DEVICE_ADD("usart_clock", CLOCK, XTAL_4MHz / 8) // 500KHz MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(isa8_ibm_mfc_device, write_usart_clock)) - MCFG_PIT8253_ADD("d8253", d8253_intf) + MCFG_DEVICE_ADD("d8253", PIT8253, 0) + MCFG_PIT8253_CLK0(XTAL_4MHz / 8) + MCFG_PIT8253_OUT0_HANDLER(WRITELINE(isa8_ibm_mfc_device, d8253_out0)) + MCFG_PIT8253_CLK1(0) + MCFG_PIT8253_OUT1_HANDLER(WRITELINE(isa8_ibm_mfc_device, d8253_out1)) + MCFG_PIT8253_CLK2(XTAL_4MHz / 2) + MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("d8253", pit8253_device, write_clk1)) MCFG_SPEAKER_STANDARD_STEREO("ymleft", "ymright") MCFG_YM2151_ADD("ym2151", XTAL_4MHz) diff --git a/src/mess/machine/mbc55x.c b/src/mess/machine/mbc55x.c index a0623f6d38f..bde0c50d110 100644 --- a/src/mess/machine/mbc55x.c +++ b/src/mess/machine/mbc55x.c @@ -124,29 +124,6 @@ IRQ_CALLBACK_MEMBER(mbc55x_state::mbc55x_irq_callback) return m_pic->inta_r(); } -/* PIT8253 Configuration */ - -const struct pit8253_interface mbc55x_pit8253_config = -{ - { - { - PIT_C0_CLOCK, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir0_w) - }, - { - PIT_C1_CLOCK, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir1_w) - }, - { - PIT_C2_CLOCK, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(mbc55x_state, pit8253_t2) - } - } -}; - READ8_MEMBER(mbc55x_state::mbcpit8253_r) { return m_pit->read(space, offset >> 1); @@ -160,7 +137,7 @@ WRITE8_MEMBER(mbc55x_state::mbcpit8253_w) WRITE_LINE_MEMBER( mbc55x_state::pit8253_t2 ) { m_kb_uart->write_txc(state); - m_kb_uart->write_txc(state); + m_kb_uart->write_rxc(state); } /* Video ram page register */ diff --git a/src/mess/machine/mz700.c b/src/mess/machine/mz700.c index 6ced1c7067f..be894cba8de 100644 --- a/src/mess/machine/mz700.c +++ b/src/mess/machine/mz700.c @@ -45,30 +45,6 @@ I8255_INTERFACE( mz700_ppi8255_interface ) }; - - - -const struct pit8253_interface mz700_pit8253_config = -{ - { - /* clockin gate callback */ - { XTAL_17_73447MHz/20, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(mz_state,pit_out0_changed) }, - { 15611.0, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER("pit8253", pit8253_device, clk2_w) }, - { 0, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(mz_state,pit_irq_2) }, - } -}; - -const struct pit8253_interface mz800_pit8253_config = -{ - { - /* clockin gate callback */ - { XTAL_17_73447MHz/16, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(mz_state,pit_out0_changed) }, - { 15611.0, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER("pit8253", pit8253_device, clk2_w) }, - { 0, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(mz_state,pit_irq_2) }, - } -}; - - /*************************************************************************** INITIALIZATIoN ***************************************************************************/ @@ -125,7 +101,7 @@ READ8_MEMBER(mz_state::mz700_e008_r) WRITE8_MEMBER(mz_state::mz700_e008_w) { - m_pit->gate0_w(BIT(data, 0)); + m_pit->write_gate0(BIT(data, 0)); } diff --git a/src/mess/machine/mz80.c b/src/mess/machine/mz80.c index 420d8231551..59e7de82f4f 100644 --- a/src/mess/machine/mz80.c +++ b/src/mess/machine/mz80.c @@ -81,16 +81,6 @@ I8255_INTERFACE( mz80k_8255_int ) DEVCB_DRIVER_MEMBER(mz80_state, mz80k_8255_portc_w), }; -const struct pit8253_interface mz80k_pit8253_config = -{ - { - /* clockin gate callback */ - { XTAL_8MHz/ 4, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(mz80_state, pit_out0_changed) }, - { XTAL_8MHz/256, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pit8253", pit8253_device, clk2_w) }, - { 0, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(mz80_state, pit_out2_changed) }, - } -}; - READ8_MEMBER( mz80_state::mz80k_strobe_r ) { return 0x7e | (UINT8)m_mz80k_tempo_strobe; @@ -98,5 +88,5 @@ READ8_MEMBER( mz80_state::mz80k_strobe_r ) WRITE8_MEMBER( mz80_state::mz80k_strobe_w ) { - m_pit->gate0_w(BIT(data, 0)); + m_pit->write_gate0(BIT(data, 0)); } diff --git a/src/mess/machine/pc.c b/src/mess/machine/pc.c index 608ceb06eac..f607929bccb 100644 --- a/src/mess/machine/pc.c +++ b/src/mess/machine/pc.c @@ -252,7 +252,7 @@ WRITE_LINE_MEMBER(pc_state::pcjr_pic8259_set_int_line) *************************************************************************/ UINT8 pc_state::pc_speaker_get_spk() { - return m_pc_spkrdata & m_pc_input; + return m_pc_spkrdata & m_pit_out2; } @@ -263,13 +263,6 @@ void pc_state::pc_speaker_set_spkrdata(UINT8 data) } -void pc_state::pc_speaker_set_input(UINT8 data) -{ - m_pc_input = data ? 1 : 0; - m_speaker->level_w(pc_speaker_get_spk()); -} - - /************************************************************* * * pit8253 configuration @@ -290,55 +283,11 @@ WRITE_LINE_MEMBER(pc_state::ibm5150_pit8253_out1_changed) WRITE_LINE_MEMBER(pc_state::ibm5150_pit8253_out2_changed) { - pc_speaker_set_input( state ); + m_pit_out2 = state ? 1 : 0; + m_speaker->level_w(pc_speaker_get_spk()); } -const struct pit8253_interface ibm5150_pit8253_config = -{ - { - { - XTAL_14_31818MHz/12, /* heartbeat IRQ */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) - }, { - XTAL_14_31818MHz/12, /* dram refresh */ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pc_state,ibm5150_pit8253_out1_changed) - }, { - XTAL_14_31818MHz/12, /* pio port c pin 4, and speaker polling enough */ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pc_state,ibm5150_pit8253_out2_changed) - } - } -}; - - -/* - On the PC Jr the input for clock 1 seems to be selectable - based on bit 4(/5?) written to output port A0h. This is not - supported yet. - */ - -const struct pit8253_interface pcjr_pit8253_config = -{ - { - { - XTAL_14_31818MHz/12, /* heartbeat IRQ */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) - }, { - XTAL_14_31818MHz/12, /* dram refresh */ - DEVCB_NULL, - DEVCB_NULL - }, { - XTAL_14_31818MHz/12, /* pio port c pin 4, and speaker polling enough */ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pc_state,ibm5150_pit8253_out2_changed) - } - } -}; - /********************************************************** * * COM hardware @@ -645,7 +594,6 @@ READ8_MEMBER(pc_state::ibm5160_ppi_porta_r) READ8_MEMBER(pc_state::ibm5160_ppi_portc_r) { - int timer2_output = m_pit8253->get_output(2); int data=0xff; data&=~0x80; // no parity error @@ -667,9 +615,9 @@ READ8_MEMBER(pc_state::ibm5160_ppi_portc_r) if ( m_ppi_portb & 0x01 ) { - data = ( data & ~0x10 ) | ( timer2_output ? 0x10 : 0x00 ); + data = ( data & ~0x10 ) | ( m_pit_out2 ? 0x10 : 0x00 ); } - data = ( data & ~0x20 ) | ( timer2_output ? 0x20 : 0x00 ); + data = ( data & ~0x20 ) | ( m_pit_out2 ? 0x20 : 0x00 ); return data; } @@ -682,7 +630,7 @@ WRITE8_MEMBER(pc_state::ibm5160_ppi_portb_w) m_ppi_portc_switch_high = data & 0x08; m_ppi_keyboard_clear = data & 0x80; m_ppi_keyb_clock = data & 0x40; - m_pit8253->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); m_ppi_clock_signal = ( m_ppi_keyb_clock ) ? 1 : 0; @@ -743,7 +691,7 @@ WRITE8_MEMBER(pc_state::pc_ppi_portb_w) m_ppi_portc_switch_high = data & 0x08; m_ppi_keyboard_clear = data & 0x80; m_ppi_keyb_clock = data & 0x40; - m_pit8253->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); pc_keyb_set_clock( m_ppi_keyb_clock ); @@ -768,7 +716,7 @@ WRITE8_MEMBER(pc_state::pcjr_ppi_portb_w) /* KB controller port B */ m_ppi_portb = data; m_ppi_portc_switch_high = data & 0x08; - machine().device<pit8253_device>("pit8253")->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); m_cassette->change_state(( data & 0x08 ) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); @@ -801,7 +749,6 @@ READ8_MEMBER(pc_state::pcjr_ppi_porta_r) */ READ8_MEMBER(pc_state::pcjr_ppi_portc_r) { - int timer2_output = machine().device<pit8253_device>("pit8253")->get_output(2); int data=0xff; data&=~0x80; @@ -826,10 +773,10 @@ READ8_MEMBER(pc_state::pcjr_ppi_portc_r) { if ( m_ppi_portb & 0x01 ) { - data = ( data & ~0x10 ) | ( timer2_output ? 0x10 : 0x00 ); + data = ( data & ~0x10 ) | ( m_pit_out2 ? 0x10 : 0x00 ); } } - data = ( data & ~0x20 ) | ( timer2_output ? 0x20 : 0x00 ); + data = ( data & ~0x20 ) | ( m_pit_out2 ? 0x20 : 0x00 ); data = ( data & ~0x40 ) | ( ( pcjr_keyb.raw_keyb_data & 0x01 ) ? 0x40 : 0x00 ); return data; @@ -1123,7 +1070,7 @@ MACHINE_RESET_MEMBER(pc_state,pc) m_u73_q2 = 0; m_out1 = 0; m_pc_spkrdata = 0; - m_pc_input = 1; + m_pit_out2 = 1; m_dma_channel = -1; m_cur_eop = 0; memset(m_dma_offset,0,sizeof(m_dma_offset)); @@ -1156,7 +1103,7 @@ MACHINE_RESET_MEMBER(pc_state,pcjr) m_u73_q2 = 0; m_out1 = 0; m_pc_spkrdata = 0; - m_pc_input = 1; + m_pit_out2 = 1; m_dma_channel = -1; memset(m_dma_offset,0,sizeof(m_dma_offset)); m_ppi_portc_switch_high = 0; diff --git a/src/mess/machine/pk8020.c b/src/mess/machine/pk8020.c index fbb20425edd..2d485bbdd11 100644 --- a/src/mess/machine/pk8020.c +++ b/src/mess/machine/pk8020.c @@ -920,27 +920,6 @@ WRITE_LINE_MEMBER(pk8020_state::pk8020_pit_out1) } -const struct pit8253_interface pk8020_pit8253_intf = -{ - { - { - XTAL_20MHz / 10, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pk8020_state,pk8020_pit_out0) - }, - { - XTAL_20MHz / 10, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pk8020_state,pk8020_pit_out1) - }, - { - (XTAL_20MHz / 8) / 164, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir5_w) - } - } -}; - WRITE_LINE_MEMBER(pk8020_state::pk8020_pic_set_int_line) { m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); diff --git a/src/mess/machine/pmd85.c b/src/mess/machine/pmd85.c index 898a3640ca8..86e511922ed 100644 --- a/src/mess/machine/pmd85.c +++ b/src/mess/machine/pmd85.c @@ -382,35 +382,6 @@ WRITE8_MEMBER(pmd85_state::pmd85_ppi_2_portc_w) /******************************************************************************* - I/O board 8253 - -------------- - - Timer 0: - OUT0 - external interfaces connector (K2) - CLK0 - external interfaces connector (K2) - GATE0 - external interfaces connector (K2), default = 1 - Timer 1: - OUT0 - external interfaces connector (K2), i8251 (for V24 only) - CLK0 - hardwired to 2 MHz system clock - GATE0 - external interfaces connector (K2), default = 1 - Timer 2: - OUT0 - unused - CLK0 - hardwired to 1HZ signal generator - GATE0 - hardwired to 5V, default = 1 - -*******************************************************************************/ - -const struct pit8253_interface pmd85_pit8253_interface = -{ - { - { 0, DEVCB_NULL, DEVCB_NULL }, - { 2000000, DEVCB_NULL, DEVCB_NULL }, - { 1, DEVCB_LINE_VCC, DEVCB_NULL } - } -}; - -/******************************************************************************* - I/O board external interfaces connector (K2) -------------------------------------------- diff --git a/src/mess/machine/pp01.c b/src/mess/machine/pp01.c index 5f92dda8da7..fd957c3929f 100644 --- a/src/mess/machine/pp01.c +++ b/src/mess/machine/pp01.c @@ -159,27 +159,6 @@ WRITE_LINE_MEMBER(pp01_state::pp01_pit_out1) { } -const struct pit8253_interface pp01_pit8253_intf = -{ - { - { - 0, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pp01_state,pp01_pit_out0) - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(pp01_state,pp01_pit_out1) - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("pit8253", pit8253_device, clk0_w) - } - } -}; - READ8_MEMBER(pp01_state::pp01_8255_porta_r) { return m_video_scroll; diff --git a/src/mess/machine/southbridge.c b/src/mess/machine/southbridge.c index a89796eef95..52867b7b22b 100644 --- a/src/mess/machine/southbridge.c +++ b/src/mess/machine/southbridge.c @@ -10,25 +10,6 @@ #include "bus/pc_kbd/keyboards.h" -const struct pit8253_interface at_pit8254_config = -{ - { - { - 4772720/4, /* heartbeat IRQ */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, southbridge_device, at_pit8254_out0_changed) - }, { - 4772720/4, /* dram refresh */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, southbridge_device, at_pit8254_out1_changed) - }, { - 4772720/4, /* pio port c pin 4, and speaker polling enough */ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, southbridge_device, at_pit8254_out2_changed) - } - } -}; - I8237_INTERFACE( at_dma8237_1_config ) { DEVCB_DEVICE_LINE_MEMBER("dma8237_2",am9517a_device,dreq0_w), @@ -102,7 +83,13 @@ static SLOT_INTERFACE_START(pc_isa_onboard) SLOT_INTERFACE_END static MACHINE_CONFIG_FRAGMENT( southbridge ) - MCFG_PIT8254_ADD( "pit8254", at_pit8254_config ) + MCFG_DEVICE_ADD("pit8254", PIT8254, 0) + MCFG_PIT8253_CLK0(4772720/4) /* heartbeat IRQ */ + MCFG_PIT8253_OUT0_HANDLER(WRITELINE(southbridge_device, at_pit8254_out0_changed)) + MCFG_PIT8253_CLK1(4772720/4) /* dram refresh */ + MCFG_PIT8253_OUT1_HANDLER(WRITELINE(southbridge_device, at_pit8254_out1_changed)) + MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */ + MCFG_PIT8253_OUT2_HANDLER(WRITELINE(southbridge_device, at_pit8254_out2_changed)) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, at_dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, at_dma8237_2_config ) @@ -234,7 +221,7 @@ void southbridge_device::device_start() void southbridge_device::device_reset() { m_at_spkrdata = 0; - m_at_speaker_input = 0; + m_pit_out2 = 0; m_dma_channel = -1; m_cur_eop = false; m_nmi_enabled = 0; @@ -263,13 +250,7 @@ READ8_MEMBER( southbridge_device::get_slave_ack ) void southbridge_device::at_speaker_set_spkrdata(UINT8 data) { m_at_spkrdata = data ? 1 : 0; - m_speaker->level_w(m_at_spkrdata & m_at_speaker_input); -} - -void southbridge_device::at_speaker_set_input(UINT8 data) -{ - m_at_speaker_input = data ? 1 : 0; - m_speaker->level_w(m_at_spkrdata & m_at_speaker_input); + m_speaker->level_w(m_at_spkrdata & m_pit_out2); } @@ -294,7 +275,8 @@ WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out1_changed ) WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out2_changed ) { - at_speaker_set_input( state ); + m_pit_out2 = state ? 1 : 0; + m_speaker->level_w(m_at_spkrdata & m_pit_out2); } /************************************************************************* @@ -462,7 +444,7 @@ READ8_MEMBER( southbridge_device::at_portb_r ) /* 0x10 is the dram refresh line bit on the 5170, just a timer here, 15.085us. */ data |= m_refresh ? 0x10 : 0; - if (m_pit8254->get_output(2)) + if (m_pit_out2) data |= 0x20; else data &= ~0x20; /* ps2m30 wants this */ @@ -473,7 +455,7 @@ READ8_MEMBER( southbridge_device::at_portb_r ) WRITE8_MEMBER( southbridge_device::at_portb_w ) { m_at_speaker = data; - m_pit8254->gate2_w(BIT(data, 0)); + m_pit8254->write_gate2(BIT(data, 0)); at_speaker_set_spkrdata( BIT(data, 1)); m_channel_check = BIT(data, 3); m_isabus->set_nmi_state((m_nmi_enabled==0) && (m_channel_check==0)); diff --git a/src/mess/machine/southbridge.h b/src/mess/machine/southbridge.h index a178fa0b156..4a800604817 100644 --- a/src/mess/machine/southbridge.h +++ b/src/mess/machine/southbridge.h @@ -111,7 +111,7 @@ public: DECLARE_WRITE8_MEMBER(pc_dma_write_word); protected: UINT8 m_at_spkrdata; - UINT8 m_at_speaker_input; + UINT8 m_pit_out2; int m_dma_channel; bool m_cur_eop; UINT8 m_dma_offset[2][4]; @@ -120,7 +120,6 @@ protected: UINT8 m_at_speaker; bool m_refresh; void at_speaker_set_spkrdata(UINT8 data); - void at_speaker_set_input(UINT8 data); UINT8 m_channel_check; UINT8 m_nmi_enabled; diff --git a/src/mess/machine/special.c b/src/mess/machine/special.c index e03c96a427e..afba38f10a3 100644 --- a/src/mess/machine/special.c +++ b/src/mess/machine/special.c @@ -151,9 +151,9 @@ void special_state::device_timer(emu_timer &timer, device_timer_id id, int param break; case TIMER_PIT8253_GATES: { - m_pit->gate0_w(0); - m_pit->gate1_w(0); - m_pit->gate2_w(0); + m_pit->write_gate0(0); + m_pit->write_gate1(0); + m_pit->write_gate2(0); break; } default: @@ -251,28 +251,6 @@ WRITE_LINE_MEMBER( special_state::specimx_pit8253_out2_changed ) } - -const struct pit8253_interface specimx_pit8253_intf = -{ - { - { - 2000000, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(special_state, specimx_pit8253_out0_changed) - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(special_state, specimx_pit8253_out1_changed) - }, - { - 2000000, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(special_state, specimx_pit8253_out2_changed) - } - } -}; - MACHINE_START_MEMBER(special_state,specimx) { m_specimx_audio = machine().device<specimx_sound_device>("custom"); diff --git a/src/mess/machine/tandy1t.c b/src/mess/machine/tandy1t.c index c97eaf69e1d..068afa3eb70 100644 --- a/src/mess/machine/tandy1t.c +++ b/src/mess/machine/tandy1t.c @@ -181,7 +181,7 @@ WRITE8_MEMBER( tandy_pc_state::tandy1000_pio_w ) { case 1: m_tandy_ppi_portb = data; - space.machine().device<pit8253_device>("pit8253")->gate2_w(BIT(data, 0)); + m_pit8253->write_gate2(BIT(data, 0)); pc_speaker_set_spkrdata( data & 0x02 ); // sx enables keyboard from bit 3, others bit 6, hopefully theres no conflict pc_keyb_set_clock(data&0x48); |