UINT32 mc6845_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { assert(bitmap.valid()); if (m_has_valid_parameters) { assert(!m_update_row_cb.isnull()); /* call the set up function if any */ if (!m_begin_update_cb.isnull()) m_begin_update_cb(bitmap, cliprect); if (cliprect.min_y == 0) { /* read the start address at the beginning of the frame */ m_current_disp_addr = m_disp_start_addr; } /* for each row in the visible region */ for (UINT16 y = cliprect.min_y; y <= cliprect.max_y; y++) { this->draw_scanline(y, bitmap, cliprect); } /* call the tear down function if any */ if (!m_end_update_cb.isnull()) m_end_update_cb(bitmap, cliprect); } else { if (LOG) logerror("M6845: Invalid screen parameters - display disabled!!!\n"); } return 0; }