mac-rom/Interfaces/PInterfaces/SANE.p
Elliot Nunn 4325cdcc78 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 09:52:23 +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}