diff options
Diffstat (limited to 'src/mame/drivers/tv950.cpp')
-rw-r--r-- | src/mame/drivers/tv950.cpp | 65 |
1 files changed, 31 insertions, 34 deletions
diff --git a/src/mame/drivers/tv950.cpp b/src/mame/drivers/tv950.cpp index b1ce6dce2a6..a7d8f3ea708 100644 --- a/src/mame/drivers/tv950.cpp +++ b/src/mame/drivers/tv950.cpp @@ -272,44 +272,41 @@ MC6845_UPDATE_ROW( tv950_state::crtc_update_row ) m_row = (m_row + 1) % 250; } -MACHINE_CONFIG_START(tv950_state::tv950) +void tv950_state::tv950(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/14) - MCFG_DEVICE_PROGRAM_MAP(tv950_mem) + M6502(config, m_maincpu, MASTER_CLOCK/14); + m_maincpu->set_addrmap(AS_PROGRAM, &tv950_state::tv950_mem); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 1200, 0, 1120, 370, 0, 250 ) // not real values - MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, r6545_1_device, screen_update ) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(MASTER_CLOCK, 1200, 0, 1120, 370, 0, 250); // not real values + screen.set_screen_update(CRTC_TAG, FUNC(r6545_1_device::screen_update)); // there are many 6845 CRTC submodels, the Theory of Operation manual references the Rockwell R6545-1 specificially. - MCFG_MC6845_ADD(CRTC_TAG, R6545_1, "screen", MASTER_CLOCK/14) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(14) - MCFG_MC6845_UPDATE_ROW_CB(tv950_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(tv950_state, crtc_update_addr) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(VIA_TAG, via6522_device, write_pb6)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, tv950_state, crtc_vs_w)) - MCFG_VIDEO_SET_SCREEN(nullptr) - - MCFG_DEVICE_ADD(VIA_TAG, VIA6522, MASTER_CLOCK/14) - MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6502_NMI_LINE)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, tv950_state, via_a_w)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, tv950_state, via_b_w)) - MCFG_VIA6522_READPB_HANDLER(READ8(*this, tv950_state, via_b_r)) - MCFG_VIA6522_CA2_HANDLER(WRITELINE(*this, tv950_state, via_crtc_reset_w)) - //MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, tv950_state, via_blink_rate_w)) - - MCFG_DEVICE_ADD(ACIA1_TAG, MOS6551, 0) - MCFG_MOS6551_XTAL(MASTER_CLOCK/13) - - MCFG_DEVICE_ADD(ACIA2_TAG, MOS6551, 0) - MCFG_MOS6551_XTAL(MASTER_CLOCK/13) - - MCFG_DEVICE_ADD(ACIA3_TAG, MOS6551, 0) - MCFG_MOS6551_XTAL(MASTER_CLOCK/13) - - MCFG_DEVICE_ADD("kbd", I8748, XTAL(5'714'300)) -MACHINE_CONFIG_END + R6545_1(config, m_crtc, MASTER_CLOCK/14); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(14); + m_crtc->set_update_row_callback(FUNC(tv950_state::crtc_update_row), this); + m_crtc->set_on_update_addr_change_callback(FUNC(tv950_state::crtc_update_addr), this); + m_crtc->out_hsync_callback().set(VIA_TAG, FUNC(via6522_device::write_pb6)); + m_crtc->out_vsync_callback().set(FUNC(tv950_state::crtc_vs_w)); + m_crtc->set_screen(nullptr); + + VIA6522(config, m_via, MASTER_CLOCK/14); + m_via->irq_handler().set_inputline(m_maincpu, M6502_NMI_LINE); + m_via->writepa_handler().set(FUNC(tv950_state::via_a_w)); + m_via->writepb_handler().set(FUNC(tv950_state::via_b_w)); + m_via->readpb_handler().set(FUNC(tv950_state::via_b_r)); + m_via->ca2_handler().set(FUNC(tv950_state::via_crtc_reset_w)); + //m_via->cb2_handler().set(FUNC(tv950_state::via_blink_rate_w)); + + MOS6551(config, ACIA1_TAG, 0).set_xtal(MASTER_CLOCK/13); + MOS6551(config, ACIA2_TAG, 0).set_xtal(MASTER_CLOCK/13); + MOS6551(config, ACIA3_TAG, 0).set_xtal(MASTER_CLOCK/13); + + I8748(config, "kbd", XTAL(5'714'300)); +} /* ROM definition */ ROM_START( tv950 ) |