The ZEBRA (Zeer Eenvoudige Binaire Reken Automaat translated Very Simple Binary Automatic Calculator) was one of the first computers to be designed in the Netherlands, (the first one was the "ARRA") and one of the first Dutch computers to be commercially available. It was designed by Willem van der Poel of the Netherlands Post, Telegraph and Telephone, and first delivered in 1958. The production run consisted of fifty-five machines, manufactured and marketed by the British company Standard Telephones and Cables, Ltd.
The ZEBRA was a binary, two-address machine with a 33-bit word length. Storage was provided by a magnetic drum memory holding 8K words organised as 256 tracks of 32 instructions; accumulators were also implemented as recirculating drum tracks in a manner similar to that used in the Bendix G-15. Peripherals included paper tape reader and punch, and a teleprinter.
In 1967, six Zebra computers were in use in UK universities and technical colleges.[1]
Large parts of the code and operating systems for ZEBRA were written by deafblind mathematician Gerrit van der Mey.[2]
In contrast to most processors, the ZEBRA didn't have different types of instructions. Instead, the operation of an instruction was controlled by fifteen bits in the operation field. Also, it didn't have a program counter in the traditional sense.The ZEBRA instruction word is 33 bits, consisting of a 13-bit drum address, referencing one of the 256 tracks of 32 entries on the memory drum, a five-bit register (or I/O) address, and the 15-bit operation field.
Each bit of the operation field had a distinct meaning and could be used in nearly any combination, leading to many elegant tricks that today might be considered the domain of microprogramming. The operation bits determined things as the sign of the data to be used; if the accumulator was cleared (changing an addition into a load), if a rotation was to be applied, and so on. Also, there was an operation bits that determined if the next instruction would come from register or memory, or the sum of both.
Some bits made an instruction conditional on the accumulator state, as with the Zuse Z22 or Electrologica X1. Multiplication, division, square root, as well as all floating-point operations, were performed by subroutines, using the underlying serial computer ALU primitives add, subtract, shift right, shift left, and increment.
Thanks to a clever design, the multiplication routine needed only one instruction per bit, and the division routine two instructions per bit, so that multiplication and division were relatively fast, with a minimum of hardware.[3] [4] Programming aids included the Normal Code (assembler), trace utility, a floating-point interpretive system, the Simple Code, the Matrix Interpretive Scheme, and an Algol compiler.
Since a magnetic drum does not support random access, some time is lost waiting for an instruction or piece of data become available. In a poorly written program, the average wait time could be half the drum rotation time, but there were ways to reduce this. A notable feature of the ZEBRA was a meter that measured how much of the machine's time was spent in non-wait states; this was called the "efficiency meter." When running the floating-point interpretive system, the efficiency meter tended to show around 50%, but if prospective customers were visiting, a more efficient program could be loaded for demonstration purposes.