From 5b6c5585b1ef4baabd20d1cd823daeb40d255ead Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 9 May 2014 17:34:40 +0000 Subject: [PATCH] ptm6840_device: converted to devcb2 (nw) --- src/emu/bus/a2bus/a2midi.c | 13 ++--- src/emu/bus/c64/midi_passport.c | 14 ++--- src/emu/machine/6840ptm.c | 99 ++++++++++++++++++++------------- src/emu/machine/6840ptm.h | 53 ++++++++++-------- src/mame/drivers/arachnid.c | 14 ++--- src/mame/drivers/cchasm.c | 13 ++--- src/mame/drivers/esripsys.c | 14 ++--- src/mame/drivers/ginganin.c | 20 ++----- src/mame/drivers/guab.c | 14 ++--- src/mame/drivers/jpmsys5.c | 27 +++++---- src/mame/drivers/mpu3.c | 19 +++---- src/mame/drivers/mpu4hw.c | 41 +++++--------- src/mame/drivers/mpu4vid.c | 20 +++---- src/mame/drivers/vpoker.c | 13 ++--- src/mess/drivers/ob68k1a.c | 18 +----- src/mess/drivers/poly.c | 36 +++++++----- src/mess/drivers/swtpc09.c | 21 ++++++- src/mess/drivers/tavernie.c | 18 ++---- src/mess/drivers/v6809.c | 29 ++++------ src/mess/includes/swtpc09.h | 1 - src/mess/machine/apollo.c | 11 ++-- src/mess/machine/swtpc09.c | 8 --- 22 files changed, 233 insertions(+), 283 deletions(-) diff --git a/src/emu/bus/a2bus/a2midi.c b/src/emu/bus/a2bus/a2midi.c index b4690ee22c3..66928bb16b6 100644 --- a/src/emu/bus/a2bus/a2midi.c +++ b/src/emu/bus/a2bus/a2midi.c @@ -24,16 +24,11 @@ const device_type A2BUS_MIDI = &device_creator; #define MIDI_PTM_TAG "midi_ptm" #define MIDI_ACIA_TAG "midi_acia" -static struct ptm6840_interface ptm_interface = -{ - 1021800.0f, - { 1021800.0f, 1021800.0f, 1021800.0f }, - { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_midi_device, ptm_irq_w) -}; - MACHINE_CONFIG_FRAGMENT( midi ) - MCFG_PTM6840_ADD(MIDI_PTM_TAG, ptm_interface) + MCFG_DEVICE_ADD(MIDI_PTM_TAG, PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(1021800.0f) + MCFG_PTM6840_EXTERNAL_CLOCKS(1021800.0f, 1021800.0f, 1021800.0f) + MCFG_PTM6840_IRQ_CB(WRITELINE(a2bus_midi_device, ptm_irq_w)) MCFG_DEVICE_ADD(MIDI_ACIA_TAG, ACIA6850, 0) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd)) diff --git a/src/emu/bus/c64/midi_passport.c b/src/emu/bus/c64/midi_passport.c index f3cbe045edd..c20a96643b3 100644 --- a/src/emu/bus/c64/midi_passport.c +++ b/src/emu/bus/c64/midi_passport.c @@ -42,15 +42,6 @@ WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::ptm_irq_w ) m_slot->irq_w(m_ptm_irq || m_acia_irq); } -static const ptm6840_interface ptm_intf = -{ - 1021800.0f, - { 1021800.0f, 1021800.0f, 1021800.0f }, - { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_passport_midi_cartridge_device, ptm_irq_w) -}; - - WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::acia_irq_w ) { m_acia_irq = state; @@ -74,7 +65,10 @@ static MACHINE_CONFIG_FRAGMENT( c64_passport_midi ) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd)) MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(c64_passport_midi_cartridge_device, acia_irq_w)) - MCFG_PTM6840_ADD(MC6840_TAG, ptm_intf) + MCFG_DEVICE_ADD(MC6840_TAG, PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(1021800.0f) + MCFG_PTM6840_EXTERNAL_CLOCKS(1021800.0f, 1021800.0f, 1021800.0f) + MCFG_PTM6840_IRQ_CB(WRITELINE(c64_passport_midi_cartridge_device, ptm_irq_w)) MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd)) diff --git a/src/emu/machine/6840ptm.c b/src/emu/machine/6840ptm.c index 1f26472fb3d..8e750637ed7 100644 --- a/src/emu/machine/6840ptm.c +++ b/src/emu/machine/6840ptm.c @@ -68,50 +68,34 @@ const device_type PTM6840 = &device_creator; //------------------------------------------------- ptm6840_device::ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, PTM6840, "6840 PTM", tag, owner, clock, "ptm6840", __FILE__) + : device_t(mconfig, PTM6840, "6840 PTM", tag, owner, clock, "ptm6840", __FILE__), + m_internal_clock(0.0), + m_out0_cb(*this), + m_out1_cb(*this), + m_out2_cb(*this), + m_irq_cb(*this) { - memset(static_cast(this), 0, sizeof(ptm6840_interface)); + m_external_clock[0] = m_external_clock[1] = m_external_clock[2] = 0.0; } - -//------------------------------------------------- -// static_set_interface - set the interface -// struct -//------------------------------------------------- - -void ptm6840_device::static_set_interface(device_t &device, const ptm6840_interface &interface) -{ - ptm6840_device &ptm = downcast(device); - static_cast(ptm) = interface; -} - - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- void ptm6840_device::device_start() { - m_internal_clock = m_internal_clock; // resolve callbacks + m_out0_cb.resolve_safe(); + m_out1_cb.resolve_safe(); + m_out2_cb.resolve_safe(); + m_irq_cb.resolve_safe(); + for (int i = 0; i < 3; i++) { - m_out_func[i].resolve(m_out_cb[i], *this); - } - - for (int i = 0; i < 3; i++) - { - if ( m_external_clock[i] ) - { - m_external_clock[i] = m_external_clock[i]; - } - else - { + if ( m_external_clock[i] == 0 ) m_external_clock[i] = 1; - } } - - + m_timer[0] = timer_alloc(0); m_timer[1] = timer_alloc(1); m_timer[2] = timer_alloc(2); @@ -121,8 +105,6 @@ void ptm6840_device::device_start() m_timer[i]->enable(false); } - m_irq_func.resolve(m_irq_cb, *this); - // register for state saving save_item(NAME(m_lsb_buffer)); save_item(NAME(m_msb_buffer)); @@ -312,7 +294,7 @@ void ptm6840_device::update_interrupts() m_status_reg &= ~0x80; } - m_irq_func(m_IRQ); + m_irq_cb(m_IRQ); } } @@ -400,9 +382,17 @@ void ptm6840_device::reload_count(int idx) if ((m_mode[idx] == 4) || (m_mode[idx] == 6)) { m_output[idx] = 1; - if (!m_out_func[idx].isnull()) + switch (idx) { - m_out_func[idx](0, m_output[idx]); + case 0: + m_out0_cb((offs_t)0, m_output[0]); + break; + case 1: + m_out1_cb((offs_t)0, m_output[1]); + break; + case 2: + m_out2_cb((offs_t)0, m_output[2]); + break; } } @@ -526,7 +516,18 @@ WRITE8_MEMBER( ptm6840_device::write ) if (!(m_control_reg[idx] & 0x80 )) { // Output cleared - m_out_func[idx](0, 0); + switch (idx) + { + case 0: + m_out0_cb((offs_t)0, 0); + break; + case 1: + m_out1_cb((offs_t)0, 0); + break; + case 2: + m_out2_cb((offs_t)0, 0); + break; + } } // Reset? if (idx == 0 && (diffs & 0x01)) @@ -615,7 +616,18 @@ void ptm6840_device::timeout(int idx) m_output[idx] = m_output[idx] ? 0 : 1; PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx, m_output[idx])); - m_out_func[idx](0, m_output[idx]); + switch (idx) + { + case 0: + m_out0_cb((offs_t)0, m_output[0]); + break; + case 1: + m_out1_cb((offs_t)0, m_output[1]); + break; + case 2: + m_out2_cb((offs_t)0, m_output[2]); + break; + } } if ((m_mode[idx] == 4)||(m_mode[idx] == 6)) { @@ -624,7 +636,18 @@ void ptm6840_device::timeout(int idx) m_output[idx] = 1; PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx, m_output[idx])); - m_out_func[idx](0, m_output[idx]); + switch (idx) + { + case 0: + m_out0_cb((offs_t)0, m_output[0]); + break; + case 1: + m_out1_cb((offs_t)0, m_output[1]); + break; + case 2: + m_out2_cb((offs_t)0, m_output[2]); + break; + } // No changes in output until reinit m_fired[idx] = 1; diff --git a/src/emu/machine/6840ptm.h b/src/emu/machine/6840ptm.h index 48d3ff4ae16..622e4ad5c52 100644 --- a/src/emu/machine/6840ptm.h +++ b/src/emu/machine/6840ptm.h @@ -19,41 +19,43 @@ // DEVICE CONFIGURATION MACROS //************************************************************************** -#define MCFG_PTM6840_ADD(_tag, _interface) \ - MCFG_DEVICE_ADD(_tag, PTM6840, 0) \ - ptm6840_device::static_set_interface(*device, _interface); +#define MCFG_PTM6840_INTERNAL_CLOCK(_clk) \ + ptm6840_device::set_internal_clock(*device, _clk); +#define MCFG_PTM6840_EXTERNAL_CLOCKS(_clk0, _clk1, _clk2) \ + ptm6840_device::set_external_clocks(*device, _clk0, _clk1, _clk2); +#define MCFG_PTM6840_OUT0_CB(_devcb) \ + devcb = &ptm6840_device::set_out0_callback(*device, DEVCB2_##_devcb); + +#define MCFG_PTM6840_OUT1_CB(_devcb) \ + devcb = &ptm6840_device::set_out1_callback(*device, DEVCB2_##_devcb); + +#define MCFG_PTM6840_OUT2_CB(_devcb) \ + devcb = &ptm6840_device::set_out2_callback(*device, DEVCB2_##_devcb); + +#define MCFG_PTM6840_IRQ_CB(_devcb) \ + devcb = &ptm6840_device::set_irq_callback(*device, DEVCB2_##_devcb); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -// ======================> ptm6840_interface - -struct ptm6840_interface -{ - double m_internal_clock; - double m_external_clock[3]; - - devcb_write8 m_out_cb[3]; // function to call when output[idx] changes - devcb_write_line m_irq_cb; // function called if IRQ line changes -}; - - - // ======================> ptm6840_device -class ptm6840_device : public device_t, - public ptm6840_interface +class ptm6840_device : public device_t { public: // construction/destruction ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - // static configuration helpers - static void static_set_interface(device_t &device, const ptm6840_interface &interface); - + static void set_internal_clock(device_t &device, double clock) { downcast(device).m_internal_clock = clock; } + static void set_external_clocks(device_t &device, double clock0, double clock1, double clock2) { downcast(device).m_external_clock[0] = clock0; downcast(device).m_external_clock[1] = clock1; downcast(device).m_external_clock[2] = clock2; } + template static devcb2_base &set_out0_callback(device_t &device, _Object object) { return downcast(device).m_out0_cb.set_callback(object); } + template static devcb2_base &set_out1_callback(device_t &device, _Object object) { return downcast(device).m_out1_cb.set_callback(object); } + template static devcb2_base &set_out2_callback(device_t &device, _Object object) { return downcast(device).m_out2_cb.set_callback(object); } + template static devcb2_base &set_irq_callback(device_t &device, _Object object) { return downcast(device).m_irq_cb.set_callback(object); } + int status(int clock) const { return m_enabled[clock]; } // get whether timer is enabled int irq_state() const { return m_IRQ; } // get IRQ state UINT16 count(int counter) const { return compute_counter(counter); } // get counter value @@ -104,8 +106,13 @@ private: PTM_6840_LSB3 = 7, }; - devcb_resolved_write8 m_out_func[3]; // function to call when output[idx] changes - devcb_resolved_write_line m_irq_func; // function called if IRQ line changes + double m_internal_clock; + double m_external_clock[3]; + + devcb2_write8 m_out0_cb; + devcb2_write8 m_out1_cb; + devcb2_write8 m_out2_cb; + devcb2_write_line m_irq_cb; // function called if IRQ line changes UINT8 m_control_reg[3]; UINT8 m_output[3]; // Output states diff --git a/src/mame/drivers/arachnid.c b/src/mame/drivers/arachnid.c index c8b94d8c425..1f4ced313eb 100644 --- a/src/mame/drivers/arachnid.c +++ b/src/mame/drivers/arachnid.c @@ -249,15 +249,6 @@ WRITE8_MEMBER(arachnid_state::ptm_o1_callback) m_speaker->level_w(data); } -static const ptm6840_interface ptm_intf = -{ - XTAL_8MHz / 4, - { 0, 0, 0 }, - { DEVCB_DRIVER_MEMBER(arachnid_state, ptm_o1_callback), DEVCB_NULL, DEVCB_NULL }, - DEVCB_NULL -}; - - UINT8 arachnid_state::read_keyboard(int pa) { int i; @@ -455,7 +446,10 @@ static MACHINE_CONFIG_START( arachnid, arachnid_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_PTM6840_ADD(PTM6840_TAG, ptm_intf) + MCFG_DEVICE_ADD(PTM6840_TAG, PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(XTAL_8MHz / 4) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(arachnid_state, ptm_o1_callback)) MACHINE_CONFIG_END /*************************************************************************** diff --git a/src/mame/drivers/cchasm.c b/src/mame/drivers/cchasm.c index 8ca5e31e441..a7a23ee0800 100644 --- a/src/mame/drivers/cchasm.c +++ b/src/mame/drivers/cchasm.c @@ -71,14 +71,6 @@ WRITE_LINE_MEMBER(cchasm_state::cchasm_6840_irq) m_maincpu->set_input_line(4, state ? ASSERT_LINE : CLEAR_LINE); } -static const ptm6840_interface cchasm_6840_intf = -{ - CCHASM_68K_CLOCK/10, - { 0, CCHASM_68K_CLOCK / 10, 0 }, - { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, - DEVCB_DRIVER_LINE_MEMBER(cchasm_state,cchasm_6840_irq) -}; - /************************************* * * Port definitions @@ -192,7 +184,10 @@ static MACHINE_CONFIG_START( cchasm, cchasm_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* 6840 PTM */ - MCFG_PTM6840_ADD("6840ptm", cchasm_6840_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(CCHASM_68K_CLOCK/10) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, CCHASM_68K_CLOCK / 10, 0) + MCFG_PTM6840_IRQ_CB(WRITELINE(cchasm_state, cchasm_6840_irq)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/esripsys.c b/src/mame/drivers/esripsys.c index 9305e94de0e..b7a22e712f4 100644 --- a/src/mame/drivers/esripsys.c +++ b/src/mame/drivers/esripsys.c @@ -44,15 +44,6 @@ WRITE_LINE_MEMBER(esripsys_state::ptm_irq) m_soundcpu->set_input_line(M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } -static const ptm6840_interface ptm_intf = -{ - XTAL_8MHz / 4, - { 0, 0, 0 }, - { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, - DEVCB_DRIVER_LINE_MEMBER(esripsys_state,ptm_irq) -}; - - /************************************* * * i8251A UART @@ -716,7 +707,10 @@ static MACHINE_CONFIG_START( esripsys, esripsys_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* 6840 PTM */ - MCFG_PTM6840_ADD("6840ptm", ptm_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(XTAL_8MHz / 4) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_IRQ_CB(WRITELINE(esripsys_state, ptm_irq)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/ginganin.c b/src/mame/drivers/ginganin.c index 2854699dd00..524594bb12a 100644 --- a/src/mame/drivers/ginganin.c +++ b/src/mame/drivers/ginganin.c @@ -219,13 +219,6 @@ static GFXDECODE_START( ginganin ) GFXDECODE_END - - - - - - - void ginganin_state::machine_start() { save_item(NAME(m_layers_ctrl)); @@ -238,19 +231,11 @@ void ginganin_state::machine_reset() m_flipscreen = 0; } - WRITE8_MEMBER(ginganin_state::ptm_irq) { m_audiocpu->set_input_line(0, (data & 1) ? ASSERT_LINE : CLEAR_LINE); } -static const ptm6840_interface ptm_intf = -{ - SOUND_CLOCK/2, - { 0, 0, 0 }, - { DEVCB_DRIVER_MEMBER(ginganin_state,ptm_irq), DEVCB_NULL, DEVCB_NULL }, - DEVCB_NULL -}; static MACHINE_CONFIG_START( ginganin, ginganin_state ) @@ -263,7 +248,10 @@ static MACHINE_CONFIG_START( ginganin, ginganin_state ) MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_PTM6840_ADD("6840ptm", ptm_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(SOUND_CLOCK/2) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(ginganin_state, ptm_irq)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c index 43881fd0de1..767a013007b 100644 --- a/src/mame/drivers/guab.c +++ b/src/mame/drivers/guab.c @@ -120,15 +120,6 @@ WRITE_LINE_MEMBER(guab_state::ptm_irq) m_maincpu->set_input_line(INT_6840PTM, state); } -static const ptm6840_interface ptm_intf = -{ - 1000000, - { 0, 0, 0 }, - { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, - DEVCB_DRIVER_LINE_MEMBER(guab_state,ptm_irq) -}; - - /************************************* * * Video hardware @@ -814,7 +805,10 @@ static MACHINE_CONFIG_START( guab, guab_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* 6840 PTM */ - MCFG_PTM6840_ADD("6840ptm", ptm_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(1000000) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_IRQ_CB(WRITELINE(guab_state, ptm_irq)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c index ee09dbcfd11..2adde9762e1 100644 --- a/src/mame/drivers/jpmsys5.c +++ b/src/mame/drivers/jpmsys5.c @@ -538,15 +538,6 @@ WRITE8_MEMBER(jpmsys5_state::u26_o1_callback) } -static const ptm6840_interface ptm_intf = -{ - 1000000, - { 0, 0, 0 }, - { DEVCB_DRIVER_MEMBER(jpmsys5_state,u26_o1_callback), DEVCB_NULL, DEVCB_NULL }, - DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,ptm_irq) -}; - - /************************************* * * 6850 ACIAs @@ -667,7 +658,11 @@ static MACHINE_CONFIG_START( jpmsys5v, jpmsys5_state ) MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq)) /* 6840 PTM */ - MCFG_PTM6840_ADD("6840ptm", ptm_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(1000000) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(jpmsys5_state, u26_o1_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(jpmsys5_state, ptm_irq)) MACHINE_CONFIG_END READ16_MEMBER(jpmsys5_state::mux_awp_r) @@ -873,7 +868,11 @@ MACHINE_CONFIG_START( jpmsys5_ym, jpmsys5_state ) MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq)) /* 6840 PTM */ - MCFG_PTM6840_ADD("6840ptm", ptm_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(1000000) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(jpmsys5_state, u26_o1_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(jpmsys5_state, ptm_irq)) MCFG_DEFAULT_LAYOUT(layout_jpmsys5) MACHINE_CONFIG_END @@ -919,7 +918,11 @@ MACHINE_CONFIG_START( jpmsys5, jpmsys5_state ) MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq)) /* 6840 PTM */ - MCFG_PTM6840_ADD("6840ptm", ptm_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(1000000) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(jpmsys5_state, u26_o1_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(jpmsys5_state, ptm_irq)) MCFG_DEFAULT_LAYOUT(layout_jpmsys5) MACHINE_CONFIG_END diff --git a/src/mame/drivers/mpu3.c b/src/mame/drivers/mpu3.c index a563540e26e..656a312d809 100644 --- a/src/mame/drivers/mpu3.c +++ b/src/mame/drivers/mpu3.c @@ -288,17 +288,6 @@ WRITE8_MEMBER(mpu3_state::ic2_o3_callback) { } - -static const ptm6840_interface ptm_ic2_intf = -{ - MPU3_MASTER_CLOCK,///4, - { 0, 0, 0 }, - { DEVCB_DRIVER_MEMBER(mpu3_state,ic2_o1_callback), - DEVCB_DRIVER_MEMBER(mpu3_state,ic2_o2_callback), - DEVCB_DRIVER_MEMBER(mpu3_state,ic2_o3_callback) }, - DEVCB_DRIVER_LINE_MEMBER(mpu3_state,cpu0_irq) -}; - /* IC23 emulation @@ -845,7 +834,13 @@ static MACHINE_CONFIG_START( mpu3base, mpu3_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("555_ic10", mpu3_state, ic10_callback, PERIOD_OF_555_ASTABLE(10000,1000,0.0000001)) /* 6840 PTM */ - MCFG_PTM6840_ADD("ptm_ic2", ptm_ic2_intf) + MCFG_DEVICE_ADD("ptm_ic2", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(MPU3_MASTER_CLOCK) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(mpu3_state, ic2_o1_callback)) + MCFG_PTM6840_OUT1_CB(WRITE8(mpu3_state, ic2_o2_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(mpu3_state, ic2_o3_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(mpu3_state, cpu0_irq)) MCFG_DEVICE_ADD("pia_ic3", PIA6821, 0) MCFG_PIA_READPA_HANDLER(READ8(mpu3_state, pia_ic3_porta_r)) diff --git a/src/mame/drivers/mpu4hw.c b/src/mame/drivers/mpu4hw.c index 63e1a2f2339..8e74664b15e 100644 --- a/src/mame/drivers/mpu4hw.c +++ b/src/mame/drivers/mpu4hw.c @@ -568,18 +568,6 @@ WRITE8_MEMBER(mpu4_state::ic2_o3_callback) m_6840ptm->set_c1(data); } - -static const ptm6840_interface ptm_ic2_intf = -{ - MPU4_MASTER_CLOCK / 4, - { 0, 0, 0 }, - { DEVCB_DRIVER_MEMBER(mpu4_state,ic2_o1_callback), - DEVCB_DRIVER_MEMBER(mpu4_state,ic2_o2_callback), - DEVCB_DRIVER_MEMBER(mpu4_state,ic2_o3_callback) }, - DEVCB_DRIVER_LINE_MEMBER(mpu4_state,cpu0_irq) -}; - - /* 6821 PIA handlers */ /* IC3, lamp data lines + alpha numeric display */ WRITE8_MEMBER(mpu4_state::pia_ic3_porta_w) @@ -1486,17 +1474,6 @@ WRITE8_MEMBER(mpu4_state::ic3ss_w) } } - -static const ptm6840_interface ptm_ic3ss_intf = -{ - MPU4_MASTER_CLOCK / 4, - { 0, 0, 0 }, - { DEVCB_DRIVER_MEMBER(mpu4_state,ic3ss_o1_callback), - DEVCB_DRIVER_MEMBER(mpu4_state,ic3ss_o2_callback), - DEVCB_DRIVER_MEMBER(mpu4_state,ic3ss_o3_callback) }, - DEVCB_NULL//LINE(cpu1_ptm_irq) -}; - /* input ports for MPU4 board */ INPUT_PORTS_START( mpu4 ) PORT_START("ORANGE1") @@ -2616,8 +2593,14 @@ MACHINE_CONFIG_FRAGMENT( mpu4_common ) MCFG_MSC1937_ADD("vfd",0) /* 6840 PTM */ - MCFG_PTM6840_ADD("ptm_ic2", ptm_ic2_intf) - + MCFG_DEVICE_ADD("ptm_ic2", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(MPU4_MASTER_CLOCK / 4) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(mpu4_state, ic2_o1_callback)) + MCFG_PTM6840_OUT1_CB(WRITE8(mpu4_state, ic2_o2_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(mpu4_state, ic2_o3_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(mpu4_state, cpu0_irq)) + MCFG_DEVICE_ADD("pia_ic3", PIA6821, 0) MCFG_PIA_WRITEPA_HANDLER(WRITE8(mpu4_state, pia_ic3_porta_w)) MCFG_PIA_WRITEPB_HANDLER(WRITE8(mpu4_state, pia_ic3_portb_w)) @@ -2672,7 +2655,13 @@ MACHINE_CONFIG_FRAGMENT( mpu4_common ) MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( mpu4_common2 ) - MCFG_PTM6840_ADD("ptm_ic3ss", ptm_ic3ss_intf) + MCFG_DEVICE_ADD("ptm_ic3ss", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(MPU4_MASTER_CLOCK / 4) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(mpu4_state, ic3ss_o1_callback)) + MCFG_PTM6840_OUT1_CB(WRITE8(mpu4_state, ic3ss_o2_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(mpu4_state, ic3ss_o3_callback)) + //MCFG_PTM6840_IRQ_CB(WRITELINE(mpu4_state, cpu1_ptm_irq)) MCFG_DEVICE_ADD("pia_ic4ss", PIA6821, 0) MCFG_PIA_READPB_HANDLER(READ8(mpu4_state, pia_gb_portb_r)) diff --git a/src/mame/drivers/mpu4vid.c b/src/mame/drivers/mpu4vid.c index 3e454f2bf4e..4e66f2392b3 100644 --- a/src/mame/drivers/mpu4vid.c +++ b/src/mame/drivers/mpu4vid.c @@ -374,18 +374,6 @@ WRITE8_MEMBER(mpu4vid_state::vid_o3_callback) } -static const ptm6840_interface ptm_vid_intf = -{ - VIDEO_MASTER_CLOCK / 10, /* 68k E clock */ - { 0, 0, 0 }, - { DEVCB_DRIVER_MEMBER(mpu4vid_state,vid_o1_callback), - DEVCB_DRIVER_MEMBER(mpu4vid_state,vid_o2_callback), - DEVCB_DRIVER_MEMBER(mpu4vid_state,vid_o3_callback) }, - DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, cpu1_ptm_irq) -}; - - - static const gfx_layout mpu4_vid_char_8x8_layout = { 8,8, @@ -1439,7 +1427,13 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state ) MCFG_PALETTE_ADD("palette", 16) - MCFG_PTM6840_ADD("6840ptm_68k", ptm_vid_intf) + MCFG_DEVICE_ADD("6840ptm_68k", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(VIDEO_MASTER_CLOCK / 10) /* 68k E clock */ + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT0_CB(WRITE8(mpu4vid_state, vid_o1_callback)) + MCFG_PTM6840_OUT1_CB(WRITE8(mpu4vid_state, vid_o2_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(mpu4vid_state, vid_o3_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(mpu4vid_state, cpu1_ptm_irq)) /* Present on all video cards */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SAA1099_ADD("saa", 8000000) diff --git a/src/mame/drivers/vpoker.c b/src/mame/drivers/vpoker.c index cc318016c05..92892b21dad 100644 --- a/src/mame/drivers/vpoker.c +++ b/src/mame/drivers/vpoker.c @@ -651,14 +651,6 @@ WRITE_LINE_MEMBER(vpoker_state::ptm_irq) m_maincpu->set_input_line(M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } -static const ptm6840_interface ptm_intf = -{ - XTAL_4MHz, - { 0, 0, 0 }, - { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, - DEVCB_DRIVER_LINE_MEMBER(vpoker_state,ptm_irq) -}; - static MACHINE_CONFIG_START( vpoker, vpoker_state ) /* basic machine hardware */ @@ -681,7 +673,10 @@ static MACHINE_CONFIG_START( vpoker, vpoker_state ) MCFG_PALETTE_INIT_OWNER(vpoker_state, vpoker) /* 6840 PTM */ - MCFG_PTM6840_ADD("6840ptm", ptm_intf) + MCFG_DEVICE_ADD("6840ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(XTAL_4MHz) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_IRQ_CB(WRITELINE(vpoker_state, ptm_irq)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/ob68k1a.c b/src/mess/drivers/ob68k1a.c index 85574a81491..183584a650d 100644 --- a/src/mess/drivers/ob68k1a.c +++ b/src/mess/drivers/ob68k1a.c @@ -150,20 +150,6 @@ INPUT_PORTS_END // DEVICE CONFIGURATION //************************************************************************** -//------------------------------------------------- -// ptm6840_interface ptm_intf -//------------------------------------------------- - -static const ptm6840_interface ptm_intf = -{ - XTAL_10MHz/10, - { 0, 0, 0 }, - { DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL }, - DEVCB_NULL -}; - //------------------------------------------------- // COM8116_INTERFACE( dbrg_intf ) @@ -238,7 +224,9 @@ static MACHINE_CONFIG_START( ob68k1a, ob68k1a_state ) // devices MCFG_DEVICE_ADD(MC6821_0_TAG, PIA6821, 0) MCFG_DEVICE_ADD(MC6821_1_TAG, PIA6821, 0) - MCFG_PTM6840_ADD(MC6840_TAG, ptm_intf) + MCFG_DEVICE_ADD(MC6840_TAG, PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(XTAL_10MHz/10) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) MCFG_DEVICE_ADD(MC6850_0_TAG, ACIA6850, 0) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) diff --git a/src/mess/drivers/poly.c b/src/mess/drivers/poly.c index 403c43222b0..5e97037f6d1 100644 --- a/src/mess/drivers/poly.c +++ b/src/mess/drivers/poly.c @@ -52,6 +52,8 @@ public: m_pia0(*this, "pia0"), m_pia1(*this, "pia1"), m_acia(*this, "acia"), + m_ptm(*this, "ptm"), + m_speaker(*this, "speaker"), m_videoram(*this, "videoram") { } @@ -60,6 +62,8 @@ public: DECLARE_READ8_MEMBER(pia1_b_in); DECLARE_READ8_MEMBER(videoram_r); DECLARE_WRITE_LINE_MEMBER(write_acia_clock); + DECLARE_WRITE8_MEMBER( ptm_o2_callback ); + DECLARE_WRITE8_MEMBER( ptm_o3_callback ); protected: virtual void machine_reset(); @@ -69,6 +73,8 @@ private: required_device m_pia0; required_device m_pia1; required_device m_acia; + required_device m_ptm; + required_device m_speaker; required_shared_ptr m_videoram; UINT8 m_term_data; }; @@ -92,7 +98,7 @@ static ADDRESS_MAP_START(poly_mem, AS_PROGRAM, 8, poly_state) // AM_RANGE(0xe070,0xe070) Select Map 2 AM_RANGE(0xe800,0xebbf) AM_RAM AM_SHARE("videoram") AM_RANGE(0xebc0,0xebff) AM_RAM - AM_RANGE(0xec00,0xefbf) AM_RAM // screen 2 AM_DEVREADWRITE_LEGACY("saa5050", saa5050_videoram_r, saa5050_videoram_w) + AM_RANGE(0xec00,0xefbf) AM_RAM // screen 2 AM_SHARE("videoram") AM_RANGE(0xefc0,0xefff) AM_RAM AM_RANGE(0xf000,0xffff) AM_ROM ADDRESS_MAP_END @@ -115,17 +121,6 @@ READ8_MEMBER( poly_state::pia1_b_in ) return data; } - -static const ptm6840_interface poly_ptm_intf = -{ - XTAL_12MHz / 3, - { 0, 0, 0 }, - { DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("ptm", ptm6840_device, set_c1), - DEVCB_DEVICE_LINE_MEMBER("speaker", speaker_sound_device, level_w) }, - DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE) -}; - READ8_MEMBER( poly_state::videoram_r ) { return m_videoram[offset]; @@ -145,6 +140,16 @@ WRITE_LINE_MEMBER( poly_state::write_acia_clock ) m_acia->write_rxc(state); } +WRITE8_MEMBER( poly_state::ptm_o2_callback ) +{ + m_ptm->set_c1(data); +} + +WRITE8_MEMBER( poly_state::ptm_o3_callback ) +{ + m_speaker->level_w(data); +} + static MACHINE_CONFIG_START( poly, poly_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809E, XTAL_12MHz / 3) // 12.0576MHz @@ -178,7 +183,12 @@ static MACHINE_CONFIG_START( poly, poly_state ) MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line)) MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line)) - MCFG_PTM6840_ADD("ptm", poly_ptm_intf) + MCFG_DEVICE_ADD("ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(XTAL_12MHz / 3) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT1_CB(WRITE8(poly_state, ptm_o2_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(poly_state, ptm_o3_callback)) + MCFG_PTM6840_IRQ_CB(INPUTLINE("maincpu", M6809_IRQ_LINE)) MCFG_DEVICE_ADD("acia", ACIA6850, 0) //MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) diff --git a/src/mess/drivers/swtpc09.c b/src/mess/drivers/swtpc09.c index 3fb3c4e9ec1..cc91a1ab7b6 100644 --- a/src/mess/drivers/swtpc09.c +++ b/src/mess/drivers/swtpc09.c @@ -149,7 +149,12 @@ static MACHINE_CONFIG_START( swtpc09, swtpc09_state ) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts)) - MCFG_PTM6840_ADD("ptm", swtpc09_6840_intf) + MCFG_DEVICE_ADD("ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(2000000) + MCFG_PTM6840_EXTERNAL_CLOCKS(50, 0, 50) + MCFG_PTM6840_OUT0_CB(WRITE8(swtpc09_state, ptm_o1_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(swtpc09_state, ptm_o3_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(swtpc09_state, ptm_irq)) MCFG_DEVICE_ADD("pia", PIA6821, 0) MCFG_PIA_READPA_HANDLER(READ8(swtpc09_state, pia0_a_r)) @@ -181,7 +186,12 @@ static MACHINE_CONFIG_START( swtpc09i, swtpc09_state ) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts)) - MCFG_PTM6840_ADD("ptm", swtpc09_6840_intf) + MCFG_DEVICE_ADD("ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(2000000) + MCFG_PTM6840_EXTERNAL_CLOCKS(50, 0, 50) + MCFG_PTM6840_OUT0_CB(WRITE8(swtpc09_state, ptm_o1_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(swtpc09_state, ptm_o3_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(swtpc09_state, ptm_irq)) MCFG_DEVICE_ADD("pia", PIA6821, 0) MCFG_PIA_READPA_HANDLER(READ8(swtpc09_state, pia0_a_r)) @@ -223,7 +233,12 @@ static MACHINE_CONFIG_START( swtpc09d3, swtpc09_state ) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts)) - MCFG_PTM6840_ADD("ptm", swtpc09_6840_intf) + MCFG_DEVICE_ADD("ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(2000000) + MCFG_PTM6840_EXTERNAL_CLOCKS(50, 0, 50) + MCFG_PTM6840_OUT0_CB(WRITE8(swtpc09_state, ptm_o1_callback)) + MCFG_PTM6840_OUT2_CB(WRITE8(swtpc09_state, ptm_o3_callback)) + MCFG_PTM6840_IRQ_CB(WRITELINE(swtpc09_state, ptm_irq)) MCFG_DEVICE_ADD("pia", PIA6821, 0) MCFG_PIA_READPA_HANDLER(READ8(swtpc09_state, pia0_a_r)) diff --git a/src/mess/drivers/tavernie.c b/src/mess/drivers/tavernie.c index f4146d927da..3b89144cdf3 100644 --- a/src/mess/drivers/tavernie.c +++ b/src/mess/drivers/tavernie.c @@ -283,17 +283,6 @@ WRITE8_MEMBER( tavernie_state::pa_ivg_w ) // bits 0-3 are attribute bits } -// all i/o lines connect to the 40-pin expansion connector -static const ptm6840_interface mc6840_intf = -{ - XTAL_4MHz / 4, - { 0, 0, 0 }, - { DEVCB_NULL, - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_NMI), - DEVCB_NULL }, - DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE) -}; - WRITE8_MEMBER( tavernie_state::kbd_put ) { m_term_data = data; @@ -329,7 +318,12 @@ static MACHINE_CONFIG_START( cpu09, tavernie_state ) MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line)) MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line)) - MCFG_PTM6840_ADD("ptm", mc6840_intf) + MCFG_DEVICE_ADD("ptm", PTM6840, 0) + // all i/o lines connect to the 40-pin expansion connector + MCFG_PTM6840_INTERNAL_CLOCK(XTAL_4MHz / 4) + MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) + MCFG_PTM6840_OUT1_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + MCFG_PTM6840_IRQ_CB(INPUTLINE("maincpu", M6809_IRQ_LINE)) MCFG_DEVICE_ADD("acia", ACIA6850, 0) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) diff --git a/src/mess/drivers/v6809.c b/src/mess/drivers/v6809.c index 8d14abcd89a..8b87c28688b 100644 --- a/src/mess/drivers/v6809.c +++ b/src/mess/drivers/v6809.c @@ -80,8 +80,8 @@ public: { } - DECLARE_WRITE_LINE_MEMBER(speaker_en_w); - DECLARE_WRITE_LINE_MEMBER(speaker_w); + DECLARE_WRITE8_MEMBER(speaker_en_w); + DECLARE_WRITE8_MEMBER(speaker_w); DECLARE_READ8_MEMBER(pb_r); DECLARE_WRITE8_MEMBER(pa_w); DECLARE_WRITE8_MEMBER(videoram_w); @@ -276,27 +276,17 @@ WRITE8_MEMBER( v6809_state::pa_w ) // this should output 1 to enable sound, then output 0 after a short time // however it continuously outputs 1 -WRITE_LINE_MEMBER( v6809_state::speaker_en_w ) +WRITE8_MEMBER( v6809_state::speaker_en_w ) { - m_speaker_en = state; + m_speaker_en = data; } -WRITE_LINE_MEMBER( v6809_state::speaker_w ) +WRITE8_MEMBER( v6809_state::speaker_w ) { // if (m_speaker_en) -// m_speaker->level_w(state); +// m_speaker->level_w(data); } -static const ptm6840_interface mc6840_intf = -{ - XTAL_16MHz / 4, - { 4000000/14, 4000000/14, 4000000/14/8 }, - { DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(v6809_state, speaker_w), - DEVCB_DRIVER_LINE_MEMBER(v6809_state, speaker_en_w) }, - DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE) -}; - static SLOT_INTERFACE_START( v6809_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END @@ -349,7 +339,12 @@ static MACHINE_CONFIG_START( v6809, v6809_state ) MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6809_device, irq_line)) MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6809_device, irq_line)) - MCFG_PTM6840_ADD("ptm", mc6840_intf) + MCFG_DEVICE_ADD("ptm", PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(XTAL_16MHz / 4) + MCFG_PTM6840_EXTERNAL_CLOCKS(4000000/14, 4000000/14, 4000000/14/8) + MCFG_PTM6840_OUT1_CB(WRITE8(v6809_state, speaker_w)) + MCFG_PTM6840_OUT2_CB(WRITE8(v6809_state, speaker_en_w)) + MCFG_PTM6840_IRQ_CB(INPUTLINE("maincpu", M6809_IRQ_LINE)) MCFG_DEVICE_ADD("acia0", ACIA6850, 0) diff --git a/src/mess/includes/swtpc09.h b/src/mess/includes/swtpc09.h index ecba88b6812..c6f66b63eaf 100644 --- a/src/mess/includes/swtpc09.h +++ b/src/mess/includes/swtpc09.h @@ -140,6 +140,5 @@ public: /*----------- defined in machine/swtpc09.c -----------*/ extern const wd17xx_interface swtpc09_wd17xx_interface; -extern const ptm6840_interface swtpc09_6840_intf; #endif /* swtpc09_H_ */ diff --git a/src/mess/machine/apollo.c b/src/mess/machine/apollo.c index b84c2df2ed9..55751cda066 100644 --- a/src/mess/machine/apollo.c +++ b/src/mess/machine/apollo.c @@ -665,12 +665,6 @@ WRITE_LINE_MEMBER(apollo_state::apollo_ptm_irq_function) // Timer 3's input is a 62.5-kHz (16-microsecond period) signal. // The Timer 3 input may be prescaled to make the effective input signal have a 128-microsecond period. -static const ptm6840_interface apollo_ptm_config = { - 0, - { 250000, 125000, 62500 }, - { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, - DEVCB_DRIVER_LINE_MEMBER(apollo_state, apollo_ptm_irq_function) -}; //########################################################################## // machine/apollo_rtc.c - APOLLO DS3500 RTC MC146818 @@ -802,7 +796,10 @@ MACHINE_CONFIG_FRAGMENT( common ) MCFG_PIC8259_ADD( APOLLO_PIC1_TAG, WRITELINE(apollo_state,apollo_pic8259_master_set_int_line), VCC, READ8(apollo_state, apollo_pic8259_get_slave_ack)) MCFG_PIC8259_ADD( APOLLO_PIC2_TAG, WRITELINE(apollo_state,apollo_pic8259_slave_set_int_line), GND, NULL) - MCFG_PTM6840_ADD(APOLLO_PTM_TAG, apollo_ptm_config) + MCFG_DEVICE_ADD(APOLLO_PTM_TAG, PTM6840, 0) + MCFG_PTM6840_INTERNAL_CLOCK(0) + MCFG_PTM6840_EXTERNAL_CLOCKS(250000, 125000, 62500) + MCFG_PTM6840_IRQ_CB(WRITELINE(apollo_state, apollo_ptm_irq_function)) MCFG_DEVICE_ADD("ptmclock", CLOCK, 250000) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(apollo_state, apollo_ptm_timer_tick)) diff --git a/src/mess/machine/swtpc09.c b/src/mess/machine/swtpc09.c index dd3b59a7688..48817bf8a00 100644 --- a/src/mess/machine/swtpc09.c +++ b/src/mess/machine/swtpc09.c @@ -25,14 +25,6 @@ /******* MC6840 PTM on MPID Board *******/ -/* 6840 PTM interface */ -const ptm6840_interface swtpc09_6840_intf = -{ - 2000000, - { 50, 0, 50 }, - { DEVCB_DRIVER_MEMBER(swtpc09_state, ptm_o1_callback), DEVCB_NULL, DEVCB_DRIVER_MEMBER(swtpc09_state, ptm_o3_callback) }, - DEVCB_DRIVER_LINE_MEMBER(swtpc09_state, ptm_irq) -}; /* 6840 PTM handlers */ WRITE8_MEMBER( swtpc09_state::ptm_o1_callback )