Still the same annoying error on ChessMaster 2000 when on the real machine upgraded with 1MB, not on the 128k. May be IstvanV can aid here if I explain what happens. It can be the memory so fast?
The memory should not make a difference, CM2000 always disables wait states and the mouse routine runs in normal (not video) RAM even on 128K machines. I did not find any obvious errors in the code so far, but I may need to check more. Perhaps it is a problem specific to that particular 1 MB machine? Do others have the same issue with CM2000 on real machines?
In the emulator, I found only some minor issues, like the sensitivity, which also seems to be higher on the X axis, I think it is 4x X sensitivity and 2x Y compared to MOUSE.XR. Using NEG on the 8-bit motion values can also overflow, but only when the mouse is moved very fast (NEG(-128) = -128), so it does not really matter in practice.
On SWAP, the contrary, the button works on the real thing and XEP128 but not on EP128emu.
The current version of ep128emu emulates the mouse buttons on EXT1 columns K and L only while the 1500 us timer is active. Using the actual joystick buttons works in SWAP, but perhaps the mouse buttons should be mapped to EXT1 fire 2 and 3 all the time, and not only for 1500 us after an RTS state change?
Another annoying "feature" of the input in SWAP, and I think this is not emulator specific, is that the pointer already needs to be moving in the direction of the swap at the moment when the button is clicked. That is, it is not possible to move the pointer to the tile that needs to be swapped, then press the button, and then while it is held down, move the pointer to the other tile to swap with. This, combined with the high sensitivity, makes controlling the game not very convenient. Using the external joysticks has the same issue, but interestingly not the keyboard/internal joystick.