summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/video/abc806.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/video/abc806.c')
-rw-r--r--src/mess/video/abc806.c54
1 files changed, 19 insertions, 35 deletions
diff --git a/src/mess/video/abc806.c b/src/mess/video/abc806.c
index 8132ae3d931..c83acf9e673 100644
--- a/src/mess/video/abc806.c
+++ b/src/mess/video/abc806.c
@@ -222,26 +222,25 @@ WRITE8_MEMBER( abc806_state::sso_w )
// MC6845_UPDATE_ROW( abc806_update_row )
//-------------------------------------------------
-static MC6845_UPDATE_ROW( abc806_update_row )
+MC6845_UPDATE_ROW( abc806_state::abc806_update_row )
{
- abc806_state *state = device->machine().driver_data<abc806_state>();
- const pen_t *pen = state->m_palette->pens();
+ const pen_t *pen = m_palette->pens();
// UINT8 old_data = 0xff;
int fg_color = 7;
int bg_color = 0;
int underline = 0;
int flash = 0;
- int e5 = state->m_40;
- int e6 = state->m_40;
+ int e5 = m_40;
+ int e6 = m_40;
int th = 0;
- y += state->m_sync + vbp;
+ y += m_sync + vbp;
for (int column = 0; column < x_count; column++)
{
- UINT8 data = state->m_char_ram[(ma + column) & 0x7ff];
- UINT8 attr = state->m_attr_ram[(ma + column) & 0x7ff];
+ UINT8 data = m_char_ram[(ma + column) & 0x7ff];
+ UINT8 attr = m_attr_ram[(ma + column) & 0x7ff];
UINT16 rad_addr;
UINT8 rad_data;
@@ -270,7 +269,7 @@ static MC6845_UPDATE_ROW( abc806_update_row )
e6 = BIT(attr, 1);
// read attributes from next byte
- attr = state->m_attr_ram[(ma + column + 1) & 0x7ff];
+ attr = m_attr_ram[(ma + column + 1) & 0x7ff];
if (attr != 0x00)
{
@@ -289,8 +288,8 @@ static MC6845_UPDATE_ROW( abc806_update_row )
bg_color = (attr >> 3) & 0x07;
underline = BIT(attr, 6);
flash = BIT(attr, 7);
- e5 = state->m_40;
- e6 = state->m_40;
+ e5 = m_40;
+ e6 = m_40;
}
if (column == cursor_x)
@@ -299,14 +298,14 @@ static MC6845_UPDATE_ROW( abc806_update_row )
}
else
{
- rad_addr = (e6 << 8) | (e5 << 7) | (flash << 6) | (underline << 5) | (state->m_flshclk << 4) | ra;
- rad_data = state->m_rad_prom->base()[rad_addr] & 0x0f;
+ rad_addr = (e6 << 8) | (e5 << 7) | (flash << 6) | (underline << 5) | (m_flshclk << 4) | ra;
+ rad_data = m_rad_prom->base()[rad_addr] & 0x0f;
rad_data = ra; // HACK because the RAD prom is not dumped yet
}
UINT16 chargen_addr = (th << 12) | (data << 4) | rad_data;
- UINT8 chargen_data = state->m_char_rom->base()[chargen_addr & 0xfff] << 2;
+ UINT8 chargen_data = m_char_rom->base()[chargen_addr & 0xfff] << 2;
int x = hbp + (column + 4) * ABC800_CHAR_WIDTH;
for (int bit = 0; bit < ABC800_CHAR_WIDTH; bit++)
@@ -393,26 +392,6 @@ WRITE_LINE_MEMBER( abc806_state::vs_w )
//-------------------------------------------------
-// mc6845_interface crtc_intf
-//-------------------------------------------------
-
-static MC6845_INTERFACE( crtc_intf )
-{
- true,
- 0,0,0,0,
- ABC800_CHAR_WIDTH,
- NULL,
- abc806_update_row,
- NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DRIVER_LINE_MEMBER(abc806_state, hs_w),
- DEVCB_DRIVER_LINE_MEMBER(abc806_state, vs_w),
- NULL
-};
-
-
-//-------------------------------------------------
// hr_update - high resolution screen update
//-------------------------------------------------
@@ -523,7 +502,12 @@ PALETTE_INIT_MEMBER( abc806_state, abc806 )
//-------------------------------------------------
MACHINE_CONFIG_FRAGMENT( abc806_video )
- MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, ABC800_CCLK, crtc_intf)
+ MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, ABC800_CCLK)
+ MCFG_MC6845_SHOW_BORDER_AREA(true)
+ MCFG_MC6845_CHAR_WIDTH(ABC800_CHAR_WIDTH)
+ MCFG_MC6845_UPDATE_ROW_CB(abc806_state, abc806_update_row)
+ MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(abc806_state, hs_w))
+ MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(abc806_state, vs_w))
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_UPDATE_DRIVER(abc806_state, screen_update)