The IBM 701
By the end of the 1940s, there were a growing number of operational computers in the world. The vast majority of these were built to be largely compatible with the specifications that came out of the IAS summer school. Although most of these machines were built independently (ILLIAC and ORDVAC were the exception, built as identical twins by the University of Illinos), many were built to be compatible with the others, so that software developed, for example, at Aberdeen Proving Grounds, could be used at Los Alamos or Princeton or Illinois.
IBM, a company with roots in the 19th century, followed these developments very closely. IBM was big enough in 1950 to be under investigation by the Justice Department for violations of antitrust law, and their primary product was equipment for handling what can properly be considered the "big data" of the era.
IBM had a near monopoly, on what was called "unit record" data processing machinery dating back to before 1920. The company grew from the invention of the punched card in the 19th century, and by 1950, their product line included card punches, card sorters, tabulating machines, and more.
The standard punched card (post 1928) held 80 columns of data, where each column of the card could hold one digit, upper-case letter or punctuation mark. Typically, each card was used to represent a database record, with each field of the database record associated with one group of columns on the card.
If a deck of punched cards represented a database, the card sorter was the primary tool for manipulating that data base. Each pass of the cards through the sorter would split the deck into 12 different stacks depending on how one column of the card was punched. An experienced card-sorter operator could put the deck into numerical order by successively sorting it on each column of a numerical field of the cards, and by making two passes per column, the deck could be put into alphabetical order on a field. With just a bit more work, sorting could be used to do searching, locating the record (or records) that met some criterion.
Tabulating machines came in two basic forms, tabulating printers and tabulating punches. In either case, the machine contained at least one register that could be set up to sum any selected field of the deck of cards read by the machine. More complex tabulating machines could perform multiple sums in one pass and could be arranged to recognize key patterns in the data, for example, clearing a register of some condition was met. In a printing tabulator, data from each card along with the contents of the registers was printed as each card was processed, while in a punching tabulator, the output was punched onto the cards. By 1950, IBM had some tabulating machines that could multiply as well as add.
Tabulating machines were programmable, using what was called a patch panel. Patch panels were square panels with large numbers of sockets for wires. One set of sockets represented the columns of the card being read, one set represented the positions in the register to which data should be added, and one set represented the data to be output. Wires were plugged into the patch panel to describe the computational job.
It has been suggested that World War II could not have been fought if IBM tabulating machines had not been available to all of the major combatants. Financing, logistics and personell management for armies of the size involved in that war would have been impossible without significant data processing capacity. Similarly, the large corporations of that era, Ford, Krupp, Mitsubishi, would have been unmanagable without this technology.
It is natural that IBM took an interest in the early development of computers, and the IBM 701 was their initial exploration of the commercial potential of electronic computers.
One challenge posed by the reading we have for the IBM 701 is that it is the complete manual for the computer. That means that it includes practical details that were omitted in the academic papers we have read describing earlier machines, and it also means that it is written to be read by non-academic users -- the clerks hired by the end users to program their machines. The job title programmer had yet to be invented, and it is clear, from oral histories we have of the era, that the people we now call programmers were seen as filling an essentially clerical role.
In reading ths manual, note the introductory material that is intended to teach the programmers about computing. What does this introductory material assume about the background of the programmers? (For many of them this text would be their only training in programming; there were no textbooks about the subject yet.)
Notice the long discussion of input-output instructions. Reading these in detail is pointless, but it is worth noting how difficult input-output on this machine was. Data on punched cards consists, for example, of up to 80 characters per card, where there are 12 punch positions per column. Numbers are encoded as one punch per column, letters are encoded as 2 punches per column, and (eventually) some punctuation marks would be encoded by 3 punches. What provisions are made to support this in the card reader and card punch interfaces?
Why did IBM change the word size from the word size recommended by Von Neumann and used in most of the computers designed in the 1940s?
How much RAM did the 701 support (minimum and maximum), and what auxiliary storage media did it support?
If you wanted to write a subroutine, how would you call it? How would you pass parameters? How would the subroutine return?