Olivetti P101 delay line project

For a long time I have a delay line of the Olivetti P101 programmable calculator. Now I come at an age were I find I have to choose between giving it away or doing something with it*. The latter seems better (for now), so I finally started reverse engineering the board, with the purpose of interfacing it with some modern hardware, like an Arduino, to see it working and maybe demonstrate its operation.

So far I made photo’s (see: https://electrickery.nl/comp/divcomp/p101DelayLine/) and and very first attempt of a schema (more on this later, hopefully). At least I know all of the board is an amplifier transforming the output of the delay line to the logic levels used in the P101.

The logic power level is likely 10V, the logic levels are somewhere between 0 and 10V (this is way before TTL).

Greetings,

Fred Jan

*) Unless someone is in dire need of a delay line for an otherwise complete and operational P101.

4 Likes

Am I correct in saying that you have the nickel wire in the background there? So you have the complete memory system, wire and electronics? The electronics looks pretty simple, as I understand it the bits are sent as torsion on the wire by an elecromagnet and are recovered at the other end by a similar coil and magnet arrangement. Do you have the transducers on the wire as well?
What I’m not sure is how the data is encoded on the wire. Is it clocked at all or just data pulses, detected by pure timing? Is there a ‘start’ signal, etc. I think the data must circulate and be regenerated after it is read, with new data inserted during the regeneration. An Arduino or Pico (probably a better bet, as the PIO might be able to help) should be able to be interfaced and used to exercise the memory. an interesting project indeed. I got as far as buying some nickel wire to make one of these, but, as always, had not time to do it.

Hi Amenjet,

Yes, I have the complete delay line package (updated the page with an overview image). Delay lines indeed operate by torsion pulses, but I do not yet know how it is applied. Magnets seem like a reasonable guess.
There is now also an image of the traces drawn on the on the component side, to make drawing the schematic easier.
What I already know, is that the board has only the amplifier at the receiving end of the delay line, not the amplifier or pulse-encoding logic to drive it.

1 Like

Interesting. The schematic will give you a base to work with.
I’ve seen mention of strips of nickel that rotate the wire when a magnetic field is applied, and also I think I’ve seen a magnetic field applied directly to the wire. The strips give a torsion pulse, the direct approach is compression I think. I can’t quite tell what is going on in the 101 from your photos though.

With the latest update I combined the traces with the component annotations and that makes it very easy to draw a schematic.

The schematic is still a bit disorganized, but there is a proper signal flow visible
The torsion mechanism is very likely as far as I can see. Will try to make macro images tomorrow.

2 Likes

There are good references in the wikipedia page for the 101 - of course, an individual investigation is a good adventure anyway.

There’s a video here for anyone who’d like a closer look:

The hack42 site has some technical info in Italian. Automatic translation of part of it:

The information is contained in the sequence of twists inflicted on the wire by the writing circuit in the delay line (LDR). When the bit is set to 1 (ON), the writing waveform switches halfway through the bit period.

The medium is therefore accessed strictly sequential, with a latency proportional to the length of the steel wire. The degree of parallelism is 1 bit.

Given a write frequency of 1 MBit/Sec, a total capacity of 1920 Bit and a gap to incorporate tolerances in the electro-mechanical system, we have a recycle time or latency of 2.1 mSec.

The delay line with a plate with the readout amplification circuit, for protection is boxed in a sheet metal structure.

A metal frame provides the framework for side-by-side mounting of the LDR and a half-plate to be inserted into the 9th position of the drawer unit.

The circuit is divided into three functional blocks: the amplifier of the signal generated by the electromagnetic transducer, a squaring device and a pulse generator with a duration of 0.5 μSec.

LDR Description by Alessandro Graciotti

Amplifier block diagram Delay line.

The input signal is amplification by a two-stage NPN-PNP differential amplifier (T6–T9) followed by a single-ended NPN output circuit (T1). The transducer is connected to the non-inverting input of the amplifier; the output signal is fed back to the inverting input, entirely for the DC component, attenuated approximately 400 times for the AC component. The calculated open-loop gain of the amplifier is approximately 500; due to the feedback effect, the effective AC gain is therefore approximately 220 (confirmed by measurements).

The feedback filter return (C4 and C5) is connected to the transducer return at a constant voltage of approximately +9V obtained with the zener Z2 (1N756) in series with a diode. This way, any noise present on the power supply will not be amplified as it is presented in common mode on the two inputs. The quiescent output voltage stabilizes, due to the total DC feedback, at the same level as the input.

The amplified signal drives a classic Schmitt trigger (T4 T5) whose threshold is set at approximately 7V, i.e., two volts below the amplifier’s quiescent output voltage; the hysteresis is approximately 1V. The transducer voltage required to excite the Schmitt trigger is therefore approximately -8mV. The output of the squarer is a positive signal of approximately 5V, the duration of which depends on the shape of the input signal.

