ptm6840_device: converted to devcb2 (nw)

This commit is contained in:
Ivan Vangelista 2014-05-09 17:34:40 +00:00
parent c1b6a6a013
commit 5b6c5585b1
22 changed files with 233 additions and 283 deletions

View File

@ -24,16 +24,11 @@ const device_type A2BUS_MIDI = &device_creator<a2bus_midi_device>;
#define MIDI_PTM_TAG "midi_ptm" #define MIDI_PTM_TAG "midi_ptm"
#define MIDI_ACIA_TAG "midi_acia" #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 ) 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_DEVICE_ADD(MIDI_ACIA_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd)) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))

View File

@ -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); 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 ) WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::acia_irq_w )
{ {
m_acia_irq = state; 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_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(c64_passport_midi_cartridge_device, acia_irq_w)) 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_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd)) MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd))

View File

@ -68,50 +68,34 @@ const device_type PTM6840 = &device_creator<ptm6840_device>;
//------------------------------------------------- //-------------------------------------------------
ptm6840_device::ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) 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<ptm6840_interface *>(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<ptm6840_device &>(device);
static_cast<ptm6840_interface &>(ptm) = interface;
}
//------------------------------------------------- //-------------------------------------------------
// device_start - device-specific startup // device_start - device-specific startup
//------------------------------------------------- //-------------------------------------------------
void ptm6840_device::device_start() void ptm6840_device::device_start()
{ {
m_internal_clock = m_internal_clock;
// resolve callbacks // resolve callbacks
for (int i = 0; i < 3; i++) m_out0_cb.resolve_safe();
{ m_out1_cb.resolve_safe();
m_out_func[i].resolve(m_out_cb[i], *this); m_out2_cb.resolve_safe();
} m_irq_cb.resolve_safe();
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
{ {
if ( m_external_clock[i] ) if ( m_external_clock[i] == 0 )
{
m_external_clock[i] = m_external_clock[i];
}
else
{
m_external_clock[i] = 1; m_external_clock[i] = 1;
}
} }
m_timer[0] = timer_alloc(0); m_timer[0] = timer_alloc(0);
m_timer[1] = timer_alloc(1); m_timer[1] = timer_alloc(1);
m_timer[2] = timer_alloc(2); m_timer[2] = timer_alloc(2);
@ -121,8 +105,6 @@ void ptm6840_device::device_start()
m_timer[i]->enable(false); m_timer[i]->enable(false);
} }
m_irq_func.resolve(m_irq_cb, *this);
// register for state saving // register for state saving
save_item(NAME(m_lsb_buffer)); save_item(NAME(m_lsb_buffer));
save_item(NAME(m_msb_buffer)); save_item(NAME(m_msb_buffer));
@ -312,7 +294,7 @@ void ptm6840_device::update_interrupts()
m_status_reg &= ~0x80; 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)) if ((m_mode[idx] == 4) || (m_mode[idx] == 6))
{ {
m_output[idx] = 1; 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 )) if (!(m_control_reg[idx] & 0x80 ))
{ {
// Output cleared // 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? // Reset?
if (idx == 0 && (diffs & 0x01)) if (idx == 0 && (diffs & 0x01))
@ -615,7 +616,18 @@ void ptm6840_device::timeout(int idx)
m_output[idx] = m_output[idx] ? 0 : 1; m_output[idx] = m_output[idx] ? 0 : 1;
PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx, m_output[idx])); 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)) if ((m_mode[idx] == 4)||(m_mode[idx] == 6))
{ {
@ -624,7 +636,18 @@ void ptm6840_device::timeout(int idx)
m_output[idx] = 1; m_output[idx] = 1;
PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx, m_output[idx])); 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 // No changes in output until reinit
m_fired[idx] = 1; m_fired[idx] = 1;

View File

