----- Original Message ----- From: "Nikolai Zhubr" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, March 19, 2004 10:59 PM Subject: Re: [fpc-pascal]Modifying cpu registers while in turbo pascal interrupt routine ?
> Hi, > Friday, 19 March, 2004, 14:10:02, Klaus Hartnegg wrote: > [...] > > No, programs compiled with Turbo-Pascal 7 with the $G+ option will > > use 32 bit registers for longint arithmetic if the program runs on a > > 386 cpu or higher. They test the cpu-type on startup and store the > Ok, I've found you are right essentially. > To be precise though, $G+ have no effect on this, as > TP7 compiler itself still generates pure 16-bit code. > Math libraries are most probably hand-made and use > 32-bit code for intermediate calculations, depending > on test8086 variable value. > So, when going to use "interrupt" directive one should > do "test8086 := 1" before any interrupt ever happen. > Nice to learn this. Euhm this is a bit weird. I read at some sites, set test 8086 to zero, some other sites say set 8086 to one. The documention of TP says: zero is for 8086, one is for 80286, and two is for 80386. A 286 is in fact a 32 bit cpu... limited to 32 mb ram. So it would be logical to assume setting it to one would still use 32 bit instructions ? which is no good since they can get interrupted... causing results to be corrupted. Is that right or not ? So setting it to zero is safest... but what effect does setting it to one have ?! _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal