==>>Back to main index of numeric formats

First publication: 8 march 2009

This document describes three old computers that were designed especially for number crunching. The only thing these machines can do well is perform a hughe bunch of arithmetic calculations in a period of time much shorter than with the conventional means of their eras.

Since they were not designed for text processing or data-base managment (= data ordering and mining) they lack the user-controlled handling of the individual bits and small groups of bits.in one RAMemory-word, although these words are fairly large, 22 bits or much more. To enhance the calculation speed they store and process the numeric values in a binary way.

Their I/O-systems are fairly poor too. So they need an external support system for a good communication with the outside world. This support system has to handle also the long-term background storage (e.g. removable disk or tape) since the computers themselves do not take care for it.

The three machines are the Cray-1, the CDC-6600 and the Zuse Z1, plus their direct successors. Yes indeed, the Zuse machine can be seen as a pre-war number cruncher. Since the Cray-1 applies a lot of parallellism it is called a super-computer.

The direct successors of these three machines are:

Cray-1 -> Cray-1A, -1S, -XMP, -YMP

CDC-6600 -> Cyber-70, -170

Zuse Z1 -> Z3

The I/O support for the Cray machines must be a big 'ordinary' mainframe computer, e.g. an IBM-360 or CDC-6600. In their turn the CDC machines themselves have got 10 to 24 small built-in peripheral processors to handle the I/O and storage. For the Zuse machines the I/O support is the human user with the pencil and paper.

The numeric formats of the three number crunchers are described below. Several machines that can handle textes and data-bases are described in some other documents in this internet site.

All three machines store special values arising from arithmetic operations into the words for the resulting numbers. As a consequence the user's program can postpone an exception action and continue its normal operation. The error will not creep invisibly through the following calculations.and thus produce fake results. They also trsnsfer such a value to the Processor Status Register, so the user can see that an error has occurred.

First publication date: 09 october 2007

First update: 10 october 2008

Last update: 14 october 2008

Machines: Cray-1, 1A, 1S, XMP, YMP

In 1976 Seymour Cray introduced the world's first real supercomputer. It had an outstanding shape: round in stead of the usual filing cabinets. Its electrologic circuitry was made mainly of Emissor Coupled Logic (= ECL) together with a lot of line termination resistors of 60 ohm. For the years 1970-s and 1980-s the switching speed of this type of circuitry was very high. It was unsurpassed by the electrologic of any other type.

Besides its enormous performance in number crunching the super computer had some more superlatives. It was unsurpassed in power consumption by devouring 115 kilowatt of electricity. So it needed two 20-tons cooling aggregates installed outside the computer room in order to not get overheated. Since the voltage for the electrologic circuitry is only 5 this circuitry usurped over 20,000 amperes of direct current! This hughe amount can be distributed only via thick metal bars. Ordinary wires are too thin and would melt down. This direct current is created by twelve power supply units which are located around the CPU+RAM-cylinder. Humans can seat upon these supplies, so the computer became the world's most expensive sofa: ca. 20 million dollars.

These mind-blowing figures show that the computer had been designed for high-speed number crunching. Nevertheless it is not a calculation marvel. Its word size is 'only' 64 bits. The addressable memory space is 8 MBytes. For that time this was a lot, but other machines had a similar space, e.g. the Burroughs 6700 had 6 MByte. The accuracy of the float data is that of the ordinary computers. In these data all bits are visible. The registers inside the arithmetic processor have the length of the words in the memory. They do not have additional bits for storing the intermediate results of the calculations with a higher accuracy. The hardware does not supply double-length floats. For them special software has been written. Also, the computer cannot divide. It only can inverse a number to get its reciprocal value. This value can be used in a multiplication.

Remarkably the coefficient in the humble DEC PDP-11 can represent more digits. And the Intel FPP-8087 applies 11 extra coefficient bits for its intermediate results. Both systems can execute a real division. In modern Cray computers the FPP-8087 arithmetic is applied. Its word definition, IEEE-754, is described in the 'hidden-bit' document in this internet site.

