mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
cdp1802: devcb2. (nw)
This commit is contained in:
parent
223af5e6bc
commit
ada07d7415
@ -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]++;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
|
@ -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)
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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)
|
||||
|
@ -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 )
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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 );
|
||||
|
@ -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
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user