Richard Spencer wrote on Friday, September 02, 2011 4:35 PM
[email protected] wrote:

> A fix would be to add:
>
> /* Get actual switch number of OS_CallASWI and OS_CallASWIR12 */
> if (templ == 0x6f) templ=armregs[10] & 0xdffff;
> else if (templ == 0x71) templ = armregs[12] & 0xdffff;

Wouldn't that alter/disable OS_CallASWI(R12) for all cases? I'd prefer to just trap OS_Mouse in order to prevent unintended side effects:

if (templ == 0x6f && (armregs[10] & 0xdffff) == 0x1c) templ=0x1c;
else if (templ == 0x71 && (armregs[12] & 0xdffff) == 0x1c) templ = 0x1c;

(NB. Untested.)

That's what I thought as well at first, but the same bug will occur for any of the SWIs that RPCEmu intercepts so I believe it is better that the same is done for them all so RPCEmu can always process them if it wants to.

E.g. Using my code the OS_Word call to get the mouse position is also catered for.

[snip code]

Regards,
Alan

_______________________________________________
Rpcemu mailing list
[email protected]
http://www.riscos.info/cgi-bin/mailman/listinfo/rpcemu

Reply via email to