home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / oberon / system / amigamath.mod (.txt) < prev    next >
Oberon Text  |  1977-12-31  |  5KB  |  146 lines

  1. Syntax20b.Scn.Fnt
  2. ParcElems
  3. Alloc
  4. Syntax24b.Scn.Fnt
  5. Syntax10.Scn.Fnt
  6. Syntax10b.Scn.Fnt
  7. FoldElems
  8. (* AMIGA *)
  9. MODULE AmigaMath; (* RD 6.8.1995 *)
  10. IMPORT
  11.     SYSTEM, Amiga, AmigaExec, AmigaBase;
  12.     BasLib, TransLib: LONGINT;
  13.     Dummy: AmigaBase.Regs;
  14. PROCEDURE Entier*(s: REAL): LONGINT;
  15. BEGIN
  16.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  17.     AmigaBase.LibCall(BasLib, -90, Dummy);
  18.     AmigaBase.LibCall(BasLib, -30, Dummy);
  19.     RETURN Dummy.d[0];
  20. END Entier;
  21. PROCEDURE IntToReal*(l: LONGINT; VAR d: REAL);
  22. BEGIN
  23.     Dummy.d[0]:=l;
  24.     AmigaBase.LibCall(BasLib, -36, Dummy);
  25.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  26. END IntToReal;
  27. (* 1 if s1>s2     0 if s1=s2       -1 if s1<s2 *)
  28. PROCEDURE Cmp*(s1, s2: REAL): LONGINT;
  29. BEGIN
  30.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
  31.     Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
  32.     AmigaBase.LibCall(BasLib, -42, Dummy);
  33.     RETURN Dummy.d[0];
  34. END Cmp;
  35. (* 1 if s>0     0 if s=0       -1 if s<0 *)
  36. PROCEDURE Tst*(s: REAL): LONGINT;
  37. BEGIN
  38.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  39.     AmigaBase.LibCall(BasLib, -48, Dummy);
  40.     RETURN Dummy.d[0];
  41. END Tst;
  42. PROCEDURE Abs*(s: REAL; VAR d: REAL);
  43. BEGIN
  44.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  45.     AmigaBase.LibCall(BasLib, -54, Dummy);
  46.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  47. END Abs;
  48. PROCEDURE Neg*(s: REAL; VAR d: REAL);
  49. BEGIN
  50.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  51.     AmigaBase.LibCall(BasLib, -60, Dummy);
  52.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  53. END Neg;
  54. PROCEDURE Add*(s1, s2: REAL; VAR d: REAL);
  55. BEGIN
  56.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
  57.     Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
  58.     AmigaBase.LibCall(BasLib, -66, Dummy);
  59.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  60. END Add;
  61. PROCEDURE Sub*(s1, s2: REAL; VAR d: REAL);
  62. BEGIN
  63.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
  64.     Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
  65.     AmigaBase.LibCall(BasLib, -72, Dummy);
  66.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  67. END Sub;
  68. PROCEDURE Mul*(s1, s2: REAL; VAR d: REAL);
  69. BEGIN
  70.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
  71.     Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
  72.     AmigaBase.LibCall(BasLib, -78, Dummy);
  73.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  74. END Mul;
  75. PROCEDURE Div*(s1, s2: REAL; VAR d: REAL);
  76. BEGIN
  77.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
  78.     Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
  79.     AmigaBase.LibCall(BasLib, -84, Dummy);
  80.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  81. END Div;
  82. PROCEDURE Arctan*(s: REAL; VAR d: REAL);
  83. BEGIN
  84.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  85.     AmigaBase.LibCall(TransLib, -30, Dummy);
  86.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  87. END Arctan;
  88. PROCEDURE Cos*(s: REAL; VAR d: REAL);
  89. BEGIN
  90.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  91.     AmigaBase.LibCall(TransLib, -42, Dummy);
  92.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  93. END Cos;
  94. PROCEDURE Sin*(s: REAL; VAR d: REAL);
  95. BEGIN
  96.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  97.     AmigaBase.LibCall(TransLib, -36, Dummy);
  98.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  99. END Sin;
  100. PROCEDURE Ln*(s: REAL; VAR d: REAL);
  101. BEGIN
  102.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  103.     AmigaBase.LibCall(TransLib, -84, Dummy);
  104.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  105. END Ln;
  106. PROCEDURE Exp*(s: REAL; VAR d: REAL);
  107. BEGIN
  108.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  109.     AmigaBase.LibCall(TransLib, -78, Dummy);
  110.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  111. END Exp;
  112. PROCEDURE Sqrt*(s: REAL; VAR d: REAL);
  113. BEGIN
  114.     Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
  115.     AmigaBase.LibCall(TransLib, -96, Dummy);
  116.     d:=SYSTEM.VAL(REAL, Dummy.d[0]);
  117. END Sqrt;
  118. (* returns s1/s2 *)
  119. PROCEDURE Ratio*(s1, s2: LONGINT; VAR d: REAL);
  120.     VAR r1,r2: REAL;
  121. BEGIN
  122.     IntToReal(s1, r1);
  123.     IntToReal(s2,r2);
  124.     Div(r1,r2,d);
  125. END Ratio;
  126. PROCEDURE e*(VAR d: REAL);
  127. BEGIN
  128.     d:=SYSTEM.VAL(REAL, 0402DF854H);
  129. END e;
  130. PROCEDURE pi*(VAR d: REAL);
  131. BEGIN
  132.     d:=SYSTEM.VAL(REAL, 040490FDBH);
  133. END pi;
  134. PROCEDURE TermProc;
  135. BEGIN
  136.     Dummy.a[1]:=BasLib;
  137.     IF BasLib#0 THEN AmigaBase.LibCall(AmigaBase.ExecBase(), -414, Dummy);END;
  138.     Dummy.a[1]:=TransLib;
  139.     IF TransLib#0 THEN AmigaBase.LibCall(AmigaBase.ExecBase(), -414, Dummy);END;
  140. END TermProc;
  141. BEGIN
  142.     BasLib:=AmigaExec.OpenLibrary("mathieeesingbas.library", 0);
  143.     TransLib:=AmigaExec.OpenLibrary("mathieeesingtrans.library", 0);
  144.     Amiga.TermProcedure(TermProc);
  145. END AmigaMath.
  146.