ЁыSyntax20b.Scn.FntЁ    гZреParcElemsAllocа╞ъа╝Р¤Syntax24b.Scn.Fnt Syntax10.Scn.FntЁ    гZреа╞ъа╝Р¤Syntax10b.Scn.Fnt )   .  W    А8└╘FoldElemsNewv    А8└╘      А8└╘e    А8└╘ L    А8└╘l    А8└╘ A    А8└╘R    А8└╘     А8└╘_    А8└╘     А8└╘_    А8└╘     А8└╘y    А8└╘     А8└╘y    А8└╘     А8└╘y    А8└╘     А8└╘y    А8└╘E    А8└╘b    А8└╘     А8└╘_    А8└╘     А8└╘_    А8└╘     А8└╘^    А8└╘     А8└╘_    А8└╘     А8└╘`    А8└╘ 5    А8└╘X    А8└╘     А8└╘.    А8└╘     А8└╘/    А8└╘ФТЄx(* AMIGA *)  MODULE AmigaMath; (* RD 6.8.1995, updated OJ 30 Apr 96 *) IMPORT SYSTEM, E:=AmigaExec; VAR mathSBBase-, mathSTBase- : E.LibraryPtr; mathSBVersion-, mathSTVersion- : INTEGER; termEntry : E.TermEntry; CONST mathSBName*="mathieeesingbas.library"; mathSTName*="mathieeesingtrans.library"; PROCEDURE -ReturnD0 04EH,05EH, 04EH,075H; PROCEDURE Entier*(s: REAL): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -90, mathSBBase ); SYSTEM.CALL( -30, mathSBBase ); ReturnD0 END Entier; PROCEDURE IntToReal*(l: LONGINT; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, l ); SYSTEM.CALL( -36, mathSBBase ); SYSTEM.GETREG( 0, d ) END IntToReal; PROCEDURE Cmp*(s1, s2: REAL): LONGINT; (* 1 if s1>s2 0 if s1=s2 -1 if s10 0 if s=0 -1 if s<0 *)  BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -48, mathSBBase ); ReturnD0 END Tst; PROCEDURE Abs*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -54, mathSBBase ); SYSTEM.GETREG( 0, d ) END Abs; PROCEDURE Neg*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -60, mathSBBase ); SYSTEM.GETREG( 0, d ) END Neg; PROCEDURE Add*(s1, s2: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s1 ); SYSTEM.PUTREG( 1, s2 ); SYSTEM.CALL( -66, mathSBBase ); SYSTEM.GETREG( 0, d ) END Add; PROCEDURE Sub*(s1, s2: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s1 ); SYSTEM.PUTREG( 1, s2 ); SYSTEM.CALL( -72, mathSBBase ); SYSTEM.GETREG( 0, d ) END Sub; PROCEDURE Mul*(s1, s2: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s1 ); SYSTEM.PUTREG( 1, s2 ); SYSTEM.CALL( -78, mathSBBase ); SYSTEM.GETREG( 0, d ) END Mul; PROCEDURE Div*(s1, s2: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s1 ); SYSTEM.PUTREG( 1, s2 ); SYSTEM.CALL( -84, mathSBBase ); SYSTEM.GETREG( 0, d ) END Div; (*---------------------------------------------------*) PROCEDURE Arctan*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -30, mathSTBase ); SYSTEM.GETREG( 0, d ) END Arctan; PROCEDURE Cos*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -42, mathSTBase ); SYSTEM.GETREG( 0, d ) END Cos; PROCEDURE Sin*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -36, mathSTBase ); SYSTEM.GETREG( 0, d ) END Sin; PROCEDURE Ln*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -84, mathSTBase ); SYSTEM.GETREG( 0, d ) END Ln; PROCEDURE Exp*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -78, mathSTBase ); SYSTEM.GETREG( 0, d ) END Exp; PROCEDURE Sqrt*(s: REAL; VAR d: REAL); BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -96, mathSTBase ); SYSTEM.GETREG( 0, d ) END Sqrt; PROCEDURE Ratio*(s1, s2: LONGINT; VAR d: REAL); (* returns s1/s2 *)  VAR r1,r2: REAL; BEGIN IntToReal(s1, r1); IntToReal(s2,r2); Div(r1,r2,d) END Ratio; PROCEDURE e*(VAR d: REAL); BEGIN d:=SYSTEM.VAL(REAL, 0402DF854H) END e; PROCEDURE pi*(VAR d: REAL); BEGIN d:=SYSTEM.VAL(REAL, 040490FDBH) END pi; PROCEDURE Init; TYPE LibraryPtr=POINTER TO E.Library; VAR lib:LibraryPtr; BEGIN mathSBBase:=E.OpenLibrary(mathSBName,37); IF mathSBBase=0 THEN HALT(99) END; lib:=SYSTEM.VAL(LibraryPtr,mathSBBase); mathSBVersion:=lib.version; mathSTBase:=E.OpenLibrary(mathSTName,37); IF mathSTBase=0 THEN HALT(99) END; lib:=SYSTEM.VAL(LibraryPtr,mathSTBase); mathSTVersion:=lib.version END Init; PROCEDURE Term; BEGIN E.CloseLibrary( mathSTBase ); E.CloseLibrary( mathSBBase ) END Term; BEGIN Init; E.Register(termEntry, Term); END AmigaMath.