home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / DVD!OMA2.DMS / in.adf / Examples / Library / Math / Math.asm < prev   
Encoding:
Assembly Source File  |  1994-10-13  |  6.3 KB  |  356 lines

  1.  
  2. ; Mathematik-Interface
  3.  
  4.     INCLUDE    "lvo/math.i"
  5.  
  6.     XREF    _MathBase
  7.     XREF    _MathTransBase
  8.     XREF    _MathIeeeDoubBasBase
  9.     XREF    _MathIeeeDoubTransBase
  10.  
  11.  
  12.  
  13.  
  14.  
  15. CREATE MACRO Basis,Name,Registermaske,Registeranzahl,Satz1,Anzahl1,Satz2,Anzahl2...
  16.  
  17.     IFD    \2
  18.     XDEF    _\2
  19.  
  20. _\2
  21.     IFEQ     \4-1
  22.     move.l    \3,-(SP)
  23.     ELSE
  24.     movem.l    \3,-(SP)
  25.     ENDC
  26.  
  27. TIEFE    SET    4+4*\4
  28.     IFNC     '\5',''
  29.     SATZ    \5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k
  30.     ENDC
  31.  
  32.     move.l    \1,a6
  33.     jsr        _LVO\2(a6)
  34.     IFEQ     \4-1
  35.     move.l    (SP)+,\3
  36.     ELSE
  37.     movem.l    (SP)+,\3
  38.     ENDC
  39.     rts
  40.  
  41.     ENDC
  42.  
  43.     ENDM
  44.  
  45.  
  46.  
  47.  
  48.  
  49. SATZ    MACRO    Satz1,Anzahl1,Satz2,Anzahl2...
  50.     IFEQ     \2-1
  51.     move.l    TIEFE(SP),\1
  52.     ELSE
  53.     movem.l    TIEFE(SP),\1
  54.     ENDC
  55. TIEFE    SET    TIEFE+4*\2
  56.     IFNC     '\3',''
  57.     SATZ    \3,\4,\5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i
  58.     ENDC
  59.     ENDM
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ; MathFFP
  71.  
  72. ; SPFix(float)(D0)
  73.     CREATE    _MathBase,SPFix,a6,1,d0,1
  74.  
  75. ; SPFlt(integer)(D0)
  76.     CREATE    _MathBase,SPFlt,a6,1,d0,1
  77.  
  78. ; SPCmp(leftFloat,rightFloat)(D1,D0)
  79.     CREATE    _MathBase,SPCmp,a6,1,d1,1,d0,1
  80.  
  81. ; SPTst(float)(D1)
  82.     CREATE    _MathBase,SPTst,a6,1,d1,1
  83.  
  84. ; SPAbs(float)(D0)
  85.     CREATE    _MathBase,SPAbs,a6,1,d0,1
  86.  
  87. ; SPNeg(float)(D0)
  88.     CREATE    _MathBase,SPNeg,a6,1,d0,1
  89.  
  90. ; SPAdd(leftFloat,rightFloat)(D1,D0)
  91.     CREATE    _MathBase,SPAdd,a6,1,d1,1,d0,1
  92.  
  93. ; SPSub(leftFloat,rightFloat)(D1,D0)
  94.     CREATE    _MathBase,SPSub,a6,1,d1,1,d0,1
  95.  
  96. ; SPMul(leftFloat,rightFloat)(D1,D0)
  97.     CREATE    _MathBase,SPMul,a6,1,d1,1,d0,1
  98.  
  99. ; SPDiv(leftFloat,rightFloat)(D1,D0)
  100.     CREATE    _MathBase,SPDiv,a6,1,d1,1,d0,1
  101.  
  102. ; SPFloor(float)(D0)
  103.     CREATE    _MathBase,SPFloor,a6,1,d0,1
  104.  
  105. ; SPCeil(float)(D0)
  106.     CREATE    _MathBase,SPCeil,a6,1,d0,1
  107.  
  108. ; Offsets
  109.  
  110.     IFD    OFFSETS1
  111.  
  112.     XDEF    _LVOSPFix
  113.     XDEF    _LVOSPFlt
  114.     XDEF    _LVOSPCmp
  115.     XDEF    _LVOSPTst
  116.     XDEF    _LVOSPAbs
  117.     XDEF    _LVOSPNeg
  118.     XDEF    _LVOSPAdd
  119.     XDEF    _LVOSPSub
  120.     XDEF    _LVOSPMul
  121.     XDEF    _LVOSPDiv
  122.     XDEF    _LVOSPFloor
  123.     XDEF    _LVOSPCeil
  124.  
  125.     ENDC
  126.  
  127.  
  128.  
  129.  
  130.  
  131. ; MathTrans
  132.  
  133. ; SPAtan(float)(D0)
  134.     CREATE    _MathTransBase,SPAtan,a6,1,d0,1
  135.  
  136. ; SPSin(float)(D0)
  137.     CREATE    _MathTransBase,SPSin,a6,1,d0,1
  138.  
  139. ; SPCos(float)(D0)
  140.     CREATE    _MathTransBase,SPCos,a6,1,d0,1
  141.  
  142. ; SPTan(float)(D0)
  143.     CREATE    _MathTransBase,SPTan,a6,1,d0,1
  144.  
  145. ; SPSincos(leftFloat,rightFloat)(D1,D0)
  146.     CREATE    _MathTransBase,SPSincos,a6,1,d1,1,d0,1
  147.  
  148. ; SPSinh(float)(D0)
  149.     CREATE    _MathTransBase,SPSinh,a6,1,d0,1
  150.  
  151. ; SPCosh(float)(D0)
  152.     CREATE    _MathTransBase,SPCosh,a6,1,d0,1
  153.  
  154. ; SPTanh(float)(D0)
  155.     CREATE    _MathTransBase,SPTanh,a6,1,d0,1
  156.  
  157. ; SPExp(float)(D0)
  158.     CREATE    _MathTransBase,SPExp,a6,1,d0,1
  159.  
  160. ; SPLog(float)(D0)
  161.     CREATE    _MathTransBase,SPLog,a6,1,d0,1
  162.  
  163. ; SPPow(leftFloat,rightFloat)(D1,D0)
  164.     CREATE    _MathTransBase,SPPow,a6,1,d1,1,d0,1
  165.  
  166. ; SPSqrt(float)(D0)
  167.     CREATE    _MathTransBase,SPSqrt,a6,1,d0,1
  168.  
  169. ; SPTieee(float)(D0)
  170.     CREATE    _MathTransBase,SPTieee,a6,1,d0,1
  171.  
  172. ; SPFieee(integer)(D0)
  173.     CREATE    _MathTransBase,SPFieee,a6,1,d0,1
  174.  
  175. ; SPAsin(float)(D0)
  176.     CREATE    _MathTransBase,SPAsin,a6,1,d0,1
  177.  
  178. ; SPAcos(float)(D0)
  179.     CREATE    _MathTransBase,SPAcos,a6,1,d0,1
  180.  
  181. ; SPLog10(float)(D0)
  182.     CREATE    _MathTransBase,SPLog10,a6,1,d0,1
  183.  
  184. ; Offsets
  185.  
  186.     IFD    OFFSETS2
  187.  
  188.     XDEF    _LVOSPAtan
  189.     XDEF    _LVOSPSin
  190.     XDEF    _LVOSPCos
  191.     XDEF    _LVOSPTan
  192.     XDEF    _LVOSPSincos
  193.     XDEF    _LVOSPSinh
  194.     XDEF    _LVOSPCosh
  195.     XDEF    _LVOSPTanh
  196.     XDEF    _LVOSPExp
  197.     XDEF    _LVOSPLog
  198.     XDEF    _LVOSPPow
  199.     XDEF    _LVOSPSqrt
  200.     XDEF    _LVOSPTieee
  201.     XDEF    _LVOSPFieee
  202.     XDEF    _LVOSPAsin
  203.     XDEF    _LVOSPAcos
  204.     XDEF    _LVOSPLog10
  205.  
  206.     ENDC
  207.  
  208.  
  209.  
  210.  
  211.  
  212. ; MathDoubBas
  213.  
  214. ; IEEEDPFix(double)(D0/D1)
  215.     CREATE    _MathIeeeDoubBasBase,IEEEDPFix,a6,1,d0-d1,2
  216.  
  217. ; IEEEDPFlt(integer)(D0)
  218.     CREATE    _MathIeeeDoubBasBase,IEEEDPFlt,a6,1,d0,1
  219.  
  220. ; IEEEDPCmp(double,double)(D0/D1/D2/D3)
  221.     CREATE    _MathIeeeDoubBasBase,IEEEDPCmp,d2-d3/a6,3,d0-d3,4
  222.  
  223. ; IEEEDPTst(double)(D0/D1)
  224.     CREATE    _MathIeeeDoubBasBase,IEEEDPTst,a6,1,d0-d1,2
  225.  
  226. ; IEEEDPAbs(double)(D0/D1)
  227.     CREATE    _MathIeeeDoubBasBase,IEEEDPAbs,a6,1,d0-d1,2
  228.  
  229. ; IEEEDPNeg(double)(D0/D1)
  230.     CREATE    _MathIeeeDoubBasBase,IEEEDPNeg,a6,1,d0-d1,2
  231.  
  232. ; IEEEDPAdd(double,double)(D0/D1/D2/D3)
  233.     CREATE    _MathIeeeDoubBasBase,IEEEDPAdd,d2-d3/a6,3,d0-d3,4
  234.  
  235. ; IEEEDPSub(double,double)(D0/D1/D2/D3)
  236.     CREATE    _MathIeeeDoubBasBase,IEEEDPSub,d2-d3/a6,3,d0-d3,4
  237.  
  238. ; IEEEDPMul(double,double)(D0/D1/D2/D3)
  239.     CREATE    _MathIeeeDoubBasBase,IEEEDPMul,d2-d3/a6,3,d0-d3,4
  240.  
  241. ; IEEEDPDiv(double,double)(D0/D1/D2/D3)
  242.     CREATE    _MathIeeeDoubBasBase,IEEEDPDiv,d2-d3/a6,3,d0-d3,4
  243.  
  244. ; IEEEDPFloor(double)(D0/D1)
  245.     CREATE    _MathIeeeDoubBasBase,IEEEDPFloor,a6,1,d0-d1,2
  246.  
  247. ; IEEEDPCeil(double)(D0/D1)
  248.     CREATE    _MathIeeeDoubBasBase,IEEEDPCeil,a6,1,d0-d1,2
  249.  
  250. ; Offsets
  251.  
  252.     IFD    OFFSETS3
  253.  
  254.     XDEF    _LVOIEEEDPFix
  255.     XDEF    _LVOIEEEDPFlt
  256.     XDEF    _LVOIEEEDPCmp
  257.     XDEF    _LVOIEEEDPTst
  258.     XDEF    _LVOIEEEDPAbs
  259.     XDEF    _LVOIEEEDPNeg
  260.     XDEF    _LVOIEEEDPAdd
  261.     XDEF    _LVOIEEEDPSub
  262.     XDEF    _LVOIEEEDPMul
  263.     XDEF    _LVOIEEEDPDiv
  264.     XDEF    _LVOIEEEDPFloor
  265.     XDEF    _LVOIEEEDPCeil
  266.  
  267.     ENDC
  268.  
  269.  
  270.  
  271.  
  272.  
  273. ; MathDoubTrans
  274.  
  275. ; IEEEDPAtan(double)(D0/D1)
  276.     CREATE    _MathIeeeDoubTransBase,IEEEDPAtan,a6,1,d0-d1,2
  277.  
  278. ; IEEEDPSin(double)(D0/D1)
  279.     CREATE    _MathIeeeDoubTransBase,IEEEDPSin,a6,1,d0-d1,2
  280.  
  281. ; IEEEDPCos(double)(D0/D1)
  282.     CREATE    _MathIeeeDoubTransBase,IEEEDPCos,a6,1,d0-d1,2
  283.  
  284. ; IEEEDPTan(double)(D0/D1)
  285.     CREATE    _MathIeeeDoubTransBase,IEEEDPTan,a6,1,d0-d1,2
  286.  
  287. ; IEEEDPSincos(double,pf2)(A0,D0/D1)
  288.     CREATE    _MathIeeeDoubTransBase,IEEEDPSincos,a6,1,a0,1,d0-d1,2
  289.  
  290. ; IEEEDPSinh(double)(D0/D1)
  291.     CREATE    _MathIeeeDoubTransBase,IEEEDPSinh,a6,1,d0-d1,2
  292.  
  293. ; IEEEDPCosh(double)(D0/D1)
  294.     CREATE    _MathIeeeDoubTransBase,IEEEDPCosh,a6,1,d0-d1,2
  295.  
  296. ; IEEEDPTanh(double)(D0/D1)
  297.     CREATE    _MathIeeeDoubTransBase,IEEEDPTanh,a6,1,d0-d1,2
  298.  
  299. ; IEEEDPExp(double)(D0/D1)
  300.     CREATE    _MathIeeeDoubTransBase,IEEEDPExp,a6,1,d0-d1,2
  301.  
  302. ; IEEEDPLog(double)(D0/D1)
  303.     CREATE    _MathIeeeDoubTransBase,IEEEDPLog,a6,1,d0-d1,2
  304.  
  305. ; IEEEDPPow(exp,arg)(D2/D3,D0/D1)
  306.     CREATE    _MathIeeeDoubTransBase,IEEEDPPow,d2-d3/a6,3,d2-d3,2,d0-d1,2
  307.  
  308. ; IEEEDPSqrt(double)(D0/D1)
  309.     CREATE    _MathIeeeDoubTransBase,IEEEDPSqrt,a6,1,d0-d1,2
  310.  
  311. ; IEEEDPTieee(double)(D0/D1)
  312.     CREATE    _MathIeeeDoubTransBase,IEEEDPTieee,a6,1,d0-d1,2
  313.  
  314. ; IEEEDPFieee(single)(D0)
  315.     CREATE    _MathIeeeDoubTransBase,IEEEDPFieee,a6,1,d0,1
  316.  
  317. ; IEEEDPAsin(double)(D0/D1)
  318.     CREATE    _MathIeeeDoubTransBase,IEEEDPAsin,a6,1,d0-d1,2
  319.  
  320. ; IEEEDPAcos(double)(D0/D1)
  321.     CREATE    _MathIeeeDoubTransBase,IEEEDPAcos,a6,1,d0-d1,2
  322.  
  323. ; IEEEDPLog10(double)(D0/D1)
  324.     CREATE    _MathIeeeDoubTransBase,IEEEDPLog10,a6,1,d0-d1,2
  325.  
  326. ; Offsets
  327.  
  328.     IFD    OFFSETS4
  329.  
  330.     XDEF    _LVOIEEEDPAtan
  331.     XDEF    _LVOIEEEDPSin
  332.     XDEF    _LVOIEEEDPCos
  333.     XDEF    _LVOIEEEDPTan
  334.     XDEF    _LVOIEEEDPSincos
  335.     XDEF    _LVOIEEEDPSinh
  336.     XDEF    _LVOIEEEDPCosh
  337.     XDEF    _LVOIEEEDPTanh
  338.     XDEF    _LVOIEEEDPExp
  339.     XDEF    _LVOIEEEDPLog
  340.     XDEF    _LVOIEEEDPPow
  341.     XDEF    _LVOIEEEDPSqrt
  342.     XDEF    _LVOIEEEDPTieee
  343.     XDEF    _LVOIEEEDPFieee
  344.     XDEF    _LVOIEEEDPAsin
  345.     XDEF    _LVOIEEEDPAcos
  346.     XDEF    _LVOIEEEDPLog10
  347.  
  348.     ENDC
  349.  
  350.  
  351.  
  352.  
  353.  
  354.     END
  355.  
  356.