|
|
1.1 root 1: ////////
2: /
3: / Intel 8086 C runtime.
4: / Build a double from its mantissa and exponent parts.
5: / SMALL model.
6: /
7: ////////
8:
9: .globl _fpac_
10: .globl ldexp_
11: .globl dzero
12:
13: ////////
14: /
15: / double ldexp(dd, exp) double dd; int exp;
16: / returns dd * 2**exp
17: /
18: ////////
19:
20: ldexp_:
21: push si
22: push di
23: push bp
24: mov bp, sp
25:
26: mov ax, 14(bp) / most significant word
27: rol ax, $1 / get exp isolated in register
28: orb ah, ah / is exp 0?
29: jnz L0 / no
30: call dzero / dd is 0, zero _fpac_
31: jmp L1 / and return it
32: L0:
33: addb ah, 16(bp) / add exp
34: ror ax, $1 / back in place
35:
36: mov _fpac_+6, ax
37: mov ax, 12(bp)
38: mov _fpac_+4, ax
39: mov ax, 10(bp)
40: mov _fpac_+2, ax
41: mov ax, 8(bp)
42: mov _fpac_, ax
43: L1:
44: pop bp
45: pop di
46: pop si
47: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.