On or about Sun, 22 May 2005 group: alt.folklore.computers subject: PDP-8 Floating Point From: CBFalconer Since an interest has been expressed, here are some quotations from the original source. ; ;-------------------------------- ; Floating point arithmetic system for YALE 8080-based ; computers -- by Charles B. FALCONER, April 1976 ; ; Real representation can express values in the absolute value ; range 0.29388 * 10^-38 through 1.7018 * 10^+38, and zero, ; together with sign, with approximately 4.8 decimal digit ; accuracy. The resolution of a value between 1 and 2 is ; approximately 0.00003. The system is designed to maximize ; register (as opposed to memory) use during computation. ; ; A real (floating point) value is represented by a unipolar ; 16 bit mantissa, whose value is in the range 1.0 > mantissa ; > -1.0. The mantissa absolute value is always >= 0.5. ; Thus, the high order bit of the mantissa is always a "one", ; and is replaced by a sign bit in internal representation. ; A "one" sign bit represents negative values. ; ; Real values are stored in 3 adjacent memory bytes: ; Lowest address: exponent ; Next address: least significant byte of mantissa ; Highest address: most significant byte of mantissa ; ; Real operands can appear in either of two 8080 internal ; register configurations. The normal position (considered ; the real accumulator) is the DE.H register, in which the ; D and E registers hold the mantissa (sign bit in D), and ; the H register holds the exponent. A second operand may ; be held in the BC.L register, where the B and C registers ; hold the mantissa, and the L register holds the exponent. What was omitted above was that a zero value in the exponent always represented a floating zero, regardless of any stray bits in the mantissa (actually significand) portion. This simplified zero detection. All routines detected over and underflow, when they jammed the result to either max (of the appropriate sign) or zero and returned with carry set. In addition the following format was used for i/o, and routines were provided to convert between the two formats. This format made it convenient to control rounding and field sizes. ; ; "Fixed" point representation consist of a 16 bit positive ; integer (in the range 0 to 65535), and a 7 bit offset (by ; 40H) integer exponent, which represents a power of ten ; multiplier. The eighth exponent bit represents the sign ; of the mantissa. This representation is used for input/ ; output only. The system included a full set of trignometric, exponential, logarithmic and square root functions. --