-devices/sound/cdp1869: Removed MCFG macros, nw

-video/cidelsa, comx35, pecom, tmc600: Removed MACHINE_CONFIG macros, nw
This commit is contained in:
mooglyguy 2018-12-31 01:05:07 +01:00
parent 5fbf0cbfac
commit f8efff0afe
5 changed files with 155 additions and 137 deletions

View File

@ -81,55 +81,14 @@
#include "emupal.h"
#include "screen.h"
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
// TYPE DEFINITIONS
//**************************************************************************
#define MCFG_CDP1869_ADD(_tag, _pixclock, _map) \
MCFG_DEVICE_ADD(_tag, CDP1869, _pixclock) \
MCFG_DEVICE_ADDRESS_MAP(0, _map)
#define MCFG_CDP1869_SCREEN_PAL_ADD(_cdptag, _tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_PAL, cdp1869_device::SCANLINE_VBLANK_END_PAL, cdp1869_device::SCANLINE_VBLANK_START_PAL)
#define MCFG_CDP1869_SCREEN_NTSC_ADD(_cdptag, _tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_NTSC, cdp1869_device::SCANLINE_VBLANK_END_NTSC, cdp1869_device::SCANLINE_VBLANK_START_NTSC)
#define MCFG_CDP1869_SET_SCREEN MCFG_VIDEO_SET_SCREEN
#define CDP1869_CHAR_RAM_READ_MEMBER(name) uint8_t name(uint16_t pma, uint8_t cma, uint8_t pmd)
#define CDP1869_CHAR_RAM_WRITE_MEMBER(name) void name(uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)
#define CDP1869_PCB_READ_MEMBER(name) int name(uint16_t pma, uint8_t cma, uint8_t pmd)
#define MCFG_CDP1869_PAL_NTSC_CALLBACK(_read) \
downcast<cdp1869_device &>(*device).set_pal_ntsc_rd_callback(DEVCB_##_read);
#define MCFG_CDP1869_PRD_CALLBACK(_write) \
downcast<cdp1869_device &>(*device).set_prd_wr_callback(DEVCB_##_write);
#define MCFG_CDP1869_COLOR_CLOCK(_clk) \
downcast<cdp1869_device &>(*device).set_color_clock(_clk);
#define MCFG_CDP1869_CHAR_RAM_READ_OWNER(_class, _method) \
downcast<cdp1869_device &>(*device).set_char_ram_read(cdp1869_device::char_ram_read_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(_class, _method) \
downcast<cdp1869_device &>(*device).set_char_ram_write(cdp1869_device::char_ram_write_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_CDP1869_CHAR_PCB_READ_OWNER(_class, _method) \
downcast<cdp1869_device &>(*device).set_pcb_read(cdp1869_device::pcb_read_delegate(&_class::_method, #_class "::" #_method, this));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> cdp1869_device
class cdp1869_device : public device_t,
@ -182,21 +141,79 @@ public:
static constexpr unsigned PALETTE_LENGTH = 8+64;
typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> char_ram_read_delegate;
typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> char_ram_write_delegate;
typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> pcb_read_delegate;
// construction/destruction
template <typename T>
cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&addrmap)
: cdp1869_device(mconfig, tag, owner, clock)
{
set_addrmap(0, std::forward<T>(addrmap));
}
cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_pal_ntsc_rd_callback(Object &&cb) { return m_read_pal_ntsc.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_prd_wr_callback(Object &&cb) { return m_write_prd.set_callback(std::forward<Object>(cb)); }
template <typename Object> void set_char_ram_read(Object &&cb) { m_in_char_ram_func = std::forward<Object>(cb); }
template <typename Object> void set_char_ram_write(Object &&cb) { m_out_char_ram_func = std::forward<Object>(cb); }
template <typename Object> void set_pcb_read(Object &&cb) { m_in_pcb_func = std::forward<Object>(cb); }
auto pal_ntsc_callback() { return m_read_pal_ntsc.bind(); }
auto prd_callback() { return m_write_prd.bind(); }
void set_color_clock(int color_clock) { m_color_clock = color_clock; }
void set_color_clock(const XTAL &xtal) { xtal.validate("selecting cdp1869 clock"); set_color_clock(xtal.value()); }
// delegate setters
typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> char_ram_read_delegate;
void set_char_ram_read_callback(char_ram_read_delegate callback) { m_in_char_ram_func = callback; }
template <class FunctionClass> void set_char_ram_read_callback(const char *devname,
uint8_t (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
{
set_char_ram_read_callback(char_ram_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
}
template <class FunctionClass> void set_char_ram_read_callback(
uint8_t (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
{
set_char_ram_read_callback(char_ram_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> char_ram_write_delegate;
void set_char_ram_write_callback(char_ram_write_delegate callback) { m_out_char_ram_func = callback; }
template <class FunctionClass> void set_char_ram_write_callback(const char *devname,
void (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t, uint8_t), const char *name)
{
set_char_ram_write_callback(char_ram_write_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
}
template <class FunctionClass> void set_char_ram_write_callback(
void (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t, uint8_t), const char *name)
{
set_char_ram_write_callback(char_ram_write_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> pcb_read_delegate;
void set_pcb_read_callback(pcb_read_delegate callback) { m_in_pcb_func = callback; }
template <class FunctionClass> void set_pcb_read_callback(const char *devname,
int (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
{
set_pcb_read_callback(pcb_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
}
template <class FunctionClass> void set_pcb_read_callback(
int (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
{
set_pcb_read_callback(pcb_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
// helper functions
template <typename T, typename U> screen_device& add_pal_screen(machine_config &config, T &&screen_tag, U &&clock)
{
screen_device &screen(SCREEN(config, std::forward<T>(screen_tag), SCREEN_TYPE_RASTER));
screen.set_screen_update(tag(), FUNC(cdp1869_device::screen_update));
screen.set_raw(std::forward<U>(clock), cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START,
cdp1869_device::TOTAL_SCANLINES_PAL, cdp1869_device::SCANLINE_VBLANK_END_PAL, cdp1869_device::SCANLINE_VBLANK_START_PAL);
return screen;
}
template <typename T, typename U> screen_device& add_ntsc_screen(machine_config &config, T &&screen_tag, U &&clock)
{
screen_device &screen(SCREEN(config, std::forward<T>(screen_tag), SCREEN_TYPE_RASTER));
screen.set_screen_update(tag(), FUNC(cdp1869_device::screen_update));
screen.set_raw(std::forward<U>(clock), cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START,
cdp1869_device::TOTAL_SCANLINES_NTSC, cdp1869_device::SCANLINE_VBLANK_END_NTSC, cdp1869_device::SCANLINE_VBLANK_START_NTSC);
return screen;
}
virtual void io_map(address_map &map);
virtual void char_map(address_map &map);
virtual void page_map(address_map &map);

View File

@ -150,47 +150,48 @@ WRITE8_MEMBER( draco_state::psg_pb_w )
/* Machine Drivers */
MACHINE_CONFIG_START(cidelsa_state::destryer_video)
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, DESTRYER_CHR2)
MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.4, 0.044)
void cidelsa_state::destryer_video(machine_config &config)
{
SPEAKER(config, "mono").front_center();
MCFG_CDP1869_ADD(CDP1869_TAG, DESTRYER_CHR2, cidelsa_page_ram)
MCFG_CDP1869_CHAR_PCB_READ_OWNER(cidelsa_state, cidelsa_pcb_r)
MCFG_CDP1869_CHAR_RAM_READ_OWNER(cidelsa_state, cidelsa_charram_r)
MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(cidelsa_state, cidelsa_charram_w)
MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, cidelsa_state, prd_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(cidelsa_state::altair_video)
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, ALTAIR_CHR2)
MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.4, 0.044)
CDP1869(config, m_vis, DESTRYER_CHR2, &cidelsa_state::cidelsa_page_ram);
screen_device &screen(m_vis->add_pal_screen(config, SCREEN_TAG, DESTRYER_CHR2));
screen.set_default_position(1.226, 0.012, 1.4, 0.044);
m_vis->set_pcb_read_callback(FUNC(cidelsa_state::cidelsa_pcb_r));
m_vis->set_char_ram_read_callback(FUNC(cidelsa_state::cidelsa_charram_r));
m_vis->set_char_ram_write_callback(FUNC(cidelsa_state::cidelsa_charram_w));
m_vis->pal_ntsc_callback().set_constant(1);
m_vis->prd_callback().set(FUNC(cidelsa_state::prd_w));
m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
}
void cidelsa_state::altair_video(machine_config &config)
{
SPEAKER(config, "mono").front_center();
MCFG_CDP1869_ADD(CDP1869_TAG, ALTAIR_CHR2, cidelsa_page_ram)
MCFG_CDP1869_CHAR_PCB_READ_OWNER(cidelsa_state, cidelsa_pcb_r)
MCFG_CDP1869_CHAR_RAM_READ_OWNER(cidelsa_state, cidelsa_charram_r)
MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(cidelsa_state, cidelsa_charram_w)
MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, cidelsa_state, prd_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(draco_state::draco_video)
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, DRACO_CHR2)
MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.360, 0.024)
CDP1869(config, m_vis, ALTAIR_CHR2, &cidelsa_state::cidelsa_page_ram);
screen_device &screen(m_vis->add_pal_screen(config, SCREEN_TAG, ALTAIR_CHR2));
screen.set_default_position(1.226, 0.012, 1.4, 0.044);
m_vis->set_pcb_read_callback(FUNC(cidelsa_state::cidelsa_pcb_r));
m_vis->set_char_ram_read_callback(FUNC(cidelsa_state::cidelsa_charram_r));
m_vis->set_char_ram_write_callback(FUNC(cidelsa_state::cidelsa_charram_w));
m_vis->pal_ntsc_callback().set_constant(1);
m_vis->prd_callback().set(FUNC(cidelsa_state::prd_w));
m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
}
void draco_state::draco_video(machine_config &config)
{
SPEAKER(config, "mono").front_center();
MCFG_CDP1869_ADD(CDP1869_TAG, DRACO_CHR2, draco_page_ram)
MCFG_CDP1869_CHAR_PCB_READ_OWNER(draco_state, draco_pcb_r)
MCFG_CDP1869_CHAR_RAM_READ_OWNER(draco_state, draco_charram_r)
MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(draco_state, draco_charram_w)
MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
MCFG_CDP1869_PRD_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
CDP1869(config, m_vis, DRACO_CHR2, &draco_state::draco_page_ram);
screen_device &screen(m_vis->add_pal_screen(config, SCREEN_TAG, DRACO_CHR2));
screen.set_default_position(1.226, 0.012, 1.360, 0.024);
m_vis->set_pcb_read_callback(FUNC(draco_state::draco_pcb_r));
m_vis->set_char_ram_read_callback(FUNC(draco_state::draco_charram_r));
m_vis->set_char_ram_write_callback(FUNC(draco_state::draco_charram_w));
m_vis->pal_ntsc_callback().set_constant(1);
m_vis->prd_callback().set_inputline(CDP1802_TAG, COSMAC_INPUT_LINE_EF1);
AY8910(config, m_psg, DRACO_SND_CHR1);
m_psg->set_flags(AY8910_SINGLE_OUTPUT);
m_psg->port_b_write_callback().set(FUNC(draco_state::psg_pb_w));
m_psg->add_route(ALL_OUTPUTS, "mono", 0.25);
MACHINE_CONFIG_END
}

View File

@ -89,40 +89,40 @@ void comx35_state::video_start()
/* Machine Drivers */
MACHINE_CONFIG_START(comx35_state::comx35_pal_video)
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL)
void comx35_state::comx35_pal_video(machine_config &config)
{
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram)
MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL)
MCFG_CDP1869_CHAR_PCB_READ_OWNER(comx35_state, comx35_pcb_r)
MCFG_CDP1869_CHAR_RAM_READ_OWNER(comx35_state, comx35_charram_r)
MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(comx35_state, comx35_charram_w)
MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, comx35_state, prd_w))
MCFG_CDP1869_SET_SCREEN(SCREEN_TAG)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
CDP1869(config, m_vis, cdp1869_device::DOT_CLK_PAL, &comx35_state::cdp1869_page_ram);
m_vis->add_pal_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL);
m_vis->set_color_clock(cdp1869_device::COLOR_CLK_PAL);
m_vis->set_pcb_read_callback(FUNC(comx35_state::comx35_pcb_r));
m_vis->set_char_ram_read_callback(FUNC(comx35_state::comx35_charram_r));
m_vis->set_char_ram_write_callback(FUNC(comx35_state::comx35_charram_w));
m_vis->pal_ntsc_callback().set_constant(1);
m_vis->prd_callback().set(FUNC(comx35_state::prd_w));
m_vis->set_screen(SCREEN_TAG);
m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(comx35_state::comx35_ntsc_video)
MCFG_CDP1869_SCREEN_NTSC_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_NTSC)
}
void comx35_state::comx35_ntsc_video(machine_config &config)
{
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_NTSC, cdp1869_page_ram)
MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_NTSC)
MCFG_CDP1869_CHAR_PCB_READ_OWNER(comx35_state, comx35_pcb_r)
MCFG_CDP1869_CHAR_RAM_READ_OWNER(comx35_state, comx35_charram_r)
MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(comx35_state, comx35_charram_w)
MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(0))
MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, comx35_state, prd_w))
MCFG_CDP1869_SET_SCREEN(SCREEN_TAG)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
CDP1869(config, m_vis, cdp1869_device::DOT_CLK_NTSC, &comx35_state::cdp1869_page_ram);
m_vis->add_ntsc_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_NTSC);
m_vis->set_color_clock(cdp1869_device::COLOR_CLK_NTSC);
m_vis->set_pcb_read_callback(FUNC(comx35_state::comx35_pcb_r));
m_vis->set_char_ram_read_callback(FUNC(comx35_state::comx35_charram_r));
m_vis->set_char_ram_write_callback(FUNC(comx35_state::comx35_charram_w));
m_vis->pal_ntsc_callback().set_constant(0);
m_vis->prd_callback().set(FUNC(comx35_state::prd_w));
m_vis->set_screen(SCREEN_TAG);
m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MACHINE_CONFIG_END
}

View File

@ -91,18 +91,18 @@ void pecom_state::video_start()
save_pointer(NAME(m_charram), PECOM_CHAR_RAM_SIZE);
}
MACHINE_CONFIG_START(pecom_state::pecom_video)
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL)
void pecom_state::pecom_video(machine_config &config)
{
SPEAKER(config, "mono").front_center();
MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram)
MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL)
MCFG_CDP1869_CHAR_PCB_READ_OWNER(pecom_state, pecom_pcb_r)
MCFG_CDP1869_CHAR_RAM_READ_OWNER(pecom_state, pecom_char_ram_r)
MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(pecom_state, pecom_char_ram_w)
MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, pecom_state, pecom_prd_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
CDP1869(config, m_cdp1869, cdp1869_device::DOT_CLK_PAL, &pecom_state::cdp1869_page_ram);
m_cdp1869->add_pal_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL);
m_cdp1869->set_color_clock(cdp1869_device::COLOR_CLK_PAL);
m_cdp1869->set_pcb_read_callback(FUNC(pecom_state::pecom_pcb_r));
m_cdp1869->set_char_ram_read_callback(FUNC(pecom_state::pecom_char_ram_r));
m_cdp1869->set_char_ram_write_callback(FUNC(pecom_state::pecom_char_ram_w));
m_cdp1869->pal_ntsc_callback().set_constant(1);
m_cdp1869->prd_callback().set(FUNC(pecom_state::pecom_prd_w));
m_cdp1869->add_route(ALL_OUTPUTS, "mono", 0.25);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MACHINE_CONFIG_END
}

View File

@ -116,20 +116,20 @@ static GFXDECODE_START( gfx_tmc600 )
GFXDECODE_ENTRY( "chargen", 0x0000, tmc600_charlayout, 0, 36 )
GFXDECODE_END
MACHINE_CONFIG_START(tmc600_state::tmc600_video)
void tmc600_state::tmc600_video(machine_config &config)
{
// video hardware
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, CDP1869_TAG":palette", gfx_tmc600)
GFXDECODE(config, "gfxdecode", CDP1869_TAG":palette", gfx_tmc600);
// sound hardware
SPEAKER(config, "mono").front_center();
MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram)
MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL)
MCFG_CDP1869_CHAR_PCB_READ_OWNER(tmc600_state, tmc600_pcb_r)
MCFG_CDP1869_CHAR_RAM_READ_OWNER(tmc600_state, tmc600_char_ram_r)
MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, tmc600_state, prd_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
CDP1869(config, m_vis, cdp1869_device::DOT_CLK_PAL, &tmc600_state::cdp1869_page_ram);
m_vis->add_pal_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL);
m_vis->set_color_clock(cdp1869_device::COLOR_CLK_PAL);
m_vis->set_pcb_read_callback(FUNC(tmc600_state::tmc600_pcb_r));
m_vis->set_char_ram_read_callback(FUNC(tmc600_state::tmc600_char_ram_r));
m_vis->pal_ntsc_callback().set_constant(1);
m_vis->prd_callback().set(FUNC(tmc600_state::prd_w));
m_vis->set_screen(SCREEN_TAG);
m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
}