SetCardMode() - set/unset SSI263 IRQ on a MB<->PH mode switch

This commit is contained in:
tomcw 2024-05-06 21:00:34 +01:00
parent 84a1f9d19b
commit 3eab08db7c
2 changed files with 22 additions and 1 deletions

View File

@ -795,6 +795,27 @@ void SSI263::SetSpeechIRQ(void)
//-----------------------------------------------------------------------------
void SSI263::SetCardMode(PHASOR_MODE mode)
{
const PHASOR_MODE oldCardMode = m_cardMode;
m_cardMode = mode;
if ((oldCardMode == PH_Phasor && m_cardMode == PH_Mockingboard)
|| (oldCardMode == PH_Mockingboard && m_cardMode == PH_Phasor))
{
if (m_currentMode.D7 == 1)
{
m_currentMode.D7 = 0; // So that \PH_Mockingboard\ path sets IFR. Post: D7=1
SetSpeechIRQ();
}
if (m_cardMode == PH_Mockingboard)
CpuIrqDeassert(IS_SPEECH);
}
}
//-----------------------------------------------------------------------------
bool SSI263::DSInit(void)
{
//

View File

@ -62,7 +62,7 @@ public:
}
void SetDevice(UINT device) { m_device = device; }
void SetCardMode(PHASOR_MODE mode) { m_cardMode = mode; }
void SetCardMode(PHASOR_MODE mode);
bool DSInit(void);
void DSUninit(void);