Fix: Mouse support in Contiki v1.3

This commit is contained in:
tomch 2007-08-08 21:24:28 +00:00
parent 804d34ee13
commit f2a52d23f3
3 changed files with 13 additions and 12 deletions

View File

@ -18,6 +18,11 @@ Restrictions/bugs:
- During Mockingboard playback, Speaker emulation isn't precise
1.14.1 - 09 Aug 2007 (beta)
---------------------------
. Fix: Mouse support in Contiki v1.3
1.14.0 - 08 Aug 2007 (beta)
---------------------------
Fixes:

View File

@ -210,8 +210,8 @@ DISK_ICON ICON "DISK.ICO"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,14,0,0
PRODUCTVERSION 1,14,0,0
FILEVERSION 1,14,1,0
PRODUCTVERSION 1,14,1,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -229,12 +229,12 @@ BEGIN
VALUE "Comments", "http://applewin.berlios.de"
VALUE "CompanyName", "Michael O'Brien, Oliver Schmidt, Tom Charlesworth"
VALUE "FileDescription", "Apple //e Emulator for Windows"
VALUE "FileVersion", "1, 14, 0, 0"
VALUE "FileVersion", "1, 14, 1, 0"
VALUE "InternalName", "APPLEWIN"
VALUE "LegalCopyright", "© 1994-2007 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
VALUE "OriginalFilename", "APPLEWIN.EXE"
VALUE "ProductName", "Apple //e Emulator"
VALUE "ProductVersion", "1, 14, 0, 0"
VALUE "ProductVersion", "1, 14, 1, 0"
END
END
BLOCK "VarFileInfo"

View File

@ -225,7 +225,6 @@ void CMouseInterface::On6821_B(BYTE byData)
void CMouseInterface::OnCommand()
{
//char szDbg[256];
switch( m_byBuff[0] & 0xF0 )
{
case MOUSE_SET:
@ -249,13 +248,11 @@ void CMouseInterface::OnCommand()
m_byBuff[4] = ( m_nY >> 8 ) & 0xFF;
m_byBuff[5] = m_byState; // button 0/1 interrupt status
m_byState &= ~0x20;
//sprintf(szDbg, "[MOUSE-READ] IRQ=0x%02X X=(0x%02X-0x%02X) Y=(0x%02X-0x%02X) \n", m_byBuff[5], m_byBuff[1], m_byBuff[2], m_byBuff[3], m_byBuff[4]); OutputDebugString(szDbg);
break;
case MOUSE_SERV:
m_nDataLen = 2;
m_byBuff[1] = m_byState & ~0x20; // reason of interrupt
CpuIrqDeassert(IS_MOUSE);
//sprintf(szDbg, "[MOUSE-SERV] IRQ=0x%02X\n", m_byBuff[1]); OutputDebugString(szDbg);
break;
case MOUSE_CLEAR:
Reset();
@ -343,12 +340,11 @@ void CMouseInterface::OnMouseEvent()
byState |= 0x04; // Button 0/1 interrupt
if ( m_bVBL )
byState |= 0x08;
byState &= m_byMode & 0x2E;
//byState &= m_byMode & 0x2E;
byState &= ((m_byMode & 0x0E) | 0x20); // Keep "X/Y moved since last READMOUSE" for next MOUSE_READ (Contiki v1.3 uses this)
if ( byState & 0x0E )
{
//char szDbg[256];
//sprintf(szDbg, "[MOUSE] 0x%02X, %04d(%04d), %04d(%04d), %d\n", byState, m_iX, m_nX, m_iY, m_nY, bBtn0); OutputDebugString(szDbg);
m_byState |= byState;
CpuIrqAssert(IS_MOUSE);
}
@ -406,8 +402,8 @@ void CMouseInterface::SetPosition(int xvalue, int yvalue)
{
if ((m_iRangeX == 0) || (m_iRangeY == 0))
{
m_iX = m_iMinX;
m_iY = m_iMinY;
m_nX = m_iX = m_iMinX;
m_nY = m_iY = m_iMinY;
return;
}