Each COMPUTER-word contains 72 bits. These are written in nine 8-bits bytes. Eight of these bytes are organized in four groups of two. These duo-bytes are called 'parcels'. The bits in them are indexed from 0 to 15, from 16 to 31, from 32 to 47, and from 48 to 63. All 64 bits together form the DATA-word. This word stores the CPU-instructions and the ordinary data. The nineth byte contains the check bits which are indexed from 64 to 71. This byte will not be mentioned here anymore.

The addressable memory space is one million computer words. Thus the space for the instructions and data is one million data words = 4 million parcels = 8 MByte.

A CPU-instruction has the length of one or two parcels. If one, then it can occupy each of the four parcels in a word. If two, the first one also can occupy each of the four word-parcels. The second one is the one immediately next to it. This can be the first parcel of the next word. So for the instructions the word boundaries are not important. But for the data they are.

Each numeric value requires one whole and contiguous data word. When this number is a float then the leftmost parcel contains the sign with the exponent and the other three parcels together contain the coefficient. Actually four different types of numbers can be stored: the integers used for addressing, the integers used for ordinary data (the 'scalar integers'), the float-like integers and the single-length floats.

Since the computer is designed for number crunching and not for text processing or data ordering, it lacks the user-controlled handling of the individual bits, bytes and parcels.inside the data word. So there is no data type specific for text characters. Selection and update of e.g. a byte occurs by shifting and masking the whole memory word. The later models have better facilities. The four numeric types are listed next.

In contrast with the old Cray manuals wherein bit 0 is the most significant bit in this internet document bit 0 is the least significant bit.

Negative values are in two-complement and overflow is not detected. Consequently the very same bit-pattern can be interpreted in two ways:

-- Unsigned integer -- length of word = 24 bits bit 23 - 0 = magnitude -- Signed integer -- length of word = 24 bits bit 23 = sign ( 0 = '+', 1 = '-' ) bit 22 - 0 = magnitude

Available operators are: addition, subtraction, multiplication.

When such an integer number is transferred to a 64 bits word, its 24 bits value (sign bit inclusive!) is right adjusted in that word. The upper 40 bits in the word are zeroed. When the transfer occurs from the 64 bits word to the integer number, only the low-order 24 bits are transferred; the upper 40 bits are ignored.

Negative values are in two-complement and overflow is not detected. Consequently the very same bit-pattern can be interpreted in two ways:

-- Unsigned integer -- length of word = 64 bits bit 63 - 0 = magnitude -- Signed integer -- length of word = 64 bits bit 63 = sign ( 0 = '+', 1 = '-' ) bit 62 - 0 = magnitude

Available operators are: addition, subtraction, bit-by-bit logicals, bit shifts, bit counts.

A float with the exponent bit-pattern filled with zeroes can be treated sometimes as an integer of sign-bit + 48 bits. Negative values are in sign+magnitude.

length of word = 64 bits bit 63 = sign ( 0 = '+', 1 = '-' ) bit 62 - 48 = 0 bit 47 - 0 = magnitude

Available operator is: multiplication.

The float is in sign+magnitude notation without a hidden bit and with a biased exponent. When negative it is not complemented.

length of word = 64 bits bit 63 = sign ( 0 = '+', 1 = '-' ) bit 62 - 48 = exponent bit 47 - 0 = coefficient exponent base = 2

Available operators are: addition, subtraction, multiplication, reciprocal approximation.

The coefficient has no hidden bit, so all its bits are visible. When it is not normalized it will become so by the addition of a zero value. It must be normalized before any other arithmetic operation. It is a fraction, so its value goes from 0.5 until 1.0.

In theory two zeroes are possible: +0 = the ordinary value zero = the whole bit pattern (exponent inclusive) filled with zeroes, and -0 which is never made by any arithmetic operator and thus actually never will occur.

Only the half of all exponent bit patterns deliver a legal exponent value. The other half signal an error. In octal:

exponent property exponent value (octal) ----------------- ---------------------- float-like integer = 0 (sometimes) exponent range = 0 or 1 up to 77,777 underflow indication = 17,777 or less (error) negative range = 20,000 up to 37,777 positive range = 40,000 up to 57,777 overflow indication = 60,000 or more (error) exponent bias = 40,000 (= decimal 16384) unbiased range = -20,000 up to +17,777

Machines: Cray-1, 1A, 1S, XMP, YMP

type #bits binary normalized abs.value ------ ------------------ --------------------------- -floats- total expon mantis minimum maximum(nearly) floating-point 64 15 48 2^(-1-8192) 2^+8191 -integers- total expon mantis unnormal.min. max.(nearly) float-like 64 15x0 48 1 2^+48 unsigned scalar 64 - 64 1 2^+64 signed scalar 64 - 63 1 2^+63 unsigned addres 24 - 24 1 2^+24 signed address 24 - 23 1 2^+23

type decimal normalized abs.value decim.digits ------ ---------------------------- ------------ -floats- minimum maximum float-accur. floating-point 4.59E-2467 5.45E+2465 14.1 -integers- unnormal.min. maximum int-#digits float-like 1 2.81E+14 14.4 unsigned scalsr 1 1.84E+19 19.2 signed scalar 1 9.22E+18 18.9 unsigned address 1 1.67E+8 7.2 signed address 1 8.38E+7 6.9

First publication: 8 march 2009

Machines: CDC-6600, Cyber-70, Cyber-170

- introduction
- arithmetic types
- numeric structures
- arithmetic data in listing
- appendix about the special values
- links

In the laboratories of Control Data Corporation in the early sixties J.E. Thornton, supported by his boss Seymour Cray, designed a computer for fast calculations. It became the CDC-6600. He took much care to improve the speed of the arithmetic processor by better designing its logical circuitry. But the computer was not able to communicate well with the outside world. Therefore it had 10 to 24 Peripheral Processors. These were modified 12-bits CDC-160 minicomputers. They will not be discussed here.

The width of the data bus is 60 bits. The address bus is 18 bits wide. With it 256K words could be addressed, i.e a memory area of nearly 2 MByte. At that time it was large, but later it became too small. CDC has never found a nice way to circumpass this shortcoming while keeping the compatibilities with the early machines. Therefore the descendant computers, the Cyber-70 and 170, kept the same problem.

The machine was intended for fast calculations, not for text processing or data base management. So it did not have facilities for selecting and changing a small part of a word other than shifting and masking the bit pattern of the whole word.

The CPU-instructions are stored in units of 15 bits, the so-called 'Parcels'. Four of them fit in one memory word. Three arithmetic types are applied: integer, float and double float. The integer type is quite simple: the sign and a coefficient of 59 bits. A negative value is shown in one-complement, not in two-complement. The two zeroes 000... and 111... have been given the same meaning.

floating-point number in 60-bits computer word 59 58 57 48 47 <- bit index -> 0 +-+-+----------+-------------------------------------+ |+|-| exponent | coefficient | |-|+| 10 bits | 48 bits | +-+-+----------+-------------------------------------Q | \ / | exponent sign (=se) binary point coefficient sign (=sn) (virtual)

The float type consists of a sign, an exponent of 11 bits and a coefficient of 48 bits. The special values 'Undefined' and 'Infinity' can be written in it. Basically both the signed coefficient and the exponent are handled as ordinary signed-integer numbers. When negative they are one-complemented (not: two-complemented). So both they have two zeroes.

More or less the exponent should look like a biased integer value. In order to give it that varnish its sign is inverted to 1='+' and 0='-'. Thus the operators for comparing the integers can be used also for comparing the floats.

The sign of the coefficient is ordinary. When the whole number is negative then it is inverted as a whole, the exponent included, as if the whole thing were of ordinary integer type. Consequently the bit pattern of the exponent's absolute value may be inverted twice: once when the exponent value is negative and at second when the whole number is negative.

Numerically the coefficient is seen as an integer value too, so the binary point is immediately at its right side. All its bits are visible, so no bit is hidden. Input values do not need to be normalized. Even the operators do not always normalize their output. Nevertheless the processor obeys a normalize command. Then it shifts the coefficient to the left until the leftmost bit is non-zero. The exponent value is adapted correspondingly.

The exponent base is 2, so the coefficient is handled as a row of binary digits. The positive zero 000... and the negative zero 111... have the same meaning.

The exponent serves for storing the two special values. It has two zero values, viz. 1000... and 0111... (These are its bit patterns when the coefficient is positive.) The positive zero 1000.. is the ordinary zero value. The negative zero 0111.. has got the meaning 'Undefined'. When the exponent has its maximum 1111... irrespective the value of the coefficient then the whole number is said to be Infinite.

