diff --git a/rtl/go32v2/dos.pp b/rtl/go32v2/dos.pp index 3a222a1666..4768651239 100644 --- a/rtl/go32v2/dos.pp +++ b/rtl/go32v2/dos.pp @@ -634,16 +634,24 @@ begin end; +type swap_proc = procedure; + var - _swap_in : pointer;external name '_swap_in'; - _swap_out : pointer;external name '_swap_out'; + _swap_in : swap_proc;external name '_swap_in'; + _swap_out : swap_proc;external name '_swap_out'; _exception_exit : pointer;external name '_exception_exit'; _v2prt0_exceptions_on : longbool;external name '_v2prt0_exceptions_on'; procedure swapvectors; begin DosError:=0; - asm + if _exception_exit<>nil then + if _v2prt0_exceptions_on then + _swap_in() + else + _swap_out(); + +(* asm { uses four global symbols from v2prt0.as to be able to know the current exception state without using dpmiexcp unit } movl _exception_exit,%eax @@ -652,14 +660,12 @@ begin movl _v2prt0_exceptions_on,%eax orl %eax,%eax je .Lexceptions_off - movl _swap_out,%eax - call %eax + call *_swap_out jmp .Lno_excep .Lexceptions_off: - movl _swap_in,%eax - call %eax + call *_swap_in .Lno_excep: - end; + end; *) end; @@ -997,7 +1003,10 @@ End; end. { $Log$ - Revision 1.6 1999-04-28 11:42:44 peter + Revision 1.7 1999-05-04 23:55:50 pierre + * unneeded assembler code converted to pascal + + Revision 1.6 1999/04/28 11:42:44 peter + FileNameCaseSensetive boolean Revision 1.5 1999/04/02 00:01:29 peter