diff --git a/src/emu/cpu/cosmac/cosmac.c b/src/emu/cpu/cosmac/cosmac.c index f653aeca5a9..5d241b93b91 100644 --- a/src/emu/cpu/cosmac/cosmac.c +++ b/src/emu/cpu/cosmac/cosmac.c @@ -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(static_config()); - if (intf != NULL) - *static_cast(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]++; diff --git a/src/emu/cpu/cosmac/cosmac.h b/src/emu/cpu/cosmac/cosmac.h index 1e3215eaddf..93219f66219 100644 --- a/src/emu/cpu/cosmac/cosmac.h +++ b/src/emu/cpu/cosmac/cosmac.h @@ -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 static devcb2_base &set_wait_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_wait.set_callback(object); } + template static devcb2_base &set_clear_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_clear.set_callback(object); } + template static devcb2_base &set_ef1_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_ef1.set_callback(object); } + template static devcb2_base &set_ef2_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_ef2.set_callback(object); } + template static devcb2_base &set_ef3_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_ef3.set_callback(object); } + template static devcb2_base &set_ef4_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_ef4.set_callback(object); } + template static devcb2_base &set_q_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_q.set_callback(object); } + template static devcb2_base &set_dma_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_dma.set_callback(object); } + template static devcb2_base &set_dma_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_dma.set_callback(object); } + template static devcb2_base &set_sc_wr_callback(device_t &device, _Object object) { return downcast(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 diff --git a/src/mame/drivers/cidelsa.c b/src/mame/drivers/cidelsa.c index cf74c480963..8a8ea194da4 100644 --- a/src/mame/drivers/cidelsa.c +++ b/src/mame/drivers/cidelsa.c @@ -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) diff --git a/src/mame/drivers/play_1.c b/src/mame/drivers/play_1.c index 22a9dba92ec..ffdf692906d 100644 --- a/src/mame/drivers/play_1.c +++ b/src/mame/drivers/play_1.c @@ -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 /*------------------------------------------------------------------- diff --git a/src/mame/drivers/play_2.c b/src/mame/drivers/play_2.c index 592da3a700c..a7a3039ff1c 100644 --- a/src/mame/drivers/play_2.c +++ b/src/mame/drivers/play_2.c @@ -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 /*------------------------------------------------------------------- diff --git a/src/mame/drivers/play_3.c b/src/mame/drivers/play_3.c index e63299b1366..d7100c598e4 100644 --- a/src/mame/drivers/play_3.c +++ b/src/mame/drivers/play_3.c @@ -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 /*------------------------------------------------------------------- diff --git a/src/mame/drivers/play_5.c b/src/mame/drivers/play_5.c index ace280288dd..7a6df993601 100644 --- a/src/mame/drivers/play_5.c +++ b/src/mame/drivers/play_5.c @@ -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 /*------------------------------------------------------------------- diff --git a/src/mess/drivers/comx35.c b/src/mess/drivers/comx35.c index d33e3f3e492..8d475c45ad2 100644 --- a/src/mess/drivers/comx35.c +++ b/src/mess/drivers/comx35.c @@ -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) diff --git a/src/mess/drivers/cosmicos.c b/src/mess/drivers/cosmicos.c index 890c44e14e8..d20cb18cbcc 100644 --- a/src/mess/drivers/cosmicos.c +++ b/src/mess/drivers/cosmicos.c @@ -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 ) diff --git a/src/mess/drivers/elf.c b/src/mess/drivers/elf.c index 0de3065380d..69f5c44e87d 100644 --- a/src/mess/drivers/elf.c +++ b/src/mess/drivers/elf.c @@ -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 ) diff --git a/src/mess/drivers/eti660.c b/src/mess/drivers/eti660.c index dd66e0a5652..2a9733abecc 100644 --- a/src/mess/drivers/eti660.c +++ b/src/mess/drivers/eti660.c @@ -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) diff --git a/src/mess/drivers/microkit.c b/src/mess/drivers/microkit.c index a595285dbdf..556b16dffdf 100644 --- a/src/mess/drivers/microkit.c +++ b/src/mess/drivers/microkit.c @@ -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 ) diff --git a/src/mess/drivers/pecom.c b/src/mess/drivers/pecom.c index 7cc51d7a6e9..10fad81d030 100644 --- a/src/mess/drivers/pecom.c +++ b/src/mess/drivers/pecom.c @@ -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") diff --git a/src/mess/drivers/studio2.c b/src/mess/drivers/studio2.c index f6fcb33b631..f67b8a11245 100644 --- a/src/mess/drivers/studio2.c +++ b/src/mess/drivers/studio2.c @@ -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) diff --git a/src/mess/drivers/tmc1800.c b/src/mess/drivers/tmc1800.c index 3c2be0824f8..2b315ce870e 100644 --- a/src/mess/drivers/tmc1800.c +++ b/src/mess/drivers/tmc1800.c @@ -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) diff --git a/src/mess/drivers/tmc2000e.c b/src/mess/drivers/tmc2000e.c index 4c6e1e0d07d..9a3cb2bfc90 100644 --- a/src/mess/drivers/tmc2000e.c +++ b/src/mess/drivers/tmc2000e.c @@ -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) diff --git a/src/mess/drivers/tmc600.c b/src/mess/drivers/tmc600.c index c7edee3d003..23eb76e59ca 100644 --- a/src/mess/drivers/tmc600.c +++ b/src/mess/drivers/tmc600.c @@ -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) diff --git a/src/mess/drivers/vip.c b/src/mess/drivers/vip.c index 1e035490579..5aa70a7c401 100644 --- a/src/mess/drivers/vip.c +++ b/src/mess/drivers/vip.c @@ -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) diff --git a/src/mess/includes/pecom.h b/src/mess/includes/pecom.h index 9bc30bf6242..756fdc1be01 100644 --- a/src/mess/includes/pecom.h +++ b/src/mess/includes/pecom.h @@ -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 ); diff --git a/src/mess/machine/pecom.c b/src/mess/machine/pecom.c index 682f4c104b3..5cc255a06b4 100644 --- a/src/mess/machine/pecom.c +++ b/src/mess/machine/pecom.c @@ -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 -};