@ -19,40 +19,42 @@
// DEVICE CONFIGURATION MACROS // DEVICE CONFIGURATION MACROS
//************************************************************************** //**************************************************************************
#define MCFG_PTM6840_ADD(_tag, _interface) \ #define MCFG_PTM6840_INTERNAL_CLOCK(_clk) \
MCFG_DEVICE_ADD(_tag, PTM6840, 0) \ ptm6840_device::set_internal_clock(*device, _clk);
ptm6840_device::static_set_interface(*device, _interface);
#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 // 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 // ======================> ptm6840_device
class ptm6840_device : public device_t, class ptm6840_device : public device_t
public ptm6840_interface
{ {
public: public:
// construction/destruction // construction/destruction
ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// static configuration helpers static void set_internal_clock(device_t &device, double clock) { downcast<ptm6840_device &>(device).m_internal_clock = clock; }
static void static_set_interface(device_t &device, const ptm6840_interface &interface); static void set_external_clocks(device_t &device, double clock0, double clock1, double clock2) { downcast<ptm6840_device &>(device).m_external_clock[0] = clock0; downcast<ptm6840_device &>(device).m_external_clock[1] = clock1; downcast<ptm6840_device &>(device).m_external_clock[2] = clock2; }
template<class _Object> static devcb2_base &set_out0_callback(device_t &device, _Object object) { return downcast<ptm6840_device &>(device).m_out0_cb.set_callback(object); }
template<class _Object> static devcb2_base &set_out1_callback(device_t &device, _Object object) { return downcast<ptm6840_device &>(device).m_out1_cb.set_callback(object); }
template<class _Object> static devcb2_base &set_out2_callback(device_t &device, _Object object) { return downcast<ptm6840_device &>(device).m_out2_cb.set_callback(object); }
template<class _Object> static devcb2_base &set_irq_callback(device_t &device, _Object object) { return downcast<ptm6840_device &>(device).m_irq_cb.set_callback(object); }
int status(int clock) const { return m_enabled[clock]; } // get whether timer is enabled int status(int clock) const { return m_enabled[clock]; } // get whether timer is enabled
int irq_state() const { return m_IRQ; } // get IRQ state int irq_state() const { return m_IRQ; } // get IRQ state
@ -104,8 +106,13 @@ private:
PTM_6840_LSB3 = 7, PTM_6840_LSB3 = 7,
}; };
devcb_resolved_write8 m_out_func[3]; // function to call when output[idx] changes double m_internal_clock;
devcb_resolved_write_line m_irq_func; // function called if IRQ line changes 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_control_reg[3];
UINT8 m_output[3]; // Output states UINT8 m_output[3]; // Output states

View File

@ -249,15 +249,6 @@ WRITE8_MEMBER(arachnid_state::ptm_o1_callback)
m_speaker->level_w(data); 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) UINT8 arachnid_state::read_keyboard(int pa)
{ {
int i; int i;
@ -455,7 +446,10 @@ static MACHINE_CONFIG_START( arachnid, arachnid_state )
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.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 MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************

View File

@ -71,14 +71,6 @@ WRITE_LINE_MEMBER(cchasm_state::cchasm_6840_irq)
m_maincpu->set_input_line(4, state ? ASSERT_LINE : CLEAR_LINE); 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 * Port definitions
@ -192,7 +184,10 @@ static MACHINE_CONFIG_START( cchasm, cchasm_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* 6840 PTM */ /* 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 MACHINE_CONFIG_END

View File

@ -44,15 +44,6 @@ WRITE_LINE_MEMBER(esripsys_state::ptm_irq)
m_soundcpu->set_input_line(M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); 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 * i8251A UART
@ -716,7 +707,10 @@ static MACHINE_CONFIG_START( esripsys, esripsys_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* 6840 PTM */ /* 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 MACHINE_CONFIG_END

View File

@ -219,13 +219,6 @@ static GFXDECODE_START( ginganin )
GFXDECODE_END GFXDECODE_END
void ginganin_state::machine_start() void ginganin_state::machine_start()
{ {
save_item(NAME(m_layers_ctrl)); save_item(NAME(m_layers_ctrl));
@ -238,19 +231,11 @@ void ginganin_state::machine_reset()
m_flipscreen = 0; m_flipscreen = 0;
} }
WRITE8_MEMBER(ginganin_state::ptm_irq) WRITE8_MEMBER(ginganin_state::ptm_irq)
{ {
m_audiocpu->set_input_line(0, (data & 1) ? ASSERT_LINE : CLEAR_LINE); 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 ) 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_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 */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)

View File

@ -120,15 +120,6 @@ WRITE_LINE_MEMBER(guab_state::ptm_irq)
m_maincpu->set_input_line(INT_6840PTM, state); 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 * Video hardware
@ -814,7 +805,10 @@ static MACHINE_CONFIG_START( guab, guab_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* 6840 PTM */ /* 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 MACHINE_CONFIG_END

View File

@ -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 * 6850 ACIAs
@ -667,7 +658,11 @@ static MACHINE_CONFIG_START( jpmsys5v, jpmsys5_state )
MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq)) MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq))
/* 6840 PTM */ /* 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 MACHINE_CONFIG_END
READ16_MEMBER(jpmsys5_state::mux_awp_r) 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)) MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq))
/* 6840 PTM */ /* 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) MCFG_DEFAULT_LAYOUT(layout_jpmsys5)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -919,7 +918,11 @@ MACHINE_CONFIG_START( jpmsys5, jpmsys5_state )
MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq)) MCFG_PIA_IRQB_HANDLER(WRITELINE(jpmsys5_state, pia_irq))
/* 6840 PTM */ /* 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) MCFG_DEFAULT_LAYOUT(layout_jpmsys5)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -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 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)) MCFG_TIMER_DRIVER_ADD_PERIODIC("555_ic10", mpu3_state, ic10_callback, PERIOD_OF_555_ASTABLE(10000,1000,0.0000001))
/* 6840 PTM */ /* 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_DEVICE_ADD("pia_ic3", PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(mpu3_state, pia_ic3_porta_r)) MCFG_PIA_READPA_HANDLER(READ8(mpu3_state, pia_ic3_porta_r))

View File

@ -568,18 +568,6 @@ WRITE8_MEMBER(mpu4_state::ic2_o3_callback)
m_6840ptm->set_c1(data); 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 */ /* 6821 PIA handlers */
/* IC3, lamp data lines + alpha numeric display */ /* IC3, lamp data lines + alpha numeric display */
WRITE8_MEMBER(mpu4_state::pia_ic3_porta_w) 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 for MPU4 board */
INPUT_PORTS_START( mpu4 ) INPUT_PORTS_START( mpu4 )
PORT_START("ORANGE1") PORT_START("ORANGE1")
@ -2616,7 +2593,13 @@ MACHINE_CONFIG_FRAGMENT( mpu4_common )
MCFG_MSC1937_ADD("vfd",0) MCFG_MSC1937_ADD("vfd",0)
/* 6840 PTM */ /* 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_DEVICE_ADD("pia_ic3", PIA6821, 0)
MCFG_PIA_WRITEPA_HANDLER(WRITE8(mpu4_state, pia_ic3_porta_w)) MCFG_PIA_WRITEPA_HANDLER(WRITE8(mpu4_state, pia_ic3_porta_w))
@ -2672,7 +2655,13 @@ MACHINE_CONFIG_FRAGMENT( mpu4_common )
MACHINE_CONFIG_END MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( mpu4_common2 ) 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_DEVICE_ADD("pia_ic4ss", PIA6821, 0)
MCFG_PIA_READPB_HANDLER(READ8(mpu4_state, pia_gb_portb_r)) MCFG_PIA_READPB_HANDLER(READ8(mpu4_state, pia_gb_portb_r))

View File

@ -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 = static const gfx_layout mpu4_vid_char_8x8_layout =
{ {
8,8, 8,8,
@ -1439,7 +1427,13 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state )
MCFG_PALETTE_ADD("palette", 16) 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 */ /* Present on all video cards */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SAA1099_ADD("saa", 8000000) MCFG_SAA1099_ADD("saa", 8000000)

View File

@ -651,14 +651,6 @@ WRITE_LINE_MEMBER(vpoker_state::ptm_irq)
m_maincpu->set_input_line(M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); 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 ) static MACHINE_CONFIG_START( vpoker, vpoker_state )
/* basic machine hardware */ /* basic machine hardware */
@ -681,7 +673,10 @@ static MACHINE_CONFIG_START( vpoker, vpoker_state )
MCFG_PALETTE_INIT_OWNER(vpoker_state, vpoker) MCFG_PALETTE_INIT_OWNER(vpoker_state, vpoker)
/* 6840 PTM */ /* 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 */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -150,20 +150,6 @@ INPUT_PORTS_END
// DEVICE CONFIGURATION // 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 ) // COM8116_INTERFACE( dbrg_intf )
@ -238,7 +224,9 @@ static MACHINE_CONFIG_START( ob68k1a, ob68k1a_state )
// devices // devices
MCFG_DEVICE_ADD(MC6821_0_TAG, PIA6821, 0) MCFG_DEVICE_ADD(MC6821_0_TAG, PIA6821, 0)
MCFG_DEVICE_ADD(MC6821_1_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_DEVICE_ADD(MC6850_0_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_txd))

View File

@ -52,6 +52,8 @@ public:
m_pia0(*this, "pia0"), m_pia0(*this, "pia0"),
m_pia1(*this, "pia1"), m_pia1(*this, "pia1"),
m_acia(*this, "acia"), m_acia(*this, "acia"),
m_ptm(*this, "ptm"),
m_speaker(*this, "speaker"),
m_videoram(*this, "videoram") m_videoram(*this, "videoram")
{ {
} }
@ -60,6 +62,8 @@ public:
DECLARE_READ8_MEMBER(pia1_b_in); DECLARE_READ8_MEMBER(pia1_b_in);
DECLARE_READ8_MEMBER(videoram_r); DECLARE_READ8_MEMBER(videoram_r);
DECLARE_WRITE_LINE_MEMBER(write_acia_clock); DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
DECLARE_WRITE8_MEMBER( ptm_o2_callback );
DECLARE_WRITE8_MEMBER( ptm_o3_callback );
protected: protected:
virtual void machine_reset(); virtual void machine_reset();
@ -69,6 +73,8 @@ private:
required_device<pia6821_device> m_pia0; required_device<pia6821_device> m_pia0;
required_device<pia6821_device> m_pia1; required_device<pia6821_device> m_pia1;
required_device<acia6850_device> m_acia; required_device<acia6850_device> m_acia;
required_device<ptm6840_device> m_ptm;
required_device<speaker_sound_device> m_speaker;
required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_videoram;
UINT8 m_term_data; 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(0xe070,0xe070) Select Map 2
AM_RANGE(0xe800,0xebbf) AM_RAM AM_SHARE("videoram") AM_RANGE(0xe800,0xebbf) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xebc0,0xebff) AM_RAM 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(0xefc0,0xefff) AM_RAM
AM_RANGE(0xf000,0xffff) AM_ROM AM_RANGE(0xf000,0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -115,17 +121,6 @@ READ8_MEMBER( poly_state::pia1_b_in )
return data; 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 ) READ8_MEMBER( poly_state::videoram_r )
{ {
return m_videoram[offset]; return m_videoram[offset];
@ -145,6 +140,16 @@ WRITE_LINE_MEMBER( poly_state::write_acia_clock )
m_acia->write_rxc(state); 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 ) static MACHINE_CONFIG_START( poly, poly_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809E, XTAL_12MHz / 3) // 12.0576MHz 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_IRQA_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line))
MCFG_PIA_IRQB_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_DEVICE_ADD("acia", ACIA6850, 0)
//MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) //MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))

View File

@ -149,7 +149,12 @@ static MACHINE_CONFIG_START( swtpc09, swtpc09_state )
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd)) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts)) 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_DEVICE_ADD("pia", PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(swtpc09_state, pia0_a_r)) 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_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts)) 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_DEVICE_ADD("pia", PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(swtpc09_state, pia0_a_r)) 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_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts)) 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_DEVICE_ADD("pia", PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(swtpc09_state, pia0_a_r)) MCFG_PIA_READPA_HANDLER(READ8(swtpc09_state, pia0_a_r))

