cdp1802: devcb2. (nw)

This commit is contained in:
Curt Coder 2014-02-26 16:10:25 +00:00
parent 223af5e6bc
commit ada07d7415
20 changed files with 213 additions and 453 deletions

View File

@ -275,6 +275,16 @@ cosmac_device::cosmac_device(const machine_config &mconfig, device_type type, co
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
m_program_config("program", ENDIANNESS_LITTLE, 8, 16),
m_io_config("io", ENDIANNESS_LITTLE, 8, 3),
m_read_wait(*this),
m_read_clear(*this),
m_read_ef1(*this),
m_read_ef2(*this),
m_read_ef3(*this),
m_read_ef4(*this),
m_write_q(*this),
m_read_dma(*this),
m_write_dma(*this),
m_write_sc(*this),
m_op(0),
m_state(COSMAC_STATE_1_RESET),
m_mode(COSMAC_MODE_RESET),
@ -286,7 +296,7 @@ cosmac_device::cosmac_device(const machine_config &mconfig, device_type type, co
m_direct(NULL)
{
for (int i = 0; i < 4; i++)
EF[i] = CLEAR_LINE;
m_ef[i] = CLEAR_LINE;
}
@ -310,33 +320,24 @@ cdp1802_device::cdp1802_device(const machine_config &mconfig, const char *tag, d
}
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
void cosmac_device::device_config_complete()
{
// inherit a copy of the static data
const cosmac_interface *intf = reinterpret_cast<const cosmac_interface *>(static_config());
if (intf != NULL)
*static_cast<cosmac_interface *>(this) = *intf;
// or error out if none provided
else
{
fatalerror("COSMAC_INTERFACE for cpu '%s' not defined!\n", tag());
}
}
//-------------------------------------------------
// device_start - start up the device
//-------------------------------------------------
void cosmac_device::device_start()
{
// resolve callbacks
m_read_wait.resolve_safe(0);
m_read_clear.resolve_safe(0);
m_read_ef1.resolve();
m_read_ef2.resolve();
m_read_ef3.resolve();
m_read_ef4.resolve();
m_write_q.resolve_safe();
m_read_dma.resolve_safe(0);
m_write_dma.resolve_safe();
m_write_sc.resolve_safe();
// get our address spaces
m_program = &space(AS_PROGRAM);
m_direct = &m_program->direct();
@ -363,20 +364,6 @@ void cosmac_device::device_start()
state_add(COSMAC_IE, "IE", m_ie).mask(0x1).noshow();
state_add(COSMAC_Q, "Q", m_q).mask(0x1).noshow();
// resolve callbacks
m_in_wait_func.resolve(m_in_wait_cb, *this);
m_in_clear_func.resolve(m_in_clear_cb, *this);
m_in_ef_func[0].resolve(m_in_ef1_cb, *this);
m_in_ef_func[1].resolve(m_in_ef2_cb, *this);
m_in_ef_func[2].resolve(m_in_ef3_cb, *this);
m_in_ef_func[3].resolve(m_in_ef4_cb, *this);
m_out_q_func.resolve(m_out_q_cb, *this);
m_in_dma_func.resolve(m_in_dma_cb, *this);
m_out_dma_func.resolve(m_out_dma_cb, *this);
m_out_sc_func.resolve(m_out_sc_cb, *this);
m_out_tpa_func.resolve(m_out_tpa_cb, *this);
m_out_tpb_func.resolve(m_out_tpb_cb, *this);
// register our state for saving
save_item(NAME(m_op));
save_item(NAME(m_flagsio));
@ -813,8 +800,8 @@ inline void cosmac_device::debug()
inline void cosmac_device::sample_wait_clear()
{
int wait = m_in_wait_func();
int clear = m_in_clear_func();
int wait = m_read_wait();
int clear = m_read_clear();
m_pmode = m_mode;
m_mode = (cosmac_mode) ((clear << 1) | wait);
@ -827,13 +814,10 @@ inline void cosmac_device::sample_wait_clear()
inline void cosmac_device::sample_ef_lines()
{
for (int i = 0; i < 4; i++)
{
if (!m_in_ef_func[i].isnull())
{
EF[i] = m_in_ef_func[i]();
}
}
if (!m_read_ef1.isnull()) EF[0] = m_read_ef1();
if (!m_read_ef2.isnull()) EF[1] = m_read_ef2();
if (!m_read_ef3.isnull()) EF[2] = m_read_ef3();
if (!m_read_ef4.isnull()) EF[3] = m_read_ef4();
}
@ -843,7 +827,7 @@ inline void cosmac_device::sample_ef_lines()
inline void cosmac_device::output_state_code()
{
m_out_sc_func(0, COSMAC_STATE_CODE[m_state]);
m_write_sc((offs_t)0, COSMAC_STATE_CODE[m_state]);
}
@ -855,7 +839,7 @@ inline void cosmac_device::set_q_flag(int state)
{
Q = state;
m_out_q_func(Q);
m_write_q(Q);
}
@ -958,7 +942,7 @@ inline void cosmac_device::execute_instruction()
inline void cosmac_device::dma_input()
{
RAM_W(R[0], m_in_dma_func(R[0]));
RAM_W(R[0], m_read_dma(R[0]));
R[0]++;
@ -995,7 +979,7 @@ inline void cosmac_device::dma_input()
inline void cosmac_device::dma_output()
{
m_out_dma_func(R[0], RAM_R(R[0]));
m_write_dma((offs_t)R[0], RAM_R(R[0]));
R[0]++;

View File

@ -85,6 +85,43 @@
#define __COSMAC_H__
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_COSMAC_WAIT_CALLBACK(_read) \
devcb = &cosmac_device::set_wait_rd_callback(*device, DEVCB2_##_read);
#define MCFG_COSMAC_CLEAR_CALLBACK(_read) \
devcb = &cosmac_device::set_clear_rd_callback(*device, DEVCB2_##_read);
#define MCFG_COSMAC_EF1_CALLBACK(_read) \
devcb = &cosmac_device::set_ef1_rd_callback(*device, DEVCB2_##_read);
#define MCFG_COSMAC_EF2_CALLBACK(_read) \
devcb = &cosmac_device::set_ef2_rd_callback(*device, DEVCB2_##_read);
#define MCFG_COSMAC_EF3_CALLBACK(_read) \
devcb = &cosmac_device::set_ef3_rd_callback(*device, DEVCB2_##_read);
#define MCFG_COSMAC_EF4_CALLBACK(_read) \
devcb = &cosmac_device::set_ef4_rd_callback(*device, DEVCB2_##_read);
#define MCFG_COSMAC_Q_CALLBACK(_write) \
devcb = &cosmac_device::set_q_wr_callback(*device, DEVCB2_##_write);
#define MCFG_COSMAC_DMAR_CALLBACK(_read) \
devcb = &cosmac_device::set_dma_rd_callback(*device, DEVCB2_##_read);
#define MCFG_COSMAC_DMAW_CALLBACK(_write) \
devcb = &cosmac_device::set_dma_wr_callback(*device, DEVCB2_##_write);
#define MCFG_COSMAC_SC_CALLBACK(_write) \
devcb = &cosmac_device::set_sc_wr_callback(*device, DEVCB2_##_write);
//**************************************************************************
// ENUMERATIONS
//**************************************************************************
@ -146,48 +183,34 @@ enum cosmac_state_code
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> cosmac_interface
struct cosmac_interface
{
devcb_read_line m_in_wait_cb;
devcb_read_line m_in_clear_cb;
devcb_read_line m_in_ef1_cb;
devcb_read_line m_in_ef2_cb;
devcb_read_line m_in_ef3_cb;
devcb_read_line m_in_ef4_cb;
devcb_write_line m_out_q_cb;
devcb_read8 m_in_dma_cb;
devcb_write8 m_out_dma_cb;
devcb_write8 m_out_sc_cb;
devcb_write_line m_out_tpa_cb;
devcb_write_line m_out_tpb_cb;
};
#define COSMAC_INTERFACE(name) \
const cosmac_interface (name) =
// ======================> cosmac_device
class cosmac_device : public cpu_device,
public cosmac_interface
class cosmac_device : public cpu_device
{
public:
// construction/destruction
cosmac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
template<class _Object> static devcb2_base &set_wait_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_wait.set_callback(object); }
template<class _Object> static devcb2_base &set_clear_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_clear.set_callback(object); }
template<class _Object> static devcb2_base &set_ef1_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef1.set_callback(object); }
template<class _Object> static devcb2_base &set_ef2_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef2.set_callback(object); }
template<class _Object> static devcb2_base &set_ef3_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef3.set_callback(object); }
template<class _Object> static devcb2_base &set_ef4_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef4.set_callback(object); }
template<class _Object> static devcb2_base &set_q_wr_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_write_q.set_callback(object); }
template<class _Object> static devcb2_base &set_dma_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_dma.set_callback(object); }
template<class _Object> static devcb2_base &set_dma_wr_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_write_dma.set_callback(object); }
template<class _Object> static devcb2_base &set_sc_wr_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_write_sc.set_callback(object); }
// public interfaces
offs_t get_memory_address();
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
@ -343,15 +366,16 @@ protected:
const address_space_config m_io_config;
// device callbacks
devcb_resolved_read_line m_in_wait_func;
devcb_resolved_read_line m_in_clear_func;
devcb_resolved_read_line m_in_ef_func[4];
devcb_resolved_write_line m_out_q_func;
devcb_resolved_read8 m_in_dma_func;
devcb_resolved_write8 m_out_dma_func;
devcb_resolved_write8 m_out_sc_func;
devcb_resolved_write_line m_out_tpa_func;
devcb_resolved_write_line m_out_tpb_func;
devcb2_read_line m_read_wait;
devcb2_read_line m_read_clear;
devcb2_read_line m_read_ef1;
devcb2_read_line m_read_ef2;
devcb2_read_line m_read_ef3;
devcb2_read_line m_read_ef4;
devcb2_write_line m_write_q;
devcb2_read8 m_read_dma;
devcb2_write8 m_write_dma;
devcb2_write8 m_write_sc;
// control modes
enum cosmac_mode

View File

@ -14,22 +14,6 @@ WRITE_LINE_MEMBER( cidelsa_state::q_w )
m_cdp1802_q = state;
}
static COSMAC_INTERFACE( cidelsa_cdp1802_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(cidelsa_state, clear_r),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(cidelsa_state, q_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
/* Sound Interface */
WRITE8_MEMBER( draco_state::sound_bankswitch_w )
@ -464,7 +448,10 @@ static MACHINE_CONFIG_START( destryer, cidelsa_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, DESTRYER_CHR1)
MCFG_CPU_PROGRAM_MAP(destryer_map)
MCFG_CPU_IO_MAP(destryer_io_map)
MCFG_CPU_CONFIG(cidelsa_cdp1802_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(cidelsa_state, clear_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(cidelsa_state, q_w))
MCFG_NVRAM_ADD_0FILL("nvram")
/* sound and video hardware */
@ -476,7 +463,10 @@ static MACHINE_CONFIG_START( destryera, cidelsa_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, DESTRYER_CHR1)
MCFG_CPU_PROGRAM_MAP(destryera_map)
MCFG_CPU_IO_MAP(destryer_io_map)
MCFG_CPU_CONFIG(cidelsa_cdp1802_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(cidelsa_state, clear_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(cidelsa_state, q_w))
MCFG_NVRAM_ADD_0FILL("nvram")
/* sound and video hardware */
@ -488,7 +478,10 @@ static MACHINE_CONFIG_START( altair, cidelsa_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, ALTAIR_CHR1)
MCFG_CPU_PROGRAM_MAP(altair_map)
MCFG_CPU_IO_MAP(altair_io_map)
MCFG_CPU_CONFIG(cidelsa_cdp1802_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(cidelsa_state, clear_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(cidelsa_state, q_w))
MCFG_NVRAM_ADD_0FILL("nvram")
/* input/output hardware */
@ -506,7 +499,10 @@ static MACHINE_CONFIG_START( draco, draco_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, DRACO_CHR1)
MCFG_CPU_PROGRAM_MAP(draco_map)
MCFG_CPU_IO_MAP(draco_io_map)
MCFG_CPU_CONFIG(cidelsa_cdp1802_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(cidelsa_state, clear_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(cidelsa_state, q_w))
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_CPU_ADD(COP402N_TAG, COP402, DRACO_SND_CHR1)

View File

@ -43,27 +43,10 @@ DRIVER_INIT_MEMBER(play_1_state,play_1)
{
}
static COSMAC_INTERFACE( cdp1802_config )
{
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_CONFIG_START( play_1, play_1_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", CDP1802, 400000)
MCFG_CPU_PROGRAM_MAP(play_1_map)
MCFG_CPU_CONFIG(cdp1802_config)
MACHINE_CONFIG_END
/*-------------------------------------------------------------------

View File

@ -40,27 +40,10 @@ DRIVER_INIT_MEMBER(play_2_state,play_2)
{
}
static COSMAC_INTERFACE( cdp1802_config )
{
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_CONFIG_START( play_2, play_2_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", CDP1802, 2950000)
MCFG_CPU_PROGRAM_MAP(play_2_map)
MCFG_CPU_CONFIG(cdp1802_config)
MACHINE_CONFIG_END
/*-------------------------------------------------------------------

View File

@ -44,27 +44,10 @@ DRIVER_INIT_MEMBER(play_3_state,play_3)
{
}
static COSMAC_INTERFACE( cdp1802_config )
{
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_CONFIG_START( play_3, play_3_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", CDP1802, 2950000)
MCFG_CPU_PROGRAM_MAP(play_3_map)
MCFG_CPU_CONFIG(cdp1802_config)
MACHINE_CONFIG_END
/*-------------------------------------------------------------------

View File

@ -41,27 +41,10 @@ DRIVER_INIT_MEMBER(play_5_state,play_5)
{
}
static COSMAC_INTERFACE( cdp1802_config )
{
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_CONFIG_START( play_5, play_5_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", CDP1802, 2950000)
MCFG_CPU_PROGRAM_MAP(play_5_map)
MCFG_CPU_CONFIG(cdp1802_config)
MACHINE_CONFIG_END
/*-------------------------------------------------------------------

View File

@ -514,22 +514,6 @@ WRITE8_MEMBER( comx35_state::sc_w )
}
}
static COSMAC_INTERFACE( cosmac_intf )
{
DEVCB_LINE_VCC, // wait
DEVCB_DRIVER_LINE_MEMBER(comx35_state, clear_r),// clear
DEVCB_NULL, // EF1
DEVCB_DRIVER_LINE_MEMBER(comx35_state, ef2_r), // EF2
DEVCB_NULL, // EF3
DEVCB_DRIVER_LINE_MEMBER(comx35_state, ef4_r), // EF4
DEVCB_DRIVER_LINE_MEMBER(comx35_state, q_w), // Q
DEVCB_NULL, // DMA in
DEVCB_NULL, // DMA out
DEVCB_DRIVER_MEMBER(comx35_state, sc_w), // SC
DEVCB_NULL, // TPA
DEVCB_NULL // TPB
};
//-------------------------------------------------
// cassette_interface cassette_intf
@ -634,7 +618,12 @@ static MACHINE_CONFIG_START( pal, comx35_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1869_CPU_CLK_PAL)
MCFG_CPU_PROGRAM_MAP(comx35_mem)
MCFG_CPU_IO_MAP(comx35_io)
MCFG_CPU_CONFIG(cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(comx35_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(comx35_state, ef2_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(comx35_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(comx35_state, q_w))
MCFG_COSMAC_SC_CALLBACK(WRITE8(comx35_state, sc_w))
// sound and video hardware
MCFG_FRAGMENT_ADD(comx35_pal_video)
@ -677,7 +666,12 @@ static MACHINE_CONFIG_START( ntsc, comx35_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1869_CPU_CLK_NTSC)
MCFG_CPU_PROGRAM_MAP(comx35_mem)
MCFG_CPU_IO_MAP(comx35_io)
MCFG_CPU_CONFIG(cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(comx35_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(comx35_state, ef2_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(comx35_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(comx35_state, q_w))
MCFG_COSMAC_SC_CALLBACK(WRITE8(comx35_state, sc_w))
// sound and video hardware
MCFG_FRAGMENT_ADD(comx35_ntsc_video)

View File

@ -449,23 +449,6 @@ WRITE8_MEMBER( cosmicos_state::sc_w )
m_sc1 = sc1;
}
static COSMAC_INTERFACE( cosmicos_config )
{
DEVCB_DRIVER_LINE_MEMBER(cosmicos_state, wait_r),
DEVCB_DRIVER_LINE_MEMBER(cosmicos_state, clear_r),
DEVCB_DRIVER_LINE_MEMBER(cosmicos_state, ef1_r),
DEVCB_DRIVER_LINE_MEMBER(cosmicos_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(cosmicos_state, ef3_r),
DEVCB_DRIVER_LINE_MEMBER(cosmicos_state, ef4_r),
DEVCB_DRIVER_LINE_MEMBER(cosmicos_state, q_w),
DEVCB_DRIVER_MEMBER(cosmicos_state, dma_r),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(cosmicos_state, sc_w),
DEVCB_NULL,
DEVCB_NULL
};
/* Machine Initialization */
void cosmicos_state::machine_start()
@ -538,7 +521,15 @@ static MACHINE_CONFIG_START( cosmicos, cosmicos_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz)
MCFG_CPU_PROGRAM_MAP(cosmicos_mem)
MCFG_CPU_IO_MAP(cosmicos_io)
MCFG_CPU_CONFIG(cosmicos_config)
MCFG_COSMAC_WAIT_CALLBACK(READLINE(cosmicos_state, wait_r))
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(cosmicos_state, clear_r))
MCFG_COSMAC_EF1_CALLBACK(READLINE(cosmicos_state, ef1_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(cosmicos_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(cosmicos_state, ef3_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(cosmicos_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(cosmicos_state, q_w))
MCFG_COSMAC_DMAR_CALLBACK(READ8(cosmicos_state, dma_r))
MCFG_COSMAC_SC_CALLBACK(WRITE8(cosmicos_state, sc_w))
/* video hardware */
MCFG_DEFAULT_LAYOUT( layout_cosmicos )

View File

@ -174,22 +174,6 @@ WRITE8_MEMBER( elf2_state::sc_w )
}
}
static COSMAC_INTERFACE( elf2_config )
{
DEVCB_DRIVER_LINE_MEMBER(elf2_state, wait_r),
DEVCB_DRIVER_LINE_MEMBER(elf2_state, clear_r),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(elf2_state, ef4_r),
DEVCB_DRIVER_LINE_MEMBER(elf2_state, q_w),
DEVCB_DRIVER_MEMBER(elf2_state, dma_r),
DEVCB_DEVICE_MEMBER(CDP1861_TAG, cdp1861_device, dma_w),
DEVCB_DRIVER_MEMBER(elf2_state, sc_w),
DEVCB_NULL,
DEVCB_NULL
};
/* MM74C923 Interface */
WRITE_LINE_MEMBER( elf2_state::da_w )
@ -285,7 +269,13 @@ static MACHINE_CONFIG_START( elf2, elf2_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_579545MHz/2)
MCFG_CPU_PROGRAM_MAP(elf2_mem)
MCFG_CPU_IO_MAP(elf2_io)
MCFG_CPU_CONFIG(elf2_config)
MCFG_COSMAC_WAIT_CALLBACK(READLINE(elf2_state, wait_r))
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(elf2_state, clear_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(elf2_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(elf2_state, q_w))
MCFG_COSMAC_DMAR_CALLBACK(READ8(elf2_state, dma_r))
MCFG_COSMAC_DMAW_CALLBACK(DEVWRITE8(CDP1861_TAG, cdp1861_device, dma_w))
MCFG_COSMAC_SC_CALLBACK(WRITE8(elf2_state, sc_w))
/* video hardware */
MCFG_DEFAULT_LAYOUT( layout_elf2 )

View File

@ -147,22 +147,6 @@ WRITE8_MEMBER( eti660_state::dma_w )
m_cti->dma_w(space, offset, data);
}
static COSMAC_INTERFACE( eti660_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(eti660_state, clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(eti660_state, ef2_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(eti660_state, ef4_r),
DEVCB_DRIVER_LINE_MEMBER(eti660_state, q_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(eti660_state, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
/* PIA6821 Interface */
READ8_MEMBER( eti660_state::pia_pa_r )
@ -228,7 +212,12 @@ static MACHINE_CONFIG_START( eti660, eti660_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_8_867238MHz/5)
MCFG_CPU_PROGRAM_MAP(eti660_map)
MCFG_CPU_IO_MAP(eti660_io_map)
MCFG_CPU_CONFIG(eti660_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(eti660_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(eti660_state, ef2_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(eti660_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(eti660_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(WRITE8(eti660_state, dma_w))
/* video hardware */
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL_8_867238MHz/5)

View File

@ -29,28 +29,12 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( microkit )
INPUT_PORTS_END
static COSMAC_INTERFACE( cosmac_intf )
{
DEVCB_LINE_VCC,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_CONFIG_START( microkit, microkit_state )
// basic machine hardware
MCFG_CPU_ADD("maincpu", CDP1801, 2000000)
MCFG_CPU_PROGRAM_MAP(microkit_mem)
MCFG_CPU_IO_MAP(microkit_io)
MCFG_CPU_CONFIG(cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MACHINE_CONFIG_END
ROM_START( microkit )

View File

@ -177,18 +177,20 @@ static const cassette_interface pecom_cassette_interface =
/* Machine driver */
static MACHINE_CONFIG_START( pecom64, pecom_state )
/* basic machine hardware */
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1869_DOT_CLK_PAL/3)
MCFG_CPU_PROGRAM_MAP(pecom64_mem)
MCFG_CPU_IO_MAP(pecom64_io)
MCFG_CPU_CONFIG(pecom64_cdp1802_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(pecom_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(pecom_state, ef2_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(pecom_state, q_w))
MCFG_COSMAC_SC_CALLBACK(WRITE8(pecom_state, sc_w))
// sound and video hardware
MCFG_FRAGMENT_ADD(pecom_video)
// devices
MCFG_CASSETTE_ADD( "cassette", pecom_cassette_interface )
MCFG_SOFTWARE_LIST_ADD("cass_list","pecom_cass")

View File

@ -416,22 +416,6 @@ WRITE_LINE_MEMBER( studio2_state::q_w )
m_beeper->set_state(state);
}
static COSMAC_INTERFACE( studio2_cosmac_intf )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(studio2_state, clear_r),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef3_r),
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef4_r),
DEVCB_DRIVER_LINE_MEMBER(studio2_state, q_w),
DEVCB_NULL,
DEVCB_DEVICE_MEMBER(CDP1861_TAG, cdp1861_device, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
WRITE8_MEMBER( visicom_state::dma_w )
{
int sx = m_screen->hpos() + 4;
@ -450,22 +434,6 @@ WRITE8_MEMBER( visicom_state::dma_w )
}
}
static COSMAC_INTERFACE( visicom_cosmac_intf )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(studio2_state, clear_r),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef3_r),
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef4_r),
DEVCB_DRIVER_LINE_MEMBER(studio2_state, q_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(visicom_state, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
WRITE8_MEMBER( mpt02_state::dma_w )
{
UINT8 addr = ((offset & 0xe0) >> 2) | (offset & 0x07);
@ -476,22 +444,6 @@ WRITE8_MEMBER( mpt02_state::dma_w )
m_cti->dma_w(space, offset, data);
}
static COSMAC_INTERFACE( mpt02_cosmac_intf )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(studio2_state, clear_r),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef3_r),
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef4_r),
DEVCB_DRIVER_LINE_MEMBER(studio2_state, q_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(mpt02_state, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
/* Machine Initialization */
void studio2_state::machine_start()
@ -578,7 +530,12 @@ static MACHINE_CONFIG_START( studio2, studio2_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, 1760000) /* the real clock is derived from an oscillator circuit */
MCFG_CPU_PROGRAM_MAP(studio2_map)
MCFG_CPU_IO_MAP(studio2_io_map)
MCFG_CPU_CONFIG(studio2_cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(studio2_state, clear_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(studio2_state, ef3_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(studio2_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(studio2_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(DEVWRITE8(CDP1861_TAG, cdp1861_device, dma_w))
/* video hardware */
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, 1760000)
@ -597,7 +554,12 @@ static MACHINE_CONFIG_START( visicom, visicom_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_579545MHz/2)
MCFG_CPU_PROGRAM_MAP(visicom_map)
MCFG_CPU_IO_MAP(visicom_io_map)
MCFG_CPU_CONFIG(visicom_cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(visicom_state, clear_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(visicom_state, ef3_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(visicom_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(visicom_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(WRITE8(visicom_state, dma_w))
/* video hardware */
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL_3_579545MHz/2)
@ -624,7 +586,12 @@ static MACHINE_CONFIG_START( mpt02, mpt02_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1864_CLOCK)
MCFG_CPU_PROGRAM_MAP(mpt02_map)
MCFG_CPU_IO_MAP(mpt02_io_map)
MCFG_CPU_CONFIG(mpt02_cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(mpt02_state, clear_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(mpt02_state, ef3_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(mpt02_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(mpt02_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(WRITE8(mpt02_state, dma_w))
/* video hardware */
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, CDP1864_CLOCK)

View File

@ -494,22 +494,6 @@ WRITE_LINE_MEMBER( tmc1800_state::q_w )
m_cassette->output(state ? 1.0 : -1.0);
}
static COSMAC_INTERFACE( tmc1800_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, ef3_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, q_w),
DEVCB_NULL,
DEVCB_DEVICE_MEMBER(CDP1861_TAG, cdp1861_device, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
// Oscom 1000B
READ_LINE_MEMBER( osc1000b_state::clear_r )
@ -532,22 +516,6 @@ WRITE_LINE_MEMBER( osc1000b_state::q_w )
m_cassette->output(state ? 1.0 : -1.0);
}
static COSMAC_INTERFACE( osc1000b_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(osc1000b_state, clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(osc1000b_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(osc1000b_state, ef3_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(osc1000b_state, q_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
// Telmac 2000
READ_LINE_MEMBER( tmc2000_state::clear_r )
@ -587,22 +555,6 @@ WRITE8_MEMBER( tmc2000_state::dma_w )
m_cti->dma_w(space, offset, data);
}
static COSMAC_INTERFACE( tmc2000_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(tmc2000_state, clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc2000_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(tmc2000_state, ef3_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc2000_state, q_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(tmc2000_state, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
// OSCOM Nano
READ_LINE_MEMBER( nano_state::clear_r )
@ -640,22 +592,6 @@ WRITE_LINE_MEMBER( nano_state::q_w )
m_cassette->output(state ? 1.0 : -1.0);
}
static COSMAC_INTERFACE( nano_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(nano_state, clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(nano_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(nano_state, ef3_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(nano_state, q_w),
DEVCB_NULL,
DEVCB_DEVICE_MEMBER(CDP1864_TAG, cdp1864_device, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
/* Machine Initialization */
// Telmac 1800
@ -788,7 +724,12 @@ static MACHINE_CONFIG_START( tmc1800, tmc1800_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz)
MCFG_CPU_PROGRAM_MAP(tmc1800_map)
MCFG_CPU_IO_MAP(tmc1800_io_map)
MCFG_CPU_CONFIG(tmc1800_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(tmc1800_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(tmc1800_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(tmc1800_state, ef3_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(tmc1800_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(DEVWRITE8(CDP1861_TAG, cdp1861_device, dma_w))
// video hardware
MCFG_FRAGMENT_ADD(tmc1800_video)
@ -814,7 +755,11 @@ static MACHINE_CONFIG_START( osc1000b, osc1000b_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz)
MCFG_CPU_PROGRAM_MAP(osc1000b_map)
MCFG_CPU_IO_MAP(osc1000b_io_map)
MCFG_CPU_CONFIG(osc1000b_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(osc1000b_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(osc1000b_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(osc1000b_state, ef3_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(osc1000b_state, q_w))
// video hardware
MCFG_FRAGMENT_ADD(osc1000b_video)
@ -840,7 +785,12 @@ static MACHINE_CONFIG_START( tmc2000, tmc2000_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz)
MCFG_CPU_PROGRAM_MAP(tmc2000_map)
MCFG_CPU_IO_MAP(tmc2000_io_map)
MCFG_CPU_CONFIG(tmc2000_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(tmc2000_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(tmc2000_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(tmc2000_state, ef3_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(tmc2000_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(WRITE8(tmc2000_state, dma_w))
// video hardware
MCFG_FRAGMENT_ADD(tmc2000_video)
@ -860,7 +810,12 @@ static MACHINE_CONFIG_START( nano, nano_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz)
MCFG_CPU_PROGRAM_MAP(nano_map)
MCFG_CPU_IO_MAP(nano_io_map)
MCFG_CPU_CONFIG(nano_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(nano_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(nano_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(nano_state, ef3_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(nano_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(DEVWRITE8(CDP1864_TAG, cdp1864_device, dma_w))
// video hardware
MCFG_FRAGMENT_ADD(nano_video)

View File

@ -253,21 +253,6 @@ WRITE8_MEMBER( tmc2000e_state::dma_w )
m_cti->dma_w(space, offset, data);
}
static COSMAC_INTERFACE( tmc2000e_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(tmc2000e_state, clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc2000e_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(tmc2000e_state, ef3_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc2000e_state, q_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(tmc2000e_state, dma_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
/* Machine Initialization */
@ -311,7 +296,12 @@ static MACHINE_CONFIG_START( tmc2000e, tmc2000e_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz)
MCFG_CPU_PROGRAM_MAP(tmc2000e_map)
MCFG_CPU_IO_MAP(tmc2000e_io_map)
MCFG_CPU_CONFIG(tmc2000e_config)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(tmc2000e_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(tmc2000e_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(tmc2000e_state, ef3_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(tmc2000e_state, q_w))
MCFG_COSMAC_DMAW_CALLBACK(WRITE8(tmc2000e_state, dma_w))
// video hardware
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL_1_75MHz)

View File

@ -218,22 +218,6 @@ WRITE_LINE_MEMBER( tmc600_state::q_w )
m_cassette->output(state ? +1.0 : -1.0);
}
static COSMAC_INTERFACE( cosmac_intf )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(tmc600_state, clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc600_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(tmc600_state, ef3_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(tmc600_state, q_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
/* Machine Initialization */
void tmc600_state::machine_start()
@ -282,7 +266,11 @@ static MACHINE_CONFIG_START( tmc600, tmc600_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, 3579545) // ???
MCFG_CPU_PROGRAM_MAP(tmc600_map)
MCFG_CPU_IO_MAP(tmc600_io_map)
MCFG_CPU_CONFIG(cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(tmc600_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(tmc600_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(tmc600_state, ef3_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(tmc600_state, q_w))
// sound and video hardware
MCFG_FRAGMENT_ADD(tmc600_video)

View File

@ -506,22 +506,6 @@ WRITE8_MEMBER( vip_state::sc_w )
m_exp->sc_w(data);
}
static COSMAC_INTERFACE( cosmac_intf )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(vip_state, clear_r),
DEVCB_DRIVER_LINE_MEMBER(vip_state, ef1_r),
DEVCB_DRIVER_LINE_MEMBER(vip_state, ef2_r),
DEVCB_DRIVER_LINE_MEMBER(vip_state, ef3_r),
DEVCB_DRIVER_LINE_MEMBER(vip_state, ef4_r),
DEVCB_DRIVER_LINE_MEMBER(vip_state, q_w),
DEVCB_DRIVER_MEMBER(vip_state, dma_r),
DEVCB_DRIVER_MEMBER(vip_state, dma_w),
DEVCB_DRIVER_MEMBER(vip_state, sc_w),
DEVCB_NULL,
DEVCB_NULL
};
//-------------------------------------------------
// CDP1861_INTERFACE( vdc_intf )
@ -742,7 +726,16 @@ static MACHINE_CONFIG_START( vip, vip_state )
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_52128MHz/2)
MCFG_CPU_PROGRAM_MAP(vip_mem)
MCFG_CPU_IO_MAP(vip_io)
MCFG_CPU_CONFIG(cosmac_intf)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(vip_state, clear_r))
MCFG_COSMAC_EF1_CALLBACK(READLINE(vip_state, ef1_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(vip_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(vip_state, ef3_r))
MCFG_COSMAC_EF4_CALLBACK(READLINE(vip_state, ef4_r))
MCFG_COSMAC_Q_CALLBACK(WRITELINE(vip_state, q_w))
MCFG_COSMAC_DMAR_CALLBACK(READ8(vip_state, dma_r))
MCFG_COSMAC_DMAW_CALLBACK(WRITE8(vip_state, dma_w))
MCFG_COSMAC_SC_CALLBACK(WRITE8(vip_state, sc_w))
// video hardware
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL_3_52128MHz/2)

View File

@ -50,7 +50,7 @@ public:
TIMER_CALLBACK_MEMBER(reset_tick);
DECLARE_READ_LINE_MEMBER(clear_r);
DECLARE_READ_LINE_MEMBER(ef2_r);
DECLARE_WRITE_LINE_MEMBER(pecom64_q_w);
DECLARE_WRITE_LINE_MEMBER(q_w);
DECLARE_WRITE8_MEMBER( sc_w );
DECLARE_WRITE_LINE_MEMBER(pecom_prd_w);
@ -65,9 +65,6 @@ protected:
ioport_port *m_io_ports[26];
};
/*----------- defined in machine/pecom.c -----------*/
extern const cosmac_interface pecom64_cdp1802_config;
/* ---------- defined in video/pecom.c ---------- */
MACHINE_CONFIG_EXTERN( pecom_video );

View File

@ -150,7 +150,7 @@ static COSMAC_EF_READ( pecom64_ef_r )
return flags;
}
*/
WRITE_LINE_MEMBER(pecom_state::pecom64_q_w)
WRITE_LINE_MEMBER(pecom_state::q_w)
{
m_cassette->output(state ? -1.0 : +1.0);
}
@ -175,19 +175,3 @@ WRITE8_MEMBER(pecom_state::sc_w )
break;
}
}
COSMAC_INTERFACE( pecom64_cdp1802_config )
{
DEVCB_LINE_VCC,
DEVCB_DRIVER_LINE_MEMBER(pecom_state,clear_r),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(pecom_state,ef2_r),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(pecom_state,pecom64_q_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(pecom_state,sc_w),
DEVCB_NULL,
DEVCB_NULL
};