[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