IBM 650

{{Short description|Vacuum-tube 1950s computer system}}

{{Infobox information appliance

| name = IBM 650

| cost =

| successor = IBM 7070 (hi-end){{br}}IBM 1620 (low-end)

| logo_size = 120px

| logo_caption =

| image = IBM 650 EMMA.jpg

| image_size = 270px

| caption = Part of the first IBM 650 computer in Norway (1959), known as "EMMA". 650 Console Unit (right, an exterior side panel is open), 533 Card Read Punch unit (middle, input-output). 655 Power Unit is missing. Punched card sorter (left, not part of the 650). Now at Norwegian Museum of Science and Technology in Oslo.

| type = Digital computer

| designfirm =

| manufacturer =

| release date = {{Start date and age|1954}}

| discontinued =

| processor =

| memory =

| logo = IBM Logo 1947 1956.svg

| frequency =

| slots =

| coprocessor =

| connection =

| ports =

| power =

| speed =

| language =

| weight =

| dimensions =

| predecessor = IBM CPC (604, 605)

| related = IBM 701, IBM 702; {{br}}IBM 608

| family =

}}

File:IBM 650 at Texas A&M.jpg

File:IBM 650.002 - MUNCYT.jpg

File:IBM 650 panel close-up of bi-quinary indicators.jpg

File:Memoria a tamburo magnetico per sistema IBM 650 - Museo scienza tecnologia Milano D1171.jpg

File:Coruña, MUNCYT 01-21b.JPG in A Coruña]]

