summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/mc6845.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/mc6845.cpp')
-rw-r--r--src/devices/video/mc6845.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp
index b8cc7148243..abf5692b7c7 100644
--- a/src/devices/video/mc6845.cpp
+++ b/src/devices/video/mc6845.cpp
@@ -108,6 +108,7 @@ mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, co
: device_t(mconfig, type, tag, owner, clock)
, device_video_interface(mconfig, *this, false)
, m_show_border_area(true)
+ , m_noninterlace_adjust(0)
, m_interlace_adjust(0)
, m_clk_scale(1)
, m_visarea_adjust_min_x(0)
@@ -188,7 +189,7 @@ void mc6845_device::transparent_update()
{
m_update_addr++;
m_update_addr &= 0x3fff;
- call_on_update_address(0);
+ call_on_update_address(MODE_UPDATE_STROBE);
}
else
{
@@ -267,7 +268,7 @@ void mc6845_device::register_w(uint8_t data)
{
m_update_addr = ((data & 0x3f) << 8) | (m_update_addr & 0x00ff);
if(MODE_TRANSPARENT_PHI2)
- call_on_update_address(0);
+ call_on_update_address(MODE_UPDATE_STROBE);
}
break;
case 0x13:
@@ -275,7 +276,7 @@ void mc6845_device::register_w(uint8_t data)
{
m_update_addr = ((data & 0xff) << 0) | (m_update_addr & 0xff00);
if(MODE_TRANSPARENT_PHI2)
- call_on_update_address(0);
+ call_on_update_address(MODE_UPDATE_STROBE);
}
break;
case 0x1f: transparent_update(); break;
@@ -993,7 +994,7 @@ void mc6845_device::device_timer(emu_timer &timer, device_timer_id id, int param
case TIMER_UPD_ADR:
/* fire a update address strobe */
- call_on_update_address(0);
+ call_on_update_address(MODE_UPDATE_STROBE);
break;
case TIMER_UPD_TRANS:
@@ -1122,7 +1123,7 @@ uint8_t mc6845_device::draw_scanline(int y, bitmap_rgb32 &bitmap, const rectangl
// is in units of characters and is relative to the start of the
// displayable area, not relative to the screen bitmap origin.
int8_t cursor_x = cursor_visible ? (m_cursor_addr - m_current_disp_addr) : -1;
- int de = (y < m_max_visible_y) ? 1 : 0;
+ int de = (y <= m_max_visible_y) ? 1 : 0;
int vbp = m_vert_pix_total - m_vsync_off_pos;
if (vbp < 0) vbp = 0;
int hbp = m_horiz_pix_total - m_hsync_off_pos;
@@ -1250,6 +1251,7 @@ void mc6845_device::device_start()
m_horiz_char_total = 0xff;
m_max_ras_addr = 0x1f;
m_vert_char_total = 0x7f;
+ m_mode_control = 0x00;
m_supports_disp_start_addr_r = false; // MC6845 can not read Display Start (double checked on datasheet)
m_supports_vert_sync_width = false;
@@ -1779,7 +1781,7 @@ MC6845_UPDATE_ROW( mos8563_device::vdc_update_row )
if (x < 0) x = 0;
int color = BIT(code, 7) ? fg : bg;
- bitmap.pix32(vbp + y, hbp + x) = pen(de ? color : 0);
+ bitmap.pix(vbp + y, hbp + x) = pen(de ? color : 0);
}
}
else
@@ -1815,7 +1817,7 @@ MC6845_UPDATE_ROW( mos8563_device::vdc_update_row )
if (x < 0) x = 0;
int color = BIT(data, 7) ? fg : bg;
- bitmap.pix32(vbp + y, hbp + x) = pen(de ? color : 0);
+ bitmap.pix(vbp + y, hbp + x) = pen(de ? color : 0);
if ((bit < 8) || !HSS_SEMI) data <<= 1;
}