The Programma 101 Memory module

The memory of the Programma 101 is implemented as an acoustic delay line.


The container of the delay line memory, together with the memory control board

The principle behind it is incredibly simple. Imagine you are holding the end of a long rope. If you suddenly shake the rope, a wave will originate from your hand and you will see it voyaging towards the other end of the rope.

If the rope is long enough, you have the time to generate several waves and have them travelling together. You could, for example, use the waves to transmit a message with the Morse code. If now you imagine that the rope goes all the way round and comes back to you, you could for example "send" at one end of the rope a Morse message and receive it at the other end after a few seconds.

During these seconds, where is the message? The answer is simple: it's stored in the rope! To have it stored longer than the few seconds it takes to do the round-trip, it's just enough to stay at the end of the rope, listening to the arriving waves, and send them again from the other end of the rope. The message would be looping forever, or at least as long as there will be someone repeating the message at every turn, and perhaps amplifying it a little bit, to make up for the decay that it would otherwise have.

The Olivetti Programma 101, as other early computers, have an acoustic delay line memory that works on this principle. Of course, the details are different, we have a tightly coiled metal wire, and the oscillations are not sidewise, but are longitudinal pulses created by magnetic forces. At the other end of the wire is a piezo-electric sensor converting the pulses to electricity. The electrical pulses are amplified and then sent back at the beginning of the coil.

An important side-effect of this is that memory is only visible one bit at the time (i.e., the bit that is being amplified at the moment) and, even more important, to read a specific bit you have to wait for it to pass by.

The round-trip time of the P101 memory is 2.2 msec, and this means that to read a specific bit you have (on average) to wait 1.1 msec. The wire is enclosed in a sealed metal box, and a small control board is connected to the box by mean of 5 wires.

This page is part of the Programma 101 Web