mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
ptm6840_device: converted to devcb2 (nw)
This commit is contained in:
parent
c1b6a6a013
commit
5b6c5585b1
@ -24,16 +24,11 @@ const device_type A2BUS_MIDI = &device_creator<a2bus_midi_device>;
|
||||
#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))
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
: 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
|
||||
//-------------------------------------------------
|
||||
|
||||
void ptm6840_device::device_start()
|
||||
{
|
||||
m_internal_clock = m_internal_clock;
|
||||
// resolve callbacks
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
m_out_func[i].resolve(m_out_cb[i], *this);
|
||||
}
|
||||
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++)
|
||||
{
|
||||
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;
|
||||
|
@ -19,40 +19,42 @@
|
||||
// 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<ptm6840_device &>(device).m_internal_clock = clock; }
|
||||
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 irq_state() const { return m_IRQ; } // get IRQ state
|
||||
@ -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
|
||||
|
@ -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
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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))
|
||||
|
@ -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,7 +2593,13 @@ 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))
|
||||
@ -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))
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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))
|
||||
|
@ -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<pia6821_device> m_pia0;
|
||||
required_device<pia6821_device> m_pia1;
|
||||
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;
|
||||
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))
|
||||
|
@ -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))
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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_ */
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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 )
|
||||
|
Loading…
Reference in New Issue
Block a user