mc6845: Minor transparent update refactoring (nw)

This commit is contained in:
AJR 2017-11-16 18:04:56 -05:00
parent 79b715783e
commit 22bc551984
2 changed files with 26 additions and 40 deletions

View File

@ -155,6 +155,29 @@ READ8_MEMBER( mc6845_device::status_r )
}
void mc6845_device::transparent_update()
{
if (m_supports_transparent && MODE_TRANSPARENT)
{
if (MODE_TRANSPARENT_PHI2)
{
m_update_addr++;
m_update_addr &= 0x3fff;
call_on_update_address(0);
}
else
{
/* MODE_TRANSPARENT_BLANK */
if (m_update_ready_bit)
{
m_update_ready_bit = false;
update_upd_adr_timer();
}
}
}
}
READ8_MEMBER( mc6845_device::register_r )
{
uint8_t ret = 0;
@ -167,26 +190,7 @@ READ8_MEMBER( mc6845_device::register_r )
case 0x0f: ret = (m_cursor_addr >> 0) & 0xff; break;
case 0x10: ret = (m_light_pen_addr >> 8) & 0xff; m_light_pen_latched = false; break;
case 0x11: ret = (m_light_pen_addr >> 0) & 0xff; m_light_pen_latched = false; break;
case 0x1f:
if (m_supports_transparent && MODE_TRANSPARENT)
{
if(MODE_TRANSPARENT_PHI2)
{
m_update_addr++;
m_update_addr &= 0x3fff;
call_on_update_address(0);
}
else
{
/* MODE_TRANSPARENT_BLANK */
if(m_update_ready_bit)
{
m_update_ready_bit = false;
update_upd_adr_timer();
}
}
}
break;
case 0x1f: transparent_update(); break;
/* all other registers are write only and return 0 */
default: break;
@ -236,26 +240,7 @@ WRITE8_MEMBER( mc6845_device::register_w )
call_on_update_address(0);
}
break;
case 0x1f:
if (m_supports_transparent && MODE_TRANSPARENT)
{
if(MODE_TRANSPARENT_PHI2)
{
m_update_addr++;
m_update_addr &= 0x3fff;
call_on_update_address(0);
}
else
{
/* MODE_TRANSPARENT_BLANK */
if(m_update_ready_bit)
{
m_update_ready_bit = false;
update_upd_adr_timer();
}
}
}
break;
case 0x1f: transparent_update(); break;
default: break;
}

View File

@ -256,6 +256,7 @@ protected:
void update_upd_adr_timer();
void call_on_update_address(int strobe);
void transparent_update();
void recompute_parameters(bool postload);
void update_counters();
void set_de(int state);