The IBM 650 Magnetic Drum Data-Processing Machine is an early digital computer produced by IBM in the mid-1950s.{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph06.html |title=IBM Archives: IBM 650 installation with IBM 727 Magnetic Tape Unit and IBM 355 Disk Storage |website=IBM |location=US |access-date=September 5, 2019 |archive-url=https://web.archive.org/web/20230409023954/https://www.ibm.com/ibm/history/exhibits/650/650_ph06.html |archive-date=2023-04-09 |url-status=dead}}{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph05.html |title=IBM Archives: IBM 650 Assembly at Endicott plant |website=IBM |location=US |access-date=September 5, 2019 |archive-url=https://web.archive.org/web/20231023160555/https://www.ibm.com/ibm/history/exhibits/650/650_ph05.html |archive-date=2023-10-23 |url-status=dead}} It was the first mass-produced computer in the world.{{cite web |title=History Of Computers 1937-2011 |url=https://www.cs.odu.edu/~tkennedy/cs300/development/Public/M01-HistoryOfComputers/index.html |website=Old Dominion University |access-date=June 22, 2021}}{{cite web |title=IBM in the Computer Era |url=https://mncomputinghistory.com/ibm-in-the-computer-era/ |website=The Minnesota Computing History Project |date=28 June 2018 |access-date=June 21, 2021}} Almost 2,000 systems were produced, the last in 1962,{{cite book|last=Pugh|first=Emerson W.|url=https://archive.org/details/buildingibmshapi00pugh|title=Building IBM: Shaping an Industry and Its Technology|publisher=MIT Press|year=1995|isbn=978-0-262-16147-3|page=[https://archive.org/details/buildingibmshapi00pugh/page/n191 182]|url-access=limited}} and it was the first computer to make a meaningful profit. The first one was installed in late 1954 and it was the most popular computer of the 1950s.{{cite book |last=Davis |first=Gordon B. |year=1971 |title=Introduction to Electronic Computers|url=https://archive.org/details/introductiontoel00davi |url-access=registration |edition=Second |page=[https://archive.org/details/introductiontoel00davi/page/10 10] |location=New York |publisher=McGraw-Hill |isbn=978-0-070-15821-4}}

The 650 was offered to business, scientific and engineering users as a slower and less expensive alternative to the IBM 701 and IBM 702 computers, which were for scientific and business purposes respectively.{{Cite web|last=|first=|date=|title=The IBM 650 Magnetic Drum Calculator|url=http://www.columbia.edu/cu/computinghistory/650.html|access-date=|website=Columbia.edu}} It was also marketed to users of punched card machines who were upgrading from calculating punches, such as the IBM 604, to computers.{{Cite book|url=http://www.bitsavers.org/pdf/ibm/650/22-6060-2_650_OperMan.pdf|title=IBM 650 Magnetic Drum Data-Processing Machine: Manual of Operation|publisher=IBM|year=1955|id=22-6060-1}}{{rp|5}}{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_cu1.html |title=IBM Archives: 650 Customers |website=IBM |archive-url=https://web.archive.org/web/20230725133257/https://www.ibm.com/ibm/history/exhibits/650/650_cu1.html |archive-date=2023-07-25 |url-status=dead}}

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{{cite book|last=Gray|first=Wayne D.|url=https://archive.org/details/integratedmodels00gray|title=Integrated Models of Cognition Systems|publisher=Oxford University Press|year=2007|isbn=978-0-19-518919-3|location=New York|page=[https://archive.org/details/integratedmodels00gray/page/n54 36]|url-access=limited}} to teaching high school and college students computer programming. The IBM 650 became highly popular in universities, where a generation of students first learned programming.{{Cite web|last=|first=|date=|title=IBM 650 magnetic drum calculator introduced|url=https://www.computerhistory.org/timeline/1954/|access-date=|website=Computerhistory}}

It was announced in 1953 and in 1956 enhanced as the IBM 650 RAMAC with the addition of up to four disk storage units.{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_pr2.html |title=IBM Archives: 650 RAMAC announcement press release |website=IBM |archive-url=https://web.archive.org/web/20230609092034/https://www.ibm.com/ibm/history/exhibits/650/650_pr2.html |archive-date=2023-06-09 |url-status=dead}} The purchase price for the bare IBM 650 console, without the reader punch unit, was $150,000 in 1959,{{Cite web |date=2003-01-23 |title=IBM Archives: IBM 650 Model 4 announcement press release |url=https://www.ibm.com/ibm/history/exhibits/650/650_pr4.html |access-date=2023-07-25 |website=IBM |language=en-US |archive-url=https://web.archive.org/web/20231023160555/https://www.ibm.com/ibm/history/exhibits/650/650_pr4.html |archive-date=2023-10-23 |url-status=dead}} or roughly $1,500,000 as of 2023. Support for the 650 and its component units was withdrawn in 1969.

The 650 was a two-address, bi-quinary coded decimal computer (both data and addresses were decimal), with memory on a rotating magnetic drum. Character support was provided by the input/output units converting punched card alphabetical and special character encodings to/from a two-digit decimal code.

The 650 was clocked at a frequency of 125 kHz.{{Cite conference |last=Royse |first=David |book-title=Papers presented at the February 26-28, 1957, western joint computer conference: Techniques for reliability on - IRE-AIEE-ACM '57 (Western) |date=1957 |title=The IBM 650 RAMAC system disk storage operation |url=http://portal.acm.org/citation.cfm?doid=1455567.1455576 |language=en |publisher=ACM Press |pages=43–49 |doi=10.1145/1455567.1455576|doi-access=free }} It could add or subtract in 1.63 milliseconds, multiply in 12.96 ms, and divide in 16.90 ms. The average speed of the 650 was estimated to be around 27.6 ms per instruction, or roughly 40 instructions per second.{{Cite web |title=Knuth Biographic Notes |url=https://softpanorama.org/People/Knuth/knuth_biographic_notes.shtml |access-date=2023-07-25 |website=softpanorama.org}}

Donald Knuth's series of books The Art of Computer Programming is famously dedicated to a 650.

History

The first 650 was installed on December 8, 1954 in the controller's department of the John Hancock Mutual Life Insurance Company in Boston.{{cite web|url=https://www.ibm.com/ibm/history/exhibits/650/650_ch1.html|title=IBM Archives: 650 Chronology|archive-url=https://web.archive.org/web/20230417002435/https://www.ibm.com/ibm/history/exhibits/650/650_ch1.html|archive-date=2023-04-17|url-status=dead}}

The IBM 7070 (signed 10-digit decimal words), announced 1958, was expected to be a "common successor to at least the 650 and the [IBM] 705".{{cite book |title=IBM's Early Computers |last1=Bashe |first1=Charles J. |last2=Johnson |first2=Lyle R |last3=Palmer |first3=John H. |last4=Pugh |first4=Emerson W. |year=1986 |publisher=MIT |isbn=0-262-02225-7 |page=[https://archive.org/details/ibmsearlycompute00bash/page/473 473] |url-access=registration |url=https://archive.org/details/ibmsearlycompute00bash/page/473 }} The IBM 1620 (variable-length decimal), introduced in 1959, addressed the lower end of the market. The UNIVAC Solid State (a two-address computer, signed 10-digit decimal words) was announced by Sperry Rand in December 1958 as a response to the 650. None of these had an instruction set that was compatible with the 650.

Hardware

The basic 650 system consisted of three units:{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_cm1.html |title=IBM Archives: 650 Components |archive-url=https://web.archive.org/web/20230725133256/https://www.ibm.com/ibm/history/exhibits/650/650_cm1.html |archive-date=2023-07-25 |url-status=dead}}

  • IBM 650 Console Unit{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph01.html |title=IBM Archives: IBM 650 Console Unit |website=IBM |archive-url=https://web.archive.org/web/20231023164304/https://www.ibm.com/ibm/history/exhibits/650/650_ph01.html |archive-date=2023-10-23 |url-status=dead}} housed the magnetic drum storage, arithmetical device (using vacuum tubes) and the operator's console.
  • IBM 655 Power Unit{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph15.html |title=IBM Archives: IBM 655 Power Unit |website=IBM |archive-url=https://web.archive.org/web/20230408154257/https://www.ibm.com/ibm/history/exhibits/650/650_ph15.html |archive-date=2023-04-08 |url-status=dead}}
  • IBM 533 or IBM 537 Card Read Punch UnitOther IBM names for the 533 included Input-Output Unit and Read-Punch Unit.{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph13.html |title=IBM Archives: IBM 533 Card Read Punch |website=IBM |archive-url=https://web.archive.org/web/20230408161301/https://www.ibm.com/ibm/history/exhibits/650/650_ph13.html |archive-date=2023-04-08 |url-status=dead}}{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph14.html |title=IBM Archives: IBM 537 Card Read Punch |website=IBM |archive-url=https://web.archive.org/web/20230409012830/https://www.ibm.com/ibm/history/exhibits/650/650_ph14.html |archive-date=2023-04-09 |url-status=dead}} The IBM 533 had separate feeds for reading and punching; the IBM 537 had one feed, thus could read and then punch into the same card.

Weight: {{convert|5400-6263|lb|ST MT|1}}.{{cite book |title=Physical Planning Installation Manual 650 System |url=http://www.bitsavers.org/pdf/ibm/650/21-7643-1_650_InstallMan.pdf |page=32 |publisher=IBM |via=Bitsavers |date=October 1, 1957 |access-date=May 31, 2018}}{{cite book |title=Customer Engineering Manual of Instruction |url=http://www.bitsavers.org/pdf/ibm/650/22-6284-1_650_CE_Manual_of_Instruction.pdf |page=I-17 |publisher=IBM |via=Bitsavers |year=1956 |access-date=May 31, 2018}}

Optional units:

  • IBM 46 Tape To Card Punch, Model 3
  • IBM 47 Tape To Card Printing Punch, Model 3
  • IBM 355 Disk Storage Unit{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph07.html |title=IBM Archives: IBM 355 Disk Storage |website=IBM |archive-url=https://web.archive.org/web/20230409022452/https://www.ibm.com/ibm/history/exhibits/650/650_ph07.html |archive-date=2023-04-09 |url-status=dead}} Systems with a disk unit were known as IBM 650 RAMAC Data Processing Systems
  • IBM 407 Accounting Machine{{cite web |url=https://www.ibm.com/ibm/history/exhibits/vintage/vintage_4506VV4007.html |title=IBM Archives: IBM 407 accounting machine |website=IBM |archive-url=https://web.archive.org/web/20230703223109/https://www.ibm.com/ibm/history/exhibits/vintage/vintage_4506VV4007.html |archive-date=2023-07-03 |url-status=dead}}
  • IBM 543 Card Reader Unit
  • IBM 544 Card Punch Unit
  • IBM 652 Control Unit (magnetic tape, disk){{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph12.html |title=IBM Archives: IBM 652 Control Unit |website=IBM |archive-url=https://web.archive.org/web/20230408162804/https://www.ibm.com/ibm/history/exhibits/650/650_ph12.html |archive-date=2023-04-08 |url-status=dead}}
  • IBM 653 Storage Unit (magnetic tape, disk, core storage, index registers, floating-point arithmetic){{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph11.html |title=IBM Archives: IBM 653 Auxiliary Unit |website=IBM |archive-url=https://web.archive.org/web/20230409012811/https://www.ibm.com/ibm/history/exhibits/650/650_ph11.html |archive-date=2023-04-09 |url-status=dead}}
  • IBM 654 Auxiliary Alphabetic Unit
  • IBM 727 Magnetic Tape Unit
  • IBM 838 Inquiry Station{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph16.html |title=IBM Archives: IBM 838 Inquiry Station |website=IBM |archive-url=https://web.archive.org/web/20230408112022/https://www.ibm.com/ibm/history/exhibits/650/650_ph16.html |archive-date=2023-04-08 |url-status=dead}}

=Main memory=

Rotating drum memory provided 1,000, 2,000, or 4,000 words of memory at addresses 0000 to 0999, 1999, or 3999 respectively. Each word had 10 bi-quinary coded decimal digits, representing a signed 10-digit number or five characters. (Counting a bi-quinary coded digit as seven bits, 4000 words would be equivalent to 35 kilobytes.){{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_ph09.html |title=IBM Archives: IBM 650 Magnetic Drum |website=IBM |archive-url=https://web.archive.org/web/20230207023510/https://www.ibm.com/ibm/history/exhibits/650/650_ph09.html |archive-date=2023-02-07 |url-status=dead}}{{cite web |url=https://www.ibm.com/ibm/history/exhibits/650/650_pr4.html |title=IBM Archives: IBM 650 Model 4 announcement |website=IBM |archive-url=https://web.archive.org/web/20231023160555/https://www.ibm.com/ibm/history/exhibits/650/650_pr4.html |archive-date=2023-10-23 |url-status=dead}} Words on the drums were organized in bands around the drum, fifty words per band, and 20, 40, or 80 bands for the respective models. A word could be accessed when 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, the second address in each instruction was the address of the next instruction. Programs could then be optimized by placing instructions at addresses that would be immediately accessible when execution of the previous instruction was completed. IBM provided a form with ten columns and 200 rows to allow programmers to keep track of where they put instructions and data. Later an assembler, SOAP (Symbolic Optimal Assembly Program), was provided that performed rough optimization.{{cite web|url=https://www.drdobbs.com/the-ibm-650/184404809|title=The IBM 650|first=Herb|last=Kugel|date=October 22, 2001|publisher=Dr. Dobb's}}

The LGP-30, Bendix G-15 and IBM 305 RAMAC computers used vacuum tubes and drum memory too, but they were quite different from the IBM 650.

Instructions read from the drum went to a program register (in current terminology, an instruction register). Data read from the drum went through a 10-digit distributor. The 650 had a 20-digit accumulator, divided into 10-digit lower and upper accumulators with a common sign. Arithmetic was performed by a one-digit adder. The console (10 digit switches, one sign switch, and 10 bi-quinary display lights), distributor, lower and upper accumulators were all addressable; 8000, 8001, 8002, 8003 respectively.

=IBM 653 Storage Unit=

The optional IBM 653 Storage Unit, was introduced on May 3, 1955, ultimately providing up to five features:

  • Magnetic tape controller (for IBM 727 Magnetic Tape units) (10 extra operation codes)
  • Disk storage controller (1956 enhancement for then new IBM 355 Disk Storage Unit) (five extra operation codes)
  • Sixty 10-digit words of magnetic core memory at addresses 9000 to 9059. This small fast memory had an access time of 96μs, a 26-fold improvement relative to the rotating drum. This feature added five operation codes and was needed as a buffer for tape and disk I/O. The 60 words could also be used by programs to speed up inner loops and table lookups.
  • 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 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. (18 extra operation codes)
  • Floating point – arithmetic instructions supported an eight-digit mantissa and two-digit characteristic (offset exponent) – MMMMMMMMCC, providing a range of ±0.00000001E-50 to ±0.99999999E+49. (seven extra operation codes)

Instruction set

The 650 instructions consisted of a two-digit operation code, a four-digit data address and the four-digit address of the next instruction. The sign was ignored on the basic machine, but was used on machines with optional features. The base machine had 44 operation codes. Additional operation codes were provided for options, such as floating point, core storage, index registers and additional I/O devices. With all options installed, there were 97 operation codes.[http://www.bitsavers.org/pdf/ibm/650/24-5003-0_CPU_Extensions.pdf IBM 650 CPU Extensions]

The Table lookup (TLU) instruction could high-equal compare a referenced 10-digit word with 48 consecutive words on the same drum band in one 5ms revolution and then switch to the next band in time for the next 48 words. This feat was about one-third the speed of a one-thousand times faster binary machine in 1963 (1,500 microseconds on the IBM 7040 to 5,000 microseconds on the 650) for looking up 46 entries as long as both were programmed in assembler. There was an optional Table lookup Equal instruction, with the same performance.

The Read (RD) instruction read an 80-column card of numeric data into ten memory words; the distribution of digits to words determined by the card reader's control panel wiring. When used with the 533 Reader Punch unit's Alphabetic device, a combination of numeric and alphanumeric columns (maximum of 30 alphanumeric columns) could be read. An expansion feature allowed more alphanumeric columns but certainly not over 50, as only ten words (five characters per word) were stored on the drum by a card read operation.{{Citation needed|date=October 2020}}

File:IBM 650 with front open.jpg

File:RoehreIBM 090325.jpg

File:BronxScienceProgrammingClassroom1960.jpg with IBM 650 instruction chart above blackboard, upper right]]

The base machine operation codes were:{{cite book|url=http://www.bitsavers.org/pdf/ibm/650/24-5002-0_BasicOpcodes.pdf|title=IBM 650 System Bulletin, Basic Operation Codes, Program Optimizing, Program Loading|year=1958|publisher=IBM}}

class="wikitable"
17

|AABL

|Add absolute to lower accumulator

15

|AL

|Add to lower accumulator

10

|AU

|Add to upper accumulator

45

|BRNZ

|Branch on accumulator non-zero

46

|BRMIN

|Branch on minus accumulator

44

|BRNZU

|Branch on non-zero in upper accumulator

47

|BROV

|Branch on overflow

90-99

|BRD

|Branch on 8 in distributor positions 1-10{{efn|Used to allow 533 control panel to signal CPU.}}

14

|DIV

|Divide

64

|DIVRU

|Divide and reset upper accumulator

69

|LD

|Load distributor

19

|MULT

|Multiply

00

|NO-OP

|No operation

71

|PCH

|Punch a card

70

|RD

|Read a card

67

|RAABL

|Reset accumulator and add absolute to lower accumulator

65

|RAL

|Reset accumulator and add to lower accumulator

60

|RAU

|Reset accumulator and add to upper accumulator

68

|RSABL

|Reset accumulator and subtract absolute from lower accumulator

66

|RSL

|Reset accumulator and subtract from lower accumulator

61

|RSU

|Reset accumulator and subtract from upper accumulator

35

|SLT

|Shift accumulator left

36

|SCT

|Shift accumulator left and count{{efn|Counts high-order zeros in upper accumulator.}}

30

|SRT

|Shift accumulator right

31

|SRD

|Shift accumulator right and round accumulator

01

|STOP

|Stop if console switch is set to stop, otherwise continue as a NO-OP

24

|STD

|Store distributor into memory

22

|STDA

|Store lower accumulator data address into distributor

Then store distributor into memory

23

|STIA

|Store lower accumulator instruction address into distributor

Then store distributor into memory

20

|STL

|Store lower accumulator into memory

21

|STU

|Store upper accumulator into memory.{{efn|Value stored takes sign of accumulator, except after a divide operation; then sign of remainder is stored.}}

18

|SABL

|Subtract absolute from lower accumulator

16

|SL

|Subtract from lower accumulator

11

|SU

|Subtract from upper accumulator

84

|TLU

|Table lookup

{{notelist}}

Notes:

The IBM 653 options could implement additional instruction codes.

Sample program

This one-card program, taken from the 650 Programming Bulletin 5, IBM, 1956, 22-6314-0, will set most of the drum storage to minus zeros. The program includes examples of instructions being executed from the console switches and from an accumulator.

To begin, a load card is keypunched with 80 consecutive digits (the second column below) so that, when read, drum locations 0001 through 0008 contents will be as shown.A 12 punch can be used to identify cards as load cards. Load cards are directly read into words 1-8 of the specified storage band

0001 0000010000

0002 0000000000-

0003 1000018003

0004 6100080007

0005 2400008003

0006 0100008000

0007 6900060005

0008 2019990003

The console digit switches (address 8000) are manually set to a Read instruction with data address 0004.

loc- op|data|next

ation |addr|instruction

| |addr

8000 RD 70 0004 xxxx Read load card into first band read area

Each drum band has a read area; these read areas are in locations 0001-0010, 0051-0060, 0101-0110 and so on. Any address in a band can be used to identify that band for a read instruction; the address 0004 identifies the first band. Execution begins then, from the console with the reading of the eight words on the load card into locations 0001-0008 of the first memory band. In the case of reading a load card, the "next instruction address" is taken from the data address field, not the next instruction address field (shown above as xxxx). Thus execution continues at 0004

0004 RSU 61 0008 0007 Reset entire accumulator, subtract into upper (8003) the value 2019990003

0007 LD 69 0006 0005 Load distributor with 0100008000

0005 STD 24 0000 8003 Store distributor in location 0000, next instruction is in 8003 (the upper accumulator)

Note: the moving of data or instructions from one drum location to another

requires two instructions: LD, STD.

Now a two-instruction loop executes:

8003 STL 20 1999 0003 Store lower accumulator (that accumulator was reset to 0- by the RSU instruction above)

The "1999" data address is decremented, below, on each iteration.

This instruction was placed in the upper accumulator by the RSU instruction above.

Note: this instruction, now in the upper accumulator, will be decremented and then

executed again while still in the accumulator.

0003 AU 10 0001 8003 Decrement data address of the instruction in the accumulator by 1

(by adding 10000 to a negative number)

The STL's data address will, eventually, be decremented to 0003, and the AU ... instruction at 0003 will be overwritten with zeros. When that occurs (the STL's next instruction address remains 0003) execution continues as follows:

0003 NOOP 00 0000 0000 No-operation instruction, next instruction address is 0000

0000 HALT 01 0000 8000 Halt, next instruction address is the console

(this Halt instruction was stored in 0000 by the STD instruction above)

Software

File:IBM 650 student program 1961.agr.jpg

The 650 instruction set is simple enough that small programs could be written in machine language and this was common for student exercises.{{cite book | last = Andree | first = Richard V.

| title = Programming the IBM 650 Magnetic Drum Computer and Data-Processing Machine

| url = http://www.bitsavers.org/pdf/ibm/650/Andree_Programming_the_IBM_650_Magnetic_Drum_Computer_and_Data-Processing_Machine_1958.pdf

| year = 1958}} There was a single-instruction-per-card format that could be loaded directly into the machine and executed.

Machine language was awkward for large programs and, over time, a variety of programming languages and tools were

written for the IBM 650. These included:

; Assemblers

| last = IBM

| title = SOAP II for the IBM 650

| year = 1957

| url = http://www.bitsavers.org/pdf/ibm/650/24-4000-0_SOAPII.pdf

| id = C24-4000-0

}}

; Interpretive systems

  • An Interpretive application virtual machine package originally published as "Complete Floating Decimal Interpretive System for the IBM 650 Magnetic Drum Calculator". This was known by several names:
  • the Wolontis–Bell Labs Interpreter, the Bell System, the Bell interpreter, the Bell interpretive system,{{cite journal | first = Donald E. | last = Knuth

| title = The IBM 650: An Appreciation from the Field

| journal = IEEE Annals of the History of Computing

| volume = 8 | issue = 1 | date = January–March 1986 | pages = 50–55

| doi = 10.1109/MAHC.1986.10010

| s2cid = 34595049

}}

or BLIS — the Bell Lab Interpretive System{{cite book|url=http://www.bitsavers.org/pdf/ibm/650/28-4024_FltDecIntrpSys.pdf|title=IBM Reference Manual: Floating-Decimal Interpretive System for the IBM 650|publisher=IBM|year=1959|pages=63, xxi|id=28-4024|quote=This is a reprint of IBM 650 Technical Newsletter No. 11, March 1956, form 31-6822}}

. This reference manual contains the following report, noting that In its external characteristics, the interpretive system described in this report owes much to the IBM Speedcoding System for the 701. {{cite book|title=Complete Floating Decimal Interpretive System for the IBM 650 Magnetic Drum Calculator|last=Wolontis|first=V.M.|publisher=Bell Laboratories, Inc, Murray Hill, New Jersey}}

  • L1 and (later) L2{{cite web |url=http://cm.bell-labs.com/cm/cs/cstr/99.html |archive-url=https://archive.today/20140902215751/http://cm.bell-labs.com/cm/cs/cstr/99.html |url-status=dead |archive-date=September 2, 2014 |title=Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975) |first1=Bernard D. |last1=Holbrook |first2=W. Stanley |last2=Brown |publisher=Bell Labs |access-date=August 27, 2020}}{{cite web |url=http://bitsavers.org/pdf/ibm/650/34-6822-0_FltDecIntrpsys.pdf |title=A Complete Floating-Decimal Interpretive System For The IBM 650 Magnetic Drum Calculator |first=V. M. |last=Wolontis |publisher=IBM |location=US |via=bitsavers}} – known outside Bell Labs as "Bell 1" and "Bell 2", among other names (see above)
  • Synthetic Programming System for Commercial Applications {{cite book |title= 650 Programming Bulletin 2 |publisher= IBM |year= 1956 |id= 22-6294-0 |pages= 40 |quote= The Interpretive routine described here is a fixed decimal three address system that provides for mathematical, logical, and input-output operations. The logic for this system was obtained from the Complete Floating Decimal Interpretive System for the 650 that was developed by the Bell Laboratories, Murray Hill, New Jersey.}}

; Algebraic languages / compilers

  • Internal Translator (IT) — A compiler{{cite book

| first1 = A.J.

| last1 = Perlis

| author-link1 = Alan Perlis

| first2 = J.W.

| last2 = Smith

| first3 = H.R.

| last3 = VanZoeren

| title = Internal Translator; IT, A Compiler for the 650

| date = 1958-04-18

| url = http://www.bitsavers.org/pdf/ibm/650/CarnegieInternalTranslator.pdf

| id = 650 Library Program 2.1.001

}}

  • Revised Unified New Compiler IT Basic Language Extended (RUNCIBLE) — An extension of IT at CaseDonald Knuth published the flowchart of the compiler in 1959;{{Cite journal | last1 = Knuth | first1 = D. E. |author-link=Donald Knuth| doi = 10.1145/368481.368507 | title = RUNCIBLE—algebraic translation on a limited computer | journal = Communications of the ACM| volume = 2 | pages = 18–21| year = 1959 | issue = 11 | s2cid = 8224014 | doi-access = free }}; this was his first academic paper.
  • FOR TRANSIT — A version of Fortran which compiled to IT which in turn was compiled to SOAP{{cite book

| last = IBM

| title = FOR TRANSIT Automatic Coding System for the IBM 650

| year = 1959

| url = http://www.bitsavers.org/pdf/ibm/650/28-4028_FOR_TRANSIT.pdf

| id = 28-4028

}}

| last = IBM

| title = FORTRAN Automatic Coding System for the IBM 650

| year = 1960

| url = http://www.bitsavers.org/pdf/ibm/650/29-4047_FORTRAN.pdf

| id = 29-4047

}}

  • GATE — A simple compiler with one character variable names
  • IPL — The first list processing language. The best-known version was IPL-V.
  • SPACE (Simplified Programming Anyone Can Enjoy) — A business-oriented two-step compiler through SOAP

See also

Notes and references

{{Reflist|30em}}

Further reading

  • {{cite book | last = Andree | first = Richard V.

| title = Programming the IBM 650 Magnetic Drum Computer and Data-Processing Machine

| url = http://www.bitsavers.org/pdf/ibm/650/Andree_Programming_the_IBM_650_Magnetic_Drum_Computer_and_Data-Processing_Machine_1958.pdf

| year = 1958}}

  • {{cite book | last = IBM | title =IBM 650 Magnetic Drum Data-Processing Machine Manual of Operation.

| url =http://www.bitsavers.org/pdf/ibm/650/22-6060-2_650_OperMan.pdf

| year = 1955 | id =22-6060 }}

  • {{cite book | last = IBM | title =IBM 650 Data-Processing System, Customer Engineering Manual of Instruction.

| url =http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/650/22-6284-1_650_CE_Manual_of_Instruction.pdf

| year = 1956 | id =22-6284-1 }}

  • {{cite book | last = IBM | title = IBM Presents the 650 Magnetic Drum Data Processing Machine | url = http://archive.computerhistory.org/resources/text/IBM/IBM.650.1955.102646125.pdf | year = 1955 | id = 32-6770 | access-date = 2006-09-24 | archive-url = https://web.archive.org/web/20120205201824/http://archive.computerhistory.org/resources/text/IBM/IBM.650.1955.102646125.pdf | archive-date = 2012-02-05 | url-status = dead }}
  • {{cite journal | first = Donald E. | last = Knuth

| title = The IBM 650: An Appreciation from the Field

| journal = IEEE Annals of the History of Computing

| volume = 8 | issue = 1 | date = January–March 1986 | pages = 50–55

| doi = 10.1109/MAHC.1986.10010

| s2cid = 34595049

| url = http://ed-thelen.org/comp-hist/KnuthIBM650Appreciation.pdf

}}