summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2014-05-13 17:00:02 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2014-05-13 17:00:02 +0000
commitf5d20c68501e01c83b4c42ad001d826bb1b24370 (patch)
treee0dbebfc293777793ba65a1d03635ab817cddfb0 /src/mess
parent41afc28498b64234680b70262a18939f94b1a051 (diff)
mc6847: converted to use devcb2, delegates and inline configs. nw.
Diffstat (limited to 'src/mess')
-rw-r--r--src/mess/drivers/apf.c22
-rw-r--r--src/mess/drivers/atom.c16
-rw-r--r--src/mess/drivers/coco12.c9
-rw-r--r--src/mess/drivers/dragon.c5
-rw-r--r--src/mess/drivers/fc100.c30
-rw-r--r--src/mess/drivers/mc10.c14
-rw-r--r--src/mess/drivers/mc1000.c10
-rw-r--r--src/mess/drivers/phc25.c61
-rw-r--r--src/mess/drivers/spc1000.c34
-rw-r--r--src/mess/drivers/sv8000.c24
-rw-r--r--src/mess/drivers/vtech1.c76
-rw-r--r--src/mess/drivers/z80ne.c33
-rw-r--r--src/mess/includes/coco12.h1
-rw-r--r--src/mess/includes/phc25.h4
-rw-r--r--src/mess/machine/coco12.c12
-rw-r--r--src/mess/video/gime.c4
16 files changed, 108 insertions, 247 deletions
diff --git a/src/mess/drivers/apf.c b/src/mess/drivers/apf.c
index 1694ef06a6f..4e7a801e0ec 100644
--- a/src/mess/drivers/apf.c
+++ b/src/mess/drivers/apf.c
@@ -538,21 +538,6 @@ static const floppy_interface apfimag_floppy_interface =
NULL
};
-static const mc6847_interface apf_mc6847_intf =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(apf_state, videoram_r),
-
- DEVCB_NULL, /* AG */
- DEVCB_LINE_VCC, /* GM2 */
- DEVCB_LINE_VCC, /* GM1 */
- DEVCB_NULL, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_LINE_GND, /* INTEXT */
- DEVCB_NULL, /* INV */
-};
-
static MACHINE_CONFIG_START( apfm1000, apf_state )
/* basic machine hardware */
@@ -561,8 +546,13 @@ static MACHINE_CONFIG_START( apfm1000, apf_state )
/* video hardware */
MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_NTSC, XTAL_3_579545MHz, apf_mc6847_intf)
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_NTSC, XTAL_3_579545MHz)
MCFG_MC6847_FSYNC_CALLBACK(DEVWRITELINE("pia0", pia6821_device, cb1_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(apf_state, videoram_r))
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2 | MC6847_MODE_GM1)
+ // INTEXT = GND
+ // other lines not connected
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/atom.c b/src/mess/drivers/atom.c
index 95de26eec8c..cd347c7c4c7 100644
--- a/src/mess/drivers/atom.c
+++ b/src/mess/drivers/atom.c
@@ -613,7 +613,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(atom_state::cassette_output_tick)
}
/*-------------------------------------------------
- mc6847_interface vdg_intf
+ mc6847 interface
-------------------------------------------------*/
READ8_MEMBER( atom_state::vdg_videoram_r )
@@ -627,12 +627,6 @@ READ8_MEMBER( atom_state::vdg_videoram_r )
return m_video_ram[offset];
}
-static const mc6847_interface vdg_intf =
-{
- SCREEN_TAG,
- DEVCB_DRIVER_MEMBER(atom_state, vdg_videoram_r)
-};
-
/***************************************************************************
MACHINE INITIALIZATION
***************************************************************************/
@@ -780,7 +774,9 @@ static MACHINE_CONFIG_START( atom, atom_state )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
- MCFG_MC6847_ADD(MC6847_TAG, MC6847_PAL, XTAL_4_433619MHz, vdg_intf)
+
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_PAL, XTAL_4_433619MHz)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(atom_state, vdg_videoram_r))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -872,7 +868,9 @@ static MACHINE_CONFIG_START( atombb, atom_state )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
- MCFG_MC6847_ADD(MC6847_TAG, MC6847_PAL, XTAL_4_433619MHz, vdg_intf)
+
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_PAL, XTAL_4_433619MHz)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(atom_state, vdg_videoram_r))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/coco12.c b/src/mess/drivers/coco12.c
index fa8e5e7dc47..0b9b0ab0261 100644
--- a/src/mess/drivers/coco12.c
+++ b/src/mess/drivers/coco12.c
@@ -314,9 +314,11 @@ static MACHINE_CONFIG_START( coco, coco12_state )
// video hardware
MCFG_SCREEN_MC6847_NTSC_ADD(SCREEN_TAG, VDG_TAG)
- MCFG_MC6847_ADD(VDG_TAG, MC6847_NTSC, XTAL_3_579545MHz, coco12_state::mc6847_config)
+
+ MCFG_DEVICE_ADD(VDG_TAG, MC6847_NTSC, XTAL_3_579545MHz)
MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(coco12_state, horizontal_sync))
MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(coco12_state, field_sync))
+ MCFG_MC6847_INPUT_CALLBACK(DEVREAD8(SAM_TAG, sam6883_device, display_read))
// sound hardware
MCFG_FRAGMENT_ADD( coco_sound )
@@ -351,10 +353,11 @@ static MACHINE_CONFIG_DERIVED( coco2, coco )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( coco2b, coco2 )
- MCFG_MC6847_REMOVE(VDG_TAG)
- MCFG_MC6847_ADD(VDG_TAG, MC6847T1_NTSC, XTAL_3_579545MHz, coco12_state::mc6847_config)
+ MCFG_DEVICE_REMOVE(VDG_TAG)
+ MCFG_DEVICE_ADD(VDG_TAG, MC6847T1_NTSC, XTAL_3_579545MHz)
MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(coco12_state, horizontal_sync))
MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(coco12_state, field_sync))
+ MCFG_MC6847_INPUT_CALLBACK(DEVREAD8(SAM_TAG, sam6883_device, display_read))
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cp400, coco )
diff --git a/src/mess/drivers/dragon.c b/src/mess/drivers/dragon.c
index 9e87f8413b4..74c02c8883c 100644
--- a/src/mess/drivers/dragon.c
+++ b/src/mess/drivers/dragon.c
@@ -164,9 +164,12 @@ static MACHINE_CONFIG_START( dragon_base, dragon_state )
// video hardware
MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, VDG_TAG)
- MCFG_MC6847_ADD(VDG_TAG, MC6847_PAL, XTAL_4_433619MHz, dragon_state::mc6847_config)
+
+ MCFG_DEVICE_ADD(VDG_TAG, MC6847_PAL, XTAL_4_433619MHz)
MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(dragon_state, horizontal_sync))
MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(dragon_state, field_sync))
+ MCFG_MC6847_INPUT_CALLBACK(DEVREAD8(SAM_TAG, sam6883_device, display_read))
+
// sound hardware
MCFG_FRAGMENT_ADD( coco_sound )
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/fc100.c b/src/mess/drivers/fc100.c
index 18eb722bb16..ad9211fba1d 100644
--- a/src/mess/drivers/fc100.c
+++ b/src/mess/drivers/fc100.c
@@ -74,10 +74,10 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(timer_k);
UINT8 *m_p_chargen;
- static UINT8 get_char_rom(running_machine &machine, UINT8 ch, int line)
+
+ MC6847_GET_CHARROM_MEMBER(get_char_rom)
{
- fc100_state *state = machine.driver_data<fc100_state>();
- return state->m_p_chargen[ch*16+line];
+ return m_p_chargen[ch * 16 + line];
}
private:
virtual void machine_start();
@@ -367,23 +367,6 @@ READ8_MEMBER( fc100_state::mc6847_videoram_r )
return data;
}
-static const mc6847_interface fc100_mc6847_interface =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(fc100_state,mc6847_videoram_r), // data fetch
-
- DEVCB_NULL, /* AG */
- DEVCB_NULL, /* GM2 */
- DEVCB_NULL, /* GM1 */
- DEVCB_NULL, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_LINE_VCC, /* INTEXT */
- DEVCB_NULL, /* INV */
-
- &fc100_state::get_char_rom
-};
-
/* F4 Character Displayer */
static const gfx_layout u53_charlayout =
{
@@ -527,7 +510,12 @@ static MACHINE_CONFIG_START( fc100, fc100_state )
MCFG_CPU_IO_MAP(fc100_io)
/* video hardware */
- MCFG_MC6847_ADD("vdg", M5C6847P1, XTAL_7_15909MHz/3, fc100_mc6847_interface ) // Clock not verified
+ MCFG_DEVICE_ADD("vdg", M5C6847P1, XTAL_7_15909MHz/3) // Clock not verified
+ MCFG_MC6847_INPUT_CALLBACK(READ8(fc100_state, mc6847_videoram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(fc100_state, get_char_rom)
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_INTEXT)
+ // other lines not connected
+
MCFG_SCREEN_MC6847_NTSC_ADD("screen", "vdg")
MCFG_GFXDECODE_ADD("gfxdecode", "f4palette", fc100)
MCFG_PALETTE_ADD_MONOCHROME_AMBER("f4palette")
diff --git a/src/mess/drivers/mc10.c b/src/mess/drivers/mc10.c
index c833ed01f69..5c0001d3021 100644
--- a/src/mess/drivers/mc10.c
+++ b/src/mess/drivers/mc10.c
@@ -72,7 +72,7 @@ public:
DECLARE_WRITE8_MEMBER( mc10_port1_w );
DECLARE_READ8_MEMBER( mc10_port2_r );
DECLARE_WRITE8_MEMBER( mc10_port2_w );
- DECLARE_READ8_MEMBER( mc10_mc6847_videoram_r );
+ DECLARE_READ8_MEMBER( mc6847_videoram_r );
DECLARE_DRIVER_INIT(mc10);
TIMER_DEVICE_CALLBACK_MEMBER(alice32_scanline);
};
@@ -214,7 +214,7 @@ WRITE8_MEMBER( mc10_state::mc10_port2_w )
VIDEO EMULATION
***************************************************************************/
-READ8_MEMBER( mc10_state::mc10_mc6847_videoram_r )
+READ8_MEMBER( mc10_state::mc6847_videoram_r )
{
if (offset == ~0) return 0xff;
m_mc6847->inv_w(BIT(m_ram_base[offset], 6));
@@ -477,12 +477,6 @@ INPUT_PORTS_END
MACHINE DRIVERS
***************************************************************************/
-static const mc6847_interface mc10_mc6847_intf =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(mc10_state, mc10_mc6847_videoram_r)
-};
-
static MACHINE_CONFIG_START( mc10, mc10_state )
/* basic machine hardware */
@@ -492,7 +486,9 @@ static MACHINE_CONFIG_START( mc10, mc10_state )
/* video hardware */
MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_NTSC, XTAL_3_579545MHz, mc10_mc6847_intf)
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_NTSC, XTAL_3_579545MHz)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(mc10_state, mc6847_videoram_r))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/mc1000.c b/src/mess/drivers/mc1000.c
index e386d570c3e..0dd3fcdd0f5 100644
--- a/src/mess/drivers/mc1000.c
+++ b/src/mess/drivers/mc1000.c
@@ -414,12 +414,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(mc1000_state::ne555_tick)
m_maincpu->set_input_line(INPUT_LINE_IRQ0, param);
}
-static const mc6847_interface mc1000_mc6847_intf =
-{
- SCREEN_TAG,
- DEVCB_DRIVER_MEMBER(mc1000_state, videoram_r)
-};
-
static MACHINE_CONFIG_START( mc1000, mc1000_state )
/* basic machine hardware */
@@ -437,9 +431,11 @@ static MACHINE_CONFIG_START( mc1000, mc1000_state )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
- MCFG_MC6847_ADD(MC6847_TAG, MC6847_NTSC, XTAL_3_579545MHz, mc1000_mc6847_intf)
+
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_NTSC, XTAL_3_579545MHz)
MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(mc1000_state, hs_w))
MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(mc1000_state, fs_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(mc1000_state, videoram_r))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/phc25.c b/src/mess/drivers/phc25.c
index 1c5bf2ff16d..2a499295312 100644
--- a/src/mess/drivers/phc25.c
+++ b/src/mess/drivers/phc25.c
@@ -277,11 +277,9 @@ READ8_MEMBER( phc25_state::video_ram_r )
}
}
-UINT8 phc25_state::pal_char_rom_r(running_machine &machine, UINT8 ch, int line)
+MC6847_GET_CHARROM_MEMBER(phc25_state::pal_char_rom_r)
{
- phc25_state *state = machine.driver_data<phc25_state>();
-
- return state->m_char_rom[((ch - 2) * 12) + line + 4];
+ return m_char_rom[((ch - 2) * 12) + line + 4];
}
// irq is inverted in emulation, so we need this trampoline
@@ -290,48 +288,11 @@ WRITE_LINE_MEMBER( phc25_state::irq_w )
m_maincpu->set_input_line(0, state ? CLEAR_LINE : ASSERT_LINE);
}
-UINT8 phc25_state::ntsc_char_rom_r(running_machine &machine, UINT8 ch, int line)
+MC6847_GET_CHARROM_MEMBER(phc25_state::ntsc_char_rom_r)
{
- phc25_state *state = machine.driver_data<phc25_state>();
-
- return state->m_char_rom[(ch * 16) + line];
+ return m_char_rom[(ch * 16) + line];
}
-static const mc6847_interface ntsc_vdg_intf =
-{
- SCREEN_TAG,
- DEVCB_DRIVER_MEMBER(phc25_state, video_ram_r),
-
- DEVCB_NULL, /* AG */
- DEVCB_LINE_VCC, /* GM2 */
- DEVCB_LINE_VCC, /* GM1 */
- DEVCB_NULL, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_LINE_VCC, /* INTEXT */
- DEVCB_NULL, /* INV */
-
- &phc25_state::ntsc_char_rom_r
-};
-
-static const mc6847_interface pal_vdg_intf =
-{
- SCREEN_TAG,
- DEVCB_DRIVER_MEMBER(phc25_state, video_ram_r),
-
- DEVCB_NULL, /* AG */
- DEVCB_LINE_VCC, /* GM2 */
- DEVCB_LINE_VCC, /* GM1 */
- DEVCB_NULL, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_LINE_VCC, /* INTEXT */
- DEVCB_NULL, /* INV */
-
- &phc25_state::pal_char_rom_r
-};
-
-
void phc25_state::video_start()
{
/* find memory regions */
@@ -374,15 +335,25 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( pal, phc25 )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
- MCFG_MC6847_ADD(MC6847_TAG, MC6847_PAL, XTAL_4_433619MHz, pal_vdg_intf)
+
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_PAL, XTAL_4_433619MHz)
MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(phc25_state, irq_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(phc25_state, video_ram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(phc25_state, ntsc_char_rom_r)
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2 | MC6847_MODE_GM1 | MC6847_MODE_INTEXT)
+ // other lines not connected
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ntsc, phc25 )
/* video hardware */
MCFG_SCREEN_MC6847_NTSC_ADD(SCREEN_TAG, MC6847_TAG)
- MCFG_MC6847_ADD(MC6847_TAG, MC6847_NTSC, XTAL_3_579545MHz, ntsc_vdg_intf)
+
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_NTSC, XTAL_3_579545MHz)
MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(phc25_state, irq_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(phc25_state, video_ram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(phc25_state, pal_char_rom_r)
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2 | MC6847_MODE_GM1 | MC6847_MODE_INTEXT)
+ // other lines not connected
MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mess/drivers/spc1000.c b/src/mess/drivers/spc1000.c
index 430ae561043..006a3343b7e 100644
--- a/src/mess/drivers/spc1000.c
+++ b/src/mess/drivers/spc1000.c
@@ -42,13 +42,12 @@ public:
DECLARE_WRITE8_MEMBER(spc1000_gmode_w);
DECLARE_READ8_MEMBER(spc1000_gmode_r);
DECLARE_READ8_MEMBER(porta_r);
- DECLARE_READ8_MEMBER(spc1000_mc6847_videoram_r);
+ DECLARE_READ8_MEMBER(mc6847_videoram_r);
DECLARE_WRITE8_MEMBER(cass_w);
- static UINT8 get_char_rom(running_machine &machine, UINT8 ch, int line)
+ MC6847_GET_CHARROM_MEMBER(get_char_rom)
{
- spc1000_state *state = machine.driver_data<spc1000_state>();
- return state->m_p_videoram[0x1000+(ch&0x7F)*16+line];
+ return m_p_videoram[0x1000 + (ch & 0x7f) * 16 + line];
}
required_shared_ptr<UINT8> m_p_videoram;
@@ -258,7 +257,7 @@ void spc1000_state::machine_reset()
m_IPLK = 1;
}
-READ8_MEMBER(spc1000_state::spc1000_mc6847_videoram_r)
+READ8_MEMBER(spc1000_state::mc6847_videoram_r)
{
if (offset == ~0) return 0xff;
@@ -293,23 +292,6 @@ WRITE_LINE_MEMBER( spc1000_state::irq_w )
m_maincpu->set_input_line(0, state ? CLEAR_LINE : HOLD_LINE);
}
-static const mc6847_interface spc1000_mc6847_intf =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(spc1000_state,spc1000_mc6847_videoram_r), // data fetch
-
- DEVCB_NULL, /* AG */
- DEVCB_LINE_VCC, /* GM2 */
- DEVCB_NULL, /* GM1 */
- DEVCB_NULL, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_NULL, /* INTEXT */
- DEVCB_NULL, /* INV */
-
- &spc1000_state::get_char_rom
-};
-
static MACHINE_CONFIG_START( spc1000, spc1000_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
@@ -318,8 +300,14 @@ static MACHINE_CONFIG_START( spc1000, spc1000_state )
/* video hardware */
MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_NTSC, XTAL_3_579545MHz, spc1000_mc6847_intf)
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_NTSC, XTAL_3_579545MHz)
MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(spc1000_state, irq_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(spc1000_state, mc6847_videoram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(spc1000_state, get_char_rom)
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2)
+ // other lines not connected
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ay8910", AY8910, XTAL_4MHz / 1)
diff --git a/src/mess/drivers/sv8000.c b/src/mess/drivers/sv8000.c
index 3783110db01..8ee62b23aa6 100644
--- a/src/mess/drivers/sv8000.c
+++ b/src/mess/drivers/sv8000.c
@@ -372,26 +372,6 @@ READ8_MEMBER( sv8000_state::mc6847_videoram_r )
return data;
}
-
-static const mc6847_interface sv8000_mc6847_interface =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(sv8000_state,mc6847_videoram_r), // data fetch
-
- DEVCB_NULL, /* AG */
- DEVCB_NULL, /* GM2 */
- DEVCB_NULL, /* GM1 */
- DEVCB_NULL, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_NULL, /* INTEXT */
- DEVCB_NULL, /* INV */
-
- NULL,
- false
-};
-
-
static MACHINE_CONFIG_START( sv8000, sv8000_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_10_738635MHz/3) /* Not verified */
@@ -409,7 +389,9 @@ static MACHINE_CONFIG_START( sv8000, sv8000_state )
/* video hardware */
// S68047P - Unknown whether the internal or an external character rom is used
- MCFG_MC6847_ADD("s68047p", S68047, XTAL_10_738635MHz/3, sv8000_mc6847_interface ) // Clock not verified
+ MCFG_DEVICE_ADD("s68047p", S68047, XTAL_10_738635MHz/3 ) // Clock not verified
+ MCFG_MC6847_INPUT_CALLBACK(READ8(sv8000_state, mc6847_videoram_r))
+
MCFG_SCREEN_MC6847_NTSC_ADD("screen", "s68047p")
/* sound hardware */
diff --git a/src/mess/drivers/vtech1.c b/src/mess/drivers/vtech1.c
index 497b3af1ba6..d37c5423348 100644
--- a/src/mess/drivers/vtech1.c
+++ b/src/mess/drivers/vtech1.c
@@ -190,7 +190,7 @@ public:
DECLARE_DRIVER_INIT(vtech1);
DECLARE_READ8_MEMBER(vtech1_printer_r);
DECLARE_WRITE8_MEMBER(vtech1_strobe_w);
- DECLARE_READ8_MEMBER(vtech1_mc6847_videoram_r);
+ DECLARE_READ8_MEMBER(mc6847_videoram_r);
DECLARE_SNAPSHOT_LOAD_MEMBER( vtech1 );
void vtech1_get_track();
void vtech1_put_track();
@@ -600,7 +600,7 @@ WRITE8_MEMBER(vtech1_state::vtech1_video_bank_w)
VIDEO EMULATION
***************************************************************************/
-READ8_MEMBER(vtech1_state::vtech1_mc6847_videoram_r)
+READ8_MEMBER(vtech1_state::mc6847_videoram_r)
{
if (offset == ~0) return 0xff;
m_mc6847->inv_w(BIT(m_videoram[offset], 6));
@@ -887,57 +887,6 @@ static const speaker_interface vtech1_speaker_interface =
speaker_levels
};
-static const mc6847_interface vtech1_mc6847_bw_intf =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(vtech1_state,vtech1_mc6847_videoram_r),
-
- DEVCB_NULL, /* AG */
- DEVCB_LINE_GND, /* GM2 */
- DEVCB_LINE_VCC, /* GM1 */
- DEVCB_LINE_GND, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_LINE_GND, /* INTEXT */
- DEVCB_NULL, /* INV */
-
- NULL, /* m_get_char_rom */
- true // monochrome
-};
-
-static const mc6847_interface vtech1_mc6847_intf =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(vtech1_state,vtech1_mc6847_videoram_r),
-
- DEVCB_NULL, /* AG */
- DEVCB_LINE_GND, /* GM2 */
- DEVCB_LINE_VCC, /* GM1 */
- DEVCB_LINE_GND, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_LINE_GND, /* INTEXT */
- DEVCB_NULL, /* INV */
-
- NULL, /* m_get_char_rom */
- false // colour
-};
-
-static const mc6847_interface vtech1_shrg_mc6847_intf =
-{
- "screen",
- DEVCB_DRIVER_MEMBER(vtech1_state,vtech1_mc6847_videoram_r),
-
- DEVCB_NULL, /* AG */
- DEVCB_NULL, /* GM2 */
- DEVCB_LINE_VCC, /* GM1 */
- DEVCB_NULL, /* GM0 */
- DEVCB_NULL, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_LINE_GND, /* INTEXT */
- DEVCB_NULL, /* INV */
-};
-
static MACHINE_CONFIG_START( laser110, vtech1_state )
/* basic machine hardware */
@@ -947,8 +896,14 @@ static MACHINE_CONFIG_START( laser110, vtech1_state )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD("screen", "mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz, vtech1_mc6847_bw_intf)
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz)
MCFG_MC6847_FSYNC_CALLBACK(INPUTLINE("maincpu", 0))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(vtech1_state, mc6847_videoram_r))
+ MCFG_MC6847_BW(true)
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM1)
+ // GM2 = GND, GM0 = GND, INTEXT = GND
+ // other lines not connected
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -985,8 +940,12 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( laser200, laser110 )
MCFG_DEVICE_REMOVE("mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz, vtech1_mc6847_intf)
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz)
MCFG_MC6847_FSYNC_CALLBACK(INPUTLINE("maincpu", 0))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(vtech1_state, mc6847_videoram_r))
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM1)
+ // GM2 = GND, GM0 = GND, INTEXT = GND
+ // other lines not connected
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( laser210, laser200 )
@@ -1013,9 +972,14 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( laser310h, laser310 )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(vtech1_shrg_io)
+
MCFG_DEVICE_REMOVE("mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz, vtech1_shrg_mc6847_intf)
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz)
MCFG_MC6847_FSYNC_CALLBACK(INPUTLINE("maincpu", 0))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(vtech1_state, mc6847_videoram_r))
+ MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM1)
+ // INTEXT = GND
+ // other lines not connected
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/z80ne.c b/src/mess/drivers/z80ne.c
index 97306ee0ca8..af48a454ee0 100644
--- a/src/mess/drivers/z80ne.c
+++ b/src/mess/drivers/z80ne.c
@@ -407,21 +407,6 @@ static const floppy_interface z80netf_floppy_interface =
NULL
};
-static const mc6847_interface z80net_mc6847_intf =
-{
- "lx388",
- DEVCB_DRIVER_MEMBER(z80ne_state, lx388_mc6847_videoram_r),
-
- DEVCB_LINE_GND, /* AG */
- DEVCB_LINE_GND, /* GM2 */
- DEVCB_LINE_GND, /* GM1 */
- DEVCB_LINE_GND, /* GM0 */
- DEVCB_LINE_GND, /* CSS */
- DEVCB_NULL, /* AS */
- DEVCB_NULL, /* INTEXT */
- DEVCB_NULL, /* INV */
-};
-
static MACHINE_CONFIG_START( z80ne, z80ne_state )
/* basic machine hardware */
MCFG_CPU_ADD("z80ne", Z80, Z80NE_CPU_SPEED_HZ)
@@ -461,7 +446,11 @@ static MACHINE_CONFIG_DERIVED( z80net, z80ne )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD("lx388", "mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz, z80net_mc6847_intf)
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(z80ne_state, lx388_mc6847_videoram_r))
+ // AG = GND, GM2 = GND, GM1 = GND, GM0 = GND, CSS = GND
+ // other lines not connected
MCFG_DEFAULT_LAYOUT(layout_z80net)
@@ -494,7 +483,11 @@ static MACHINE_CONFIG_START( z80netb, z80ne_state )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD("lx388", "mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz, z80net_mc6847_intf)
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(z80ne_state, lx388_mc6847_videoram_r))
+ // AG = GND, GM2 = GND, GM1 = GND, GM0 = GND, CSS = GND
+ // other lines not connected
MCFG_DEFAULT_LAYOUT(layout_z80netb)
@@ -527,7 +520,11 @@ static MACHINE_CONFIG_START( z80netf, z80ne_state )
/* video hardware */
MCFG_SCREEN_MC6847_PAL_ADD("lx388", "mc6847")
- MCFG_MC6847_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz, z80net_mc6847_intf)
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(z80ne_state, lx388_mc6847_videoram_r))
+ // AG = GND, GM2 = GND, GM1 = GND, GM0 = GND, CSS = GND
+ // other lines not connected
MCFG_FD1771_ADD("wd1771", default_wd17xx_interface)
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(z80netf_floppy_interface)
diff --git a/src/mess/includes/coco12.h b/src/mess/includes/coco12.h
index a25a74f2caa..98f2a86ae17 100644
--- a/src/mess/includes/coco12.h
+++ b/src/mess/includes/coco12.h
@@ -45,7 +45,6 @@ public:
required_device<sam6883_device> m_sam;
required_device<mc6847_base_device> m_vdg;
- static const mc6847_interface mc6847_config;
static const sam6883_interface sam6883_config;
DECLARE_READ8_MEMBER( sam_read );
diff --git a/src/mess/includes/phc25.h b/src/mess/includes/phc25.h
index a90412821d1..649bbf548ed 100644
--- a/src/mess/includes/phc25.h
+++ b/src/mess/includes/phc25.h
@@ -41,8 +41,8 @@ public:
DECLARE_WRITE8_MEMBER( port40_w );
DECLARE_WRITE_LINE_MEMBER(irq_w);
DECLARE_READ8_MEMBER( video_ram_r );
- static UINT8 ntsc_char_rom_r(running_machine &machine, UINT8 ch, int line);
- static UINT8 pal_char_rom_r(running_machine &machine, UINT8 ch, int line);
+ MC6847_GET_CHARROM_MEMBER(ntsc_char_rom_r);
+ MC6847_GET_CHARROM_MEMBER(pal_char_rom_r);
private:
virtual void video_start();
diff --git a/src/mess/machine/coco12.c b/src/mess/machine/coco12.c
index 9691c6cf000..49c6bf17ae6 100644
--- a/src/mess/machine/coco12.c
+++ b/src/mess/machine/coco12.c
@@ -120,18 +120,6 @@ void coco12_state::update_cart_base(UINT8 *cart_base)
//-------------------------------------------------
-// mc6847_config
-//-------------------------------------------------
-
-const mc6847_interface coco12_state::mc6847_config =
-{
- SCREEN_TAG,
- DEVCB_DEVICE_MEMBER(SAM_TAG, sam6883_device, display_read)
-};
-
-
-
-//-------------------------------------------------
// sam6883_config
//-------------------------------------------------
diff --git a/src/mess/video/gime.c b/src/mess/video/gime.c
index 18d94a2fd7f..265e7b5fbaa 100644
--- a/src/mess/video/gime.c
+++ b/src/mess/video/gime.c
@@ -1643,8 +1643,6 @@ UINT32 gime_base_device::emit_dummy_samples(const scanline_record *scanline, int
return 0;
}
-
-
//-------------------------------------------------
// emit_mc6847_samples
//-------------------------------------------------
@@ -1657,7 +1655,7 @@ ATTR_FORCE_INLINE UINT32 gime_base_device::emit_mc6847_samples(const scanline_re
sample_count,
pixels,
palette,
- NULL,
+ super::m_charrom_cb,
sample_start,
scanline->m_line_in_row);
}