The square signal drives a 500nS monostable oscillator consisting of T2 and T3. The output of the univibrator is approximately 12V without a load.

That’s interesting. Much more detailed. What I can’t see at the moment is where new data is injected into the delay line. The circuity seems to read and regenerate the data, I can’t see a data in or out connection to the circuitry.

I found a site which uses the P101 as a teaching example, with several videos of general interest, but not specifically about the delay line.

That’s unfortunate.

There are a few more P101 pages on the hack42 wiki but not specific to the delay line. There are also some images which for some reason are not rendered in the wiki pages (possibly one must be logged in)

image 9
image 11
image 18
image 19
image 20
image 21
image 22
image 28

Thanks for all the extra information. The delay line in the XJet video looks very like mine, but the board is different. Mine has four transistors, all NPN, XJet’s has six.
The LDR description has way more functionality (differential amplifier, feedback filter, schmitt-trigger) than can be done with four transistors, so this is probably on the external boards.

Meanwhile, I measured the coils, 16 ohm at the sending side and 36 ohm at the receiving side. Both are intact, that is a good sign.
I also applied some voltage at the amplifier board, and at 12V it draws 6 mA. The Zener diode is stabilizing around 8.8V. Nothing is heating up, checked with a dinky thermal camera. How could it with 12V/6mA?
The real operating voltage might be 15 or 20V. Somewhere I read the P101 used +20V and -10V, but I forgot the reference.

I’ll contact hack42.nl to ask if their P101 is operational.

There are some higher resolution images at the site than this sample.

1 Like

The hack42 site is a good find, it has very technical information.
It looks like the nickel strip drivers are in place at send and receive end, so maybe replacing all of the circuitry is the way to go? You can set up bit streams and send them around the loop and then inject data using an Arduino/Pico if you use the processor to inject and regenerate the bit stream. The existing hardware can be used as a model for the drive and sense circuitry. I think driving the coil shouldn’t be too difficult, maybe even at 5V, a higher voltage isn’t too tricky with a higher drive voltage. The receive end is a bit trickier, as I’m not sure how the signal from the coil will look for a torsion pulse on the wire. Once you have a driver then you can scope the coil and see what that looks like. I think a pulse capture circuit is probably needed, a PIO culd be set up to do that fairly easily, I think. The drive and sense circuitry could be quite simple, with a drive transistor and an op-amp amplifier on the receive end.

Can you see any internal detail of the drive and sense coils? looking at the magnetostrictive characteristics of nickel (or othe magnetostrictive materials), the length change is zero at zero applied field and then increases with increasing magnetic field. It isn’t reversed for a reverse field, it’s dependent on the absolute value of the field. So, I can’t really see how the diagrams of delay line memory are correct in having the drive and sense coils wrapped round both nickel strips, but with opposing polarity, as even though the field is reversed, the length contraction (in the Ni case) is not, so no rotation results.
Can you see if the coil is wrapped round both or one strip?

The sense coil is the same, and I can see how that works now. The M (or flux density) of the material for a given H (electric field) changes when a change of the material size occurs. So, if the sense coil is energised with a current, the magentic field changes when a torsion pulse arrives, which manifests as a change in flux density and hence inductance. So it can be detected by a second coil, maybe. I’m not sure you can detect the pulse without an electric field.
I’d also expect the coil to be only on one strip for the argument above.
Perhaps the Ni strip is welded to one side of the wire, then rotated or flipped for the opposite strip and that causes the crystal structure to be flipped and maybe that results in a differential output? I’m not sure about that.

Hey

if your in need of some expert, Torkild one member at Datamuseum.dk in denmark has with success restored one of these: Olivetti Programma 101 - DDHFwiki

regards
jan

1 Like

Welcome @Jan_Pedersen and many thanks for the link - such a lot of interesting material there and further links. Thanks also for the contact name!

From someone at Hack42 I got a pointer to information stating 20V is the voltage for logic circuits (also see @eds link above). Testing that, the amplifier draws 19mA and the Zener diode is confirmed to be 9.1V.

The next is inserting pulses in the sender and look to see what comes out the receiver and amplifier.

The amplifier uses the 36 ohm receiving coil as part of the emitter current drain is some current there is present.

The sender and receiver blocks are very small, made of old plastic and the strips through them are quite tightly mounted at both sides. I do not see a way to see what is inside without breaking things. For now I prefer to get it working. And maybe later recreate something with nickel strips to see what it does when magnetic/electric fields are applied.

@Jan_Pedersen: good to hear there are still P101 machines operational.