View File

@ -283,17 +283,6 @@ WRITE8_MEMBER( tavernie_state::pa_ivg_w )
// bits 0-3 are attribute bits // 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 ) WRITE8_MEMBER( tavernie_state::kbd_put )
{ {
m_term_data = data; 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_IRQA_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line))
MCFG_PIA_IRQB_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_DEVICE_ADD("acia", ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))

View File

@ -80,8 +80,8 @@ public:
{ {
} }
DECLARE_WRITE_LINE_MEMBER(speaker_en_w); DECLARE_WRITE8_MEMBER(speaker_en_w);
DECLARE_WRITE_LINE_MEMBER(speaker_w); DECLARE_WRITE8_MEMBER(speaker_w);
DECLARE_READ8_MEMBER(pb_r); DECLARE_READ8_MEMBER(pb_r);
DECLARE_WRITE8_MEMBER(pa_w); DECLARE_WRITE8_MEMBER(pa_w);
DECLARE_WRITE8_MEMBER(videoram_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 // this should output 1 to enable sound, then output 0 after a short time
// however it continuously outputs 1 // 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) // 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 ) static SLOT_INTERFACE_START( v6809_floppies )
SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
SLOT_INTERFACE_END 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_IRQA_HANDLER(DEVWRITELINE("maincpu", m6809_device, irq_line))
MCFG_PIA_IRQB_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) MCFG_DEVICE_ADD("acia0", ACIA6850, 0)

View File

@ -140,6 +140,5 @@ public:
/*----------- defined in machine/swtpc09.c -----------*/ /*----------- defined in machine/swtpc09.c -----------*/
extern const wd17xx_interface swtpc09_wd17xx_interface; extern const wd17xx_interface swtpc09_wd17xx_interface;
extern const ptm6840_interface swtpc09_6840_intf;
#endif /* swtpc09_H_ */ #endif /* swtpc09_H_ */

View File

@ -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. // 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. // 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 // 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_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_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_DEVICE_ADD("ptmclock", CLOCK, 250000)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(apollo_state, apollo_ptm_timer_tick)) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(apollo_state, apollo_ptm_timer_tick))

View File

@ -25,14 +25,6 @@
/******* MC6840 PTM on MPID Board *******/ /******* 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 */ /* 6840 PTM handlers */
WRITE8_MEMBER( swtpc09_state::ptm_o1_callback ) WRITE8_MEMBER( swtpc09_state::ptm_o1_callback )