At 07:30 PM 03/26/99 +0100, you wrote:
>>Is it possible that another interrupt is granted while the '...' section is
>>executed?
>
>I execute a DI at first. In this section there is slot and segment
>switching (page 2), via ENASLT and PUT_P2 respectively.
Sounds innocent. ENASLT disables ints and doesn't enable them, according to
my docs.
>>If that happens, SAVESP will be overwritten.
>
>Why? My routines and data areas are placed in a reserved zone in page 3,
>above MSXDOS.SYS.
Because you always save SP at the same location (SAVESP). If an interrupt
is in progress, SAVESP contains the old value of the stack pointer. If
another interrupt occurs before the first is done, the old stack pointer
value will be overwritten and is lost.
>In fact I patch not only timer hook, but also keyboard read and character
>print hooks, and stack is changed in all cases (using only one fixed
>SAVESP). It is possible that keyboard and character print hooks be called
>even in a DI condition? (?.?) If so, surely we found the problem!
Or they are called in a EI condition and then an interrupt occurs?
Bye,
Maarten
****
MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED] and put
in the body (not subject) "unsubscribe msx [EMAIL PROTECTED]" (without the
quotes :-) Problems? contact [EMAIL PROTECTED] (www.stack.nl/~wiebe/mailinglist/)
****