From what I understand of ENIAC, it had a very large number of manually-operated rotary switches which behaved as ROM. While programming ENIAC in the early days required a plugboard, the machine was eventually enhanced to allow it to be programmed entirely via the switches. The speed at which the machine could change programs, however, was limited by the need to have operators manually set all the switches.

Given that electronic information storage was bulky, hot, and power-hungry compared with mechanical switches, it would seem like it should have been possible to construct mechanically-set electronically-read storage elements which could be read electronically just as fast as the manually-operated switches, but whose state could be set via automated electromechanical means. Did any machines ever actually do such a thing, or did magnetic core memory become available soon enough to make such an evolutionary step unnecessary?

  • 1
    Makes me think of telephone exchanges - and I'm not sure if I imagine seeing ex-exchange switches build into diy computers or not... Commented Oct 28, 2016 at 20:03
  • @SeanHoulihane: I have seen an adding device built from phone dials and decimal steppers, but there was nothing electronically-addressable about it. My main thought was that loading a program into ENIAC using manual rotary switches would have been rather slow, and that being able to load a program from a stack of punched cards would have reduced the amount of down-time while the machine was being programmed.
    – supercat
    Commented Oct 28, 2016 at 21:35
  • 1
    You mean, like punched cards? Or punched stripes? Those were common from the very beginning.
    – Janka
    Commented Oct 30, 2016 at 17:02
  • @Janka: Punched cards and paper tape (is that what you meant by punched stripes?) are not electronically read-addressable.
    – supercat
    Commented Oct 30, 2016 at 19:43
  • Each row, they are. And row-by-row, they are automatically-operated mechanical storage. Sorry, why have you sorted out them?
    – Janka
    Commented Oct 30, 2016 at 20:02

5 Answers 5


Removable plugboards were a common form of read-only memory which I think fits the criteria. ENIAC plugboards were not removable, but later computers used low cost removable ones. They were adapted from the plugboards used for unit record equipment, which were simple frameworks for holding programming wires. An installation would have many of them "offline", each holding a program or part of a program. For a particular program run, the appropriate board(s) would be slipped into the machine and clamped against an array of contacts of the machine.

  • Removable plugboards are of interest, since they would greatly reduce the time to change programs, but I'd still be even more interested if anyone had used something like telephone steppers which--unlike plugboards--can be set automatically and take only microseconds to read (if that), even though they would take hundreds of milliseconds to write.
    – supercat
    Commented Nov 14, 2016 at 22:31
  • 1
    Well, if you want electrically settable storage, early main memory devices are like that, such as Williams tube, delay line, and magnetic drum.
    – mgkrebbs
    Commented Nov 14, 2016 at 23:01
  • My question was inspired by the discovery that the ENIAC, in its later years, fetched programs from ROM which consisted of manually-operated switches. Many forms of automatically-writable storage were either much bulkier (e.g. vacuum-tube RAM) or were incapable of handling random reads as quickly as the manually-operated-switch ROM, but telephone steppers could have been read electrically in just the same way as the manually operated switches, despite being much smaller than vacuum-tube RAM.
    – supercat
    Commented Nov 14, 2016 at 23:17

There are a number of possibilities, though most of them involve stretching the definition of "computer" somewhat:

  • The Zuse Z1, Z2, and Z4 computers used slotted metal strips as memory. Of these, only the Z4 was Turing-complete.
  • The Harvard Mark I and Mark II, the Zuse Z3, and BARK all used relays for storage, but only the Z3 was Turing-complete.

All of these used read-only paper tape for storing their programs. I've been unable to find examples of stored-program computers using mechanical means to store their programs, but if you stretch the definition of "mechanical" somewhat, delay-line memory stored data as mechanical pulses in a medium, typically mercury, and was used in a number of stored-program computers.

  • And some kinds of delay line used metal springs that let the information travel around them to be picked up some milliseconds later. youtube.com/watch?v=N9cUbYII5RY Commented Nov 13, 2016 at 13:03
  • Delay-line devices seem interesting, and from what I understand they continued to be used for quite awhile in things like adding machines. They are certainly mechanical, but I don't think they qualify as read-addressable in the fashion I intended, since they are limited to sequential access.
    – supercat
    Commented Nov 14, 2016 at 22:02
  • The Z4 is a relay based computer. It doesn't use the same mechanical construction as its predecessors as far as I'm concerned.
    – fuz
    Commented May 4, 2020 at 12:20
  • @fuz, according to Wikipedia, the Z4 used the same mechanical memory system as the Z1 and Z2, with relays handling the processing.
    – Mark
    Commented May 4, 2020 at 21:07
  • @Mark Interesting. Let me ask Horst Zuse if that information is accurate. It's certainly not what I remember.
    – fuz
    Commented May 4, 2020 at 22:10

I think core memory is what you are looking for. You may not think of it as a mechanical solution however it was. Core memory is electrically set and read, the read is destructive so part of the read initiated an automatic write if the bit was a 1.

Core retains its state after power loss through the mechanical position of the magnetic toroids. If at power up you didn't initialize the memory bank then the memory would still contain the last running state. If an application could run completely within core space, then after power restoration the application would continue operating, provided boot strapping of the system without initializing that portion of ram was possible.

I have seen demonstrations of this phenomenon on PDP-8 systems where people built a best of everything system with large amounts of core memory, ran an application that displayed output on a screen and then removed power. If one particular switch on the primary chassis was not toggled, upon application of power the program would continue operation.

During the time of the power loss it is possible for to change the position of some of the bits with mechanical means so it wasn't completely fool proof. They could conceivably be set by hand when not powered, but you would have to paint the rings to tell the bit states apart.

  • 3
    Core memory is not mechanical on a macro scale; it involves moving nuclei around molecules, rather than moving electrons around a relatively fixed pattern of nuclei, but I was more interested in forms of storage between the time of the vacuum tube RAM and the invention of the magnetic core. Incidentally, I'm also curious about what if anything has been done with neon storage (exploiting the fact that an arc can be held with a lower voltage than would be required to start it).
    – supercat
    Commented Nov 13, 2016 at 7:57

This is an edited and expanded copy of an answer I posted elsewhere; it was pointed out to me that it would be useful information here.

EDSAC (operational in 1949) had read-only memory to hold its Initial Orders. The Initial Orders were wired on to uniselectors, otherwise known as stepping switches. The EDSAC had hardware facilities to load the Initial Orders from the uniselector bank into mercury delay-line memory, and that programme in turn allowed the easy (!) loading of other programmes from paper tape.

There's a picture of the uniselectors here, though I think this is from a modern reconstruction of EDSAC at TNMoC in Bletchley Park.

The uniselectors would have been of the kind used in telephone exchange at the time.

I don't recall how the programme was represented on the switches. At some point I had found a paper online describe it to the point at which I could more-or-less understand it :-) but I've lost the link.

Footnote: 'programme' is standard English, and at the time was the spelling used for both the verb and the noun in relation to computer instructions. By the time I wrote programs, 'program' was the computer-related spelling, and 'programme' was what you watched on television

This YouTube programme shows a little about programming EDSAC; the uniselector bank is shown around the 3 minute mark.

  • Thanks for the link. Looking at the video, it turns out that's a bit different from what I'd had in mind, since I'd been thinking of having one uniselector per stored digit, all hooked up to a multiplexer so their contents could be read out at program-execution speed, along with a few uniselectors that would which row of uniselectors would be operated by a pulsing unit. If one had 150 uniselectors, one could use a paper tape reader with sixteen columns, one of which would advance row-select and the others of which would advance one of the uniselectors on the selected row.
    – supercat
    Commented Feb 20, 2021 at 21:07
  • @supercat - ha, I just got to wondering the same thing, and posted a question.
    – dave
    Commented Feb 20, 2021 at 21:10
  • If the uniselectors each have ten positions, one could easily load the state of all of the uniselectors using a tape that was 100 rows long. If there were 10 rows/columns per inch, setting all 150 uniselectors would require a 10"x2" tape (for that size, even a card wrapped around a drum would work) and probably only require about 10 seconds. Much faster than having to reconfigure a machine by hand.
    – supercat
    Commented Feb 20, 2021 at 21:12
  • @supercat - I don't follow you. For EDSAC, I believe the uniselector content was programmed with a soldering iron.
    – dave
    Commented Feb 20, 2021 at 21:33
  • Indeed, but what I'd had in mind would have been uniselectors programmed electromechanically from punched tape, cards, or other such media.
    – supercat
    Commented Feb 21, 2021 at 3:04

The Zeus Z1, Zeus Z2, and Zeus Z4 used "mechanical slotted metal strip memory". These were not stored program computers where the program is executed entirely out of main memory; rather, then program was read from a punched tape reader (Z1 and Z4) or punched card reader (Z2). The memory was used primarily for data, but it was randomly addressed.

The first clue that Z1 memory was randomly addressed is seen in this block diagram from The Z1: Architecture and Algorithms of Konrad Zuse’s First Computer, p. 4:

enter image description here

This illustration from p. 11 shows the working of a memory bit:

enter image description here

Figure 9: One mechanical bit in the memory. The pin can be stored in the zero or one position. Its position can be read.

Diagram 9(a) shows two stored bits. In step 9(b), a control plate moves the pins up. In step 9(c) the horizontal actuated plate is pusehd (lower bit) or not (upper bit) by the stored bit and the clocked plate. In step 9(d) the bits are moved back to their original position, where the vertical control plate can bring them to position 9(a). Reading a bit from this type of memory was a destructive process. After reading a bit, the contents of the bit cell had to be restored by the movement back shown in 9(d).

The Z1 and the Z2 had the same instruction set, and that instruction set could randomly address the memory. From https://history-computer.com/konrad-zuse/

The instruction set of the Z2 consisted of the same eight instructions of Z1.

and two of the instructions that randomly addressed memory:

  1. Two instructions for reading/writing from/to memory:

•Pr z—read the contents of the memory cell into Registers R1 or R2

•Ps z—write the contents of Register R1 to the memory cell

The memory of the Z3 was randomly addressed, as seen in the instruction set documented in this RC answer:

  • Ablesebefehl, A n (e.g. A 17) - reads a memory cell into R1...
  • Speicherbefehl, S n (e.g. S 18) - stores R1 in to a memory cell.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .