IBM 1401

IBM 1401 video series playlist:

See my videos featuring the IBM 1401 at the Computer History Museum in Mountain View, California, USA


The IBM 1401, introduced in 1959 (see this period marketing video here), was the first truly widespread computer mainframe, with an estimated half of the world computers being IBM 1401 by the mid 1960's. A relatively small and affordable computer by IBM mainframe standards of the time, it is enormous and was very expensive by today's standards. It democratized the use of computers, which were previously only available to the largest companies, to mid-size businesses. Although the CPU was small and comparatively tame, and memory topped out at 16kw, its peripherals were top notch, some much better than that of the bigger scientific mainframes. The IBM 1403 printer, at 600 line/minute printer is still impressive today, and so is the IBM 1402 800 cards/minute punched card reader. Its ability to drive up to 7 of the magnificent IBM 729 7-track magnetic tapes sealed its market appeal for businesses with large databases, which were finally able to abandon their piles of punched cards.

Guy Fedorkow has written a most excellent introduction article for the museum.

Robert Garner has written a historical paper for the IEEE journal: "The legendary IBM 1401 data processing system"

If you want to know how it works inside, IBM 1401, A Modern Theory of Operation by Guy Fedorkow is a superb reference

Ed Thelen sprawling site will give you more info than you ever wished.

Compile and run IBM 1401 programs on our free emulator!

Now everyone can run his own IBM 1401 and write programs for it (using the Autocoder compiler) thanks to the ROPE emulator. It works on Windows, Mac and Linux. There is a giant quirk that the File->Open... menu does not work, but instead if you click on the Open... button on the editor window it will work. Don't ask...

(The source code for the ROPE project is here: https://github.com/lucaseverini/ROPE)

A library of example programs that you can run with it can be found here

To best learn how to program the very unusual IBM 1401, Ken Shirriff suggests the following:

A more exhaustive reference is available at:


The IBM 1401 compiles and runs FORTRAN II

The remarkable 63-pass/8k-memory compiler source listing and the article describing it is here:

http://ibm-1401.info/1401-FORTRAN-Illustrated.html

Files of the FORTRAN II compiler tape and FORTRAN source code:

(Not uploaded yet)


The IBM 1401 runs Edith

The source code of Edith can be found here:

IDE, Autocoder Compiler and IBM 1401 emulator to compile and run the project on a PC, Mac or Linux computer:

I haven't archived the "Sophie" deck yet.

IBM 1401 tribute to Apollo XI

The project consists of a simple program that reads two pages worth of text from punched cards and prints them on the printer. Several wrinkles are added to this:

1- The printer line is 132 character wide but the punch cards are only 80 character wide. So each original ASCII art lines are broken into two consecutive cards, one with the first 80 characters and one with the last 52 characters.

2- To facilitate printing a lot of copies without having to re-read the deck of cards each time, all the data cards are first read into core memory and printed once. The program then halts. Any further press on the START button will start another print, this time reading the data directly from core memory. This limits the printout to only two pages with our (maxed out) 16 kW core memory system!

3- A card containing -EOF- will cause the printer to jump to the next page before continuing printing the content of the next cards

4- A card containing -END- will cause the program to stop reading any further cards and start printing the content it loaded in memory.

Source code:

Object deck:

ASCII art

ASCII data input cards decks:

Executable tape to punch the deck:

(note that this file uses Pierce A encoding to conform with our tape emulator convention)

IDE, Autocoder Compiler and IBM 1401 emulator to compile and run the project on a PC, Mac or Linux computer: