
Examining the core memory module inside a vintage IBM 1401 mainframe - NelsonMinar
http://www.righto.com/2015/08/examining-core-memory-module-inside.html
======
joezydeco
The IBM 1401 was pretty exotic for it's time, but there was a more common
product using toroid memory even earlier than the 1401.

Seeburg's line of jukeboxes from 1955 onward used this mysterious system
called TORMAT, which essentially was a 160-bit toroid memory device (for a
jukebox that held 160 selections). Bits were flipped on as you paid for
choices and the loading arm seeked the next record by checking the bits in
memory. This also had the positive side-effect of people selecting the same
record not resulting in multiple plays, since you were flipping on a bit that
was already flipped.

[https://www.flippers.com/Seeburg-
tormat.html](https://www.flippers.com/Seeburg-tormat.html)

The TORMAT was used up until 1974, when it was replaced with silicon-based
memory.

------
chiph
The first system I worked on in the USAF had 512 bytes of core memory¹. But it
only used 320 of them, as the system was hard-coded to 80-columns (for both
punch-card and printer). Since it was fully duplex, it had 2 send and 2
receive buffers of 80 characters each. It would flip the role of the buffers
as they became full or empty.

I once had to replace the core memory array when one bit went bad. By pure bad
luck, it was in one of the first few columns where the end-of-message sequence
was expected, and the bad ferrite meant the system got hung up waiting for an
EOM that was never detected. Bad donut. No message. ;/

¹
[https://c1.staticflickr.com/1/40/109018526_8edb26b499_b.jpg](https://c1.staticflickr.com/1/40/109018526_8edb26b499_b.jpg)

------
timonoko
You could buy 16-word ROM, which copied bootstrap to core automagigally. But
we had no money for such luxuries, and we had to program it manually from
front panel switches almost everyday.

~~~
joelberman
IIRC you could push a button and it would automatically read a card into
locations 1 through 80 and start executing at location 1. First instruction
had to be a set word mark (, i thing) because instructions were variable
length and needed a word mark to denote the end. I also seem to remember that
4K meant 4,000 not 4096. Long time ago and we all danced a happy dance when
the 1401 came in to replace our 407 accounting machine with its plugboards.
Well not everyone. Some were afraid of the new machine and certain that the
time was still not right.

~~~
kens
Your description of the IBM 1401 startup sequence is absolutely right. I'll
fill in some details since it's a strange process. There's no operating system
at all: pressing the load button on the card reader causes one card to be read
into memory and the first instruction executed. The first few cards in a
program deck have special loader initialization code. As you say, the first
instruction is "write two word marks", making the next two instructions
executable. The next few instructions are more "write two word marks"
instructions, until there enough word marks in place to run a few other
instructions, which clear memory and load the next card.

The cards for the program to be executed have program code on the left half
and loader code on the right half. That is, each card has code to move its
program code into the right place in memory, add necessary word marks, and
then load the next card. This code is running from the reader buffer
(locations 1 through 80). The final card jumps to the location in memory to
start execution.

TL;DR: Since the IBM 1401 doesn't have an operating system, when loading a
program from cards, each card also contains the code to load itself into
memory.

And yes, 4K of memory is 4000 characters, not 4096, because it's a decimal
machine, not a binary machine.

~~~
tajen
What about timing? Did you have to hurry to input the second punchcard? Did
the cores lose their bits overnight?

Also, what kind of data can you process with 4K? They say "accounting
software" and "paysheets", was it actually quicker than writing paysheets
manually?

~~~
timonoko
These were just glorified card sorting machines. Data and code was on them
cards -- 4K was just temporary registers, which was plenty. And cores did not
lose their data too easily. Manual bootstrapping was needed mostly because of
programming errors or you used the expensive memory area for something else.

Cards were quite handy, because they were reusable. You could construct a
program just using old ones. In university I remember a special box for "100
CONTINUE"-cards.

------
Animats
IBM later developed looms capable of weaving core memory planes automatically,
and the price started to drop. Not every far. Around 1970, a megabyte of core
memory cost about a million dollars.

~~~
kens
If you're interested in the machines IBM used to weave cores, see:
[http://ibm-1401.info/IBMCoreArraysIEEEMagnetics1969.pdf](http://ibm-1401.info/IBMCoreArraysIEEEMagnetics1969.pdf)

One interesting thing they did was to thread extra cores onto each wire so
they could crush the bad cores and still have enough to continue. (They would
test after wiring one direction, before wiring the second direction.)

------
JoeAltmaier
I have one or two of those planes in a drawer somewhere. After all this time,
the ferrite cores are cracking and half-round bits litter the bottom of the
drawer.

~~~
DanBC
You can buy the ferrite beads. Re-looming such a thing would be "fun".

~~~
salgernon
Possibly more interesting would be to attempt to read the data still there -
it is non-volatile, after all.

~~~
JoeAltmaier
I'm guessing: 1's and 0's. Remember a plane was a bitslice through a word.

------
larrys
What I'd like to see is a "Show HN: I built a working core memory".

~~~
detaro
I've seen several DIY projects in the past that used core memory -> should be
google-able.

~~~
gattilorenz
a very recent one: [http://hackaday.com/2015/08/31/core-memory-for-the-hard-
core](http://hackaday.com/2015/08/31/core-memory-for-the-hard-core)

~~~
tajen
It seems to be all copper. How come one wire doesn't conduct to all other
wires?

~~~
TheLoneWolfling
It's magnet wire. It may appear to be all-copper, but it is in fact coated
with an insulator. (It's often called enameled wire, but it really generally
is a polymer coating)

------
DennisP
Neat...My dad was a customer engineer for IBM. He took me to work in the early
1970s, and one of the things he showed me was a memory cabinet that looked
just like that.

------
yoz
Since nobody's mentioned it yet: If you want a musical accompaniment to this
piece, try Jóhann Jóhannsson's amazing "IBM 1401: A User's Manual"
[http://ausersmanual.org/](http://ausersmanual.org/)

Listen to part 1 here:
[https://www.youtube.com/watch?v=tBw_wSoVQrY](https://www.youtube.com/watch?v=tBw_wSoVQrY)

------
cbd1984
The 1401 wasn't a mainframe. It was a smaller computer designed to replace
unit-record systems and was, in fact, sometimes used as a mainframe
peripheral.

The mainframe of the era was something in the 7000 or 700 series, I think.

~~~
kens
Linguistic arguments are somewhat pointless, but IBM disagrees with you:
[http://www-03.ibm.com/ibm/history/ibm100/us/en/icons/mainfra...](http://www-03.ibm.com/ibm/history/ibm100/us/en/icons/mainframe/)
The IEEE also disagrees:
[http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5406338](http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5406338)

