[re ARCEM_SWI_NANOSLEEP, Theo Markettos wrote]
I did try changing it to usleep()
some small amount and it was better, but still not good enough.  Maybe
it wants an equivalent of select() on the appropriate thread status
(timer updates, mouse clicks)

Now here's a very strange thing.  I've just tried the following:

In ArmDynarec.c:opSWI(), I've commented out *all* of the code in the
"else if (templ == ARCEM_SWI_NANOSLEEP)", except for the last line of
that block ("armregs[15] &= ~VFLAG").

Now this means that the SWI ought to be a no-op.  However, what
*actually* happens is that the BASIC "Sleep" program still causes RISC
OS to become unresponsive to mouse clicks. (Interestingly, SWI 0x1c
[OS_Mouse, which in turn causes getosmouse() to be called] is invoked
far less frequently when "Sleep" is running.)

Stranger still, I edited the "Sleep" program to comment out the
NANOSLEEP SWI.  Logically, this ought to have essentially the same effect
as calling a no-op SWI.  However, what *actually* happens is that
system is perfectly responsive.

This is peculiar, to say the least.  I still suspect a timing problem,
but I'm less than certain.  I'd be interested to know if this
behaviour is platform-dependent.  Can anyone replicate these results
on any other platform (I'm using Linux)?

Thanks,
Jake

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

Reply via email to