mirror of
https://github.com/byteworksinc/ORCA-Pascal.git
synced 2024-11-28 23:49:28 +00:00
144 lines
4.9 KiB
ObjectPascal
144 lines
4.9 KiB
ObjectPascal
{$keep 'IntegerMath'}
|
|
unit IntegerMath;
|
|
interface
|
|
|
|
{********************************************************
|
|
*
|
|
* Integer Math Tool Interface File
|
|
*
|
|
* Other USES Files Needed: Common
|
|
*
|
|
* Other Tool Sets Needed: Tool Locator, Memory Manager
|
|
*
|
|
* Copyright 1987-1990
|
|
* By the Byte Works, Inc.
|
|
* All Rights Reserved
|
|
*
|
|
*********************************************************}
|
|
|
|
uses
|
|
Common;
|
|
|
|
const
|
|
(* Limits *)
|
|
minLongint = $80000000; (* min negative signed longint *)
|
|
minFrac = $80000000; (* pinned value for neg Frac overflow *)
|
|
minFixed = $80000000; (* pinned value for neg Fixed overflow *)
|
|
minInt = $8000; (* min negative signed integer *)
|
|
maxUInt = $FFFF; (* max positive unsigned integer *)
|
|
maxLongint = $7FFFFFFF; (* max positive signed longint *)
|
|
maxFrac = $7FFFFFFF; (* pinned value for positive Frac overflow *)
|
|
maxFixed = $7FFFFFFF; (* pinned value, positive Fixed overflow *)
|
|
maxULong = $FFFFFFFF; (* max unsigned longint *)
|
|
|
|
(* Signed Flag *)
|
|
unsignedFlag = $0000; (* value is not signed *)
|
|
signedFlag = $0001; (* value is signed *)
|
|
|
|
type
|
|
extendedValue = array [0..9] of byte;
|
|
extendedValuePtr = ^extendedValue;
|
|
|
|
|
|
procedure IMBootInit; tool ($0B, $01); (* WARNING: an application should
|
|
NEVER make this call *)
|
|
|
|
procedure IMStartUp; tool ($0B, $02);
|
|
|
|
procedure IMShutDown; tool ($0B, $03);
|
|
|
|
function IMVersion: integer; tool ($0B, $04);
|
|
|
|
procedure IMReset; tool ($0B, $05); (* WARNING: an application should
|
|
NEVER make this call *)
|
|
|
|
function IMStatus: boolean; tool ($0B, $06);
|
|
|
|
function Dec2Int (inputStr: univ cStringPtr; strLength, signedFlag: integer):
|
|
integer; tool ($0B, $28);
|
|
|
|
function Dec2Long (inputStr: univ cStringPtr; strLength, signedFlag: integer):
|
|
longint; tool ($0B, $29);
|
|
|
|
function Fix2Frac (fixedValue: longint): longint; tool ($0B, $1C);
|
|
|
|
function Fix2Long (fixedValue: longint): longint; tool ($0B, $1B);
|
|
|
|
procedure Fix2X (fixedValue: longint; var extendedVal: extendedValue);
|
|
tool ($0B, $1E);
|
|
|
|
function FixATan2 (input1, input2: longint): longint; tool ($0B, $17);
|
|
|
|
function FixDiv (dividend, divisor: longint): longint; tool ($0B, $11);
|
|
|
|
function FixMul (multiplicand, multiplier: longint): longint; tool ($0B, $0F);
|
|
|
|
function FixRatio (numerator, denominator: integer): longint; tool ($0B, $0E);
|
|
|
|
function FixRound (fixedValue: longint): integer; tool ($0B, $13);
|
|
|
|
function Frac2Fix (fracValue: longint): longint; tool ($0B, $1D);
|
|
|
|
procedure Frac2X (fracValue: longint; var extendedVal: extendedValue);
|
|
tool ($0B, $1F);
|
|
|
|
function FracCos (angle: longint): longint; tool ($0B, $15);
|
|
|
|
function FracDiv (dividend, divisor: longint): longint; tool ($0B, $12);
|
|
|
|
function FracMul (multiplicand, multiplier: longint): longint; tool ($0B, $10);
|
|
|
|
function FracSin (angle: longint): longint; tool ($0B, $16);
|
|
|
|
function FracSqrt (fracValue: longint): longint; tool ($0B, $14);
|
|
|
|
function Hex2Int (inputStr: univ cStringPtr; strLength: integer): integer;
|
|
tool ($0B, $24);
|
|
|
|
function Hex2Long (inputStr: univ cStringPtr; strLength: integer): longint;
|
|
tool ($0B, $25);
|
|
|
|
function HexIt (value: integer): longint; tool ($0B, $2A);
|
|
|
|
function HiWord (longValue: longint): integer; tool ($0B, $18);
|
|
|
|
procedure Int2Dec (value: integer; outputStr: univ cStringPtr;
|
|
strLength: integer; signedFlag: boolean); tool ($0B, $26);
|
|
|
|
procedure Int2Hex (value: integer; outputStr: univ cStringPtr;
|
|
strLength: integer); tool ($0B, $22);
|
|
|
|
procedure Long2Dec (value: longint; outputStr: univ cStringPtr;
|
|
strLength: integer; signedFlag: boolean); tool ($0B, $27);
|
|
|
|
function Long2Fix (longValue: longint): longint; tool ($0B, $1A);
|
|
|
|
procedure Long2Hex (value: longint; outputStr: univ cStringPtr;
|
|
strLength: integer); tool ($0B, $23);
|
|
|
|
(* ACTUALLY RETURNS 2 LONG WORDS: REMAINDER AND QUOTIENT
|
|
function LongDivide (dividend, divisor: longint): 2 longints; tool ($0B, $0D);
|
|
*)
|
|
|
|
(* ACTUALLY RETURNS 2 LONG WORDS: MSB AND LSB
|
|
function LongMul (multiplicand, multiplier: longint): 2 longints;
|
|
tool ($0B, $0C);
|
|
*)
|
|
|
|
function LoWord (longValue: longint): integer; tool ($0B, $19);
|
|
|
|
function Multiply (multiplicand, multiplier: integer): longint; tool ($0B, $09);
|
|
|
|
(* SDivide returns 2 words: the lo word = quotient; hi word = remainder *)
|
|
function SDivide (dividend, divisor: integer): longint; tool ($0B, $0A);
|
|
|
|
(* UDivide returns 2 words: the lo word = quotient; hi word = remainder *)
|
|
function UDivide (dividend, divisor: integer): longint; tool ($0B, $0B);
|
|
|
|
function X2Fix (var extendedVal: extendedValue): longint; tool ($0B, $20);
|
|
|
|
function X2Frac (var extendedVal: extendedValue): longint; tool ($0B, $21);
|
|
|
|
implementation
|
|
end.
|