# Decimal computer

Decimal computers are computers which can represent numbers and addresses in decimal as well as providing instructions to operate on those numbers and addresses directly in decimal, without conversion to a pure binary representation. Some also had a variable wordlength, which enabled operations on numbers with a large number of digits.

## Early computers

Early computers that were exclusively decimal include the ENIAC, IBM NORC, IBM 650, the IBM 1400 series, IBM 1620, IBM 7070. In these machines, the basic unit of data was the decimal digit, encoded in one of several schemes, including binary-coded decimal or BCD, bi-quinary, excess-3, and two-out-of-five code. Except for the IBM 1401 and 1620, these machines used word addressing. When non-numeric characters were used in these machines, they were encoded as two decimal digits except for the 1401 that had 6-bit BCD.

Other early computers were character oriented, providing instructions for performing arithmetic on character strings of decimal numerals. On these machines, the basic data element was an alphanumeric character, typically encoded in six bits. UNIVAC I and UNIVAC II used word addressing, with 12-character words. IBM examples include IBM 702, IBM 705, IBM 7010, and the IBM 7080.[1]

## Later computers

The IBM System/360, introduced in 1964 to unify IBM's product lines, used per character binary addressing, and also included instructions for packed decimal arithmetic as well as binary integer arithmetic, and binary floating point. It used 8-bit characters and introduced EBCDIC encoding, though ASCII was also supported.[2] The Burroughs B2500 introduced in 1966 also used 8-bit EBCDIC or ASCII characters and could pack two decimal digits per byte, but it did not provide binary arithmetic, making it a decimal architecture.

## More modern computers

Several microprocessor families offer limited decimal support. For example, the 80x86 family of microprocessors provide instructions to convert one-byte BCD numbers (packed and unpacked) to binary format before or after arithmetic operations .[3] These operations were not extended to wider formats and hence are now slower than using 32-bit or wider BCD 'tricks' to compute in BCD (see ). The x87 FPU has instructions to convert 10-byte (18 decimal digits) packed decimal data, although it then operates on them as floating-point numbers.

The Motorola 68000 provided instructions for BCD addition and subtraction;[4] as does the 6502. In the much later 68000 family-derived processors, these instructions were removed when the Coldfire instruction set was defined, and all IBM mainframes also provide BCD integer arithmetic in hardware. The Zilog Z80, Motorola 6800 and its derivatives, together with other 8-bit processors, and also the Intel x86 family have special instructions that support conversion to and from BCD. The Psion Organiser I handheld computer’s manufacturer-supplied software implemented its floating point operations in software using BCD entirely. All later Psion models used binary only, rather than BCD.

Decimal arithmetic is now becoming more common; for instance, three decimal types with two binary encodings were added to the 2008 IEEE 754r standard, with 7-, 16-, and 34-digit decimal significands.[5]

The IBM Power6 processor and the IBM System z9 have implemented these types using the Densely Packed Decimal binary encoding,[6] the first in hardware and the second in microcode.

## References

1. IBM (April 1962). IBM 1401 Data Processing System: Reference Manual (PDF). p. 20. A24-1403-5.
2. IBM (1964). IBM System/360 Principles of Operation (PDF). First Edition. A22-6821-0.
3. "MASM Programmer's Guide". Microsoft. 1992. Archived from the original on 2007-07-15. Retrieved 2007-07-01.
4. "Motorola M68000 Family Programmer's Reference Manual" (PDF). Retrieved 2007-07-01.
5. "DRAFT Standard for Floating Point Arithmetic P754" (PDF). 2006-10-04. Retrieved 2007-07-01.
6. Cowlishaw, Mike F. (2015) [1981,2008]. "General Decimal Arithmetic". IBM. Retrieved 2016-01-02.