home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / mint / mntlib16 / _floatsi.s < prev    next >
Encoding:
Text File  |  1993-08-03  |  883 b   |  39 lines

  1. | long integer to double float conversion routine
  2. |
  3. | written by Kai-Uwe Bloem (I5110401@dbstu1.bitnet).
  4. | Based on a 80x86 floating point packet from comp.os.minix, written by P.Housel
  5. |
  6. |
  7. | Revision 1.2, kub 01-90 :
  8. | added support for denormalized numbers
  9. |
  10. | Revision 1.1, kub 12-89 :
  11. | Ported over to 68k assembler
  12. |
  13. | Revision 1.0:
  14. | original 8088 code from P.S.Housel
  15.  
  16. BIAS8    =    0x3FF-1
  17.  
  18.     .text
  19.     .even
  20.     .globl    __floatsidf, ___floatsidf
  21.  
  22. __floatsidf:
  23. ___floatsidf:
  24.     movel    sp@(4),d0    | get the 4-byte integer
  25.     moveml    d2-d7,sp@-    | save registers to make norm_df happy
  26.  
  27.     movel    d0,d4        | prepare result mantissa
  28.     clrl    d5
  29.     movew    #BIAS8+32-11,d0    | radix point after 32 bits
  30. 0:
  31.     movel    d4,d2        | set sign flag
  32.     swap    d2
  33.     tstw    d2        | check sign of number
  34.     bge    1f        | nonnegative
  35.     negl    d4        | take absolute value
  36. 1:
  37.     clrw    d1        | set rounding = 0
  38.     jmp    norm_df
  39.