[fpc-devel]Calling previous INTroutine
Aleksey V. Vaneev
picoder at sbis.komi.ru
Fri Dec 8 06:55:20 CET 2000
Hello,
>>>> asm
>>>> pushfd
>>>> call qword ptr [OldHandler]
>>>> end;
>>>>
>>>> It just traps. What can I do? (I'm working with system timer ISR).
>>>Make sure OldHandler is locked in memory using lockdata(). And shouldn't
>>>you use 'call far ptr [OldHandler]' instead?
>>It says that compiler ignores "far". But it doesn't work anyways.
>>Locked or not. Maybe there's some undocumented mechanism to do ISR
>>chaining in go32v2?
> Note that ds probably doesn't point to the data segment of your program
> when the ISR is entered, so you should either put the oldhandler variable
> in the code segment (and do a "call far ptr [cs:oldhandler]"), or first
> load ds with the ds from the program (it's shown how to do this in the
> ISR example of the go32v2 docs) before executing the above call.
As I said, ISR by itself (of course, DS and ES are correct) performs
well. But chaining doesn't works.
Yes, I can ban that system ISR, but CRT unit doesn't work this way
(it needs system timer). And it is generally invalid to stop system
timer from running. So, I don't know what to do now.
>
> BTW: "call qword ptr" should be rejected, because far pointers are only
> 48bit, not 64bit.
>
>
> Jonas
Best regards,
Aleksey mailto:picoder at sbis.komi.ru
More information about the fpc-devel
mailing list