Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2002-07

SetIsrVec / GetIsrVec

2 messages · 2 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Peter Baumgartner

Using version 1.0.6 (23.4.2002), with GO32 Extender, we have the problem that the procedures SETISRVEC and GETISRVEC do not work properly:

We want to save first the old IRQ vector and then set a new one.

As result, OldIsr is always NIL !

Did anyone out there ever have such a problem ?

Thanks for help

Peter Baumgartner

---------------------------------------------------------------------------- -
This is our code :

const
   Irq     : 4;
   IRQ_Tab : Array[0..15] of Byte = ($08, $09, $0A, $0B, $0C, $0D, $0E, $0F,
                                     $70, $71, $72, $73, $74, $75, $76,
$77);
var
   OldIsr:Pointer;
procedure ComIsr; Interrupt;
begin
   ...
end;
begin

...

GetIntVec(IRQ_Tab[Irq],OldIsr);
if OldIsr = nil then begin
   WriteLn('OldIsr = NIL !!!');
   Halt;
end;
SetIntVec(IRQ_Tab[Irq],Addr(ComIsr));

...

end.
---------------------------------------------------------------------------- ----

Peter Baumgartner
WWW: www.timetronic.it
eMail:
Phone: (+39) 0474 410012
Fax: (+39) 0474 410012
Mobil: (+39) 329 4960006

Pierre Muller
to Peter Baumgartner
Peter Baumgartner wrote 6 lines
Using version 1.0.6 (23.4.2002), with GO32 Extender, we have the problem that the procedures SETISRVEC and GETISRVEC do not work properly: We want to save first the old IRQ vector and then set a new one. As result, OldIsr is always NIL !

These functions are not supported by the extender as such... it is unclear if you want the real mode or the protected mode interrupt vector here.
You should use the go32 functions
(g/s)et_pm_interrupt
or
(g/s)et_rm_interrupt