DIRECTORY Basics USING [Comparison]; ConstArith: DEFINITIONS = BEGIN Const: TYPE = RECORD [ sign: ConstSign, low: CARD, high: CARD]; ConstSign: TYPE = {negative, zero, positive}; Overflow: ERROR; DivByZero: ERROR; FromCard: PROC [card: CARD] RETURNS [Const]; FromInt: PROC [int: INT] RETURNS [Const]; ToCard: PROC [const: Const] RETURNS [CARD]; ToInt: PROC [const: Const] RETURNS [INT]; Add: PROC [x,y: Const] RETURNS [Const]; Sub: PROC [x,y: Const] RETURNS [Const]; Div: PROC [x,y: Const] RETURNS [Const]; Mod: PROC [x,y: Const] RETURNS [Const]; DivMod: PROC [x,y: Const] RETURNS [q, r: Const]; Mul: PROC [x,y: Const] RETURNS [Const]; Abs: PROC [c: Const] RETURNS [Const]; Neg: PROC [c: Const] RETURNS [Const]; Compare: PROC [c1, c2: Const] RETURNS [Basics.Comparison]; END. θ ConstArith.mesa Copyright Σ 1986, 1988, 1991 by Xerox Corporation. All rights reserved. Russ Atkinson (RRA) July 25, 1988 9:48:12 pm PDT Willie-s, September 24, 1991 1:52 pm PDT Exceptions Conversions Arithmetic Comparison Κχ–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ Οeœ=™HK™0K™(—K˜šΟk ˜ Kšœžœ˜K˜—KšΟn œž œž˜K˜šœžœžœ˜K˜Kšœžœ˜ Kšœžœ˜ K˜—šœ žœ˜-K˜—™ KšŸœžœ˜KšŸ œžœ˜—K˜™ KšŸœžœžœžœ ˜,KšŸœžœžœžœ ˜)KšŸœžœžœžœ˜+KšŸœžœžœžœ˜)—K˜™ KšŸœžœžœ ˜'KšŸœžœžœ ˜'KšŸœžœžœ ˜'KšŸœžœžœ ˜'KšŸœžœžœ˜0KšŸœžœžœ ˜'KšŸœžœ žœ ˜%KšŸœžœ žœ ˜%—K˜™ KšŸœžœžœ˜:—K˜Kšžœ˜K˜—…—ρ