home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC6.DMS / in.adf / libsrc.lha / LIBSRC / math_float.asm < prev    next >
Encoding:
Assembly Source File  |  1994-09-06  |  1.9 KB  |  124 lines

  1.  
  2. * Maxon C++
  3. * Library "math_float"
  4. * Jens Gelhar (Himpelsoft) 19.03.93, 15.04.94, 06.09.94
  5.  
  6.     xdef    lib_float_add,lib_float_sub
  7.     xdef    lib_float_cmp,lib_float_neg
  8.     xdef    lib_float_mult,lib_float_div
  9.     xdef    lib_float_tst
  10.     xdef    lib_int2float,lib_float2int
  11.     xdef    _MathBase,lib_MathFloatBase,GetMathbase
  12.     xdef    _INIT_1_Math_floAt_o,_EXIT_1_Math_floAt_o
  13.  
  14.     xref    __OpenLib
  15.  
  16. execbase    = 4
  17. CloseLibrary    = -414
  18.  
  19. SPFix    = -30
  20. SPFlt    = -36
  21. SPCmp    = -42
  22. SPNeg    = -60
  23. SPAdd    = -66
  24. SPSub    = -72
  25. SPMul    = -78
  26. SPDiv    = -84
  27.  
  28. _INIT_1_Math_floAt_o:
  29.     lea mathlibname(pc),a1
  30.     jsr __OpenLib
  31.     move.l d0,_MathBase
  32.     rts
  33.  
  34. _EXIT_1_Math_floAt_o:
  35.     move.l _MathBase,d0
  36.     beq.b ret
  37.     move.l d0,a1
  38.     move.l execbase.w,a6
  39.     jsr CloseLibrary(a6)
  40. ret    rts
  41.  
  42. GetMathbase:
  43.     move.l _MathBase,a6
  44.     cmp.l #0,a6
  45.     bne.b ret
  46.     movem.l d0-d3/a0-a2,-(a7)
  47.     bsr.b _INIT_1_Math_floAt_o
  48.     movem.l (a7)+,d0-d3/a0-a2
  49.     bra.b GetMathbase
  50.  
  51. lib_float_add:
  52.     movem.l a0/a1/a6,-(a7)
  53.     move.l _MathBase,a6
  54.     jsr SPAdd(a6)
  55.     movem.l (a7)+,a0/a1/a6
  56.     rts
  57.  
  58. lib_float_sub:
  59.     movem.l a0/a1/a6,-(a7)
  60.     move.l _MathBase,a6
  61.     jsr SPSub(a6)
  62.     movem.l (a7)+,a0/a1/a6
  63.     rts
  64.  
  65. lib_float_cmp:
  66.     movem.l a0/a1/a6,-(a7)
  67.     move.l _MathBase,a6
  68.     jsr SPCmp(a6)
  69.     movem.l (a7)+,a0/a1/a6
  70.     rts
  71.  
  72. lib_float_neg:
  73.     movem.l a0/a1/a6,-(a7)
  74.     move.l _MathBase,a6
  75.     jsr SPNeg(a6)
  76.     movem.l (a7)+,a0/a1/a6
  77.     rts
  78.  
  79. lib_float_mult:
  80.     movem.l a0/a1/a6,-(a7)
  81.     move.l _MathBase,a6
  82.     jsr SPMul(a6)
  83.     movem.l (a7)+,a0/a1/a6
  84.     rts
  85.  
  86. lib_float_div:
  87.     movem.l a0/a1/a6,-(a7)
  88.     move.l _MathBase,a6
  89.     jsr SPDiv(a6)
  90.     movem.l (a7)+,a0/a1/a6
  91.     rts
  92.  
  93. lib_float_tst:
  94.     movem.l a0/a1/a6,-(a7)
  95.     move.l _MathBase,a6
  96.     jsr -48(a6)
  97.     movem.l (a7)+,a0/a1/a6
  98.     tst.l d0
  99.     rts
  100.  
  101.  
  102. lib_int2float:
  103.     movem.l a0/a1/a6,-(a7)
  104.     move.l _MathBase,a6
  105.     jsr SPFlt(a6)
  106.     movem.l (a7)+,a0/a1/a6
  107.     rts
  108.  
  109. lib_float2int:
  110.     movem.l a0/a1/a6,-(a7)
  111.     move.l _MathBase,a6
  112.     jsr SPFix(a6)
  113.     movem.l (a7)+,a0/a1/a6
  114.     rts
  115.  
  116. mathlibname:    dc.b 'mathieeesingbas.library',0
  117.  
  118.     SECTION D,DATA
  119.  
  120. lib_MathFloatBase:
  121. _MathBase:    dc.l 0
  122.  
  123.     end
  124.