apple2gs - make kmstatus match actual IIgs behavior; (#10798)

* mouse data register is full until both x/y are read
* X/Y bit set after X is read, cleared after Y is read
* X/Y bit was accidentally dependent on the KGS_ANY_KEY_DOWN bit
This commit is contained in:
ksherlock 2023-01-07 08:54:14 -05:00 committed by GitHub
parent f6f47adbdb
commit aaf2561370
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3534,12 +3534,13 @@ u8 apple2gs_state::keyglu_816_read(u8 offset)
case GLU_MOUSEY:
if (!m_glu_mouse_read_stat)
{
m_glu_mouse_read_stat = 1;
m_glu_regs[GLU_KG_STATUS] &= ~KGS_MOUSEX_FULL;
m_glu_regs[GLU_SYSSTAT] &= ~GLU_STATUS_MOUSEIRQ;
keyglu_regen_irqs();
m_glu_mouse_read_stat = true;
return m_glu_regs[GLU_MOUSEX];
}
m_glu_mouse_read_stat = false;
m_glu_regs[GLU_KG_STATUS] &= ~KGS_MOUSEX_FULL;
m_glu_regs[GLU_SYSSTAT] &= ~GLU_STATUS_MOUSEIRQ;
keyglu_regen_irqs();
return m_glu_regs[GLU_MOUSEY];
case GLU_SYSSTAT:
@ -3550,7 +3551,7 @@ u8 apple2gs_state::keyglu_816_read(u8 offset)
{
sysstat |= GLU_STATUS_CMDFULL;
}
if (m_glu_regs[GLU_KG_STATUS] & m_glu_mouse_read_stat)
if (m_glu_mouse_read_stat)
{
sysstat |= GLU_STATUS_MOUSEXY;
}