void mos8563_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { switch (id) { case TIMER_BLOCK_COPY: { UINT8 data = VSS_COPY ? read_videoram(m_block_addr++) : m_data; write_videoram(m_update_addr++, data); if (--m_word_count) { m_block_copy_timer->adjust( attotime::from_ticks( 1, m_clock ) ); } else { m_update_ready_bit = 1; } break; } default: mc6845_device::device_timer(timer, id, param, ptr); break; } }
inline void abc1600_mover_device::write_videoram(offs_t offset, uint16_t data, uint16_t mask) { uint16_t old_data = read_videoram(offset); space().write_word((offset & VIDEORAM16_MASK) << 1, (data & mask) | (old_data & (mask ^ 0xffff))); }