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!

Edit: Mike Albaugh has made a web page explaining how to run the stuff on SIMH here:

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:

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

In this video, we go through a complex process to recreate a new copy of the original IBM 1401 FORTRAN II compiler tape, and run it to successfully compile the two short program examples from the manual.

Original IBM 1401 FORTRAN II information

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

Here is the source code of the FORTRAN II compiler.

FORTRAN II source code.rtf

A dump of the original FORTRAN II compiler bootable object tape is here, as well as the listing for the two examples program we compiled, and a short explanation of the first parameter card format. With some massaging, you should be able to run all this in the SIMH simulation environment described above.

FORTRAN II v3m0 tape simh.dump

Example 1 Listing.txt

Example 2 Listing.txt

Parameter Card Format.txt

The format of the dump indicates where each record starts as a comment in the right margin. It also has an extra line of blanks and 1's under each data line. This follows the IBM 1401 dump convention where a 1 under a character indicates the character also has the all important Word Mark bit set.

Actual files used in our demonstration

For information, below are the files we actually used with the real machine and our tape emulator. You can't run them directly unless you have an IBM 1401 equipped with a tape emulator, but the information contained in them might be of use. The main difficulty was to work around the maximum record length limitation of our tape emulator, so the original tape was split into smaller 80 characters records in the file V3M0-SPLIT.tdat tape data file, and mounted in emulated tape unit #2 on our 1401. The tdat tape follows the convention of our tape emulator, which is basically one record per line. A ~ precedes each character that needs to be encoded with a word mark. A record that needs to be continued ends up with the & character. The tape MERGE.tobj, a bootable executable object tape, was mounted in emulated #1 on our 1401 and run. Running the merge program reconstructed the original FORTRAN II on a virgin real-world tape mounted in a real tape unit #3.



The bootable object tapes below will automatically punch a card deck of example 1 and example 2 when run:

Punch Example 1.tobj

Punch Example 2.tobj

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 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: