-- uCode-RealDefs.mesa
-- Copywrite Xerox Corporation 1980
-- Version of RealDefs for those using floating point microcode
-- Last Modified by L. Stewart, September 16, 1979 12:01 AM
DIRECTORY
Mopcodes: FROM "Mopcodes" USING [zJRAM, zLIW];
RealDefs: DEFINITIONS =
BEGIN
FloatingError: TYPE = {noError,FixRangeOverflow,ExponentOverflow,DivideBy0};
FloatingPointError: SIGNAL[f: FloatingError];
InitFloat: PROCEDURE;
WriteFloat: PROCEDURE [REAL];
WFWriteFloat: PROCEDURE [rp: UNSPECIFIED, f: STRING, p: PROCEDURE [CHARACTER]];
WFWriteEFloat: PROCEDURE [rp: UNSPECIFIED, f: STRING, p: PROCEDURE [CHARACTER]];
AppendFloat: PROCEDURE [STRING, REAL];
ReadFloat: PROCEDURE RETURNS [REAL];
StringToFloat: PROCEDURE [STRING] RETURNS [REAL];
uLocFix: CARDINAL = 541B;
uLocFixI: CARDINAL = 547B;
uLocFixC: CARDINAL = 546B;
-- Fix: PROCEDURE [a: REAL] RETURNS [LONG INTEGER]
Fix: PROCEDURE [a: REAL] RETURNS [LONG INTEGER] =
MACHINE CODE BEGIN
Mopcodes.zLIW, uLocFix/256, uLocFix MOD 256;
Mopcodes.zJRAM;
END;
-- FixC: PROCEDURE[REAL] RETURNS [CARDINAL];
FixC: PROCEDURE[REAL] RETURNS [CARDINAL] =
MACHINE CODE BEGIN
Mopcodes.zLIW, uLocFixC/256, uLocFixC MOD 256;
Mopcodes.zJRAM;
END;
-- FixI: PROCEDURE[REAL] RETURNS [INTEGER];
FixI: PROCEDURE[REAL] RETURNS [INTEGER] =
MACHINE CODE BEGIN
Mopcodes.zLIW, uLocFixI/256, uLocFixI MOD 256;
Mopcodes.zJRAM;
END;
END.