|
|
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.