From 03372028f54a07886d45df3d577467ecb1521f2a Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 20 Nov 2018 18:26:03 +0100 Subject: mc6845, upd7220: removed MCFG macros (nw) --- src/devices/bus/a2bus/a2ultraterm.cpp | 11 ++-- src/devices/bus/a2bus/a2videoterm.cpp | 11 ++-- src/devices/bus/c64/xl80.cpp | 9 ++-- src/devices/bus/compis/hrg.cpp | 16 +++--- src/devices/bus/comx35/clm.cpp | 9 ++-- src/devices/bus/ecbbus/grip.cpp | 13 ++--- src/devices/bus/einstein/pipe/tk02.cpp | 15 +++--- src/devices/bus/isa/aga.cpp | 13 ++--- src/devices/bus/isa/cga.cpp | 82 +++++++++++++---------------- src/devices/bus/isa/cga.h | 1 + src/devices/bus/isa/mda.cpp | 94 +++++++++++++++------------------- src/devices/bus/isa/mda.h | 4 ++ src/devices/bus/isa/num9rev.cpp | 8 +-- src/devices/bus/nasbus/avc.cpp | 9 ++-- src/devices/bus/svi3x8/slot/sv806.cpp | 27 +++++----- src/devices/bus/vic20/videopak.cpp | 9 ++-- src/devices/bus/wangpc/lvc.cpp | 11 ++-- src/devices/bus/wangpc/mvc.cpp | 11 ++-- src/devices/bus/wangpc/tig.cpp | 18 +++---- src/devices/video/mc6845.h | 56 -------------------- src/devices/video/upd7220.h | 32 +++--------- src/mame/audio/atarijsa.cpp | 65 ++++++++++++----------- src/mame/audio/tx1.cpp | 24 ++++----- src/mame/drivers/a5105.cpp | 8 +-- src/mame/drivers/alphatro.cpp | 9 ++-- src/mame/drivers/amust.cpp | 13 ++--- src/mame/drivers/apc.cpp | 12 ++--- src/mame/drivers/applix.cpp | 12 +++-- src/mame/drivers/atarisy2.cpp | 8 +-- src/mame/drivers/bigbord2.cpp | 11 ++-- src/mame/drivers/candela.cpp | 9 ++-- src/mame/drivers/dim68k.cpp | 9 ++-- src/mame/drivers/dmv.cpp | 8 +-- src/mame/drivers/dragon.cpp | 9 ++-- src/mame/drivers/excali64.cpp | 13 ++--- src/mame/drivers/fanucspmg.cpp | 23 ++++----- src/mame/drivers/if800.cpp | 6 +-- src/mame/drivers/lola8a.cpp | 11 ++-- src/mame/drivers/m3.cpp | 9 ++-- src/mame/drivers/mbc200.cpp | 9 ++-- src/mame/drivers/mbc55x.cpp | 15 +++--- src/mame/drivers/mc1000.cpp | 4 +- src/mame/drivers/mx2178.cpp | 11 ++-- src/mame/drivers/mycom.cpp | 9 ++-- src/mame/drivers/mz3500.cpp | 16 +++--- src/mame/drivers/mz6500.cpp | 6 +-- src/mame/drivers/ngen.cpp | 20 ++++---- src/mame/drivers/paso1600.cpp | 7 +-- src/mame/drivers/pasopia.cpp | 9 ++-- src/mame/drivers/pasopia7.cpp | 14 ++--- src/mame/drivers/pc9801.cpp | 16 +++--- src/mame/drivers/pg685.cpp | 27 +++++----- src/mame/drivers/qvt6800.cpp | 27 +++++----- src/mame/drivers/qx10.cpp | 10 ++-- src/mame/drivers/rainbow.cpp | 11 ++-- src/mame/drivers/sapi1.cpp | 9 ++-- src/mame/drivers/smc777.cpp | 7 +-- src/mame/drivers/spc1500.cpp | 12 +++-- src/mame/drivers/sys9002.cpp | 9 ++-- src/mame/drivers/tavernie.cpp | 9 ++-- src/mame/drivers/trs80m2.cpp | 26 +++++----- src/mame/drivers/tvc.cpp | 11 ++-- src/mame/drivers/vt240.cpp | 12 ++--- src/mame/drivers/x1.cpp | 7 +-- src/mame/drivers/x1twin.cpp | 7 +-- src/mame/drivers/z100.cpp | 7 +-- src/mame/video/mikromik.cpp | 10 ++-- src/mame/video/pc_t1t.cpp | 56 ++++++++++---------- src/mame/video/v1050.cpp | 11 ++-- 69 files changed, 541 insertions(+), 581 deletions(-) diff --git a/src/devices/bus/a2bus/a2ultraterm.cpp b/src/devices/bus/a2bus/a2ultraterm.cpp index 22bb0429caa..9ea36ea2496 100644 --- a/src/devices/bus/a2bus/a2ultraterm.cpp +++ b/src/devices/bus/a2bus/a2ultraterm.cpp @@ -109,11 +109,12 @@ MACHINE_CONFIG_START(a2bus_videx160_device::device_add_mconfig) MCFG_SCREEN_RAW_PARAMS(CLOCK_LOW, 882, 0, 720, 370, 0, 350 ) MCFG_SCREEN_UPDATE_DEVICE( ULTRATERM_MC6845_NAME, mc6845_device, screen_update ) - MCFG_MC6845_ADD(ULTRATERM_MC6845_NAME, MC6845, ULTRATERM_SCREEN_NAME, CLOCK_LOW/9) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(a2bus_videx160_device, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, a2bus_videx160_device, vsync_changed)) + MC6845(config, m_crtc, CLOCK_LOW/9); + m_crtc->set_screen(ULTRATERM_SCREEN_NAME); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(a2bus_videx160_device::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(a2bus_videx160_device::vsync_changed)); MACHINE_CONFIG_END //------------------------------------------------- diff --git a/src/devices/bus/a2bus/a2videoterm.cpp b/src/devices/bus/a2bus/a2videoterm.cpp index ad55e7d7148..551c8ae0a79 100644 --- a/src/devices/bus/a2bus/a2videoterm.cpp +++ b/src/devices/bus/a2bus/a2videoterm.cpp @@ -122,11 +122,12 @@ MACHINE_CONFIG_START(a2bus_videx80_device::device_add_mconfig) MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 ) MCFG_SCREEN_UPDATE_DEVICE( VIDEOTERM_MC6845_NAME, mc6845_device, screen_update ) - MCFG_MC6845_ADD(VIDEOTERM_MC6845_NAME, MC6845, VIDEOTERM_SCREEN_NAME, MDA_CLOCK/9) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(a2bus_videx80_device, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, a2bus_videx80_device, vsync_changed)) + MC6845(config, m_crtc, MDA_CLOCK/9); + m_crtc->set_screen(VIDEOTERM_SCREEN_NAME); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(a2bus_videx80_device::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(a2bus_videx80_device::vsync_changed)); MACHINE_CONFIG_END //------------------------------------------------- diff --git a/src/devices/bus/c64/xl80.cpp b/src/devices/bus/c64/xl80.cpp index f6f5162aa1e..bdebc02a288 100644 --- a/src/devices/bus/c64/xl80.cpp +++ b/src/devices/bus/c64/xl80.cpp @@ -133,10 +133,11 @@ MACHINE_CONFIG_START(c64_xl80_device::device_add_mconfig) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_c64_xl80) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(HD46505SP_TAG, H46505, MC6845_SCREEN_TAG, XTAL(14'318'181) / 8) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(c64_xl80_device, crtc_update_row) + H46505(config, m_crtc, XTAL(14'318'181) / 8); + m_crtc->set_screen(MC6845_SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(c64_xl80_device::crtc_update_row), this); MACHINE_CONFIG_END diff --git a/src/devices/bus/compis/hrg.cpp b/src/devices/bus/compis/hrg.cpp index ca4cf677a3b..8f01bf01e35 100644 --- a/src/devices/bus/compis/hrg.cpp +++ b/src/devices/bus/compis/hrg.cpp @@ -86,10 +86,10 @@ MACHINE_CONFIG_START(compis_hrg_device::device_add_mconfig) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1) MCFG_SCREEN_UPDATE_DEVICE(UPD7220_TAG, upd7220_device, screen_update) - MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500) // unknown clock - MCFG_DEVICE_ADDRESS_MAP(0, hrg_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_hrg_device, display_pixels) - MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + UPD7220(config, m_crtc, 2252500); // unknown clock + m_crtc->set_addrmap(0, &compis_hrg_device::hrg_map); + m_crtc->set_display_pixels_callback(FUNC(compis_hrg_device::display_pixels), this); + m_crtc->set_screen(SCREEN_TAG); MCFG_PALETTE_ADD_MONOCHROME("palette") MACHINE_CONFIG_END @@ -104,10 +104,10 @@ MACHINE_CONFIG_START(compis_uhrg_device::device_add_mconfig) MCFG_SCREEN_VISIBLE_AREA(0, 1280-1, 0, 800-1) MCFG_SCREEN_UPDATE_DEVICE(UPD7220_TAG, upd7220_device, screen_update) - MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500*2) // unknown clock - MCFG_DEVICE_ADDRESS_MAP(0, uhrg_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_uhrg_device, display_pixels) - MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + UPD7220(config, m_crtc, 2252500*2); // unknown clock + m_crtc->set_addrmap(0, &compis_uhrg_device::uhrg_map); + m_crtc->set_display_pixels_callback(FUNC(compis_uhrg_device::display_pixels), this); + m_crtc->set_screen(SCREEN_TAG); MCFG_PALETTE_ADD_MONOCHROME("palette") MACHINE_CONFIG_END diff --git a/src/devices/bus/comx35/clm.cpp b/src/devices/bus/comx35/clm.cpp index 5c51b8238ea..80b8f91e1cb 100644 --- a/src/devices/bus/comx35/clm.cpp +++ b/src/devices/bus/comx35/clm.cpp @@ -148,10 +148,11 @@ MACHINE_CONFIG_START(comx_clm_device::device_add_mconfig) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_comx_clm) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC6845_TAG, MC6845, MC6845_SCREEN_TAG, XTAL(14'318'181)/7) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(comx_clm_device, crtc_update_row) + MC6845(config, m_crtc, XTAL(14'318'181)/7); + m_crtc->set_screen(MC6845_SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(comx_clm_device::crtc_update_row), this); MACHINE_CONFIG_END diff --git a/src/devices/bus/ecbbus/grip.cpp b/src/devices/bus/ecbbus/grip.cpp index 83d878f5d41..fab96c31634 100644 --- a/src/devices/bus/ecbbus/grip.cpp +++ b/src/devices/bus/ecbbus/grip.cpp @@ -429,12 +429,13 @@ MACHINE_CONFIG_START(ecb_grip21_device::device_add_mconfig) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices - MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, XTAL(16'000'000)/4) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(ecb_grip21_device, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(m_sti, z80sti_device, i1_w)) - MCFG_MC6845_OUT_CUR_CB(WRITELINE(m_sti, z80sti_device, i1_w)) + MC6845(config, m_crtc, XTAL(16'000'000)/4); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(ecb_grip21_device::crtc_update_row), this); + m_crtc->out_de_callback().set(m_sti, FUNC(z80sti_device::i1_w)); + m_crtc->out_cur_callback().set(m_sti, FUNC(z80sti_device::i1_w)); // HD6345(config, HD6345_TAG, XTAL(16'000'000)/4).set_screen(SCREEN_TAG); diff --git a/src/devices/bus/einstein/pipe/tk02.cpp b/src/devices/bus/einstein/pipe/tk02.cpp index 048cd0680ee..50560c250d6 100644 --- a/src/devices/bus/einstein/pipe/tk02.cpp +++ b/src/devices/bus/einstein/pipe/tk02.cpp @@ -24,8 +24,8 @@ DEFINE_DEVICE_TYPE(TK02_80COL, tk02_device, "tk02", "TK02 80 Column Monochrome U void tk02_device::map(address_map &map) { // AM_RANGE(0x00, 0x07) AM_SELECT(0xff00) AM_READWRITE(ram_r, ram_w) // no AM_SELECT (or AM_MASK) support here - map(0x08, 0x08).mirror(0xff00).w("crtc", FUNC(mc6845_device::address_w)); - map(0x09, 0x09).mirror(0xff00).w("crtc", FUNC(mc6845_device::register_w)); + map(0x08, 0x08).mirror(0xff00).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x09, 0x09).mirror(0xff00).w(m_crtc, FUNC(mc6845_device::register_w)); map(0x0c, 0x0c).mirror(0xff00).r(FUNC(tk02_device::status_r)); } @@ -105,11 +105,12 @@ MACHINE_CONFIG_START(tk02_device::device_add_mconfig) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tk02) - MCFG_MC6845_ADD("crtc", MC6845, "mono", XTAL(8'000'000) / 4) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(tk02_device, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, tk02_device, de_w)) + MC6845(config, m_crtc, XTAL(8'000'000) / 4); + m_crtc->set_screen("mono"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(tk02_device::crtc_update_row), this); + m_crtc->out_de_callback().set(FUNC(tk02_device::de_w)); MCFG_TATUNG_PIPE_ADD("pipe") MACHINE_CONFIG_END diff --git a/src/devices/bus/isa/aga.cpp b/src/devices/bus/isa/aga.cpp index 4a97c15cf2f..9aa2810431b 100644 --- a/src/devices/bus/isa/aga.cpp +++ b/src/devices/bus/isa/aga.cpp @@ -280,12 +280,13 @@ MACHINE_CONFIG_START(isa8_aga_device::device_add_mconfig) MCFG_PALETTE_ADD( "palette", /* CGA_PALETTE_SETS * 16*/ 65536 ) - MCFG_MC6845_ADD(AGA_MC6845_NAME, MC6845, AGA_SCREEN_NAME, XTAL(14'318'181)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(isa8_aga_device, aga_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, isa8_aga_device, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, isa8_aga_device, vsync_changed)) + MC6845(config, m_mc6845, XTAL(14'318'181)/8); + m_mc6845->set_screen(AGA_SCREEN_NAME); + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(8); + m_mc6845->set_update_row_callback(FUNC(isa8_aga_device::aga_update_row), this); + m_mc6845->out_hsync_callback().set(FUNC(isa8_aga_device::hsync_changed)); + m_mc6845->out_vsync_callback().set(FUNC(isa8_aga_device::vsync_changed)); MACHINE_CONFIG_END diff --git a/src/devices/bus/isa/cga.cpp b/src/devices/bus/isa/cga.cpp index 04749aaba28..bc148d4bea8 100644 --- a/src/devices/bus/isa/cga.cpp +++ b/src/devices/bus/isa/cga.cpp @@ -268,14 +268,14 @@ MACHINE_CONFIG_START(isa8_cga_device::device_add_mconfig) MCFG_PALETTE_ADD("palette", /* CGA_PALETTE_SETS * 16*/ 65536 ) - MCFG_MC6845_ADD(CGA_MC6845_NAME, MC6845, CGA_SCREEN_NAME, XTAL(14'318'181)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(isa8_cga_device, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, isa8_cga_device, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, isa8_cga_device, vsync_changed)) - MCFG_MC6845_RECONFIGURE_CB(isa8_cga_device, reconfigure) - MCFG_VIDEO_SET_SCREEN(nullptr) + MC6845(config, m_crtc, XTAL(14'318'181)/16); + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(isa8_cga_device::crtc_update_row), this); + m_crtc->out_hsync_callback().set(FUNC(isa8_cga_device::hsync_changed)); + m_crtc->out_vsync_callback().set(FUNC(isa8_cga_device::vsync_changed)); + m_crtc->set_reconfigure_callback(FUNC(isa8_cga_device::reconfigure), this); MACHINE_CONFIG_END ioport_constructor isa8_cga_device::device_input_ports() const @@ -305,7 +305,7 @@ isa8_cga_device::isa8_cga_device(const machine_config &mconfig, const char *tag, isa8_cga_device::isa8_cga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), device_isa8_card_interface(mconfig, *this), - m_cga_config(*this, "cga_config"), m_framecnt(0), m_mode_control(0), m_color_select(0), + m_crtc(*this, CGA_MC6845_NAME), m_cga_config(*this, "cga_config"), m_framecnt(0), m_mode_control(0), m_color_select(0), m_update_row_type(-1), m_y(0), m_chr_gen_base(nullptr), m_chr_gen(nullptr), m_vsync(0), m_hsync(0), m_vram_size( 0x4000 ), m_plantronics(0), m_palette(*this, "palette"), @@ -397,9 +397,7 @@ void isa8_cga_device::device_reset() uint32_t isa8_cga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - mc6845_device *mc6845 = subdevice(CGA_MC6845_NAME); - - mc6845->screen_update( screen, bitmap, cliprect); + m_crtc->screen_update( screen, bitmap, cliprect); /* Check for changes in font dipsetting */ switch ( CGA_FONT ) @@ -782,7 +780,6 @@ void isa8_cga_device::set_palette_luts(void) */ void isa8_cga_device::mode_control_w(uint8_t data) { - mc6845_device *mc6845 = subdevice(CGA_MC6845_NAME); uint8_t monitor = CGA_MONITOR; m_mode_control = data; @@ -791,7 +788,7 @@ void isa8_cga_device::mode_control_w(uint8_t data) switch ( m_mode_control & 0x3F ) { case 0x08: case 0x09: case 0x0C: case 0x0D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); if ( monitor == CGA_MONITOR_COMPOSITE ) { if ( m_mode_control & 0x04 ) @@ -812,7 +809,7 @@ void isa8_cga_device::mode_control_w(uint8_t data) } break; case 0x0A: case 0x0B: case 0x2A: case 0x2B: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); if ( monitor == CGA_MONITOR_COMPOSITE ) { m_update_row_type = CGA_GFX_4BPPL; @@ -823,15 +820,15 @@ void isa8_cga_device::mode_control_w(uint8_t data) } break; case 0x0E: case 0x0F: case 0x2E: case 0x2F: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_GFX_2BPP; break; case 0x18: case 0x19: case 0x1C: case 0x1D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_TEXT_INTEN_ALT; break; case 0x1A: case 0x1B: case 0x3A: case 0x3B: - mc6845->set_hpixels_per_column( 16 ); + m_crtc->set_hpixels_per_column( 16 ); if ( monitor == CGA_MONITOR_COMPOSITE ) { m_update_row_type = CGA_GFX_4BPPH; @@ -842,11 +839,11 @@ void isa8_cga_device::mode_control_w(uint8_t data) } break; case 0x1E: case 0x1F: case 0x3E: case 0x3F: - mc6845->set_hpixels_per_column( 16 ); + m_crtc->set_hpixels_per_column( 16 ); m_update_row_type = CGA_GFX_1BPP; break; case 0x28: case 0x29: case 0x2C: case 0x2D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); if ( monitor == CGA_MONITOR_COMPOSITE ) { if ( m_mode_control & 0x04 ) @@ -867,7 +864,7 @@ void isa8_cga_device::mode_control_w(uint8_t data) } break; case 0x38: case 0x39: case 0x3C: case 0x3D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_TEXT_BLINK_ALT; break; default: @@ -877,7 +874,7 @@ void isa8_cga_device::mode_control_w(uint8_t data) // The lowest bit of the mode register selects, among others, the // input clock to the 6845. - mc6845->set_clock( ( m_mode_control & 1 ) ? CGA_HCLK : CGA_LCLK ); + m_crtc->set_clock( ( m_mode_control & 1 ) ? CGA_HCLK : CGA_LCLK ); set_palette_luts(); } @@ -907,7 +904,6 @@ void isa8_cga_device::plantronics_w(uint8_t data) READ8_MEMBER( isa8_cga_device::io_read ) { - mc6845_device *mc6845 = subdevice(CGA_MC6845_NAME); uint8_t data = 0xff; switch( offset ) @@ -916,7 +912,7 @@ READ8_MEMBER( isa8_cga_device::io_read ) /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = mc6845->register_r( space, offset ); + data = m_crtc->register_r( space, offset ); break; case 10: data = m_vsync | ( ( data & 0x40 ) >> 4 ) | m_hsync; @@ -929,14 +925,12 @@ READ8_MEMBER( isa8_cga_device::io_read ) WRITE8_MEMBER( isa8_cga_device::io_write ) { - mc6845_device *mc6845 = subdevice(CGA_MC6845_NAME); - switch(offset) { case 0: case 2: case 4: case 6: - mc6845->address_w( space, offset, data ); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - mc6845->register_w( space, offset, data ); + m_crtc->register_w( space, offset, data ); break; case 8: mode_control_w(data); @@ -1171,20 +1165,18 @@ MC6845_UPDATE_ROW( isa8_cga_pc1512_device::pc1512_gfx_4bpp_update_row ) WRITE8_MEMBER( isa8_cga_pc1512_device::io_write ) { - mc6845_device *mc6845 = subdevice(CGA_MC6845_NAME); - switch (offset) { case 0: case 2: case 4: case 6: data &= 0x1F; - mc6845->address_w( space, offset, data ); + m_crtc->address_w( space, offset, data ); m_mc6845_address = data; break; case 1: case 3: case 5: case 7: if ( ! m_mc6845_locked_register[m_mc6845_address] ) { - mc6845->register_w( space, offset, data ); + m_crtc->register_w( space, offset, data ); if ( isa8_cga_pc1512_device::mc6845_writeonce_register[m_mc6845_address] ) { m_mc6845_locked_register[m_mc6845_address] = 1; @@ -1206,11 +1198,11 @@ WRITE8_MEMBER( isa8_cga_pc1512_device::io_write ) switch( m_mode_control & 0x3F ) { case 0x08: case 0x09: case 0x0C: case 0x0D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_TEXT_INTEN; break; case 0x0A: case 0x0B: case 0x2A: case 0x2B: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); if ( ( CGA_MONITOR ) == CGA_MONITOR_COMPOSITE ) { m_update_row_type = CGA_GFX_4BPPL; @@ -1221,27 +1213,27 @@ WRITE8_MEMBER( isa8_cga_pc1512_device::io_write ) } break; case 0x0E: case 0x0F: case 0x2E: case 0x2F: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_GFX_2BPP; break; case 0x18: case 0x19: case 0x1C: case 0x1D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_TEXT_INTEN_ALT; break; case 0x1A: case 0x1B: case 0x3A: case 0x3B: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = PC1512_GFX_4BPP; break; case 0x1E: case 0x1F: case 0x3E: case 0x3F: - mc6845->set_hpixels_per_column( 16 ); + m_crtc->set_hpixels_per_column( 16 ); m_update_row_type = CGA_GFX_1BPP; break; case 0x28: case 0x29: case 0x2C: case 0x2D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_TEXT_BLINK; break; case 0x38: case 0x39: case 0x3C: case 0x3D: - mc6845->set_hpixels_per_column( 8 ); + m_crtc->set_hpixels_per_column( 8 ); m_update_row_type = CGA_TEXT_BLINK_ALT; break; default: @@ -1394,7 +1386,7 @@ void isa8_wyse700_device::change_resolution(uint8_t mode) case 0x00: width = 640; height = 400; break; // unhandled } rectangle visarea(0, width-1, 0, height-1); - subdevice(CGA_SCREEN_NAME)->configure(width, height, visarea, HZ_TO_ATTOSECONDS(60)); + m_screen->configure(width, height, visarea, HZ_TO_ATTOSECONDS(60)); } @@ -1706,8 +1698,7 @@ MACHINE_CONFIG_START(isa8_cga_m24_device::device_add_mconfig) MCFG_DEVICE_MODIFY(CGA_SCREEN_NAME) MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181),912,0,640,462,0,400) - MCFG_DEVICE_MODIFY(CGA_MC6845_NAME) - MCFG_MC6845_RECONFIGURE_CB(isa8_cga_m24_device, reconfigure) + m_crtc->set_reconfigure_callback(FUNC(isa8_cga_m24_device::reconfigure), this); MACHINE_CONFIG_END isa8_cga_m24_device::isa8_cga_m24_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : @@ -1751,12 +1742,11 @@ MC6845_RECONFIGURE( isa8_cga_m24_device::reconfigure ) WRITE8_MEMBER( isa8_cga_m24_device::io_write ) { - mc6845_device *mc6845 = subdevice(CGA_MC6845_NAME); switch(offset) { case 0: case 2: case 4: case 6: m_index = data; - mc6845->address_w( space, offset, data ); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: switch(m_index & 0x1f) // TODO: this is handled by a pal and prom @@ -1775,7 +1765,7 @@ WRITE8_MEMBER( isa8_cga_m24_device::io_write ) data <<= 1; break; } - mc6845->register_w( space, offset, data ); + m_crtc->register_w( space, offset, data ); break; case 0x0e: m_mode2 = data; diff --git a/src/devices/bus/isa/cga.h b/src/devices/bus/isa/cga.h index bb554133bea..ccb0ea603ab 100644 --- a/src/devices/bus/isa/cga.h +++ b/src/devices/bus/isa/cga.h @@ -41,6 +41,7 @@ public: protected: isa8_cga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + required_device m_crtc; required_ioport m_cga_config; // device-level overrides diff --git a/src/devices/bus/isa/mda.cpp b/src/devices/bus/isa/mda.cpp index 7d5ffb6efd9..35e382cc981 100644 --- a/src/devices/bus/isa/mda.cpp +++ b/src/devices/bus/isa/mda.cpp @@ -9,19 +9,16 @@ #include "emu.h" #include "mda.h" -#include "machine/pc_lpt.h" -#include "video/mc6845.h" #include "screen.h" #define MDA_SCREEN_NAME "mda_screen" -#define MDA_MC6845_NAME "mc6845_mda" +#define MC6845_NAME "mc6845" /* Hercules video card */ #define HERCULES_SCREEN_NAME "hercules_screen" -#define HERCULES_MC6845_NAME "mc6845_hercules" #define VERBOSE_MDA 0 /* MDA (Monochrome Display Adapter) */ @@ -113,21 +110,22 @@ DEFINE_DEVICE_TYPE(ISA8_MDA, isa8_mda_device, "isa_ibm_mda", "IBM Monochrome Dis MACHINE_CONFIG_START(isa8_mda_device::device_add_mconfig) MCFG_SCREEN_ADD( MDA_SCREEN_NAME, RASTER) MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 ) - MCFG_SCREEN_UPDATE_DEVICE( MDA_MC6845_NAME, mc6845_device, screen_update ) + MCFG_SCREEN_UPDATE_DEVICE( MC6845_NAME, mc6845_device, screen_update ) MCFG_PALETTE_ADD( "palette", 4 ) - MCFG_MC6845_ADD(MDA_MC6845_NAME, MC6845, MDA_SCREEN_NAME, MDA_CLOCK/9) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(9) - MCFG_MC6845_UPDATE_ROW_CB(isa8_mda_device, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, isa8_mda_device, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, isa8_mda_device, vsync_changed)) + MC6845(config, m_crtc, MDA_CLOCK/9); + m_crtc->set_screen(MDA_SCREEN_NAME); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(9); + m_crtc->set_update_row_callback(FUNC(isa8_mda_device::crtc_update_row), this); + m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); + m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pcmda) - pc_lpt_device &lpt(PC_LPT(config, "lpt")); - lpt.irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); + PC_LPT(config, m_lpt); + m_lpt->irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); MACHINE_CONFIG_END //------------------------------------------------- @@ -154,7 +152,7 @@ isa8_mda_device::isa8_mda_device(const machine_config &mconfig, const char *tag, isa8_mda_device::isa8_mda_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), - device_isa8_card_interface(mconfig, *this), m_framecnt(0), m_mode_control(0), + device_isa8_card_interface(mconfig, *this), m_crtc(*this, MC6845_NAME), m_lpt(*this, "lpt"), m_framecnt(0), m_mode_control(0), m_update_row_type(-1), m_chr_gen(nullptr), m_vsync(0), m_hsync(0), m_pixel(0), m_palette(*this, "palette") { @@ -461,21 +459,19 @@ READ8_MEMBER( isa8_mda_device::status_r) *************************************************************************/ WRITE8_MEMBER( isa8_mda_device::io_write) { - mc6845_device *mc6845 = subdevice(MDA_MC6845_NAME); - pc_lpt_device *lpt = subdevice("lpt"); switch( offset ) { case 0: case 2: case 4: case 6: - mc6845->address_w( space, offset, data ); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - mc6845->register_w( space, offset, data ); + m_crtc->register_w( space, offset, data ); break; case 8: mode_control_w(space, offset, data); break; case 12: case 13: case 14: - lpt->write(space, offset - 12, data); + m_lpt->write(space, offset - 12, data); break; } } @@ -483,22 +479,20 @@ WRITE8_MEMBER( isa8_mda_device::io_write) READ8_MEMBER( isa8_mda_device::io_read) { int data = 0xff; - mc6845_device *mc6845 = subdevice(MDA_MC6845_NAME); - pc_lpt_device *lpt = subdevice("lpt"); switch( offset ) { case 0: case 2: case 4: case 6: /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = mc6845->register_r( space, offset ); + data = m_crtc->register_r( space, offset ); break; case 10: data = status_r(space, offset); break; /* 12, 13, 14 are the LPT ports */ case 12: case 13: case 14: - data = lpt->read(space, offset - 12); + data = m_lpt->read(space, offset - 12); break; } return data; @@ -541,21 +535,22 @@ DEFINE_DEVICE_TYPE(ISA8_HERCULES, isa8_hercules_device, "isa_hercules", "Hercule MACHINE_CONFIG_START(isa8_hercules_device::device_add_mconfig) MCFG_SCREEN_ADD( HERCULES_SCREEN_NAME, RASTER) MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 ) - MCFG_SCREEN_UPDATE_DEVICE( HERCULES_MC6845_NAME, mc6845_device, screen_update ) + MCFG_SCREEN_UPDATE_DEVICE( MC6845_NAME, mc6845_device, screen_update ) MCFG_PALETTE_ADD( "palette", 4 ) - MCFG_MC6845_ADD(HERCULES_MC6845_NAME, MC6845, HERCULES_SCREEN_NAME, MDA_CLOCK/9) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(9) - MCFG_MC6845_UPDATE_ROW_CB(isa8_hercules_device, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, isa8_mda_device, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, isa8_mda_device, vsync_changed)) + MC6845(config, m_crtc, MDA_CLOCK/9); + m_crtc->set_screen(HERCULES_SCREEN_NAME); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(9); + m_crtc->set_update_row_callback(FUNC(isa8_hercules_device::crtc_update_row), this); + m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); + m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pcherc) - pc_lpt_device &lpt(PC_LPT(config, "lpt")); - lpt.irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); + PC_LPT(config, m_lpt); + m_lpt->irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); MACHINE_CONFIG_END //------------------------------------------------- @@ -654,8 +649,6 @@ MC6845_UPDATE_ROW( isa8_hercules_device::hercules_gfx_update_row ) WRITE8_MEMBER( isa8_hercules_device::mode_control_w ) { - mc6845_device *mc6845 = subdevice(HERCULES_MC6845_NAME); - m_mode_control = data; switch( m_mode_control & 0x2a ) @@ -674,28 +667,26 @@ WRITE8_MEMBER( isa8_hercules_device::mode_control_w ) m_update_row_type = -1; } - mc6845->set_clock( m_mode_control & 0x02 ? MDA_CLOCK / 16 : MDA_CLOCK / 9 ); - mc6845->set_hpixels_per_column( m_mode_control & 0x02 ? 16 : 9 ); + m_crtc->set_clock( m_mode_control & 0x02 ? MDA_CLOCK / 16 : MDA_CLOCK / 9 ); + m_crtc->set_hpixels_per_column( m_mode_control & 0x02 ? 16 : 9 ); } WRITE8_MEMBER( isa8_hercules_device::io_write ) { - mc6845_device *mc6845 = subdevice(HERCULES_MC6845_NAME); - pc_lpt_device *lpt = subdevice("lpt"); switch( offset ) { case 0: case 2: case 4: case 6: - mc6845->address_w( space, offset, data ); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - mc6845->register_w( space, offset, data ); + m_crtc->register_w( space, offset, data ); break; case 8: mode_control_w(space, offset, data); break; case 12: case 13: case 14: - lpt->write(space, offset - 12, data); + m_lpt->write(space, offset - 12, data); break; case 15: m_configuration_switch = data; @@ -727,22 +718,20 @@ READ8_MEMBER( isa8_hercules_device::status_r ) READ8_MEMBER( isa8_hercules_device::io_read ) { int data = 0xff; - mc6845_device *mc6845 = subdevice(HERCULES_MC6845_NAME); - pc_lpt_device *lpt = subdevice("lpt"); switch( offset ) { case 0: case 2: case 4: case 6: /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = mc6845->register_r( space, offset ); + data = m_crtc->register_r( space, offset ); break; case 10: data = status_r(space, offset); break; /* 12, 13, 14 are the LPT ports */ case 12: case 13: case 14: - data = lpt->read(space, offset - 12); + data = m_lpt->read(space, offset - 12); break; } return data; @@ -759,16 +748,17 @@ DEFINE_DEVICE_TYPE(ISA8_EC1840_0002, isa8_ec1840_0002_device, "ec1840_0002", "EC MACHINE_CONFIG_START(isa8_ec1840_0002_device::device_add_mconfig) MCFG_SCREEN_ADD( MDA_SCREEN_NAME, RASTER) MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 792, 0, 640, 370, 0, 350 ) - MCFG_SCREEN_UPDATE_DEVICE( MDA_MC6845_NAME, mc6845_device, screen_update ) + MCFG_SCREEN_UPDATE_DEVICE( MC6845_NAME, mc6845_device, screen_update ) MCFG_PALETTE_ADD( "palette", 4 ) - MCFG_MC6845_ADD( MDA_MC6845_NAME, MC6845, MDA_SCREEN_NAME, MDA_CLOCK/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(isa8_mda_device, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, isa8_mda_device, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, isa8_mda_device, vsync_changed)) + MC6845(config, m_crtc, MDA_CLOCK/8); + m_crtc->set_screen(MDA_SCREEN_NAME); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(isa8_mda_device::crtc_update_row), this); + m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); + m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); MACHINE_CONFIG_END //------------------------------------------------- diff --git a/src/devices/bus/isa/mda.h b/src/devices/bus/isa/mda.h index 19e56c6e59a..c8b259f1fb3 100644 --- a/src/devices/bus/isa/mda.h +++ b/src/devices/bus/isa/mda.h @@ -6,6 +6,7 @@ #pragma once #include "isa.h" +#include "machine/pc_lpt.h" #include "video/mc6845.h" #include "emupal.h" @@ -45,6 +46,9 @@ protected: virtual void device_add_mconfig(machine_config &config) override; virtual const tiny_rom_entry *device_rom_region() const override; + required_device m_crtc; + optional_device m_lpt; + private: WRITE_LINE_MEMBER(pc_cpu_line); diff --git a/src/devices/bus/isa/num9rev.cpp b/src/devices/bus/isa/num9rev.cpp index ab0595959ce..baf30cca586 100644 --- a/src/devices/bus/isa/num9rev.cpp +++ b/src/devices/bus/isa/num9rev.cpp @@ -61,10 +61,10 @@ MACHINE_CONFIG_START(isa8_number_9_rev_device::device_add_mconfig) MCFG_SCREEN_UPDATE_DRIVER(isa8_number_9_rev_device, screen_update) MCFG_PALETTE_ADD("palette", 4096) - MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL(4'433'619)/2) // unknown clock - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(isa8_number_9_rev_device, hgdc_display_pixels) - MCFG_VIDEO_SET_SCREEN("screen") + UPD7220(config, m_upd7220, XTAL(4'433'619)/2); // unknown clock + m_upd7220->set_addrmap(0, &isa8_number_9_rev_device::upd7220_map); + m_upd7220->set_display_pixels_callback(FUNC(isa8_number_9_rev_device::hgdc_display_pixels), this); + m_upd7220->set_screen("screen"); MACHINE_CONFIG_END //************************************************************************** diff --git a/src/devices/bus/nasbus/avc.cpp b/src/devices/bus/nasbus/avc.cpp index 0fb9ecdcd1b..a8eb9bd2915 100644 --- a/src/devices/bus/nasbus/avc.cpp +++ b/src/devices/bus/nasbus/avc.cpp @@ -29,10 +29,11 @@ MACHINE_CONFIG_START(nascom_avc_device::device_add_mconfig) MCFG_PALETTE_ADD_3BIT_RGB("palette") - MCFG_MC6845_ADD("mc6845", MC6845, "screen", XTAL(16'000'000) / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(6) - MCFG_MC6845_UPDATE_ROW_CB(nascom_avc_device, crtc_update_row) + MC6845(config, m_crtc, XTAL(16'000'000) / 8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(6); + m_crtc->set_update_row_callback(FUNC(nascom_avc_device::crtc_update_row), this); MACHINE_CONFIG_END diff --git a/src/devices/bus/svi3x8/slot/sv806.cpp b/src/devices/bus/svi3x8/slot/sv806.cpp index 833bcc546be..80b775108d0 100644 --- a/src/devices/bus/svi3x8/slot/sv806.cpp +++ b/src/devices/bus/svi3x8/slot/sv806.cpp @@ -39,18 +39,21 @@ const tiny_rom_entry *sv806_device::device_rom_region() const // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(sv806_device::device_add_mconfig) - MCFG_SCREEN_ADD_MONOCHROME("80col", RASTER, rgb_t::green()) - MCFG_SCREEN_RAW_PARAMS((XTAL(12'000'000) / 6) * 8, 864, 0, 640, 317, 0, 192) - MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update) - - MCFG_PALETTE_ADD_MONOCHROME("palette") - - MCFG_MC6845_ADD("crtc", HD6845, "80col", XTAL(12'000'000) / 6) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(sv806_device, crtc_update_row) -MACHINE_CONFIG_END +void sv806_device::device_add_mconfig(machine_config &config) +{ + screen_device &screen(SCREEN(config, "80col", SCREEN_TYPE_RASTER)); + screen.set_color(rgb_t::green()); + screen.set_raw((XTAL(12'000'000) / 6) * 8, 864, 0, 640, 317, 0, 192); + screen.set_screen_update("crtc", FUNC(hd6845_device::screen_update)); + + PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); + + HD6845(config, m_crtc, XTAL(12'000'000) / 6); + m_crtc->set_screen("80col"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(sv806_device::crtc_update_row), this); +} //************************************************************************** diff --git a/src/devices/bus/vic20/videopak.cpp b/src/devices/bus/vic20/videopak.cpp index 1a88798b580..392b306eea7 100644 --- a/src/devices/bus/vic20/videopak.cpp +++ b/src/devices/bus/vic20/videopak.cpp @@ -107,10 +107,11 @@ MACHINE_CONFIG_START(vic20_video_pak_device::device_add_mconfig) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vic20_video_pak) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC6845_TAG, H46505, MC6845_SCREEN_TAG, XTAL(14'318'181) / 8) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(vic20_video_pak_device, crtc_update_row) + H46505(config, m_crtc, XTAL(14'318'181) / 8); + m_crtc->set_screen(MC6845_SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(vic20_video_pak_device::crtc_update_row), this); MACHINE_CONFIG_END diff --git a/src/devices/bus/wangpc/lvc.cpp b/src/devices/bus/wangpc/lvc.cpp index 630301ca2d9..f4d05b8827d 100644 --- a/src/devices/bus/wangpc/lvc.cpp +++ b/src/devices/bus/wangpc/lvc.cpp @@ -124,11 +124,12 @@ MACHINE_CONFIG_START(wangpc_lvc_device::device_add_mconfig) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) MCFG_SCREEN_REFRESH_RATE(60) - MCFG_MC6845_ADD(MC6845_TAG, MC6845_1, SCREEN_TAG, XTAL(14'318'181)/16) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(wangpc_lvc_device, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, wangpc_lvc_device, vsync_w)) + MC6845_1(config, m_crtc, XTAL(14'318'181)/16); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(wangpc_lvc_device::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(wangpc_lvc_device::vsync_w)); MACHINE_CONFIG_END diff --git a/src/devices/bus/wangpc/mvc.cpp b/src/devices/bus/wangpc/mvc.cpp index 344fa6f9ab8..79999d72ade 100644 --- a/src/devices/bus/wangpc/mvc.cpp +++ b/src/devices/bus/wangpc/mvc.cpp @@ -144,11 +144,12 @@ MACHINE_CONFIG_START(wangpc_mvc_device::device_add_mconfig) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) MCFG_SCREEN_REFRESH_RATE(60) - MCFG_MC6845_ADD(MC6845_TAG, MC6845_1, SCREEN_TAG, XTAL(14'318'181)/16) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(10) - MCFG_MC6845_UPDATE_ROW_CB(wangpc_mvc_device, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, wangpc_mvc_device, vsync_w)) + MC6845_1(config, m_crtc, XTAL(14'318'181)/16); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(10); + m_crtc->set_update_row_callback(FUNC(wangpc_mvc_device::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(wangpc_mvc_device::vsync_w)); MACHINE_CONFIG_END diff --git a/src/devices/bus/wangpc/tig.cpp b/src/devices/bus/wangpc/tig.cpp index 62ef4120320..db7ade4c745 100644 --- a/src/devices/bus/wangpc/tig.cpp +++ b/src/devices/bus/wangpc/tig.cpp @@ -124,15 +124,15 @@ MACHINE_CONFIG_START(wangpc_tig_device::device_add_mconfig) MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") - MCFG_DEVICE_ADD(UPD7720_0_TAG, UPD7220, XTAL(52'832'000)/28) - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_0_map) - MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(wangpc_tig_device, hgdc_draw_text) - MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - - MCFG_DEVICE_ADD(UPD7720_1_TAG, UPD7220, XTAL(52'832'000)/28) - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(wangpc_tig_device, hgdc_display_pixels) - MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + UPD7220(config, m_hgdc0, XTAL(52'832'000)/28); + m_hgdc0->set_addrmap(0, &wangpc_tig_device::upd7220_0_map); + m_hgdc0->set_draw_text_callback(FUNC(wangpc_tig_device::hgdc_draw_text), this); + m_hgdc0->set_screen(SCREEN_TAG); + + UPD7220(config, m_hgdc1, XTAL(52'832'000)/28); + m_hgdc1->set_addrmap(0, &wangpc_tig_device::upd7220_1_map); + m_hgdc1->set_display_pixels_callback(FUNC(wangpc_tig_device::hgdc_display_pixels), this); + m_hgdc1->set_screen(SCREEN_TAG); MACHINE_CONFIG_END diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h index 20bfc24d53e..1233651e07b 100644 --- a/src/devices/video/mc6845.h +++ b/src/devices/video/mc6845.h @@ -12,58 +12,6 @@ #pragma once -#define MCFG_MC6845_ADD(_tag, _variant, _screen_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, _variant, _clock) \ - MCFG_VIDEO_SET_SCREEN(_screen_tag) - -#define MCFG_MOS8563_ADD(_tag, _screen_tag, _clock, _map) \ - MCFG_DEVICE_ADD(_tag, MOS8563, _clock) \ - MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_DEVICE_ADDRESS_MAP(0, _map) - -#define MCFG_MOS8568_ADD(_tag, _screen_tag, _clock, _map) \ - MCFG_DEVICE_ADD(_tag, MOS8568, _clock) \ - MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_DEVICE_ADDRESS_MAP(0, _map) - - -#define MCFG_MC6845_SHOW_BORDER_AREA(_show) \ - downcast(*device).set_show_border_area(_show); - -#define MCFG_MC6845_VISAREA_ADJUST(_minx, _maxx, _miny, _maxy) \ - downcast(*device).set_visarea_adjust(_minx, _maxx, _miny, _maxy); - -#define MCFG_MC6845_CHAR_WIDTH(_pixels) \ - downcast(*device).set_char_width(_pixels); - -#define MCFG_MC6845_RECONFIGURE_CB(_class, _method) \ - downcast(*device).set_reconfigure_callback(&_class::_method, #_class "::" #_method, this); - -#define MCFG_MC6845_BEGIN_UPDATE_CB(_class, _method) \ - downcast(*device).set_begin_update_callback(&_class::_method, #_class "::" #_method, this); - -#define MCFG_MC6845_UPDATE_ROW_CB(_class, _method) \ - downcast(*device).set_update_row_callback(&_class::_method, #_class "::" #_method, this); - -#define MCFG_MC6845_END_UPDATE_CB(_class, _method) \ - downcast(*device).set_end_update_callback(&_class::_method, #_class "::" #_method, this); - -#define MCFG_MC6845_ADDR_CHANGED_CB(_class, _method) \ - downcast(*device).set_on_update_addr_change_callback(&_class::_method, #_class "::" #_method, this); - -#define MCFG_MC6845_OUT_DE_CB(_write) \ - downcast(*device).set_out_de_callback(DEVCB_##_write); - -#define MCFG_MC6845_OUT_CUR_CB(_write) \ - downcast(*device).set_out_cur_callback(DEVCB_##_write); - -#define MCFG_MC6845_OUT_HSYNC_CB(_write) \ - downcast(*device).set_out_hsync_callback(DEVCB_##_write); - -#define MCFG_MC6845_OUT_VSYNC_CB(_write) \ - downcast(*device).set_out_vsync_callback(DEVCB_##_write); - - /* callback definitions */ #define MC6845_RECONFIGURE(name) void name(int width, int height, const rectangle &visarea, attoseconds_t frame_period) @@ -107,10 +55,6 @@ public: template void set_end_update_callback(T &&... args) { m_end_update_cb = end_update_delegate(std::forward(args)...); } template void set_on_update_addr_change_callback(T &&... args) { m_on_update_addr_changed_cb = on_update_addr_changed_delegate(std::forward(args)...); } - template devcb_base &set_out_de_callback(Object &&cb) { return m_out_de_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_cur_callback(Object &&cb) { return m_out_cur_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_hsync_callback(Object &&cb) { return m_out_hsync_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_vsync_callback(Object &&cb) { return m_out_vsync_cb.set_callback(std::forward(cb)); } auto out_de_callback() { return m_out_de_cb.bind(); } auto out_cur_callback() { return m_out_cur_cb.bind(); } auto out_hsync_callback() { return m_out_hsync_cb.bind(); } diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h index 4ea2706a22b..6a9837d90eb 100644 --- a/src/devices/video/upd7220.h +++ b/src/devices/video/upd7220.h @@ -44,26 +44,6 @@ #define UPD7220_DRAW_TEXT_LINE_MEMBER(_name) void _name(bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, int pitch, int lr, int cursor_on, int cursor_addr) -#define MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(_class, _method) \ - downcast(*device).set_display_pixels_callback(upd7220_device::display_pixels_delegate(&_class::_method, #_class "::" #_method, this)); - -#define MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(_class, _method) \ - downcast(*device).set_draw_text_callback(upd7220_device::draw_text_delegate(&_class::_method, #_class "::" #_method, this)); - -#define MCFG_UPD7220_DRQ_CALLBACK(_write) \ - downcast(*device).set_drq_wr_callback(DEVCB_##_write); - -#define MCFG_UPD7220_HSYNC_CALLBACK(_write) \ - downcast(*device).set_hsync_wr_callback(DEVCB_##_write); - -#define MCFG_UPD7220_VSYNC_CALLBACK(_write) \ - downcast(*device).set_vsync_wr_callback(DEVCB_##_write); - -#define MCFG_UPD7220_BLANK_CALLBACK(_write) \ - downcast(*device).set_blank_wr_callback(DEVCB_##_write); - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -82,13 +62,13 @@ public: // construction/destruction upd7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template void set_display_pixels_callback(Object &&cb) { m_display_cb = std::forward(cb); } - template void set_draw_text_callback(Object &&cb) { m_draw_text_cb = std::forward(cb); } + template void set_display_pixels_callback(T &&... args) { m_display_cb = display_pixels_delegate(std::forward(args)...); } + template void set_draw_text_callback(T &&... args) { m_draw_text_cb = draw_text_delegate(std::forward(args)...); } - template devcb_base &set_drq_wr_callback(Object &&cb) { return m_write_drq.set_callback(std::forward(cb)); } - template devcb_base &set_hsync_wr_callback(Object &&cb) { return m_write_hsync.set_callback(std::forward(cb)); } - template devcb_base &set_vsync_wr_callback(Object &&cb) { return m_write_vsync.set_callback(std::forward(cb)); } - template devcb_base &set_blank_wr_callback(Object &&cb) { return m_write_blank.set_callback(std::forward(cb)); } + auto drq_wr_callback() { return m_write_drq.bind(); } + auto hsync_wr_callback() { return m_write_hsync.bind(); } + auto vsync_wr_callback() { return m_write_vsync.bind(); } + auto blank_wr_callback() { return m_write_blank.bind(); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/mame/audio/atarijsa.cpp b/src/mame/audio/atarijsa.cpp index 7ba889a9df1..23b8dacbf5e 100644 --- a/src/mame/audio/atarijsa.cpp +++ b/src/mame/audio/atarijsa.cpp @@ -701,12 +701,12 @@ WRITE8_MEMBER( atari_jsa_i_device::pokey_w ) MACHINE_CONFIG_START(atari_jsa_i_device::device_add_mconfig) // basic machine hardware - MCFG_DEVICE_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) - MCFG_DEVICE_PROGRAM_MAP(atarijsa1_map) - MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, JSA_MASTER_CLOCK/4/16/16/14) + M6502(config, m_jsacpu, JSA_MASTER_CLOCK/2); + m_jsacpu->set_addrmap(AS_PROGRAM, &atari_jsa_i_device::atarijsa1_map); + m_jsacpu->set_periodic_int("soundcomm", FUNC(atari_sound_comm_device::sound_irq_gen), attotime::from_hz(JSA_MASTER_CLOCK/4/16/16/14)); // sound hardware - ATARI_SOUND_COMM(config, m_soundcomm, "cpu") + ATARI_SOUND_COMM(config, m_soundcomm, m_jsacpu) .int_callback().set(FUNC(atari_jsa_base_device::main_int_write_line)); YM2151(config, m_ym2151, JSA_MASTER_CLOCK); @@ -829,15 +829,15 @@ READ8_MEMBER( atari_jsa_ii_device::rdio_r ) //------------------------------------------------- // Fully populated JSA-II -MACHINE_CONFIG_START(atari_jsa_ii_device::device_add_mconfig) - +void atari_jsa_ii_device::device_add_mconfig(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) - MCFG_DEVICE_PROGRAM_MAP(atarijsa2_map) - MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, JSA_MASTER_CLOCK/4/16/16/14) + M6502(config, m_jsacpu, JSA_MASTER_CLOCK/2); + m_jsacpu->set_addrmap(AS_PROGRAM, &atari_jsa_ii_device::atarijsa2_map); + m_jsacpu->set_periodic_int("soundcomm", FUNC(atari_sound_comm_device::sound_irq_gen), attotime::from_hz(JSA_MASTER_CLOCK/4/16/16/14)); // sound hardware - ATARI_SOUND_COMM(config, m_soundcomm, "cpu") + ATARI_SOUND_COMM(config, m_soundcomm, m_jsacpu) .int_callback().set(FUNC(atari_jsa_base_device::main_int_write_line)); YM2151(config, m_ym2151, JSA_MASTER_CLOCK); @@ -845,9 +845,9 @@ MACHINE_CONFIG_START(atari_jsa_ii_device::device_add_mconfig) m_ym2151->port_write_handler().set(FUNC(atari_jsa_base_device::ym2151_port_w)); m_ym2151->add_route(ALL_OUTPUTS, *this, 0.60, AUTO_ALLOC_INPUT, 0); - MCFG_DEVICE_ADD("oki1", OKIM6295, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, *this, 0.75, 0) -MACHINE_CONFIG_END + OKIM6295(config, m_oki1, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH); + m_oki1->add_route(ALL_OUTPUTS, *this, 0.75, AUTO_ALLOC_INPUT, 0); +} //------------------------------------------------- @@ -912,15 +912,15 @@ READ8_MEMBER( atari_jsa_iii_device::rdio_r ) //------------------------------------------------- // Fully populated JSA-III -MACHINE_CONFIG_START(atari_jsa_iii_device::device_add_mconfig) - +void atari_jsa_iii_device::device_add_mconfig(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) - MCFG_DEVICE_PROGRAM_MAP(atarijsa3_map) - MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, JSA_MASTER_CLOCK/4/16/16/14) + M6502(config, m_jsacpu, JSA_MASTER_CLOCK/2); + m_jsacpu->set_addrmap(AS_PROGRAM, &atari_jsa_iii_device::atarijsa3_map); + m_jsacpu->set_periodic_int("soundcomm", FUNC(atari_sound_comm_device::sound_irq_gen), attotime::from_hz(JSA_MASTER_CLOCK/4/16/16/14)); // sound hardware - ATARI_SOUND_COMM(config, m_soundcomm, "cpu") + ATARI_SOUND_COMM(config, m_soundcomm, m_jsacpu) .int_callback().set(FUNC(atari_jsa_base_device::main_int_write_line)); YM2151(config, m_ym2151, JSA_MASTER_CLOCK); @@ -928,10 +928,10 @@ MACHINE_CONFIG_START(atari_jsa_iii_device::device_add_mconfig) m_ym2151->port_write_handler().set(FUNC(atari_jsa_base_device::ym2151_port_w)); m_ym2151->add_route(ALL_OUTPUTS, *this, 0.60, AUTO_ALLOC_INPUT, 0); - MCFG_DEVICE_ADD("oki1", OKIM6295, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH) - MCFG_DEVICE_ADDRESS_MAP(0, jsa3_oki1_map) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, *this, 0.75, 0) -MACHINE_CONFIG_END + OKIM6295(config, m_oki1, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH); + m_oki1->set_addrmap(0, &atari_jsa_iii_device::jsa3_oki1_map); + m_oki1->add_route(ALL_OUTPUTS, *this, 0.75, AUTO_ALLOC_INPUT, 0); +} //------------------------------------------------- @@ -965,16 +965,15 @@ atari_jsa_iiis_device::atari_jsa_iiis_device(const machine_config &mconfig, cons //------------------------------------------------- // Fully populated JSA_IIIs -MACHINE_CONFIG_START(atari_jsa_iiis_device::device_add_mconfig) - +void atari_jsa_iiis_device::device_add_mconfig(machine_config &config) +{ atari_jsa_iii_device::device_add_mconfig(config); - MCFG_DEVICE_MODIFY("ym2151") - MCFG_SOUND_ROUTES_RESET() - MCFG_MIXER_ROUTE(0, *this, 0.60, 0) - MCFG_MIXER_ROUTE(1, *this, 0.60, 1) + m_ym2151->reset_routes(); + m_ym2151->add_route(0, *this, 0.60, AUTO_ALLOC_INPUT, 0); + m_ym2151->add_route(1, *this, 0.60, AUTO_ALLOC_INPUT, 1); - MCFG_DEVICE_ADD("oki2", OKIM6295, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, *this, 0.75, 1) - MCFG_DEVICE_ADDRESS_MAP(0, jsa3_oki2_map) -MACHINE_CONFIG_END + OKIM6295(config, m_oki2, JSA_MASTER_CLOCK/3, okim6295_device::PIN7_HIGH); + m_oki2->add_route(ALL_OUTPUTS, *this, 0.75, AUTO_ALLOC_INPUT, 1); + m_oki2->set_addrmap(0, &atari_jsa_iiis_device::jsa3_oki2_map); +} diff --git a/src/mame/audio/tx1.cpp b/src/mame/audio/tx1.cpp index 0d99384356e..d7eaf9d009a 100644 --- a/src/mame/audio/tx1.cpp +++ b/src/mame/audio/tx1.cpp @@ -553,10 +553,10 @@ ioport_constructor tx1j_sound_device::device_input_ports() const } MACHINE_CONFIG_START(tx1_sound_device::device_add_mconfig) - MCFG_DEVICE_ADD(m_audiocpu, Z80, TX1_PIXEL_CLOCK / 2) - MCFG_DEVICE_PROGRAM_MAP(tx1_sound_prg) - MCFG_DEVICE_IO_MAP(tx1_sound_io) - MCFG_DEVICE_PERIODIC_INT_DEVICE(DEVICE_SELF, tx1_sound_device, z80_irq, TX1_PIXEL_CLOCK / 4 / 2048 / 2) + Z80(config, m_audiocpu, TX1_PIXEL_CLOCK / 2); + m_audiocpu->set_addrmap(AS_PROGRAM, &tx1_sound_device::tx1_sound_prg); + m_audiocpu->set_addrmap(AS_IO, &tx1_sound_device::tx1_sound_io); + m_audiocpu->set_periodic_int(DEVICE_SELF, FUNC(tx1_sound_device::z80_irq), attotime::from_hz(TX1_PIXEL_CLOCK / 4 / 2048 / 2)); I8255A(config, m_ppi); m_ppi->in_pa_callback().set(FUNC(tx1_sound_device::tx1_ppi_porta_r)); @@ -1060,10 +1060,10 @@ ioport_constructor buggyboyjr_sound_device::device_input_ports() const } MACHINE_CONFIG_START(buggyboy_sound_device::device_add_mconfig) - MCFG_DEVICE_ADD(m_audiocpu, Z80, BUGGYBOY_ZCLK / 2) - MCFG_DEVICE_PROGRAM_MAP(buggyboy_sound_prg) - MCFG_DEVICE_PERIODIC_INT_DEVICE(DEVICE_SELF, buggyboy_sound_device, z80_irq, BUGGYBOY_ZCLK / 2 / 4 / 2048) - MCFG_DEVICE_IO_MAP(buggyboy_sound_io) + Z80(config, m_audiocpu, BUGGYBOY_ZCLK / 2); + m_audiocpu->set_addrmap(AS_PROGRAM, &buggyboy_sound_device::buggyboy_sound_prg); + m_audiocpu->set_addrmap(AS_IO, &buggyboy_sound_device::buggyboy_sound_io); + m_audiocpu->set_periodic_int(DEVICE_SELF, FUNC(buggyboy_sound_device::z80_irq), attotime::from_hz(BUGGYBOY_ZCLK / 2 / 4 / 2048)); I8255A(config, m_ppi); /* Buggy Boy uses an 8255 PPI instead of YM2149 ports for inputs! */ @@ -1091,10 +1091,10 @@ MACHINE_CONFIG_START(buggyboy_sound_device::device_add_mconfig) MACHINE_CONFIG_END MACHINE_CONFIG_START(buggyboyjr_sound_device::device_add_mconfig) - MCFG_DEVICE_ADD(m_audiocpu, Z80, BUGGYBOY_ZCLK / 2) - MCFG_DEVICE_PROGRAM_MAP(buggybjr_sound_prg) - MCFG_DEVICE_IO_MAP(buggyboy_sound_io) - MCFG_DEVICE_PERIODIC_INT_DEVICE(DEVICE_SELF, buggyboy_sound_device, z80_irq, BUGGYBOY_ZCLK / 2 / 4 / 2048) + Z80(config, m_audiocpu, BUGGYBOY_ZCLK / 2); + m_audiocpu->set_addrmap(AS_PROGRAM, &buggyboyjr_sound_device::buggybjr_sound_prg); + m_audiocpu->set_addrmap(AS_IO, &buggyboyjr_sound_device::buggyboy_sound_io); + m_audiocpu->set_periodic_int(DEVICE_SELF, FUNC(buggyboy_sound_device::z80_irq), attotime::from_hz(BUGGYBOY_ZCLK / 2 / 4 / 2048)); SPEAKER(config, "frontleft", -0.2, 0.0, 1.0); SPEAKER(config, "frontright", 0.2, 0.0, 1.0); diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp index 152d3ec1688..e1af8460060 100644 --- a/src/mame/drivers/a5105.cpp +++ b/src/mame/drivers/a5105.cpp @@ -593,10 +593,10 @@ MACHINE_CONFIG_START(a5105_state::a5105) BEEP(config, "beeper", 500).add_route(ALL_OUTPUTS, "mono", 0.50); /* Devices */ - MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL(15'000'000) / 16) // unk clock - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(a5105_state, hgdc_display_pixels) - MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(a5105_state, hgdc_draw_text) + UPD7220(config, m_hgdc, XTAL(15'000'000) / 16); // unk clock + m_hgdc->set_addrmap(0, &a5105_state::upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(a5105_state::hgdc_display_pixels), this); + m_hgdc->set_draw_text_callback(FUNC(a5105_state::hgdc_draw_text), this); z80ctc_device& ctc(Z80CTC(config, "z80ctc", XTAL(15'000'000) / 4)); ctc.intr_callback().set_inputline(m_maincpu, 0); diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp index 9a4cd32ae99..a461d28a3db 100644 --- a/src/mame/drivers/alphatro.cpp +++ b/src/mame/drivers/alphatro.cpp @@ -737,10 +737,11 @@ MACHINE_CONFIG_START(alphatro_state::alphatro) m_dmac->out_iow_cb<2>().set("fdc", FUNC(upd765a_device::mdma_w)); m_dmac->out_tc_cb().set("fdc", FUNC(upd765a_device::tc_line_w)); - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(12'288'000) / 8) // clk unknown - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(alphatro_state, crtc_update_row) + MC6845(config, m_crtc, XTAL(12'288'000) / 8); // clk unknown + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(alphatro_state::crtc_update_row), this); I8251(config, m_usart, 0); m_usart->txd_handler().set(FUNC(alphatro_state::txdata_callback)); diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp index 2c9de4a8cb3..54d5622011f 100644 --- a/src/mame/drivers/amust.cpp +++ b/src/mame/drivers/amust.cpp @@ -454,12 +454,13 @@ MACHINE_CONFIG_START(amust_state::amust) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* Devices */ - MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(14'318'181) / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(amust_state, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, amust_state, hsync_w)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, amust_state, vsync_w)) + h46505_device &crtc(H46505(config, "crtc", XTAL(14'318'181) / 8)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(amust_state::crtc_update_row), this); + crtc.out_hsync_callback().set(FUNC(amust_state::hsync_w)); + crtc.out_vsync_callback().set(FUNC(amust_state::vsync_w)); UPD765A(config, m_fdc, true, true); m_fdc->drq_wr_callback().set(FUNC(amust_state::drq_w)); diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp index db93be349aa..0012d6f9998 100644 --- a/src/mame/drivers/apc.cpp +++ b/src/mame/drivers/apc.cpp @@ -992,13 +992,13 @@ MACHINE_CONFIG_START(apc_state::apc) MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_apc) - MCFG_DEVICE_ADD(m_hgdc1, UPD7220, 3579545) // unk clock - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) - MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(apc_state, hgdc_draw_text) + UPD7220(config, m_hgdc1, 3579545); // unk clock + m_hgdc1->set_addrmap(0, &apc_state::upd7220_1_map); + m_hgdc1->set_draw_text_callback(FUNC(apc_state::hgdc_draw_text), this); - MCFG_DEVICE_ADD(m_hgdc2, UPD7220, 3579545) // unk clock - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_2_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(apc_state, hgdc_display_pixels) + UPD7220(config, m_hgdc2, 3579545); // unk clock + m_hgdc2->set_addrmap(0, &apc_state::upd7220_2_map); + m_hgdc2->set_display_pixels_callback(FUNC(apc_state::hgdc_display_pixels), this); /* sound hardware */ SPEAKER(config, m_speaker).front_center(); diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp index 590baa52cb8..3278d95e0ff 100644 --- a/src/mame/drivers/applix.cpp +++ b/src/mame/drivers/applix.cpp @@ -887,11 +887,13 @@ MACHINE_CONFIG_START(applix_state::applix) WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "lspeaker", 0.50); /* Devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", 30_MHz_XTAL / 16) // MC6545 @ 1.875 MHz - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(applix_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, applix_state, vsync_w)) + MC6845(config, m_crtc, 30_MHz_XTAL / 16); // MC6545 @ 1.875 MHz + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(applix_state::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(applix_state::vsync_w)); + VIA6522(config, m_via, 30_MHz_XTAL / 4 / 10); // VIA uses 68000 E clock m_via->readpb_handler().set(FUNC(applix_state::applix_pb_r)); diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp index cf1e4c95029..51286c3ae25 100644 --- a/src/mame/drivers/atarisy2.cpp +++ b/src/mame/drivers/atarisy2.cpp @@ -1189,9 +1189,9 @@ MACHINE_CONFIG_START(atarisy2_state::atarisy2) MCFG_T11_INITIAL_MODE(0x36ff) /* initial mode word has DAL15,14,11,8 pulled low */ MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_ADD("audiocpu", M6502, SOUND_CLOCK/8) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, MASTER_CLOCK/2/16/16/16/10) + M6502(config, m_audiocpu, SOUND_CLOCK/8); + m_audiocpu->set_addrmap(AS_PROGRAM, &atarisy2_state::sound_map); + m_audiocpu->set_periodic_int("soundcomm", FUNC(atari_sound_comm_device::sound_irq_gen), attotime::from_hz(MASTER_CLOCK/2/16/16/16/10)); MCFG_MACHINE_START_OVERRIDE(atarisy2_state,atarisy2) MCFG_MACHINE_RESET_OVERRIDE(atarisy2_state,atarisy2) @@ -1233,7 +1233,7 @@ MACHINE_CONFIG_START(atarisy2_state::atarisy2) MCFG_VIDEO_START_OVERRIDE(atarisy2_state,atarisy2) /* sound hardware */ - ATARI_SOUND_COMM(config, "soundcomm", "audiocpu").int_callback().set_nop(); + ATARI_SOUND_COMM(config, m_soundcomm, m_audiocpu).int_callback().set_nop(); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); YM2151(config, m_ym2151, SOUND_CLOCK/4); diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp index 48cb47479b4..46985f5f8d6 100644 --- a/src/mame/drivers/bigbord2.cpp +++ b/src/mame/drivers/bigbord2.cpp @@ -595,11 +595,12 @@ MACHINE_CONFIG_START(bigbord2_state::bigbord2) MCFG_FLOPPY_DRIVE_ADD("fdc:1", bigbord2_floppies, "8dsdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 16_MHz_XTAL / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(bigbord2_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(m_ctc1, z80ctc_device, trg3)) + mc6845_device &crtc(MC6845(config, "crtc", 16_MHz_XTAL / 8)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(bigbord2_state::crtc_update_row), this); + crtc.out_vsync_callback().set(m_ctc1, FUNC(z80ctc_device::trg3)); ls259_device &proglatch(LS259(config, "proglatch")); // U41 proglatch.q_out_cb<6>().set("outlatch1", FUNC(ls259_device::clear_w)); // FCRST - also resets the 8877 diff --git a/src/mame/drivers/candela.cpp b/src/mame/drivers/candela.cpp index 19ec8d3242c..4ea2db992c1 100644 --- a/src/mame/drivers/candela.cpp +++ b/src/mame/drivers/candela.cpp @@ -722,10 +722,11 @@ MACHINE_CONFIG_START(can09_state::can09) RAM(config, RAM_TAG).set_default_size("768K"); // CRTC init - MCFG_MC6845_ADD("crtc", H46505, "screen", CAN09_CPU_CLOCK) // TODO: Check actual clock source, An 8MHz UKI crystal is also nearby - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - //MCFG_MC6845_UPDATE_ROW_CB(can09_state, crtc_update_row) // not written yet + h46505_device &crtc(H46505(config, "crtc", CAN09_CPU_CLOCK)); // TODO: Check actual clock source, An 8MHz UKI crystal is also nearby + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + //crtc.set_update_row_callback(FUNC(can09_state::crtc_update_row), this); // not written yet /* Setup loop from data table in ROM: 0xFFCB 0xE020 (CRTC register number), 0xFFD0 0xE021 (CRTC register value) Reg Value Comment diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp index f68c5eb3ccc..7f9a19528dc 100644 --- a/src/mame/drivers/dim68k.cpp +++ b/src/mame/drivers/dim68k.cpp @@ -335,10 +335,11 @@ MACHINE_CONFIG_START(dim68k_state::dim68k) MCFG_FLOPPY_DRIVE_ADD("fdc:0", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 1790000) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(dim68k_state, crtc_update_row) + MC6845(config, m_crtc, 1790000); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(dim68k_state::crtc_update_row), this); MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) MCFG_GENERIC_KEYBOARD_CB(PUT(dim68k_state, kbd_put)) diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp index 0fd7dc22a84..5b0d48dc7f3 100644 --- a/src/mame/drivers/dmv.cpp +++ b/src/mame/drivers/dmv.cpp @@ -801,10 +801,10 @@ MACHINE_CONFIG_START(dmv_state::dmv) config.set_default_layout(layout_dmv); // devices - MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL(5'000'000)/2) // unk clock - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(dmv_state, hgdc_display_pixels) - MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(dmv_state, hgdc_draw_text) + UPD7220(config, m_hgdc, XTAL(5'000'000)/2); // unk clock + m_hgdc->set_addrmap(0, &dmv_state::upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(dmv_state::hgdc_display_pixels), this); + m_hgdc->set_draw_text_callback(FUNC(dmv_state::hgdc_draw_text), this); AM9517A(config, m_dmac, 4_MHz_XTAL); m_dmac->out_hreq_callback().set(FUNC(dmv_state::dma_hrq_changed)); diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp index c71602fe078..7e08812b43c 100644 --- a/src/mame/drivers/dragon.cpp +++ b/src/mame/drivers/dragon.cpp @@ -303,10 +303,11 @@ MACHINE_CONFIG_START(d64plus_state::d64plus) MCFG_PALETTE_ADD_MONOCHROME("palette") // crtc - MCFG_MC6845_ADD("crtc", HD6845, "plus_screen", 14.218_MHz_XTAL / 4 / 2) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(d64plus_state, crtc_update_row) + HD6845(config, m_crtc, 14.218_MHz_XTAL / 4 / 2); + m_crtc->set_screen("plus_screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(d64plus_state::crtc_update_row), this); MACHINE_CONFIG_END MACHINE_CONFIG_START(dragon_alpha_state::dgnalpha) diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp index fc4e8851594..c0f1d99c4d6 100644 --- a/src/mame/drivers/excali64.cpp +++ b/src/mame/drivers/excali64.cpp @@ -591,12 +591,13 @@ MACHINE_CONFIG_START(excali64_state::excali64) MCFG_PALETTE_ADD("palette", 40) MCFG_PALETTE_INIT_OWNER(excali64_state, excali64) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_excali64) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 16_MHz_XTAL / 16) // 1MHz for lowres; 2MHz for highres - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(excali64_state, update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, excali64_state, crtc_hs)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, excali64_state, crtc_vs)) + MC6845(config, m_crtc, 16_MHz_XTAL / 16); // 1MHz for lowres; 2MHz for highres + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(excali64_state::update_row), this); + m_crtc->out_hsync_callback().set(FUNC(excali64_state::crtc_hs)); + m_crtc->out_vsync_callback().set(FUNC(excali64_state::crtc_vs)); /* Devices */ MCFG_CASSETTE_ADD( "cassette" ) diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp index d651d1d2a8d..980f6b47bc8 100644 --- a/src/mame/drivers/fanucspmg.cpp +++ b/src/mame/drivers/fanucspmg.cpp @@ -1004,23 +1004,20 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg) MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000), 640, 0, 512, 390, 0, 384 ) MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, mc6845_device, screen_update ) - MCFG_MC6845_ADD( CRTC_TAG, HD6845, SCREEN_TAG, XTAL(8'000'000)/2) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(fanucspmg_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, fanucspmg_state, vsync_w)) + HD6845(config, m_crtc, XTAL(8'000'000)/2); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(fanucspmg_state::vsync_w)); MACHINE_CONFIG_END -MACHINE_CONFIG_START(fanucspmg_state::fanucspmgm) +void fanucspmg_state::fanucspmgm(machine_config &config) +{ fanucspmg(config); - MCFG_DEVICE_REMOVE( CRTC_TAG ) - MCFG_MC6845_ADD( CRTC_TAG, HD6845, SCREEN_TAG, XTAL(8'000'000)/2) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(fanucspmg_state, crtc_update_row_mono) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, fanucspmg_state, vsync_w)) -MACHINE_CONFIG_END + m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row_mono), this); +} /* ROM definition */ ROM_START( fanucspg ) diff --git a/src/mame/drivers/if800.cpp b/src/mame/drivers/if800.cpp index e218ec31a65..fe36af9d1e7 100644 --- a/src/mame/drivers/if800.cpp +++ b/src/mame/drivers/if800.cpp @@ -98,9 +98,9 @@ MACHINE_CONFIG_START(if800_state::if800) // PIC8259(config, "pic8259", 0); - MCFG_DEVICE_ADD("upd7220", UPD7220, 8000000/4) - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(if800_state, hgdc_display_pixels) + UPD7220(config, m_hgdc, 8000000/4); + m_hgdc->set_addrmap(0, &if800_state::upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(if800_state::hgdc_display_pixels), this); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/lola8a.cpp b/src/mame/drivers/lola8a.cpp index ed99bcdd65e..670672bc54d 100644 --- a/src/mame/drivers/lola8a.cpp +++ b/src/mame/drivers/lola8a.cpp @@ -287,11 +287,12 @@ MACHINE_CONFIG_START(lola8a_state::lola8a) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) - MCFG_MC6845_ADD(HD46505SP_TAG, HD6845, "screen", XTAL(8'000'000) / 8) // HD6845 == HD46505S - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(lola8a_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, lola8a_state, crtc_vsync)) + hd6845_device &crtc(HD6845(config, HD46505SP_TAG, XTAL(8'000'000) / 8)); // HD6845 == HD46505S + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(lola8a_state::crtc_update_row), this); + crtc.out_vsync_callback().set(FUNC(lola8a_state::crtc_vsync)); MCFG_PALETTE_ADD_3BIT_BRG("palette") diff --git a/src/mame/drivers/m3.cpp b/src/mame/drivers/m3.cpp index 39298c32320..d9b15770076 100644 --- a/src/mame/drivers/m3.cpp +++ b/src/mame/drivers/m3.cpp @@ -131,10 +131,11 @@ MACHINE_CONFIG_START(m3_state::m3) MCFG_PALETTE_ADD_MONOCHROME("palette") /* Devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", 2'000'000) // clk unknown - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(7) - MCFG_MC6845_UPDATE_ROW_CB(m3_state, crtc_update_row) + mc6845_device &crtc(MC6845(config, "crtc", 2'000'000)); // clk unknown + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(7); + crtc.set_update_row_callback(FUNC(m3_state::crtc_update_row), this); MACHINE_CONFIG_END ROM_START( m3 ) diff --git a/src/mame/drivers/mbc200.cpp b/src/mame/drivers/mbc200.cpp index 9038c0eb99e..bfd1258ee6e 100644 --- a/src/mame/drivers/mbc200.cpp +++ b/src/mame/drivers/mbc200.cpp @@ -321,10 +321,11 @@ MACHINE_CONFIG_START(mbc200_state::mbc200) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mbc200) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD("crtc", H46505, "screen", 8_MHz_XTAL / 4) // HD46505SP - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(mbc200_state, update_row) + H46505(config, m_crtc, 8_MHz_XTAL / 4); // HD46505SP + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(mbc200_state::update_row), this); // sound SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp index d56bb88db10..e62bce4de00 100644 --- a/src/mame/drivers/mbc55x.cpp +++ b/src/mame/drivers/mbc55x.cpp @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Phill Harvey-Smith /* - drivers/mbc55x.c + drivers/mbc55x.cpp Machine driver for the Sanyo MBC-550 and MBC-555. @@ -311,12 +311,13 @@ MACHINE_CONFIG_START(mbc55x_state::mbc55x) m_ppi->in_pc_callback().set(FUNC(mbc55x_state::printer_status_r)); m_ppi->out_pc_callback().set(FUNC(mbc55x_state::disk_select_w)); - MCFG_MC6845_ADD(VID_MC6845_NAME, HD6845, SCREEN_TAG, 14.318181_MHz_XTAL / 8) // HD46505SP-1 - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(mbc55x_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, mbc55x_state, vid_hsync_changed)) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, mbc55x_state, vid_vsync_changed)) + HD6845(config, m_crtc, 14.318181_MHz_XTAL / 8); // HD46505SP-1 + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(mbc55x_state::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(mbc55x_state::vid_vsync_changed)); + m_crtc->out_hsync_callback().set(FUNC(mbc55x_state::vid_hsync_changed)); /* Backing storage */ FD1793(config, m_fdc, 14.318181_MHz_XTAL / 14); // M5W1793-02P (clock is nominally 1 MHz) diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp index c90308fdf4d..1c565efb043 100644 --- a/src/mame/drivers/mc1000.cpp +++ b/src/mame/drivers/mc1000.cpp @@ -261,8 +261,8 @@ void mc1000_state::mc1000_io(address_map &map) map.global_mask(0xff); map(0x04, 0x04).rw(FUNC(mc1000_state::printer_r), FUNC(mc1000_state::printer_w)); map(0x05, 0x05).w("cent_data_out", FUNC(output_latch_device::bus_w)); -// AM_RANGE(0x10, 0x10) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) -// AM_RANGE(0x11, 0x11) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w) +// map(0x10, 0x10).w(m_crtc, FUNC(mc6845_device::address_w)); +// map(0x11, 0x11).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); map(0x12, 0x12).w(FUNC(mc1000_state::mc6845_ctrl_w)); map(0x20, 0x20).w(AY8910_TAG, FUNC(ay8910_device::address_w)); map(0x40, 0x40).r(AY8910_TAG, FUNC(ay8910_device::data_r)); diff --git a/src/mame/drivers/mx2178.cpp b/src/mame/drivers/mx2178.cpp index cf4500065eb..23948f56824 100644 --- a/src/mame/drivers/mx2178.cpp +++ b/src/mame/drivers/mx2178.cpp @@ -148,11 +148,12 @@ MACHINE_CONFIG_START(mx2178_state::mx2178) MCFG_PALETTE_ADD_MONOCHROME("palette") /* Devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(18'869'600) / 8) // clk unknown - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(mx2178_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", XTAL(18'869'600) / 8)); // clk unknown + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(mx2178_state::crtc_update_row), this); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); clock_device &acia_clock(CLOCK(config, "acia_clock", XTAL(18'869'600) / 30)); acia_clock.signal_handler().set("acia1", FUNC(acia6850_device::write_txc)); diff --git a/src/mame/drivers/mycom.cpp b/src/mame/drivers/mycom.cpp index b3f8d2505c3..c3369a115e3 100644 --- a/src/mame/drivers/mycom.cpp +++ b/src/mame/drivers/mycom.cpp @@ -540,10 +540,11 @@ MACHINE_CONFIG_START(mycom_state::mycom) /* Manual states clock is 1.008mhz for 40 cols, and 2.016 mhz for 80 cols. The CRTC is a HD46505S - same as a 6845. The start registers need to be readable. */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(mycom_state, crtc_update_row) + MC6845(config, m_crtc, 1008000); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(mycom_state::crtc_update_row), this); SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp index 595773cf421..861e6fef769 100644 --- a/src/mame/drivers/mz3500.cpp +++ b/src/mame/drivers/mz3500.cpp @@ -833,14 +833,14 @@ MACHINE_CONFIG_START(mz3500_state::mz3500) MCFG_FLOPPY_DRIVE_ADD("upd765a:2", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765a:3", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats) - MCFG_DEVICE_ADD("upd7220_chr", UPD7220, MAIN_CLOCK/5) - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) - MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(mz3500_state, hgdc_draw_text) - MCFG_UPD7220_VSYNC_CALLBACK(WRITELINE("upd7220_gfx", upd7220_device, ext_sync_w)) - - MCFG_DEVICE_ADD("upd7220_gfx", UPD7220, MAIN_CLOCK/5) - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_2_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(mz3500_state, hgdc_display_pixels) + UPD7220(config, m_hgdc1, MAIN_CLOCK/5); + m_hgdc1->set_addrmap(0, &mz3500_state::upd7220_1_map); + m_hgdc1->set_draw_text_callback(FUNC(mz3500_state::hgdc_draw_text), this); + m_hgdc1->vsync_wr_callback().set(m_hgdc2, FUNC(upd7220_device::ext_sync_w)); + + UPD7220(config, m_hgdc2, MAIN_CLOCK/5); + m_hgdc2->set_addrmap(0, &mz3500_state::upd7220_2_map); + m_hgdc2->set_display_pixels_callback(FUNC(mz3500_state::hgdc_display_pixels), this); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp index 831472fe85f..adc199e03a0 100644 --- a/src/mame/drivers/mz6500.cpp +++ b/src/mame/drivers/mz6500.cpp @@ -165,9 +165,9 @@ MACHINE_CONFIG_START(mz6500_state::mz6500) MCFG_PALETTE_ADD("palette", 8) /* Devices */ - MCFG_DEVICE_ADD("upd7220", UPD7220, 8000000/6) // unk clock - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(mz6500_state, hgdc_display_pixels) + UPD7220(config, m_hgdc, 8000000/6); // unk clock + m_hgdc->set_addrmap(0, &mz6500_state::upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(mz6500_state::hgdc_display_pixels), this); UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", mz6500_floppies, "525hd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp index 9c92197f184..2eb027c09d5 100644 --- a/src/mame/drivers/ngen.cpp +++ b/src/mame/drivers/ngen.cpp @@ -994,11 +994,11 @@ MACHINE_CONFIG_START(ngen_state::ngen) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_UPDATE_DEVICE("crtc",mc6845_device, screen_update) - MCFG_MC6845_ADD("crtc", MC6845, nullptr, 19980000 / 9) // divisor unknown -- /9 gives 60Hz output, so likely correct - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(9) - MCFG_MC6845_UPDATE_ROW_CB(ngen_state, crtc_update_row) - MCFG_VIDEO_SET_SCREEN("screen") + MC6845(config, m_crtc, 19980000 / 9); // divisor unknown -- /9 gives 60Hz output, so likely correct + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(9); + m_crtc->set_update_row_callback(FUNC(ngen_state::crtc_update_row), this); // keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board) I8251(config, m_viduart, 0); // main clock unknown, Rx/Tx clocks are 19.53kHz @@ -1108,11 +1108,11 @@ MACHINE_CONFIG_START(ngen386_state::ngen386) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_UPDATE_DEVICE("crtc",mc6845_device, screen_update) - MCFG_MC6845_ADD("crtc", MC6845, nullptr, 19980000 / 9) // divisor unknown -- /9 gives 60Hz output, so likely correct - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(9) - MCFG_MC6845_UPDATE_ROW_CB(ngen386_state, crtc_update_row) - MCFG_VIDEO_SET_SCREEN("screen") + MC6845(config, m_crtc, 19980000 / 9); // divisor unknown -- /9 gives 60Hz output, so likely correct + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(9); + m_crtc->set_update_row_callback(FUNC(ngen386_state::crtc_update_row), this); // keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board) I8251(config, m_viduart, 0); // main clock unknown, Rx/Tx clocks are 19.53kHz diff --git a/src/mame/drivers/paso1600.cpp b/src/mame/drivers/paso1600.cpp index 60ef4eb098c..694e1e8b3c1 100644 --- a/src/mame/drivers/paso1600.cpp +++ b/src/mame/drivers/paso1600.cpp @@ -325,9 +325,10 @@ MACHINE_CONFIG_START(paso1600_state::paso1600) // MCFG_PALETTE_INIT(black_and_white) /* Devices */ - MCFG_MC6845_ADD("crtc", H46505, "screen", 16000000/4) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + h46505_device &crtc(H46505(config, "crtc", 16000000/4)); /* unknown clock, hand tuned to get ~60 fps */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); PIC8259(config, m_pic, 0); m_pic->out_int_callback().set_inputline(m_maincpu, 0); diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp index 6e6133314be..31600cc2d50 100644 --- a/src/mame/drivers/pasopia.cpp +++ b/src/mame/drivers/pasopia.cpp @@ -305,10 +305,11 @@ MACHINE_CONFIG_START(pasopia_state::pasopia) MCFG_PALETTE_ADD("palette", 8) /* Devices */ - MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(4'000'000)/4) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(pasopia_state, crtc_update_row) + H46505(config, m_crtc, XTAL(4'000'000)/4); /* unknown clock, hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(pasopia_state::crtc_update_row), this); I8255A(config, m_ppi0); m_ppi0->out_pa_callback().set(FUNC(pasopia_state::vram_addr_lo_w)); diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp index 78f5673da9d..e485c675a85 100644 --- a/src/mame/drivers/pasopia7.cpp +++ b/src/mame/drivers/pasopia7.cpp @@ -985,9 +985,10 @@ MACHINE_CONFIG_START(pasopia7_state::p7_raster) MCFG_PALETTE_ADD_3BIT_BRG("palette") MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pasopia7) - MCFG_MC6845_ADD("crtc", H46505, "screen", VDP_CLOCK) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, VDP_CLOCK); /* unknown clock, hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); MACHINE_CONFIG_END @@ -1006,9 +1007,10 @@ MACHINE_CONFIG_START(pasopia7_state::p7_lcd) MCFG_PALETTE_INIT_OWNER(pasopia7_state,p7_lcd) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pasopia7) - MCFG_MC6845_ADD("crtc", H46505, "screen", LCD_CLOCK) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, LCD_CLOCK); /* unknown clock, hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp index 980d1d596a3..e59fb47a219 100644 --- a/src/mame/drivers/pc9801.cpp +++ b/src/mame/drivers/pc9801.cpp @@ -2370,14 +2370,14 @@ MACHINE_CONFIG_START(pc9801_state::pc9801_common) MCFG_SCREEN_UPDATE_DRIVER(pc9801_state, screen_update) MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pc9801_state, vrtc_irq)) - MCFG_DEVICE_ADD("upd7220_chr", UPD7220, 21.0526_MHz_XTAL / 8) - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) - MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(pc9801_state, hgdc_draw_text) - MCFG_UPD7220_VSYNC_CALLBACK(WRITELINE("upd7220_btm", upd7220_device, ext_sync_w)) - - MCFG_DEVICE_ADD("upd7220_btm", UPD7220, 21.0526_MHz_XTAL / 8) - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_2_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(pc9801_state, hgdc_display_pixels) + UPD7220(config, m_hgdc1, 21.0526_MHz_XTAL / 8); + m_hgdc1->set_addrmap(0, &pc9801_state::upd7220_1_map); + m_hgdc1->set_draw_text_callback(FUNC(pc9801_state::hgdc_draw_text), this); + m_hgdc1->vsync_wr_callback().set(m_hgdc2, FUNC(upd7220_device::ext_sync_w)); + + UPD7220(config, m_hgdc2, 21.0526_MHz_XTAL / 8); + m_hgdc2->set_addrmap(0, &pc9801_state::upd7220_2_map); + m_hgdc2->set_display_pixels_callback(FUNC(pc9801_state::hgdc_display_pixels), this); SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp index ce2c1294daa..cd9db8c52fc 100644 --- a/src/mame/drivers/pg685.cpp +++ b/src/mame/drivers/pg685.cpp @@ -440,10 +440,11 @@ MACHINE_CONFIG_START(pg685_state::pg675) MCFG_SCREEN_RAW_PARAMS(12288000, 882, 0, 720, 370, 0, 350 ) // not real values MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update ) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 12288000) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(pg685_state, crtc_update_row) + mc6845_device &crtc(MC6845(config, "crtc", 12288000)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row), this); // sound hardware @@ -489,10 +490,11 @@ MACHINE_CONFIG_START(pg685_state::pg685) MCFG_SCREEN_RAW_PARAMS(12288000, 882, 0, 720, 370, 0, 350 ) // not real values MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update ) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 12288000) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(pg685_state, crtc_update_row) + mc6845_device &crtc(MC6845(config, "crtc", 12288000)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row), this); // sound hardware @@ -540,10 +542,11 @@ MACHINE_CONFIG_START(pg685_state::pg685oua12) MCFG_SCREEN_RAW_PARAMS(12288000, 882, 0, 720, 370, 0, 350 ) // not real values MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update ) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 12288000) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(pg685_state, crtc_update_row_oua12) + mc6845_device &crtc(MC6845(config, "crtc", 12288000)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row_oua12), this); // sound hardware diff --git a/src/mame/drivers/qvt6800.cpp b/src/mame/drivers/qvt6800.cpp index c8f22b5b4ee..ad9ea7c24d9 100644 --- a/src/mame/drivers/qvt6800.cpp +++ b/src/mame/drivers/qvt6800.cpp @@ -54,25 +54,26 @@ void qvt6800_state::qvt190_mem_map(address_map &map) static INPUT_PORTS_START( qvt6800 ) INPUT_PORTS_END -MACHINE_CONFIG_START(qvt6800_state::qvt190) - MCFG_DEVICE_ADD("maincpu", M6800, XTAL(16'669'800) / 9) - MCFG_DEVICE_PROGRAM_MAP(qvt190_mem_map) +void qvt6800_state::qvt190(machine_config &config) +{ + M6800(config, m_maincpu, XTAL(16'669'800) / 9); + m_maincpu->set_addrmap(AS_PROGRAM, &qvt6800_state::qvt190_mem_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // V61C16P55L + battery - MCFG_DEVICE_ADD("acia1", ACIA6850, 0) + ACIA6850(config, "acia1", 0); - MCFG_DEVICE_ADD("acia2", ACIA6850, 0) + ACIA6850(config, "acia2", 0); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(16'669'800), 882, 0, 720, 315, 0, 300) - MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(16'669'800), 882, 0, 720, 315, 0, 300); + screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update)); - MCFG_DEVICE_ADD("crtc", MC6845, XTAL(16'669'800) / 9) - MCFG_MC6845_CHAR_WIDTH(9) - MCFG_MC6845_UPDATE_ROW_CB(qvt6800_state, update_row) - MCFG_VIDEO_SET_SCREEN("screen") -MACHINE_CONFIG_END + mc6845_device &crtc(MC6845(config, "crtc", XTAL(16'669'800) / 9)); + crtc.set_screen("screen"); + crtc.set_char_width(9); + crtc.set_update_row_callback(FUNC(qvt6800_state::update_row), this); +} /************************************************************************************************************** diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp index 52201c6c584..d28d48cb4d6 100644 --- a/src/mame/drivers/qx10.cpp +++ b/src/mame/drivers/qx10.cpp @@ -799,11 +799,11 @@ MACHINE_CONFIG_START(qx10_state::qx10) I8255(config, m_ppi, 0); - MCFG_DEVICE_ADD("upd7220", UPD7220, MAIN_CLK/6) // unk clock - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(qx10_state, hgdc_display_pixels) - MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(qx10_state, hgdc_draw_text) - MCFG_VIDEO_SET_SCREEN("screen") + UPD7220(config, m_hgdc, MAIN_CLK/6); // unk clock + m_hgdc->set_addrmap(0, &qx10_state::upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(qx10_state::hgdc_display_pixels), this); + m_hgdc->set_draw_text_callback(FUNC(qx10_state::hgdc_draw_text), this); + m_hgdc->set_screen("screen"); MC146818(config, m_rtc, 32.768_kHz_XTAL); m_rtc->irq().set(m_pic_s, FUNC(pic8259_device::ir2_w)); diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index e6ea32255f8..350204e5986 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -3240,12 +3240,13 @@ MACHINE_CONFIG_START(rainbow_state::rainbow) // *************************** COLOR GRAPHICS (OPTION) ************************************** // While the OSC frequency is confirmed, the divider is not (refresh rate is ~60 Hz with 32). - MCFG_DEVICE_ADD("upd7220", UPD7220, 31188000 / 32) // Duell schematics shows a 31.188 Mhz oscillator (confirmed by RFKA). - MCFG_UPD7220_VSYNC_CALLBACK(WRITELINE(*this, rainbow_state, GDC_vblank_irq)) // "The vsync callback line needs to be below the 7220 DEVICE_ADD line." + UPD7220(config, m_hgdc, 31188000 / 32); // Duell schematics shows a 31.188 Mhz oscillator (confirmed by RFKA). + m_hgdc->vsync_wr_callback().set(FUNC(rainbow_state::GDC_vblank_irq)); // "The vsync callback line needs to be below the 7220 DEVICE_ADD line." + + m_hgdc->set_addrmap(0, &rainbow_state::upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(rainbow_state::hgdc_display_pixels), this); + m_hgdc->set_screen(m_screen2); // set_screen needs to be added after 7720 device in the machine config, not after the screen. - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(rainbow_state, hgdc_display_pixels) - MCFG_VIDEO_SET_SCREEN("screen2") // SET_SCREEN needs to be added after 7720 device in the machine config, not after the screen. MCFG_PALETTE_ADD("palette2", 32) MCFG_SCREEN_ADD("screen2", RASTER) diff --git a/src/mame/drivers/sapi1.cpp b/src/mame/drivers/sapi1.cpp index 99124916915..9e3c3deb865 100644 --- a/src/mame/drivers/sapi1.cpp +++ b/src/mame/drivers/sapi1.cpp @@ -671,10 +671,11 @@ MACHINE_CONFIG_START(sapi1_state::sapi3b) MCFG_DEVICE_PROGRAM_MAP(sapi3b_mem) MCFG_DEVICE_IO_MAP(sapi3b_io) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000) // guess - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(6) - MCFG_MC6845_UPDATE_ROW_CB(sapi1_state, crtc_update_row) + mc6845_device &crtc(MC6845(config, "crtc", 1008000)); // guess + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(6); + crtc.set_update_row_callback(FUNC(sapi1_state::crtc_update_row), this); MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp index 6bc76fd9cd8..08ea1dc41fa 100644 --- a/src/mame/drivers/smc777.cpp +++ b/src/mame/drivers/smc777.cpp @@ -1045,9 +1045,10 @@ MACHINE_CONFIG_START(smc777_state::smc777) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty) - MCFG_MC6845_ADD("crtc", H46505, "screen", MASTER_CLOCK/2) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, MASTER_CLOCK/2); /* unknown clock, hand tuned to get ~60 fps */ + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); // floppy controller MB8876(config, m_fdc, 1_MHz_XTAL); diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp index e3763f556bd..552787c84ad 100644 --- a/src/mame/drivers/spc1500.cpp +++ b/src/mame/drivers/spc1500.cpp @@ -895,11 +895,13 @@ MACHINE_CONFIG_START(spc1500_state::spc1500) MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update ) MCFG_PALETTE_ADD("palette", 8) MCFG_PALETTE_INIT_OWNER(spc1500_state, spc) - MCFG_MC6845_ADD("mc6845", MC6845, "screen", (VDP_CLOCK/48)) //unknown divider - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(spc1500_state, crtc_update_row) - MCFG_MC6845_RECONFIGURE_CB(spc1500_state, crtc_reconfig) + MC6845(config, m_vdg, (VDP_CLOCK/48)); //unknown divider + m_vdg->set_screen("screen"); + m_vdg->set_show_border_area(false); + m_vdg->set_char_width(8); + m_vdg->set_update_row_callback(FUNC(spc1500_state::crtc_update_row), this); + m_vdg->set_reconfigure_callback(FUNC(spc1500_state::crtc_reconfig), this); + MCFG_VIDEO_START_OVERRIDE(spc1500_state, spc) I8255(config, m_pio); diff --git a/src/mame/drivers/sys9002.cpp b/src/mame/drivers/sys9002.cpp index fb8a4d9c00f..9c670ef798b 100644 --- a/src/mame/drivers/sys9002.cpp +++ b/src/mame/drivers/sys9002.cpp @@ -138,10 +138,11 @@ MACHINE_CONFIG_START(sys9002_state::sys9002) MCFG_PALETTE_ADD_MONOCHROME("palette") /* Devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(2'000'000)) // clk unknown - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(sys9002_state, crtc_update_row) + mc6845_device &crtc(MC6845(config, "crtc", XTAL(2'000'000))); // clk unknown + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(sys9002_state::crtc_update_row), this); clock_device &uart_clock(CLOCK(config, "uart_clock", 614400)); uart_clock.signal_handler().set("uart1", FUNC(i8251_device::write_txc)); diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp index e42203747f8..d6753e55a84 100644 --- a/src/mame/drivers/tavernie.cpp +++ b/src/mame/drivers/tavernie.cpp @@ -361,10 +361,11 @@ MACHINE_CONFIG_START(tavernie_state::ivg09) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) MCFG_GENERIC_KEYBOARD_CB(PUT(tavernie_state, kbd_put)) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000) // unknown clock - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(tavernie_state, crtc_update_row) + mc6845_device &crtc(MC6845(config, "crtc", 1008000)); // unknown clock + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(tavernie_state::crtc_update_row), this); PIA6821(config, m_pia_ivg, 0); m_pia_ivg->readpb_handler().set(FUNC(tavernie_state::pb_ivg_r)); diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp index 84f77da5b61..6c3df8ba7c5 100644 --- a/src/mame/drivers/trs80m2.cpp +++ b/src/mame/drivers/trs80m2.cpp @@ -724,12 +724,13 @@ MACHINE_CONFIG_START(trs80m2_state::trs80m2) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, 12.48_MHz_XTAL / 8) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(trs80m2_state, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, trs80m2_state, de_w)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, trs80m2_state, vsync_w)) + MC6845(config, m_crtc, 12.48_MHz_XTAL / 8); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(trs80m2_state::crtc_update_row), this); + m_crtc->out_de_callback().set(FUNC(trs80m2_state::de_w)); + m_crtc->out_vsync_callback().set(FUNC(trs80m2_state::vsync_w)); // devices FD1791(config, m_fdc, 8_MHz_XTAL / 4); @@ -812,12 +813,13 @@ MACHINE_CONFIG_START(trs80m16_state::trs80m16) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, 12.48_MHz_XTAL / 8) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(trs80m2_state, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, trs80m2_state, de_w)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, trs80m2_state, vsync_w)) + MC6845(config, m_crtc, 12.48_MHz_XTAL / 8); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(trs80m2_state::crtc_update_row), this); + m_crtc->out_de_callback().set(FUNC(trs80m2_state::de_w)); + m_crtc->out_vsync_callback().set(FUNC(trs80m2_state::vsync_w)); // devices FD1791(config, m_fdc, 8_MHz_XTAL / 4); diff --git a/src/mame/drivers/tvc.cpp b/src/mame/drivers/tvc.cpp index 5d81dd8d2ce..709891e1542 100644 --- a/src/mame/drivers/tvc.cpp +++ b/src/mame/drivers/tvc.cpp @@ -783,11 +783,12 @@ MACHINE_CONFIG_START(tvc_state::tvc) MCFG_PALETTE_ADD( "palette", 16 ) MCFG_PALETTE_INIT_OWNER(tvc_state, tvc) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 3125000/2) // clk taken from schematics - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) /*?*/ - MCFG_MC6845_UPDATE_ROW_CB(tvc_state, crtc_update_row) - MCFG_MC6845_OUT_CUR_CB(WRITELINE(*this, tvc_state, int_ff_set)) + mc6845_device &crtc(MC6845(config, "crtc", 3125000/2)); // clk taken from schematics + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /*?*/ + crtc.set_update_row_callback(FUNC(tvc_state::crtc_update_row), this); + crtc.out_cur_callback().set(FUNC(tvc_state::int_ff_set)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("64K").set_extra_options("32K"); diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp index 3e872ede8b2..1a9630d5270 100644 --- a/src/mame/drivers/vt240.cpp +++ b/src/mame/drivers/vt240.cpp @@ -674,12 +674,12 @@ MACHINE_CONFIG_START(vt240_state::vt240) MCFG_PALETTE_ADD("palette", 32) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vt240) - MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL(16'097'280) / 16) // actually /8? - MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(vt240_state, hgdc_draw) - MCFG_UPD7220_VSYNC_CALLBACK(INPUTLINE("charcpu", I8085_RST75_LINE)) - MCFG_UPD7220_BLANK_CALLBACK(INPUTLINE("charcpu", I8085_RST55_LINE)) - MCFG_VIDEO_SET_SCREEN("screen") + UPD7220(config, m_hgdc, XTAL(16'097'280) / 16); // actually /8? + m_hgdc->set_addrmap(0, &vt240_state::upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(vt240_state::hgdc_draw), this); + m_hgdc->vsync_wr_callback().set_inputline(m_i8085, I8085_RST75_LINE); + m_hgdc->blank_wr_callback().set_inputline(m_i8085, I8085_RST55_LINE); + m_hgdc->set_screen("screen"); MCFG_DEVICE_ADD(m_duart, SCN2681, XTAL(7'372'800) / 2) MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, vt240_state, irq13_w)) diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp index 6eecebcd390..10aeecaaf3d 100644 --- a/src/mame/drivers/x1.cpp +++ b/src/mame/drivers/x1.cpp @@ -2235,9 +2235,10 @@ MACHINE_CONFIG_START(x1_state::x1) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) MCFG_SCREEN_UPDATE_DRIVER(x1_state, screen_update_x1) - MCFG_MC6845_ADD("crtc", H46505, "screen", (VDP_CLOCK/48)) //unknown divider - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, (VDP_CLOCK/48)); //unknown divider + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); MCFG_PALETTE_ADD("palette", 0x10+0x1000) MCFG_PALETTE_INIT_OWNER(x1_state,x1) diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp index 4cbd79fd31f..74ec4443b2b 100644 --- a/src/mame/drivers/x1twin.cpp +++ b/src/mame/drivers/x1twin.cpp @@ -465,9 +465,10 @@ MACHINE_CONFIG_START(x1twin_state::x1twin) MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, huc6260_device::WPF, 70, 70 + 512 + 32, huc6260_device::LPF, 14, 14+242) MCFG_SCREEN_UPDATE_DRIVER(x1twin_state, screen_update_x1pce) - MCFG_MC6845_ADD("crtc", H46505, "screen", (VDP_CLOCK/48)) //unknown divider - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, (VDP_CLOCK/48)); //unknown divider + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); MCFG_PALETTE_ADD("palette", 0x10+0x1000) MCFG_PALETTE_INIT_OWNER(x1twin_state,x1) diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp index c3c0a558449..423c82d488a 100644 --- a/src/mame/drivers/z100.cpp +++ b/src/mame/drivers/z100.cpp @@ -693,9 +693,10 @@ MACHINE_CONFIG_START(z100_state::z100) MCFG_PALETTE_ADD("palette", 8) /* devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", 14.318181_MHz_XTAL / 8) /* unknown clock, hand tuned to get ~50/~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + MC6845(config, m_crtc, 14.318181_MHz_XTAL / 8); /* unknown clock, hand tuned to get ~50/~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); PIC8259(config, m_picm, 0); m_picm->out_int_callback().set_inputline(m_maincpu, 0); diff --git a/src/mame/video/mikromik.cpp b/src/mame/video/mikromik.cpp index 1497636e6fc..678d37c8449 100644 --- a/src/mame/video/mikromik.cpp +++ b/src/mame/video/mikromik.cpp @@ -67,7 +67,7 @@ void mm1_state::mm1_upd7220_map(address_map &map) //------------------------------------------------- -// UPD7220_INTERFACE( hgdc_intf ) +// UPD7220 callbacks //------------------------------------------------- UPD7220_DISPLAY_PIXELS_MEMBER( mm1_state::hgdc_display_pixels ) @@ -148,8 +148,8 @@ MACHINE_CONFIG_START(mm1_state::mm1m6_video) MCFG_I8275_VRTC_CALLBACK(WRITELINE(UPD7220_TAG, upd7220_device, ext_sync_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, XTAL(18'720'000)/8) - MCFG_DEVICE_ADDRESS_MAP(0, mm1_upd7220_map) - MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(mm1_state, hgdc_display_pixels) - MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + UPD7220(config, m_hgdc, XTAL(18'720'000)/8); + m_hgdc->set_addrmap(0, &mm1_state::mm1_upd7220_map); + m_hgdc->set_display_pixels_callback(FUNC(mm1_state::hgdc_display_pixels), this); + m_hgdc->set_screen(SCREEN_TAG); MACHINE_CONFIG_END diff --git a/src/mame/video/pc_t1t.cpp b/src/mame/video/pc_t1t.cpp index 4116144329f..f3b58993b6e 100644 --- a/src/mame/video/pc_t1t.cpp +++ b/src/mame/video/pc_t1t.cpp @@ -116,42 +116,46 @@ void pc_t1t_device::vram_map(address_map &map) map(0x20000, 0x3ffff).noprw(); } -MACHINE_CONFIG_START(pcvideo_t1000_device::device_add_mconfig) - MCFG_SCREEN_ADD(T1000_SCREEN_NAME, RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181),912,0,640,262,0,200) - MCFG_SCREEN_UPDATE_DEVICE( T1000_MC6845_NAME, mc6845_device, screen_update ) +void pcvideo_t1000_device::device_add_mconfig(machine_config &config) +{ + screen_device &screen(SCREEN(config, T1000_SCREEN_NAME, SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(14'318'181),912,0,640,262,0,200); + screen.set_screen_update(T1000_MC6845_NAME, FUNC(mc6845_device::screen_update)); - MCFG_PALETTE_ADD( "palette", 32 ) - MCFG_PALETTE_INIT_OWNER(pc_t1t_device, pcjr) + palette_device &palette(PALETTE(config, "palette", 32)); + palette.set_init(palette_init_delegate(FUNC(pc_t1t_device::palette_init_pcjr), this)); - MCFG_MC6845_ADD(T1000_MC6845_NAME, MC6845, T1000_SCREEN_NAME, XTAL(14'318'181)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(pc_t1t_device, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, pc_t1t_device, t1000_de_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, pcvideo_t1000_device, t1000_vsync_changed)) + MC6845(config, m_mc6845, XTAL(14'318'181)/8); + m_mc6845->set_screen(T1000_SCREEN_NAME); + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(8); + m_mc6845->set_update_row_callback(FUNC(pc_t1t_device::crtc_update_row), this); + m_mc6845->out_de_callback().set(FUNC(pc_t1t_device::t1000_de_changed)); + m_mc6845->out_vsync_callback().set(FUNC(pcvideo_t1000_device::t1000_vsync_changed)); ADDRESS_MAP_BANK(config, m_vram).set_map(&pc_t1t_device::vram_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(pcvideo_pcjr_device::device_add_mconfig) - MCFG_SCREEN_ADD(T1000_SCREEN_NAME, RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181), 912, 0, 640, 262, 0, 200) - MCFG_SCREEN_UPDATE_DEVICE( T1000_MC6845_NAME, mc6845_device, screen_update ) +void pcvideo_pcjr_device::device_add_mconfig(machine_config &config) +{ + screen_device &screen(SCREEN(config, T1000_SCREEN_NAME, SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(14'318'181), 912, 0, 640, 262, 0, 200); + screen.set_screen_update(T1000_MC6845_NAME, FUNC(mc6845_device::screen_update)); - MCFG_PALETTE_ADD( "palette", 32 ) - MCFG_PALETTE_INIT_OWNER(pc_t1t_device, pcjr) + palette_device &palette(PALETTE(config, "palette", 32)); + palette.set_init(palette_init_delegate(FUNC(pc_t1t_device::palette_init_pcjr), this)); - MCFG_MC6845_ADD(T1000_MC6845_NAME, MC6845, T1000_SCREEN_NAME, XTAL(14'318'181)/16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(pcvideo_pcjr_device, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, pc_t1t_device, t1000_de_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, pcvideo_pcjr_device, pcjr_vsync_changed)) + MC6845(config, m_mc6845, XTAL(14'318'181)/16); + m_mc6845->set_screen(T1000_SCREEN_NAME); + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(8); + m_mc6845->set_update_row_callback(FUNC(pcvideo_pcjr_device::crtc_update_row), this); + m_mc6845->out_de_callback().set(FUNC(pc_t1t_device::t1000_de_changed)); + m_mc6845->out_vsync_callback().set(FUNC(pcvideo_pcjr_device::pcjr_vsync_changed)); ADDRESS_MAP_BANK(config, m_vram).set_map(&pc_t1t_device::vram_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000); -MACHINE_CONFIG_END +} /*************************************************************************** diff --git a/src/mame/video/v1050.cpp b/src/mame/video/v1050.cpp index 7c77fce7a43..71c4f623816 100644 --- a/src/mame/video/v1050.cpp +++ b/src/mame/video/v1050.cpp @@ -110,11 +110,12 @@ void v1050_state::video_start() /* Machine Drivers */ MACHINE_CONFIG_START(v1050_state::v1050_video) - MCFG_MC6845_ADD(H46505_TAG, H46505, SCREEN_TAG, 15.36_MHz_XTAL/8) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(v1050_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, v1050_state, crtc_vs_w)) + H46505(config, m_crtc, 15.36_MHz_XTAL/8); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(v1050_state::crtc_update_row), this); + m_crtc->out_vsync_callback().set(FUNC(v1050_state::crtc_vs_w)); MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::green()) MCFG_SCREEN_UPDATE_DEVICE(H46505_TAG, h46505_device, screen_update) -- cgit v1.2.3