The whole number can be zero in two ways: The coefficient is zero or the exponent has its smallest value, i.e. its bit pattern is 0000... Both zeroes and also the two special values can be given as input to every arithmetic operator. The two zeroes may make the operator to give different results when the other input value is Infinite or Undefined. In the appendix the tables are given about the resulting values when a zero or a special value is entered.

The double-float type is made of a remarkable construction that other computer manufacturers do not apply. It is seen as the add-summation of two single floats. Therefore it consists of two full-fledged single-float words. In principle the four arithmetic operators can accept single floats only. Actually they do accept doubles, but they handle them as sets of two separate singles. Depending on the contents of the single input-floats they deliver a single or double float as result.

When a double float is delivered then the first word contains the most significant part of the whole number. The second word contains the least significant part. The exponent in this part is given the value of the first part's exponent minus 48. Thus the coefficient in this part acts as the seamless continuation of the coefficient in the first part. Both coefficients have the binary point at their right side. When the whole number is negative both words are complemented separately.

For example: Many computer manufacturers would store an unnormalized number somehow like this:

2016 0007312*2445000

The CDC-6600 stores this number actually as:

2016 0007312* + 1735 2445000*

Remarks about this example:

* = virtual binary point.

The coefficients are shortened for better readibility.

All digits are in octal. They represent 3-bits patterns.

The leftmost digit embraces the two signs and
the first bit of the absolute exponent value.

1735 + 60 = 2016 See the semi-biased exponent above.

60 octal = 48 decimal

As stated already, at input both single floats of a double float are handled separately as independent numbers.

One might expect that the protocol of 'value is zero at zero exponent irrespective coefficient' will result in a gap in the set of representable numeric values, similar to the gap the Digital PDP-11 has, as written in the internet document about the hidden bit. For the single precision float this will not, since always the coefficient is allowed to be unnormalized, also when the exponent has the bit-pattern ...0001. But the double float has a sudden loss of accuracy, as shown now.

The construction of the double float as summation of two single floats has a weird consequence. When the bit pattern of the first exponent is less than 48, then the pattern in the second exponent should be less than zero, which is impossible. Then that exponent is made zero Nevertheless the coefficient of the second number receives the right value, as if the exponent were below zero.

When in the second number the exponent is zero then that number is said to be zero. Consequnetly the whole number is shown in single-precision accuracy. So when the exponent of the first number is 49 to 96, then the absolute precision is much better than when that exponent is 48 or less! This is a weakened form of the zero-gap the Digital PDP-11 has.

That problem would have been solved when in the second number the exponent were kept on ...0001 and its coeffcient were made unnormalized. Then the absolute precision would be the same for all first exponent's values lower than 49, and the relative precision would deteriorate smoothly when that exponent is lowered. Alas, the machine does not work that way.

bit 59 = sign (0='+'. 1='-') bit 58 - 0 = absolute value

Negative values are written in 1-complement

Allowed operations are ADD and SUBTRACT

bit 59 = sn = sign of whole number (0='+'. 1='-') bit 58 = se = sign of exponent (1='+'. 0='-' [see text]) bit 57 - 48 = absolute value of exponent bit 47 - 0 = absolute value of coefficient Two zeroes: coefficient = 00000... [complemented when sn = 1] se+exponent = 0 000... = -1023 [idem] Infinity; se+exponent = 1 111... = +1023 [idem] Undefined: se+exponent = 0 111... = -0 [idem]

Coefficient is integer number without fraction

Negative exponent values are written in 1-complement

Negative values of the whole number are written in 1-complement

Allowed operations are ADD, SUBTRACT, NULTIPLY and DIVIDE

The double float consists of two independent single floats

The first word contains the MSPart

The second word contains the LSPart

Generally: LSP-Exponent = MSP-Exponent - 48

data type #bits binary normalized abs.value total expon coeff minimum maximum(nearly) single float 60 1+10 48 2^(-1022+47) 2^(1022+48) double float 120 2*11 96 [2^(-1022+48+47)] 2^(1022+48) integer 60 - 59 2^+58 2^+59

