The three computers here were selected more from personal experience than from their historical significance. Still, the RAMAC was revolutionary for its time and signaled among other things a transition from batch processing to real-time computing. The ALWAC III-E was a fairly typical example of vacuum tube computers although it was designed less for the commercial market and more for the scientific and engineering market. The IBM 7094 was in many ways the quentessential mainframe and the fastest computer of its time, although that time was brief and it was soon to be replaced by the IBM System/360.
Looking back, what seems genuinely remarkable is the rapid development of computer technology in just two decades—from electro-mechanical machines with their roots in punched card equipment, to much faster machines using vacuum tubes and employing more advanced storage techniques, to fully transitorized computers, and a few years later, the microprocessors that fueled the introduction of the personal computer and various mobile devices.
When I was a junior in high school, my father, always interested in automation and an ardent fan of IBM, took me and a schoolmate to see the RAMAC 350. I didn't realize at the time that I was looking at the world's first disk drive.
RAMAC 350 DISK STORAGEWhen I was a senior in high school, another schoolmate discovered the nearby university's first computer, an ALWAC III-E, tucked away in the basement of one of the oldest buildings on campus. It ran on paper tape punched with hexadecimal instructions.
ALWAC III-E COMPUTERWhen I was a college freshman in Calculus I, near the end of the semester the professor gave a basic introduction to something called FORTRAN, a new mathematical programming language, and required each of us to try it out with a simple program.
IBM 7094 COMPUTERThe RAMAC 350
The IBM RAMAC 350 was often sold as part of the IBM 305 computer. The RAMAC 350 is the cabinet to the left with its 50 platters stacked on top of one another.
That may seem hyperbole, at least at the level of coding. Even today we need to search arrays and other data structures, and efficiency can be important. But in the 1960s, the shift in storage approach began a shift in how users interacted with computers. In the sequential world, the common approach was batch processing. Given the size and expense of computers, there would be but one computer, and it would be shared by queuing up jobs and running them sequentially. If you had a payroll to process, you would sort all the relevant cards into order, mount the appropriate magnetic tapes on their drives, and process everything on the computer in sequence. Employee by employee, the computer would print out checks and either punch cards or record on tape the information needed for taxes, business records and the like. After that job was finished, the computer could be used for another batch job, perhaps updating inventory or a sales report. It wasn't until later in the 1960s that computers could be used by multiple users simultaneously running their own programs.
The RAMAC 350 was not a computer; it was a storage device, often sold with the IBM 305, an early vacuum tube computer. However, the RAMAC itself was afforded a degree of control using plug boards which were "programmed" in a limited sense by running jumper wires between sockets. These plug boards were part of punched card technology and had been used for many years to control card punches, card sorters, and card-based accounting machines.
The RAMAC 350 disk stack consisted of 50 disks, both sides read/write, spinning at 1200 rpm.
The world's first portable hard drive weighed about one ton.
The complete IBM 305 computer included a printer, card punch, processing unit, card reader, operator console, and of course, the 350 disk storage unit. It was one of the last of IBM's vacuum tube computers.
A RAMAC 350 control board. The jumper wires allowed control of some aspects of the storage system, but usually worked in conjunction with stored-program instructions on an attached computer, most often the IBM 305, one of the last vacuum tube computers built by IBM.
The ALWAC III-E
The ALWAC III-E was a medium size, medium cost vacuum tube computer intended more for intensive computational applications than for commercial uses.
The ALWAC III-E was usually found in universities and research facilities. It was one of a number of early stored-program computers that were replacing punched card machines, machines that could be "programmed" only in a limited sense using plug boards. While the ALWAC III-E usually lacked the input/output capabilities of commercial machines, it emphasized computational sophistication and speed. It could only be programmed using its own machine code, and thus required a fair knowledge of how the machine worked, how data was stored, how to work with hexadecimal numbers, and so on. Here is an example from one of the several manuals that came with the machine, giving a general idea of how the code worked.
For example, suppose we wish to multiply 9975.00 by 0.04 and divide the product by 12. If 9975.00 is in storage location 40, 0.04 is in location 42, and 12 is in location 44, the resulting code would be 4140E742EB4430--4940:
The programming process would start out, as it still does, with a definition of the problem and an approach to it, the algorithm. Then, unless it was an extremely simple solution, would come the flowchart, a diagram showing the logic of the program: decision points, conditional branches, loops and loop bounds, program flow, etc. The flowchart would be translated into a kind of symbolic representation of machine code that would include numeric or alphabetic instruction codes mixed with symbolic representations of storage locations, essentially variable names. Then that semi-symbolic code would be rendered into numerical machine instructions and hard-coded addresses. At the same time, the programmer would be attempting to maximize limited storage by reusing memory locations when possible and to optimize speed and efficiency by the deft use of arithmetic registers and instruction packing tricks. Virtually every computer sold came with its own preprinted forms for this step. The forms would reflect the word length for the computer (32 bits, or four bytes, for the ALWAC III-E) as well as how words were subdivided into instruction codes, addresses, and data storage.
These six plug-in units made up more than 90 per cent of the components in an ALWAC III-E. These units are, left to right, input circuit, flip-flop, resistor board, one-shot, diode board, and driver. Note the vacuum tubes on boards two, four, and six.
An oscilloscope, included with the ALWAC III-E, could be used to read memory and check timing. This display shows the decimal number 1,000,000,000 encoded in shorter(0) and longer(1) peaks in binary.
The basic ALWAC III-E could be supplemented with IBM input/output devices, including a line printer, a card reader/punch, and a tape drive. Logistics Research supplied the interfaces needed.
On the basic ALWAC III-E, punched paper tape was used for all input and output and non-volatile storage of programs and data. The tape could be created or printed out on the attached Flexowriter.
The IBM 7094
The 7094 was the fastest of IBM's first series of transistorized computers and the fastest scientific and engineering computer of its time.
The IBM 7094 is a prime example of computing's days of "Big Iron," large mainframes that weighed tons and occupied large air-conditioned rooms. The 7094 provided the computing power for NASA's Mercury and Gemini missions and for the beginning stages of the Apollo program. The U.S. Air Force used it for its Early Warning System into the 1980s. It was the platform for the first time-sharing system, developed by MIT, which allowed multiple users to run programs on a mainframe simultaneously. And it was the first computer to sing, providing a distinctly robotic version of "Daisy Bell" which was the inspiration for the scene in Stanley Kubrick's 2001: A Space Odyssey where the HAL 9000 sings "Daisy Bell" as it gradually devolves into a non-threatening simpleton. Coincidentally, an IBM 7090, a slightly less powerful version of the 7094 provided background and a telling plot point in Kubrick's earlier Dr. Strangelove. The 7094 also makes an appearance in the 2016 film about NASA's human computers, Hidden Figures.
The 7094 was one of a new generation of computers that did not require you to know machine code to use it. It came with an assembler, a COBOL compiler (for business oriented programming), and a FORTRAN compiler (for scientific and engineering programming). The 7094 was large and expensive, and thus became the queen bee and central focus of a complex of auxiliary machines. In a university environment, there would usually be a separate room with several card punches, perhaps some verifiers (used to double-check the punched cards), perhaps a card sorter and a printer that could provide a printout of the cards for proofing data and code. The 7094 would occupy its own air-conditioned space and usually ran 24/7 attended by a group of technicians and operators. Computational time was expensive (about $15 per minute in 2024 dollars), too expensive to waste waiting on slower input and output machinery. So the 7094 was usually accompanied by an IBM 1401, a smaller computer that would transfer information from cards onto faster magnetic tape, queuing up a series of jobs. The tape would be transferred to the 7094, which would process the jobs and send output back to tape. The output tape would then be used by the 1401 to create printed or punched card output.
If you were a student, there would be a "job desk" where you would submit your rubber-banded card stack to be processed. Usually within 24 hours you would get your cards and any printed output back. (Sometimes, by cleverly scheduling when you turned in your cards, say around midnight or 1 a.m., you might be able to get in two runs in a day.) If you were submitting a FORTRAN program for its first run, you could count on getting back a compiler printout full of syntax errors, some of which were real and some which were simply the result of an earlier error cascading through the code. You would fix those problems and make another run, and possibly another, until the program finally ran. Then would come addressing any logic errors and more runs. Sometimes your code might produce an infinite loop, which would earn you a stern look from the computer operator because the only way to detect an infinite loop was for the operator to notice reduced input/output activity or the console lights flickering in a repeating pattern. The only defensive programming lay in the operating system's loading all memory with STR machine code instructions before your program was loaded. Thus any memory not occupied by code or data would contain an STR code: store location and trap. If the computer encountered an STR as an operation, it would go to the second storage location in computer memory, where it would find a routine that made note of the offending location in your program, ended the job, and went on to the next job in the queue. You would get back a printout telling you your program had jumped bounds somewhere and it was up to you to figure out where. The only debugging tools available to you were a computer memory map and liberal use of the print statement.
An extreme close-up of core memory, created by small ferrite rings threaded with fine wires. Each ring represented a bit and could be magnetized in opposing directions to represent ones and zeros.
The core memory cabinet, stripped of its exterior panels. Core memory was non-volatile and relatively stable. The stability was improved if the thermal environment was also stable, and the core memory for the 7094 was immersed in transformer oil so it could be carefully controlled at about 104 F.
Flowchart for part of a NASA FORTRAN subroutine to calculate planetary orbits on the 7094.
Peter Sellers as Group Captain Lionel Mandrake at the console of an IBM 7090 in Stanley Kubrick's classic, Dr. Strangelove, or: How I Learned to Stop Worrying and Love the Bomb.