||This article needs additional citations for verification. (February 2010)|
The IBM 650 (photo) was one of IBM’s early computers, and the world’s first mass-produced (photo) computer. It was announced in 1953 and almost 2000 systems were produced, the last in 1962. Support for the 650 and its component units was withdrawn in 1969.
The 650 was a two-address, bi-quinary coded decimal machine (both data and addresses were decimal), with memory on a rotating magnetic drum. Although a decimal machine, limited character support was provided by the input/output units converting alphabetical and special characters to a two-digit decimal code. The 650 was marketed to scientific and engineering users as well as to users of existing IBM punched card machines who were upgrading from Calculating Punches, like the IBM 604, to computers. Because of its relatively low cost and ease of programming, the 650 was used to pioneer a wide variety of applications, from modeling submarine crew performance to teaching high school and college students computer programming.
The basic 650 system consisted of three components:
- Disk Unit (IBM 355) Systems with a disk unit were known as a IBM 650 RAMAC Data Processing System
- Card Reader Unit (IBM 543)
- Card Punch Unit (IBM 544)
- Control Unit (IBM 652) Magnetic Tape Controller
- Auxiliary Unit (IBM 653) Core storage, index registers, floating point arithmetic
- Auxiliary Alphabetic Unit (IBM 654)
- Magnetic Tape Unit (IBM 727)
- Inquiry Station (IBM 838)
- Tape To Card Punch IBM 46 Model 3
- Tape To Card Punch IBM 47 Model 3
- Alphabetical Accounting Machine IBM 407
The rotating drum memory (photo) provided 2,000 signed 10-digit words of memory (five characters per word) at addresses 0000 to 1999, which is approximately 8.5 KB in today's units. A Model 4, introduced in 1959, doubled the drum capacity to 4,000 words. A word could not be accessed until its location on the drum surface passed under the read/write heads during rotation (rotating at 12,500 rpm, the non-optimized average access time was 2.5 ms). Because of this timing restriction, the second address in each instruction word was the address of the next instruction. Programs could be optimized by placing instructions around the drum based on the expected execution time of the previous instruction. One specialized instruction, "Table lookup", could high-equal compare a reference 10-digit word with 46 consecutive following words on the drum in one 5ms revolution and then switch to the next track in time for the next 46 words (there were fifty words per track/revolution). This feat was about one-third the speed of a one-thousand times faster binary machine in 1963 (1500 microseconds on the IBM 7040 to 5000 microseconds on the IBM 650) for looking up 46 entries as long as both were programmed in assembler. One higher-level language made the IBM 7040 dramatically slower at table-look-up.
The optional Auxiliary Unit (IBM 653), was introduced on May 3, 1955, providing up to three features:
- Sixty 10-digit words of magnetic core memory at addresses 9000 to 9059; a small fast memory (this device gave a memory access time of 96µs, a 26-fold raw improvement relative to the rotating drum), needed for a tape and disk I/O buffer
- Three four-digit index registers at addresses 8005 to 8007; drum addresses were indexed by adding 2000, 4000 or 6000 to them, core addresses were indexed by adding 0200, 0400 or 0600 to them. If the system had the 4000 word memory drum then indexing was by adding 4000 to the first address for index register A, adding 4000 to the second address for index register B, and by adding 4000 to each of the two addresses for index register C. (the indexing for 4000-word systems only applied to the first address). The 4000-word systems required transistorized read/write circuitry for the drum memory and were available before 1963.
- Floating point – arithmetic instructions with am eight-digit mantissa and two-digit characteristic (offset exponent) – MMMMMMMMCC, providing a range of ±0.00000001E-50 to ±0.99999999E+49
The IBM 533 reader punch unit could only read a maximum of 26 columns of alphanumerics from cards in mostly fixed columns. An expansion allowed more but certainly not over 50, as only ten words could be read from a card (five characters per word).
The IBM 650 (pictured here) at the Haus zur Geschichte der IBM Datenverarbeitung (House for the History of IBM Data Processing), Sindelfingen, is still running (as of May 2004[update]) and will process an income tax program of the time, with input and output on punched cards.
The IBM 7070, announced 1958, was expected to be a common successor to at least the 650 and the 705. The IBM 1620, introduced in 1959, addressed the lower end of the market. Both were decimal machines, but neither had a compatible instruction set.
Instruction set 
IBM 650 instructions consisted of a two-digit op code, a four-digit data address and the four-digit address of the next instruction. The sign was ignored. The 650 had a 20-digit accumulator, divided into 10-digit upper and lower sections with a common sign. Data read from the drum went through a 10-digit distributer. Instructions went to a program register. Arithmetic was performed by a one-digit adder. Additional instructions were provided for options, such as floating point, core storage, index registers and additional I/O devices. The base machine had 42 op codes. With all options installed, there were 97 op codes.
|10||AU||Add to upper|
|15||AL||Add to lower|
|11||SU||Subtract from upper|
|16||SL||Subtract from lower|
|60||RAU||Reset (entire accumulator) and add into upper|
|65||RAL||Reset and add into lower|
|61||RSU||Reset and subtract into upper|
|66||RSL||Reset and subtract into lower|
|20||STL||Store lower into memory|
|21||STU||Store upper into memory *|
|22||STDA||Store lower data address|
|23||STIA||Store lower instruction address|
|17||AABL||Add absolute to lower|
|67||RAABL||Reset and add absolute to lower|
|18||SABL||Subtract absolute from lower|
|68||RSABL||Reset and subtract absolute into lower|
|64||DIVRU||Divide and reset upper|
|44||BRNZU||Branch on non-zero in upper|
|45||BRNZ||Branch on (accumulator) non-zero|
|46||BRMIN||Branch on minus|
|47||BROV||Branch on overflow|
|90-99||BRD||Branch on 8 in distributor positions 1-10 **|
|30||SRT||Shift (accumulator) right|
|31||SRD||Shift and round|
|36||SCT||Shift left and count ***|
|01||Stop||Stop if console switch is set to stop, otherwise no-op|
- * Value stored takes sign of accumulator, except after a divide operation; then sign of remainder is stored.
- ** Used to allow 533 control panel to signal CPU.
- *** Counts high-order zeros in upper accumulator
- BLIS (Bell Laboratories Interpretive System), which used a numeric-only three-address approach
- IPL the first list processing language. The best known version was IPL-V.
- SPACE (Simplified Programming Anyone Can Enjoy) which was a business-oriented two-step compiler (through SOAP)
- Perlis, A.J.; et al. (4/18/58). Internal Translator; IT, A Compiler for the 650 (PDF). 650 Library Program 2.1.001.
- Symbolic Optimal Assembly Program, IBM (1957). SOAP II for the IBM 650 (PDF). C24-4000-0.
- IBM (1959). FOR TRANSIT Automatic Coding System for the IBM 650 (PDF). 28-4028. A version of Fortran which compiled to IT which in turn was compiled to SOAP.
- IBM (1960). FORTRAN Automatic Coding System for the IBM 650 (PDF). 29-4047.
- GATE, a simple compiler with one character variable names
- Revised Unified New Compiler IT Basic Language Extended (RUNCIBLE)
- Technical Assembly System (TASS), a macro assembler.
See also 
- List of IBM products
- List of vacuum tube computers
- UNIVAC Solid State announced by Sperry Rand in December 1958 as a response to the IBM 650.
- IBM (1955). IBM 650 magnetic drum data-processing machine manual of operation. (PDF). 22-6060.
- IBM (1955). IBM Presents the 650 Magnetic Drum Data Processing Machine (PDF). 32-6770.*
- Andree, Richard V. (1958). Programming the IBM 650 magnetic drum computer and data-processing machine.
- Knuth, Donald E. (January–March 1986). "The IBM 650: An Appreciation from the Field". IEEE Annals of the History of Computing 8 (1): 50–55. doi:10.1109/MAHC.1986.10010. Donald Knuth also dedicated his series of books, The Art of Computer Programming, to an IBM 650 computer, with the words "This series of books is affectionately dedicated / to the Type 650 computer once installed at / Case Institute of Technology, / in remembrance of many pleasant evenings."
- IBM Archives IBM 650 Magnetic Drum Data Processing Machine
- Pugh, Emerson W. (1995). Building IBM: Shaping an Industry and Its Technology. MIT Press. p. 182. ISBN 978-0-262-16147-3.
- IBM Archives 650 Customers
- Integrated models of cognition systems By Wayne D. Gray, p.36
- Each word represents a signed 10-digit decimal number. 2^33 is approximately 8.5 billion (10 digits). To account for the signing, double that -- 2^34 ~= 17 billion. So, on a lower bound, each IBM 650 word can hold information equivalent to 34 bits. Now, 2000x34 = 68000 bits of data. That's 8500 bytes (divide by 8.) which translates to 8.5 KB (divide by 1000) or 8.3 KiB (divide by 1024.)
- IBM 650 Model 4 announcement
- Bashe, Charles J.; Johnson, Lyle R; Palmer, John H.; Pugh, Emerson W. (1986). IBM's Early Computers. MIT. p. 473. ISBN 0-262-02225-7.
- IBM 650 CPU Extensions
- HOPL shows the name as BLISS, which is incorrect; the correct form is given in "Flow-Based Programming" - ISBN 0-442-01771-5
|Wikimedia Commons has media related to: IBM 650|
- IBM Archives: Workhorse of Modern Industry: The IBM 650 Includes a chronology, technical specifications, representative customers, and applications the 650 was used for.
- Weik, Martin H. (March 1961). A Third Survey of Domestic Electronic Digital Computing Systems. Ballistic Research Laboratories (BRL). Report No. 1115. Includes about 40 pages of IBM 650 survey detail: customers, applications, specifications, and costs.
- The IBM 650 at Columbia University
- An IBM 650 Simulator written in Python
- An IBM 650 Simulator
- Sindelfingen Scroll down to House for the History of the IBM data processing where the working IBM 650 pictured above is located. See also History Galore at IBM Museum.
- IBM Museum Sindelfingen (has the working IBM 650 pictured above)
this next link seems to be broken, try it sometime in April 2006:Haus zur Geschichte der IBM Datenverarbeitung (German)[dead link]
- IBM 650 documents at Bitsavers.org (PDF files)
- Video clip of IBM 650 and RAMAC in operation, alternate version
- An IBM 650 assembler and Byte code interpreter - Written in PERL at archive.org
- IBM 650 assembler and byte code interpreters