data type decimal normalized abs.value float-accur. minimum maximum or int-#digits single float 3.14E-294 1.26E+322 14.1 double float [ 8.82E-280 ] 1.26E+322 28.5 integer 2.88E+17 5.76E+17 17.7

data type minimum absolute non-zero value binary decimal single float 2^-1022 2.23E-308 double float 2^-1022 2.23E-308 integer 1 1

Legenda:value: bit pattern for positive number: 0.0 = 0 v vvv..vvv 000....000 0.0 = 0 0 000..000 xxx....xxx INF = 0 1 111..111 xxx....xxx UND = 0 0 111..111 xxx....xxx

xx.. = any bit pattern without any restriction

vv.. = any bit pattern except 000..., 111... and 0111...

For negative numbers all bit patterns are 1-complemented.

These tables are based on the CDC-manuals. Herein:

N = any float number with non-special and non-zero exponent

O = number with zero exponent (why not zero coefficient also?)

I = infinity

U = undefined

**ADDITION**

Result = Left + Right

right operand -> N O +I -I U _______________________ left operand | N | N N +I -I U | O | N O +I -I U | +I | +I +I +I U U | -I | -I -I U -I U | U | U U U U U |

**SUBTRACTION**

Result = Left + (-Right)

**MULTIPLICATION**

Result = Left * Right

right operand -> N O I U ___________________ left operand | N | N O I U | O | O O U U | I | I U I U | U | U U U U |

**DIVISION**

Result = Left / Right

right operand -> N O I U ___________________ left operand | N | N I O U | O | O U O U | I | I I U U | U | U U U U |

First publication: 8 march 2009

Links improved: 28 may 2009

Machines: Z1 and Z3 (and sparsely their followers)

In the midst of the years 30 the German aeroplane engineer Konrad Zuse got tired and bored by the tedious calculations that had to be done to find the right shape for a wing. So he designed the world's first programmable computer, named Z1. It got completed in 1938 and operated fully mechanically. Its successor, the Z3 completed in 1941, worked electromechanically (= with relays). Logically both machines were fairly equal, except that the square root function had been added to the Z3.

Of course both machines were logically very simple and poor. The only thing they could do is perform the four or five numeric operations +, -, *, / and sqrt. Nevertheless they are very modern in some aspects, like:

- The modules of the modern computers can already be discerned, like the input keyboard, the output display, the instruction decoder, the random access memory (= RAM), and so on.

- The machines work binarily, which was a revolution in the time that all calculators worked decimally.

- Their arithmetic processor already is a full-fledged floating point processor. This processor even has exception handling.

- The arithmetic processor also applies floating-point numbers, which already are stored in hidden-bit notation.

- Although the machines compute binarily they accept and display the numeric values decimally.

- The instruction processor applies pipelining. During the progress of an instruction the next one is fetched and already started for execution.

- The width of the bus for data transport between the processor and the RAM lies in the range of the bus widths used in the present days, viz. 22 bits.

- The registers inside the arithmetic processor have two to five extra bits to increase the accuracy of the temporary results. Thus the main register R1 has 24 bits. Many computers of 20 to 40 years later date still lacked the extra bits.

Note that all these things have been invented by Konrad Zuse himself and a few of his direct friends! They also made a smaller hybrid (= memory is mechanical, processor has relays) demonstration machine, the Z2, which has 16 bits. It processed integers only.

In order to become not too complex and too big the Z1 and Z3 lacked the integer numbers, the address calculation, the call for subprograms and the conditional clause. Their RAM consisted of 64 (note: not 64K or 64M or 64G) memory words of 22 bits. Only data were stored in it. The user's program was stored on a 5+3=8 bits wide punch tape. This program could address and access each word in the RAM, but it could not access directly the registers in the arithmetic processor.

During the Sexond World War the three machines, Z1, Z2 and Z3, together with their documentation and photographs got destroyed totally by the shameful allied bomb raids that destroyed most of the German historical city centers and thus whiped out a lot of Europe's old history. Later on Konrad Zuse made replicas that approximate the Z1 and Z3, by looking around in his own brain memory. The Z2 is lost forever.

