Int 3E

Prev Next Ralf Interrups Categories Contents

------

FLOATING POINT EMULATION - Borland LANGUAGES SHORTCUT CALL

Notes: The two bytes following the INT 3E instruction are the subcode (see #03195) and a NOP (90h), except for subcodes DCh and DEh, where the second byte is a register count (01h-08h). This vector is modified but not restored by Direct Access v4.0, and may be left dangling by other programs written with the same version of compiled BASIC

See Also: INT 3D

(Table 03195) Values for Borland floating-point shortcut subcode: Subcode Function DCh load 8086 stack with 8087 registers; overwrites the 10*N bytes at the top of the stack prior to the INT 3E with the 8087 register contents DEh load 8087 registers from top of 8086 stack; ST0 is furthest from top of 8086 stack E0h round TOS and R1 to single precision, compare, pop twice returns AX=8087 status word, FLAGS=8087 condition bits E2h round TOS and R1 to double precision, compare, pop twice returns AX=8087 status word, FLAGS=8087 condition bits.

Note: Buggy in TPas5.5, because it sets the 8087 precision control field to the undocumented value 01h; this results in actually rounding to single precision E4h compare TOS/R1 with two POP's returns FLAGS=8087 condition bits E6h compare TOS/R1 with POP returns FLAGS=8087 condition bits E8h FTST (check TOS value) returns FLAGS=8087 condition bits EAh FXAM (check TOS value) returns AX=8087 status word ECh sine(ST0) EEh cosine(ST0) F0h tangent(ST0) F2h arctangent(ST0) F4h ST0 = ln(ST0) F6h ST0 = log2(ST0) F8h ST0 = log10(ST0) FAh ST0 = e**ST0 FCh ST0 = 2**ST0 FEh ST0 = 10**ST0

Category: Runtime Support - Int 3Eh - F

------

Prev Next Ralf Interrups Categories Contents