home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
gnu
/
mntlib16.lzh
/
MNTLIB16
/
_EXTENDS.S
< prev
next >
Wrap
Text File
|
1993-07-29
|
1KB
|
46 lines
| single float to double float conversion routine
|
| written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
| Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
|
|
| Revision 1.2, kub 01-90 :
| added support for denormalized numbers
|
| Revision 1.1, kub 12-89 :
| Ported over to 68k assembler
|
| Revision 1.0:
| original 8088 code from P.S.Housel
BIAS4 = 0x7F-1
BIAS8 = 0x3FF-1
.text
.even
.globl __extendsfdf2, ___extendsfdf2
__extendsfdf2:
___extendsfdf2:
lea sp@(4),a0 | parameter pointer
moveml d2-d7,sp@- | save regs to keep norm_df happy
movel a0@,d4 | get number
clrl d5 | prepare double mantissa
movew a0@,d0 | extract exponent
movew d0,d2 | extract sign
lsrw #7,d0
andw #0xff,d0 | kill sign bit (exponent is 8 bits)
andl #0x7fffff,d4 | remove exponent from mantissa
tstw d0 | check for zero exponent - no leading "1"
beq 0f | for denormalized numbers
orl #0x800000,d4 | restore implied leading "1"
bra 1f
0: addw #1,d0 | "normalize" exponent
1:
addw #BIAS8-BIAS4-3,d0 | adjust bias, account for shift
clrw d1 | dummy rounding info
jmp norm_df