After the war Konrad Zuse completed the successor of the Z3, the Z4. It is hybrid also and has 64 RAM-words also. But its bus width is 32 bits, already the same of a modern-day PC. It became the world's second commercially sold computer and the first in Europe. It has served for nine(!) years in Switzerland and France. This computer and some later Zuse computers still exist in museums. Some of them are even kept in operation!

Nevertheless, due to the war and also due to its political and social aftermath all Zuse's inventions were in vain. Later on they were reinvented by other people in the allied countries, mainly in the UK and USA. His definition of the floating-point numbers even got out of use already before the definitions by DEC and IEEE came into existence, although his definition is as good as that by DEC. Clearly the war has slowed down the development of the computers!

Some words used by Konrad Zuse are in modern-day English:

Semilogarithmic notation = Floating-point notation

German: Dualstelle = English: Place for a dual-value = Bit

ACKNOWLEDGEMENT

Because of the allied air bombardments a lot of information has been lost forever. As a consequence the reconstruction of the early Zuse computers Z1 and Z3 has some flaws and shows even some contradictions. So the word structure I describe here is the reconstruction which I assume as the most probable. I will continue to look for the really right information.

END OF ACKNOWLEDGEMENT

In the Z1 and Z3 a RAM-word contains one bit for the sign of the coefficient, seven bits for the exponent and 14 bits for the coefficient. In the processor's main register R1 the coefficient is two bits longer. The other registers also have a longer exponent. The RAM-words in the Z4, Z5 and Z11 have the same exponent, but a longer coefficient.

The coefficient is structured in the same way as in the IEEE-754 definition for binary numbers. The hidden bit is its integer part and the visible bits form the fractional part. Thus its value ranges from 1.0 until 2.0. Together with its sign it forms a sign+magnitude notation.

The exponent is different. Here the available information shows contradictions. The exponent is stored either in two-complement notation or in sign+magnitude, although not in excess-bias. For me the sign+magnitude notation seems to be the most likely.

When the sign+magnitude notation holds the exponent in the RAM-words and in the main register R1 goes from -63 upto +63 and has two zeroes. The positive maximum +63 represents the special number Infinity, irrespective the value of the coefficient.

The positive zero is the ordinary zero exponent. Then the value of the whole number ranges from 1.0 until 2.0. The negative zero is interpreted as -64 and sets the whole numeric value to 0.0, irrespective the value of the coefficient. The latter implies that the unnormalized values are not used. Consequently around the 0.0 the series of numeric values shows a gap similar to that the DEC PDP-11 and VAX have.

The special value Undefined can result from an arithmetic operation, but it is not written in the resulting number. It is noted only in a kind of 'processor status register'. This register is displayed on the user's console, e.g. by lamps.

Thus altogether the Zuse definition for floating-point numbers results in:

- The coefficient is written in hidden-bit notation and has a value range from 1.0 until 2.0.

- The exponent is given in sign+magnitude notation. The negative zero gets a special meaning.

- When the exponent has this bit pattern 10000..., then the value of the whole number is 0.0, irrespective the value of the coefficient.

- Infinity is the only special value in a number. It occupies the bit pattern for the maximum exponent 01111..., irrespective the value of the coefficient.

- The special value Undefined (or: NaN) is reported in the processor status register only.

- In the Z1 and the Z3 the minimim non-zero value of the whole number is 2^-63 = 1.09E-19, and its maximum value approximates 2*2^62 = 0.92E+19.

In several machines Konrad Zuse made in post-war Germany he applied the same definition for the numbers and even the same size of 7 bits for the exponent. So the minimum and maximum value stayed unchanged. He increased the accuracy only. For example (with the length of the RAM-word, the exponent and visible part of the coefficient in bits):

machine ----- # b i t s ----- guaranteed remarks: wordsize expon vis.coeff accuracy Z1,Z3(R1) 24 7 16 4.8 in register R1 Z1,Z3 22 7 14 4.2 Z4 32 7 24 7.2 Z5 35 7 27 8.1 Z11 38 7 30 9.0 insecure figures minimum numerical non-zero value = 1.085E-19 maximum numerical value = 0.922E+19

