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.
--