cdp1861, cdp1864: Hook in screens efficiently without using MCFG (nw)

This commit is contained in:
AJR 2018-08-17 21:46:03 -04:00
parent 06559ae451
commit 577f198564
11 changed files with 49 additions and 72 deletions

View File

@ -78,6 +78,14 @@ cdp1864_device::cdp1864_device(const machine_config &mconfig, const char *tag, d
{ {
} }
cdp1864_device::cdp1864_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, screen_device &screen)
: cdp1864_device(mconfig, tag, owner, clock)
{
set_screen(screen, DEVICE_SELF);
screen.set_screen_update(screen_update_rgb32_delegate(FUNC(cdp1864_device::screen_update), this));
screen.set_raw(clock, SCREEN_WIDTH, HBLANK_END, HBLANK_START, TOTAL_SCANLINES, SCANLINE_VBLANK_END, SCANLINE_VBLANK_START);
}
//------------------------------------------------- //-------------------------------------------------
// device_start - device-specific startup // device_start - device-specific startup

View File

@ -44,15 +44,6 @@
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_CDP1864_SCREEN_ADD(_tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
MCFG_SCREEN_RAW_PARAMS(_clock, cdp1864_device::SCREEN_WIDTH, cdp1864_device::HBLANK_END, cdp1864_device::HBLANK_START, cdp1864_device::TOTAL_SCANLINES, cdp1864_device::SCANLINE_VBLANK_END, cdp1864_device::SCANLINE_VBLANK_START)
//************************************************************************** //**************************************************************************
// TYPE DEFINITIONS // TYPE DEFINITIONS
//************************************************************************** //**************************************************************************
@ -92,6 +83,7 @@ public:
// construction/destruction // construction/destruction
cdp1864_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); cdp1864_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
cdp1864_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, screen_device &screen);
auto inlace_cb() { return m_read_inlace.bind(); } auto inlace_cb() { return m_read_inlace.bind(); }
auto int_cb() { return m_write_int.bind(); } auto int_cb() { return m_write_int.bind(); }

View File

@ -51,6 +51,14 @@ cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, d
{ {
} }
cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, screen_device &screen)
: cdp1861_device(mconfig, tag, owner, clock)
{
set_screen(screen, DEVICE_SELF);
screen.set_screen_update(screen_update_rgb32_delegate(FUNC(cdp1861_device::screen_update), this));
screen.set_raw(clock, SCREEN_WIDTH, HBLANK_END, HBLANK_START, TOTAL_SCANLINES, SCANLINE_VBLANK_END, SCANLINE_VBLANK_START);
}
//------------------------------------------------- //-------------------------------------------------
// device_start - device-specific startup // device_start - device-specific startup

View File

@ -29,17 +29,6 @@
#include "screen.h" #include "screen.h"
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_CDP1861_SCREEN_ADD(_cdptag, _tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1861_device, screen_update) \
MCFG_SCREEN_RAW_PARAMS(_clock, cdp1861_device::SCREEN_WIDTH, cdp1861_device::HBLANK_END, cdp1861_device::HBLANK_START, cdp1861_device::TOTAL_SCANLINES, cdp1861_device::SCANLINE_VBLANK_END, cdp1861_device::SCANLINE_VBLANK_START)
//************************************************************************** //**************************************************************************
// TYPE DEFINITIONS // TYPE DEFINITIONS
//************************************************************************** //**************************************************************************
@ -76,6 +65,7 @@ public:
// construction/destruction // construction/destruction
cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, screen_device &screen);
auto int_cb() { return m_write_int.bind(); } auto int_cb() { return m_write_int.bind(); }
auto dma_out_cb() { return m_write_dma_out.bind(); } auto dma_out_cb() { return m_write_dma_out.bind(); }

View File

@ -527,16 +527,13 @@ MACHINE_CONFIG_START(cosmicos_state::cosmicos)
MCFG_TIMER_DRIVER_ADD_PERIODIC("digit", cosmicos_state, digit_tick, attotime::from_hz(100)) MCFG_TIMER_DRIVER_ADD_PERIODIC("digit", cosmicos_state, digit_tick, attotime::from_hz(100))
MCFG_TIMER_DRIVER_ADD_PERIODIC("interrupt", cosmicos_state, int_tick, attotime::from_hz(1000)) MCFG_TIMER_DRIVER_ADD_PERIODIC("interrupt", cosmicos_state, int_tick, attotime::from_hz(1000))
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, 1.75_MHz_XTAL)
MCFG_SCREEN_UPDATE_DEVICE(CDP1864_TAG, cdp1864_device, screen_update)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
CDP1864(config, m_cti, 1.75_MHz_XTAL).set_screen(SCREEN_TAG); CDP1864(config, m_cti, 1.75_MHz_XTAL, SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
m_cti->inlace_cb().set_constant(0); m_cti->inlace_cb().set_constant(0);
m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_cti->dma_out_cb().set(FUNC(cosmicos_state::dmaout_w)); m_cti->dma_out_cb().set(FUNC(cosmicos_state::dmaout_w));

View File

@ -251,11 +251,11 @@ MACHINE_CONFIG_START(elf2_state::elf2)
/* video hardware */ /* video hardware */
config.set_default_layout(layout_elf2); config.set_default_layout(layout_elf2);
CDP1861(config, m_vdc, XTAL(3'579'545)/2).set_screen(SCREEN_TAG);
CDP1861(config, m_vdc, XTAL(3'579'545)/2, SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1); m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL(3'579'545)/2)
/* devices */ /* devices */
MCFG_DEVICE_ADD(MM74C923_TAG, MM74C923, 0) MCFG_DEVICE_ADD(MM74C923_TAG, MM74C923, 0)

View File

@ -318,13 +318,9 @@ MACHINE_CONFIG_START(eti660_state::eti660)
m_maincpu->q_cb().set(FUNC(eti660_state::q_w)); m_maincpu->q_cb().set(FUNC(eti660_state::q_w));
m_maincpu->dma_wr_cb().set(FUNC(eti660_state::dma_w)); m_maincpu->dma_wr_cb().set(FUNC(eti660_state::dma_w));
/* video hardware */ /* video/sound hardware */
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL(8'867'238)/5)
MCFG_SCREEN_UPDATE_DEVICE(CDP1864_TAG, cdp1864_device, screen_update)
/* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
CDP1864(config, m_cti, XTAL(8'867'238)/5).set_screen(SCREEN_TAG); CDP1864(config, m_cti, XTAL(8'867'238)/5, SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
m_cti->inlace_cb().set_constant(0); m_cti->inlace_cb().set_constant(0);
m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);

View File

@ -660,11 +660,10 @@ MACHINE_CONFIG_START(studio2_state::studio2)
m_maincpu->dma_wr_cb().set(m_vdc, FUNC(cdp1861_device::dma_w)); m_maincpu->dma_wr_cb().set(m_vdc, FUNC(cdp1861_device::dma_w));
/* video hardware */ /* video hardware */
CDP1861(config, m_vdc, 1760000).set_screen(SCREEN_TAG); CDP1861(config, m_vdc, 1760000, SCREEN(config, m_screen, SCREEN_TYPE_RASTER));
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1); m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, 1760000)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -686,12 +685,11 @@ MACHINE_CONFIG_START(visicom_state::visicom)
m_maincpu->dma_wr_cb().set(FUNC(visicom_state::dma_w)); m_maincpu->dma_wr_cb().set(FUNC(visicom_state::dma_w));
/* video hardware */ /* video hardware */
CDP1861(config, m_vdc, XTAL(3'579'545)/2); CDP1861(config, m_vdc, XTAL(3'579'545)/2, SCREEN(config, m_screen, SCREEN_TYPE_RASTER));
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1); m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL(3'579'545)/2) m_screen->set_screen_update(FUNC(visicom_state::screen_update));
MCFG_SCREEN_UPDATE_DRIVER(visicom_state, screen_update)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -716,15 +714,11 @@ MACHINE_CONFIG_START(mpt02_state::mpt02)
m_maincpu->q_cb().set(FUNC(mpt02_state::q_w)); m_maincpu->q_cb().set(FUNC(mpt02_state::q_w));
m_maincpu->dma_wr_cb().set(FUNC(mpt02_state::dma_w)); m_maincpu->dma_wr_cb().set(FUNC(mpt02_state::dma_w));
/* video hardware */ /* video/sound hardware */
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, 1.75_MHz_XTAL)
MCFG_SCREEN_UPDATE_DEVICE(CDP1864_TAG, cdp1864_device, screen_update)
/* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 300).add_route(ALL_OUTPUTS, "mono", 1.00); BEEP(config, m_beeper, 300).add_route(ALL_OUTPUTS, "mono", 1.00);
CDP1864(config, m_cti, 1.75_MHz_XTAL).set_screen(SCREEN_TAG); CDP1864(config, m_cti, 1.75_MHz_XTAL, SCREEN(config, m_screen, SCREEN_TYPE_RASTER));
m_cti->inlace_cb().set_constant(0); m_cti->inlace_cb().set_constant(0);
m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);

View File

@ -280,7 +280,8 @@ void tmc2000e_state::machine_reset()
/* Machine Drivers */ /* Machine Drivers */
MACHINE_CONFIG_START(tmc2000e_state::tmc2000e) void tmc2000e_state::tmc2000e(machine_config &config)
{
// basic system hardware // basic system hardware
CDP1802(config, m_maincpu, 1.75_MHz_XTAL); CDP1802(config, m_maincpu, 1.75_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &tmc2000e_state::tmc2000e_map); m_maincpu->set_addrmap(AS_PROGRAM, &tmc2000e_state::tmc2000e_map);
@ -292,13 +293,9 @@ MACHINE_CONFIG_START(tmc2000e_state::tmc2000e)
m_maincpu->q_cb().set(FUNC(tmc2000e_state::q_w)); m_maincpu->q_cb().set(FUNC(tmc2000e_state::q_w));
m_maincpu->dma_wr_cb().set(FUNC(tmc2000e_state::dma_w)); m_maincpu->dma_wr_cb().set(FUNC(tmc2000e_state::dma_w));
// video hardware // video/sound hardware
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, 1.75_MHz_XTAL)
MCFG_SCREEN_UPDATE_DEVICE(CDP1864_TAG, cdp1864_device, screen_update)
// sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
CDP1864(config, m_cti, 1.75_MHz_XTAL).set_screen(SCREEN_TAG); CDP1864(config, m_cti, 1.75_MHz_XTAL, SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
m_cti->inlace_cb().set_constant(0); m_cti->inlace_cb().set_constant(0);
m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
@ -310,12 +307,11 @@ MACHINE_CONFIG_START(tmc2000e_state::tmc2000e)
m_cti->add_route(ALL_OUTPUTS, "mono", 0.25); m_cti->add_route(ALL_OUTPUTS, "mono", 0.25);
/* devices */ /* devices */
MCFG_CASSETTE_ADD("cassette") CASSETTE(config, m_cassette).set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
/* internal ram */ /* internal ram */
RAM(config, RAM_TAG).set_default_size("8K").set_extra_options("40K"); RAM(config, RAM_TAG).set_default_size("8K").set_extra_options("40K");
MACHINE_CONFIG_END }
/* ROMs */ /* ROMs */

View File

@ -716,12 +716,12 @@ MACHINE_CONFIG_START(vip_state::vip)
m_maincpu->tpb_cb().set(m_exp, FUNC(vip_expansion_slot_device::tpb_w)); m_maincpu->tpb_cb().set(m_exp, FUNC(vip_expansion_slot_device::tpb_w));
// video hardware // video hardware
CDP1861(config, m_vdc, 3.52128_MHz_XTAL / 2).set_screen(SCREEN_TAG); screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
CDP1861(config, m_vdc, 3.52128_MHz_XTAL / 2, screen);
m_vdc->int_cb().set(FUNC(vip_state::vdc_int_w)); m_vdc->int_cb().set(FUNC(vip_state::vdc_int_w));
m_vdc->dma_out_cb().set(FUNC(vip_state::vdc_dma_out_w)); m_vdc->dma_out_cb().set(FUNC(vip_state::vdc_dma_out_w));
m_vdc->efx_cb().set(FUNC(vip_state::vdc_ef1_w)); m_vdc->efx_cb().set(FUNC(vip_state::vdc_ef1_w));
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, 3.52128_MHz_XTAL / 2) screen.set_screen_update(FUNC(vip_state::screen_update));
MCFG_SCREEN_UPDATE_DRIVER(vip_state, screen_update)
// sound hardware // sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();

View File

@ -36,13 +36,13 @@ uint32_t osc1000b_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
/* Machine Drivers */ /* Machine Drivers */
MACHINE_CONFIG_START(tmc1800_state::tmc1800_video) void tmc1800_state::tmc1800_video(machine_config &config)
CDP1861(config, m_vdc, XTAL(1'750'000)).set_screen(SCREEN_TAG); {
CDP1861(config, m_vdc, XTAL(1'750'000), SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1); m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL(1'750'000)) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(osc1000b_state::osc1000b_video) MACHINE_CONFIG_START(osc1000b_state::osc1000b_video)
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
@ -52,12 +52,10 @@ MACHINE_CONFIG_START(osc1000b_state::osc1000b_video)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199) MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199)
MACHINE_CONFIG_END MACHINE_CONFIG_END
MACHINE_CONFIG_START(tmc2000_state::tmc2000_video) void tmc2000_state::tmc2000_video(machine_config &config)
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL(1'750'000)) {
MCFG_SCREEN_UPDATE_DEVICE(CDP1864_TAG, cdp1864_device, screen_update)
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
CDP1864(config, m_cti, XTAL(1'750'000)).set_screen(SCREEN_TAG); CDP1864(config, m_cti, XTAL(1'750'000), SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
m_cti->inlace_cb().set_constant(0); m_cti->inlace_cb().set_constant(0);
m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
@ -67,14 +65,12 @@ MACHINE_CONFIG_START(tmc2000_state::tmc2000_video)
m_cti->gdata_cb().set(FUNC(tmc2000_state::gdata_r)); m_cti->gdata_cb().set(FUNC(tmc2000_state::gdata_r));
m_cti->set_chrominance(RES_K(1.21), RES_K(2.05), RES_K(2.26), RES_K(3.92)); // RL64, RL63, RL61, RL65 (also RH62 (2K pot) in series, but ignored here) m_cti->set_chrominance(RES_K(1.21), RES_K(2.05), RES_K(2.26), RES_K(3.92)); // RL64, RL63, RL61, RL65 (also RH62 (2K pot) in series, but ignored here)
m_cti->add_route(ALL_OUTPUTS, "mono", 0.25); m_cti->add_route(ALL_OUTPUTS, "mono", 0.25);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(nano_state::nano_video)
MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL(1'750'000))
MCFG_SCREEN_UPDATE_DEVICE(CDP1864_TAG, cdp1864_device, screen_update)
void nano_state::nano_video(machine_config &config)
{
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
CDP1864(config, m_cti, XTAL(1'750'000)).set_screen(SCREEN_TAG); CDP1864(config, m_cti, XTAL(1'750'000), SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
m_cti->inlace_cb().set_constant(0); m_cti->inlace_cb().set_constant(0);
m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT); m_cti->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT); m_cti->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
@ -84,4 +80,4 @@ MACHINE_CONFIG_START(nano_state::nano_video)
m_cti->gdata_cb().set_constant(1); m_cti->gdata_cb().set_constant(1);
m_cti->set_chrominance(RES_K(1.21), RES_INF, RES_INF, 0); // R18 (unconfirmed) m_cti->set_chrominance(RES_K(1.21), RES_INF, RES_INF, 0); // R18 (unconfirmed)
m_cti->add_route(ALL_OUTPUTS, "mono", 0.25); m_cti->add_route(ALL_OUTPUTS, "mono", 0.25);
MACHINE_CONFIG_END }