The numerical data about the word structure in the Z1 and Z3, the extreme values and the special values are listed also in the document in this internet site that describes extensively the hidden-bit notations in the computers of many brands. There also examples are given of some values and their bit patterns. The concept of the guaranteed accuracy is described in another document in the internet site.

Of course the instruction set of the Z1 and Z3 is very simple. It contains only eight or nine 8-bits opcodes. Nevertheless its basic principle is very modern. The opcodes and their mnemonics are:

CLASS DESCRIPTION MNEMONIC OPCODE arithmetic multiply LM 01 001 000 divide LI 01 010 000 square root (Z3 only) LW 01 011 000 add LS-1 01 100 000 subtract LS-2 01 101 000 in-/output read keyboard LU 01 110 000 display result LD 01 111 000 memory store into RAM PS-z 10 zzz zzz read from RAM PR-z 11 zzz zzz Legenda: zzzzzz is the adress of the selected memory word

Most instructions are centered around register R1. Some of them use register R2 for output or as the second input. The meaning of each one and its number of clock cycles is:

DESCRIPTION MEANING #CYCLES depending on multiply R1 x R2 => R1 16 divide R1 / R2 => R1 18 square root sqrt(R1) => R1 20 add R1 + R2 => R1 3 subtract R1 - R2 => R1 4 or 5 result read keyboard keyboard => R1 9 to 41 exponent display result display <= R1; clear R1 9 to 41 exponent store into RAM zzzzzz <= R1; clear R1 0 or 1 piping(?) read from RAM zzzzzz => R1 or R2 1

Clearing the register R1 implies filling it with the zero value. When R1 is clear then the read-from-RAM instruction fills R1 and does not affect R2, otherwise it fills R2 and does not affect R1.

Like a modern PC the machine has a keyboard and a screen. The keyboard contains the keys for entering the numeric values (one at a time) and for controlling the operation. The screen consists of lamps for displyaing the numeric values (one at a time) and for showing a kind of 'processor status register'. This register enables the user to detect whether an exception has occurred during a calculation.

Although the computer stores and processes the numerical data in binary mode only, it accepts and displays them in decimal mode only. Both the keyboard and the display communicate via one number in floating-point mode. The coefficient is a signed integer of four or five digits and the exponent is a signed integer of one digit. Thus the range of values this I/O system can handle is smaller than the range of values the computer can handle in its binary intestines. Of course Zuse's post-war computers had a more versatile I/O.

The machine has a built-in hardware device that controls the conversion between the binary and decimal representation. That device uses the same arithmetic processor.as the ordinary calculations do. So it blurs the contents of the CPU-registers.

Actually the keyboard contains the keys for the decimal digits of the coefficient, those for the digit of the exponent, some keys for general contol, a key for each of the eight(Z1) or nine (Z3) instructions, and six binary keys for the memory address. As the decimal period is not needed it is absent.

The computer can be used as a simple hand-held calculator. In this mode besides entering the numeric values the user must enter the instructions and the addresses by pressing their keys. He has to enter the numbers and operators in the reverse Polish notation.

The computer has a paper-tape punch facility. When in the hand-held mode every entered operation and address can be copied onto a paper tape immediately. The user commands the puncher by pressing one of the general-operation keys. By this way he makes a program for an automatic calculation sequence.

Later on the user can insert the paper-tape into the tape reader and command the computer to read this tape and execute its program automatically. Then he only needs to enter new numeric values and to accept the displayed values. The two I/O instructions LU and LD halt the machine so that he has enough time to enter a number or write the result down onto paper. He 'un-halts' the machine by pressing a kind of OK-key.

Thus by setting some general-control switches the computer can be used either fully interactively or in a kind of batch mode. In contrast with the modern computers it uses the tape and the RAMemory in a very distinct way. Numeric data can be stored in the memory only, whilst the instructions and memory addresses can be stored on tape only.

- Wikipedia about Konrad Zuse (in German)
- Horst Zuse about his father and the machines (in German)
- Horst Zuse: "The life and work of Konrad Zuse"
- Konrad Zuse computers
- Konrad Zuse's internet archive (in German)
- Zuse's Z3 square root algorithm
- Raul Rojas: "Konrad Zuse's legacy: the architecture of the Z1 and Z3",

IEEE annals of the history of computing, 1997