<> <> <> DIRECTORY BitOps, Dragon, IO; DragonFP: CEDAR DEFINITIONS = BEGIN HexDblWord: TYPE = RECORD [h,l:Dragon.HexWord, single: BOOL]; CSLoad: TYPE = {load, dont}; CSUnload: TYPE = {unload, dont}; Function: TYPE = CARDINAL[0..256); FPRndMode: TYPE = MACHINE DEPENDENT{rn, rz, rp, rm}; requiredMode: CARDINAL = 0; -- IEEE, no pipelining, other modes not implemented Mode: TYPE = MACHINE DEPENDENT RECORD [ required (0: 0..11): [0..4096) _ requiredMode, rnd (0:12..13): FPRndMode _ rn, fixRZ (0:14..14): BOOL _ FALSE, fast (0:15..15): BOOL _ FALSE ]; SetMode: PROC[mode: Mode, function: Function] RETURNS[Mode]; ALU: PROC [aHDW, bHDW: HexDblWord, func: Function, mode: Mode] RETURNS [cHDW: HexDblWord, status: Dragon.PBusFaults]; MUL: PROC [aHDW,bHDW: HexDblWord, function: Function, mode: Mode] RETURNS [cHDW: HexDblWord, status: Dragon.PBusFaults]; PutHexFP: PUBLIC PROC[st:IO.STREAM, hdw: HexDblWord]; END.