sys7.1-doc-wip/Interfaces/PInterfaces/SANE.p
2019-07-27 22:37:48 +08:00

265 lines
7.0 KiB
OpenEdge ABL

{
Created: Friday, September 15, 1989 at 5:01 PM
SANE.p
Pascal Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1985-1991
All rights reserved
This file is used in these builds: ROM System
Change History (most recent first):
<3> 2/17/92 MH Move def on Extended80 to types.p, and include types.p
<2> 8/8/91 JL Updated Copyright.
To Do:
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT SANE;
INTERFACE
{$ENDC}
{$IFC UNDEFINED UsingSANE}
{$SETC UsingSANE := 1}
{$I+}
{$SETC SANEIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$SETC UsingIncludes := SANEIncludes}
{ Elems881 mode set by -d Elems881=true on Pascal command line }
{$IFC UNDEFINED Elems881}
{$SETC Elems881 = FALSE}
{$ENDC}
CONST
{$IFC OPTION(MC68881)}
{*======================================================================*
* The interface specific to the MC68881 SANE library *
*======================================================================*}
Inexact = 8;
DivByZero = 16;
Underflow = 32;
Overflow = 64;
Invalid = 128;
CurInex1 = 256;
CurInex2 = 512;
CurDivByZero = 1024;
CurUnderflow = 2048;
CurOverflow = 4096;
CurOpError = 8192;
CurSigNaN = 16384;
CurBSonUnor = 32768;
{$ELSEC}
{*======================================================================*
* The interface specific to the software SANE library *
*======================================================================*}
Invalid = 1;
Underflow = 2;
Overflow = 4;
DivByZero = 8;
Inexact = 16;
IEEEDefaultEnv = 0; {IEEE-default floating-point environment constant}
{$ENDC}
{*======================================================================*
* The common interface for the SANE library *
*======================================================================*}
DecStrLen = 255;
SigDigLen = 20; {for 68K; use 28 in 6502 SANE}
TYPE
RelOp = (GreaterThan,LessThan,EqualTo,Unordered);
NumClass = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);
RoundDir = (ToNearest,Upward,Downward,TowardZero);
RoundPre = (ExtPrecision,DblPrecision,RealPrecision);
DecimalKind = (FloatDecimal,FixedDecimal);
{$IFC OPTION(MC68881)}
{*======================================================================*
* The interface specific to the MC68881 SANE library *
*======================================================================*}
Exception = LONGINT;
Environment = RECORD
FPCR: LONGINT;
FPSR: LONGINT;
END;
TrapVector = RECORD
Unordered: LONGINT;
Inexact: LONGINT;
DivByZero: LONGINT;
Underflow: LONGINT;
OpError: LONGINT;
Overflow: LONGINT;
SigNaN: LONGINT;
END;
{$ELSEC}
{*======================================================================*
* The interface specific to the software SANE library *
*======================================================================*}
Exception = INTEGER;
Environment = INTEGER;
Extended96 = ARRAY [0..5] OF INTEGER;
MiscHaltInfo = RECORD
HaltExceptions: INTEGER;
PendingCCR: INTEGER;
PendingD0: LONGINT;
END;
{$ENDC}
{*======================================================================*
* The common interface for the SANE library *
*======================================================================*}
DecStr = STRING[DecStrLen];
DecForm = RECORD
style: DecimalKind;
digits: INTEGER;
END;
Decimal = RECORD
sgn: 0..1;
exp: INTEGER;
sig: STRING[SigDigLen];
END;
CStrPtr = ^CHAR;
{$IFC OPTION(MC68881)}
{ return IEEE default environment }
FUNCTION IEEEDefaultEnv: environment;
PROCEDURE SetTrapVector(Traps: trapvector);
PROCEDURE GetTrapVector(VAR Traps: trapvector);
FUNCTION X96toX80(x: Extended): extended80;
FUNCTION X80toX96(x: extended80): Extended;
{$IFC Elems881 = false}
{ sine }FUNCTION Sin(x: Extended): Extended;
FUNCTION Cos(x: Extended): Extended;
FUNCTION ArcTan(x: Extended): Extended;
FUNCTION Exp(x: Extended): Extended;
FUNCTION Ln(x: Extended): Extended;
FUNCTION Log2(x: Extended): Extended;
FUNCTION Ln1(x: Extended): Extended;
FUNCTION Exp2(x: Extended): Extended;
FUNCTION Exp1(x: Extended): Extended;
FUNCTION Tan(x: Extended): Extended;
{$ENDC}
{$ELSEC}
{ return halt vector }FUNCTION GetHaltVector: LONGINT;
PROCEDURE SetHaltVector(v: LONGINT);
FUNCTION X96toX80(x: Extended96): Extended;
FUNCTION X80toX96(x: Extended): Extended96;
FUNCTION Log2(x: Extended): Extended;
FUNCTION Ln1(x: Extended): Extended;
FUNCTION Exp2(x: Extended): Extended;
FUNCTION Exp1(x: Extended): Extended;
FUNCTION Tan(x: Extended): Extended;
{$ENDC}
{*======================================================================*
* The common interface for the SANE library *
*======================================================================*}
{---------------------------------------------------
* Conversions between numeric binary types.
---------------------------------------------------}
FUNCTION Num2Integer(x: Extended): INTEGER;
FUNCTION Num2Longint(x: Extended): LONGINT;
FUNCTION Num2Real(x: Extended): real;
FUNCTION Num2Double(x: Extended): DOUBLE;
FUNCTION Num2Extended(x: Extended): Extended;
FUNCTION Num2Comp(x: Extended): Comp;
PROCEDURE Num2Dec(f: decform;x: Extended;VAR d: decimal);
FUNCTION Dec2Num(d: decimal): Extended;
PROCEDURE Num2Str(f: decform;x: Extended;VAR s: DecStr);
FUNCTION Str2Num(s: DecStr): Extended;
PROCEDURE Str2Dec(s: DecStr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
PROCEDURE CStr2Dec(s: CStrPtr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
PROCEDURE Dec2Str(f: decform;d: decimal;VAR s: DecStr);
FUNCTION Remainder(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
FUNCTION Rint(x: Extended): Extended;
FUNCTION Scalb(n: INTEGER;x: Extended): Extended;
FUNCTION Logb(x: Extended): Extended;
FUNCTION CopySign(x: Extended;y: Extended): Extended;
FUNCTION NextReal(x: real;y: real): real;
FUNCTION NextDouble(x: DOUBLE;y: DOUBLE): DOUBLE;
FUNCTION NextExtended(x: Extended;y: Extended): Extended;
FUNCTION XpwrI(x: Extended;i: INTEGER): Extended;
FUNCTION XpwrY(x: Extended;y: Extended): Extended;
FUNCTION Compound(r: Extended;n: Extended): Extended;
FUNCTION Annuity(r: Extended;n: Extended): Extended;
FUNCTION RandomX(VAR x: Extended): Extended;
FUNCTION ClassReal(x: real): NumClass;
FUNCTION ClassDouble(x: DOUBLE): NumClass;
FUNCTION ClassComp(x: Comp): NumClass;
FUNCTION ClassExtended(x: Extended): NumClass;
FUNCTION SignNum(x: Extended): INTEGER;
FUNCTION NAN(i: INTEGER): Extended;
PROCEDURE SetException(e: Exception;b: BOOLEAN);
FUNCTION TestException(e: Exception): BOOLEAN;
PROCEDURE SetHalt(e: Exception;b: BOOLEAN);
FUNCTION TestHalt(e: Exception): BOOLEAN;
PROCEDURE SetRound(r: RoundDir);
FUNCTION GetRound: RoundDir;
PROCEDURE SetPrecision(p: RoundPre);
FUNCTION GetPrecision: RoundPre;
PROCEDURE SetEnvironment(e: environment);
PROCEDURE GetEnvironment(VAR e: environment);
PROCEDURE ProcEntry(VAR e: environment);
PROCEDURE ProcExit(e: environment);
FUNCTION Relation(x: Extended;y: Extended): RelOp;
{$ENDC} { UsingSANE }
{$IFC NOT UsingIncludes}
END.
{$ENDC}