Horst Zuse (Konrad Zuse's son, a computer science professor by trade) has a Homepage where he supplies (and, partially, sells) various pieces of information, booklets and CDs and DVDs about his father's work.
The Z4 had two floating point registers R1 and R2, that were used for calculations. Monadic operations operated on R1 only, Dyadic operations on R1 and R2. Results always went to R1, R2 was deleted.
The "Instruction set" of the Z4 was as follows:
- Ablesebefehl A n (e.g. A 17) - reads memory cell 17 into R1 or R2 (R2 if R1 is in use)
- Speicherbefehl S n (e.g. S 18) - Stores R1 to memory cell 18
- Dyadic operations: + - x / MAJ (Maximum) Min.
- Monadic operations: x^2 SQR(x) 1/x IxI sgn(x) x*½ x*2 x*(-1) x*10 x*3 x*1/3 x*1/5 x*1/7 x*pi x*1/pi.
- Comparison operation with zero, positive, infinite(i.e. NaN) test the number in R1 and return +1 if the condition matches, -1 if not. Note there is apparently no comparison against arbitrary constants beyond these
- The conditional jump (SPR) was a later addition and included on specific request of the Zürich University (ETH), the first commercial customer. It allows to jump forward over code sequences when R1 is +1, the jump will not be executed when R1 is -1. Instructions up to the instruction ST will be skipped if the jump is taken. SPR was normally combined with the comparisons above
- UP (Change punch reader, Unterplan) is something that might look like an I/O operation, but actually is much more. The next instructions after UP are read from the secondary punch tape reader, until a FIN instruction is encountered there (which switches back to the primary reader). As the Z4 didn't have loop or backwards jump instructions, this could be used to program subroutines on the secondary reader, or even loops by glueing the secondary punch tape into a (physical) loop and run it around.
- Output instructions (D, L) transfer register contents into human-readable form and emit them to the "display" (a set of lamps), secondary punch tape (external storage), or typewriter
The Z4 handled, like the Z3, floating point exceptions in a pretty "modern" way. Numbers that exceed the supported FP range (1E-20 - 1E20) are stored as overflow ("sehr groß") or underflow ("unbestimmt"). Once a number is stored as that, any follow-up calculation with that number is secured to never reach a valid value again (just like +NaN and -NaN in modern FPUs do).
- The ETH Zürich, the first commercial customer, rented off the machine
to third parties at 1 Swiss Rappen/instruction.
- During its whole lifetime at ETH Zürich, the Z4 executed about 100k operations.
- If you want to visit the machine, it's still there in the "Deutsches Museum
- Operating frequency in today's measures was about 40Hz
- The machine operated on 32-bit words and registers