Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
IBM 1620
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Small IBM scientific computer released in 1959}} {{Essay-like|date=March 2022}} {{Infobox information appliance | name = IBM 1620 | connectivity = | memory = 20,000–60,000 words | storage = | memory card = | display = | graphics = | input = | controllers = | platform = | power = 2 kW | service = | dimensions = | weight = 550 kg (1210 lbs) | compatibility = | predecessor = [[IBM 650]]; [[IBM 610]]; [[IBM 608]] | successor = [[IBM 1130]] | related = [[IBM 1710]], [[IBM 1720]] | cpu = Transistorized, built with SMS cards, variable 12–72 bit words | os = | title = | manufacturer = [[IBM]] | aka = | logo = File:IBM Logo 1956 1972.svg | logo_size = 120px | image = IBM 1620 Model 1.jpg | image_size = 270px | caption = IBM 1620 Model I, Level H | developer = | family = | media = | type = Scientific [[minicomputer]] | generation = | releasedate = 1959 | lifespan = | price = | discontinued = | unitssold = | unitsshipped = About 2 thousand | website = | CPUspeed = 50 kHz (20 us) | RAMtype = [[Core memory]] }}[[File:IBM 1620 data processing machine on display, Seattle World's Fair, 1962.jpg|thumb|IBM 1620 data processing machine with [[IBM 1627]] plotter, on display at the 1962 [[Seattle World's Fair]]]] The '''IBM 1620''' was a model of scientific [[minicomputer]] produced by [[IBM]]. It was announced on October 21, 1959,<ref name=IBM.intro59>{{cite web |url=http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP1620.html |archive-url=https://web.archive.org/web/20050114203104/http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP1620.html |url-status=dead |archive-date=January 14, 2005 |title=1620 Data Processing System|date=23 January 2003}}</ref> and was then marketed as an inexpensive scientific computer.<ref name=IBM.Europe>{{cite web |url=https://www-03.ibm.com/ibm/history/documents/pdf/emea.pdf |archive-url=https://ghostarchive.org/archive/20221010/https://www-03.ibm.com/ibm/history/documents/pdf/emea.pdf |archive-date=2022-10-10 |url-status=dead |title=Some Key Dates in IBM's Operations in Europe, the Middle East and Africa (EMEA)}}</ref> After a total production of about two thousand machines, it was withdrawn on November 19, 1970. Modified versions of the 1620 were used as the CPU of the [[IBM 1710]] and [[IBM 1720]] Industrial Process Control Systems (making it the first digital computer considered reliable enough for [[real-time computing|real-time]] [[process control]] of factory equipment).<ref name=IBM.intro59/> Being [[variable word length (computer hardware)|variable-word-length]] decimal, as opposed to fixed-word-length pure binary, made it an especially attractive first computer to learn on{{snd}} and hundreds of thousands of students had their first experiences with a computer on the IBM 1620. Core memory cycle times were 20 microseconds for the (earlier) [[#Model I|Model I]], 10 microseconds for the [[#Model II|Model II]] (about a thousand times slower than typical computer main memory in 2006). The Model II was introduced in 1962.<ref name=ChulaStat>{{cite web |url=http://bundhit.acc.chula.ac.th/IBM1620.html |title=The IBM 1620: Just The Right Machine for Chula's Statistics Department |access-date=2017-12-20 |archive-url=https://web.archive.org/web/20171222051550/http://bundhit.acc.chula.ac.th/IBM1620.html |archive-date=2017-12-22 |url-status=dead }}</ref> ==Architecture== ===Memory=== The IBM 1620 Model I was a variable "[[word (data type)|word]]" length decimal ([[binary-coded decimal|BCD]]) computer using [[core memory]]. The Model I core could hold 20,000 decimal digits with each digit stored in six bits.<ref>"... arranged as a 100x100 array of 12-bit locations, each holding 2 decimal digits. (Each decimal digit was encoded in binary using 6 bits.)"</ref><ref name=ChulaStat/> More memory could be added with the IBM 1623 Storage Unit, Model 1 which held 40,000 digits, or the 1623 Model 2 which held 60,000.<ref name=IBM.intro59/> The Model II deployed the IBM 1625 core-storage memory unit,<ref>{{cite book |chapter-url=https://link.springer.com/content/pdf/10.1007/978-3-642-03757-3_16.pdf |archive-url=https://web.archive.org/web/20171222052358/https://link.springer.com/content/pdf/10.1007/978-3-642-03757-3_16.pdf |archive-date=2017-12-22 |url-status=live |author=Oddur Benediktsson |title=History of Nordic Computing 2 |volume=303 |pages=149–155 |doi=10.1007/978-3-642-03757-3_16 |series=IFIP Advances in Information and Communication Technology |year=2009 |isbn=978-3-642-03756-6 |chapter=FORTRAN II – the First Computer Language Used at the University of Iceland }}</ref><ref name=NordBook>{{cite book |title=History of Nordic Computing 2: Second IFIP WG 9.7 Conference |url=https://books.google.com/books?isbn=3642037577 |isbn=978-3642037573 |date=2009 |author1=John Impagliazzo |author2=Timo Järvi |author3=Petri Paju}}</ref> whose memory cycle time was halved by using faster cores, compared to the Model I's (internal or 1623 memory unit): to 10 μs (i.e., the cycle speed was raised to 100 kHz). While the five-digit addresses of either model could have addressed 100,000 decimal digits, no machine larger than 60,000 decimal digits was ever marketed.<ref>Although there are descriptions of a single 100,000-digit machine, designed in the late 1960s, using heavily modified hardware.</ref> <!-- see TALK page, "100,000 digit 1620" --> ===Memory access=== Memory was accessed two decimal digits at the same time (even-odd digit pair for numeric data or one ''[[alphanumeric|alphameric]]'' character for text data). Each decimal digit was six bits, composed of an odd parity '''C'''heck bit, a '''F'''lag bit, and four BCD bits for the value of the digit in the following format:<ref name=Physics>"The main memory was logically arranged as 20,000 6-bit words. Each word comprised four BCD data bits, a "flag" bit, and an odd parity check bit. Though this was its logical arrangement, physically memory was a 100x100 array of 12-bit ferrite core words, which causes a few quirks in the instruction set. All instructions occupied 12 consecutive digits of memory, and were required to start at an even address so that the two-digit opcode could be read in one 12-bit physical word." {{cite web |url=https://www.physics.smu.edu/fattarus/ibm1620.html |title=The IBM 1620 Model 1{{snd}} Physics @ SMU}}</ref> '''C F 8 4 2 1''' The '''F'''lag bit had several uses: * In the least significant digit it was set to indicate a negative number ([[sign-and-magnitude|signed magnitude]]). * It was set to mark the most significant digit of a number (''[[word mark (computer hardware)|word mark]]''). * In the least significant digit of five-digit addresses it was set for [[addressing mode#Memory indirect|indirect address]]ing (an option on the [[#Model I|Model I]], standard on the 1620 Model II). Multi-level indirection<ref name=IBM.intro59/> could be used (the machine could even be put into an infinite indirect addressing loop). * In the middle three digits of five-digit addresses (on the [[IBM 1620 Model II|1620 II]]) they were set to select one of seven [[index register]]s. In addition to the valid BCD digit values there were three ''special'' digit values (these could {{em|not}} be used in calculations): C F 8 4 2 1 1 0 1 0 {{snd}} [[Recordmark character|Record Mark]] (right most end of record, prints as a [[double dagger]] symbol, ‡) 1 1 0 0 {{snd}} Numeric Blank (blank for punched card output formatting) 1 1 1 1 {{snd}} [[Groupmark character|Group Mark]] (right most end of a group of records for disk I/O) [[Instruction set|Instructions]] were fixed length (12 decimal digits), consisting of a two-digit "[[opcode|op code]]", a five-digit "P Address" (usually the ''destination'' address), and a five-digit "Q Address" (usually the ''source'' address or the ''source'' immediate value). Some instructions, such as the B (branch) instruction, used only the P Address, and later smart assemblers included a "B7" instruction that generated a seven-digit branch instruction (op code, P address, and one extra digit because the next instruction had to start on an even-numbered digit). [[Fixed-point arithmetic|Fixed-point]] data "words" could be any size from two decimal digits up to all of memory not used for other purposes. [[Floating-point arithmetic|Floating-point]] data "words" (using the hardware [[floating-point arithmetic|floating-point]] option) could be any size from 4 decimal digits up to 102 decimal digits (2 to 100 digits for the [[Significand|mantissa]] and two digits for the [[exponent]]). The Fortran II compiler offered limited access to this flexibility via a "Source Program Control Card" preceding the Fortran source in a fixed format: *ffkks The * in column one, ''ff'' the number of digits for the mantissa of floating-point numbers (allowing 02 to 28), ''kk'' the number of digits for fixed-point numbers (allowing 04 to 10) and ''s'' is to specify the memory size of the computer to run the code if not the current computer: 2, 4, or 6 for memories of 20,000 or 40,000 or 60,000 digits. The machine had no programmer-accessible registers: all operations were memory to memory (including the [[index register]]s of the [[IBM 1620 Model II|1620 II]]). :''See [[#Architectural difficulties|Architectural difficulties]] section'' ===Character and op codes=== {{Contains special characters |special = uncommon [[Unicode]] characters |fix = Help:Multilingual support |image = Replacement character.svg |link = Specials (Unicode block)#Replacement character |alt = <?> |compact = yes }} The table below lists Alphameric mode characters (and op codes). {{hidden begin |title = Table of character and op codes |titlestyle = background:#ccccff; }} {{Clear}} {| class="wikitable" |- ! rowspan=2 | [[Binary-coded decimal#IBM and BCD|BCD]] character ! colspan=2 | Typewriter ! Printer ! colspan=2 | [[paper tape|Tape]] ! colspan=2 | Card ! colspan=2 | [[Magnetic-core memory|Core]] ! rowspan=2 | MNEMONIC and operation ! rowspan=2 | ''Definition'' and notes |- ! In || Out || Out || In || Out || In || Out || Even || Odd |- | style="text-align:center;"| Blank | style="text-align:center;"| | style="text-align:center;"| | style="text-align:center;"| | <code>C</code> | <code>C</code> | | | <code></code> | <code> </code> | | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code></code> | <code>1</code> | FADD Floating Add | Optional special feature. |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code></code> | <code>2 </code> | FSUB Floating Subtract | Optional special feature. |- | style="text-align:center;"| . | style="text-align:center;"| . | style="text-align:center;"| . | style="text-align:center;"| . | <code> X0 8 21</code> | <code> X0 8 21</code> | 12-3-8<br/>12-1-2-8 | 12-3-8 | <code></code> | <code>21</code> | FMUL Floating Multiply | Optional special feature. |- | style="text-align:center;"| ) | style="text-align:center;"| ) | style="text-align:center;"| ) | style="text-align:center;"| ) | <code> X0C84</code> | <code> X0C84</code> | 12-4-8 | 12-4-8 | <code></code> | <code>4</code> | | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code></code> | <code>4 1</code> | FSL Floating Shift Left | Optional special feature. |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code></code> | <code>42 </code> | TFL Transmit Floating | Optional special feature. |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code></code> | <code>421</code> | BTFL Branch and Transmit Floating | Optional special feature. |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code></code> | <code> 8</code> | FSR Floating Shift Right | Optional special feature. |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code></code> | <code> 81</code> | FDIV Floating Divide | Optional special feature. |- | style="text-align:center;"| + | style="text-align:center;"| + | style="text-align:center;"| + | style="text-align:center;"| + | <code> X0C</code> | <code> X0C</code> | 12 | 12 | <code>1</code> | <code> </code> | BTAM Branch and Transmit Address Immediate | (Model II) |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>1</code> | <code>1</code> | AM Add Immediate | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>1</code> | <code>2 </code> | SM Subtract Immediate | |- | style="text-align:center;"| $ | style="text-align:center;"| $ | style="text-align:center;"| $ | style="text-align:center;"| $ | <code> X C8 21</code> | <code> X C8 21</code> | 11-3-8<br/>11-1-2-8 | 11-3-8 | <code>1</code> | <code>21</code> | MM Multiply Immediate | |- | style="text-align:center;"| * | style="text-align:center;"| * | style="text-align:center;"| * | style="text-align:center;"| * | <code> X84</code> | <code> X84</code> | 11-4-8 | 11-4-8 | <code>1</code> | <code>4</code> | CM Compare Immediate | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>1</code> | <code>4 1</code> | TDM Transmit Digit Immediate | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>1</code> | <code>42 </code> | TFM Transmit Field Immediate | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>1</code> | <code>421</code> | BTM Branch and Transmit Immediate | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>1</code> | <code> 8</code> | LDM Load Dividend Immediate | Optional special feature (Model I).<br/>Standard (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>1</code> | <code> 81</code> | DM Divide Immediate | Optional special feature (Model I).<br/>Standard (Model II). |- | style="text-align:center;"| - | style="text-align:center;"| - | style="text-align:center;"| - | style="text-align:center;"| - | <code> X</code> | <code> X</code> | 11 | 11 | <code>2 </code> | <code> </code> | BTA Branch and Transmit Address | (Model II) |- | style="text-align:center;"| / | style="text-align:center;"| / | style="text-align:center;"| / | style="text-align:center;"| / | <code>0C1</code> | <code>0C1</code> | 0-1 | 0-1 | <code>2 </code> | <code>1</code> | A Add | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>2 </code> | <code>2 </code> | S Subtract | |- | style="text-align:center;"|, | style="text-align:center;"|, | style="text-align:center;"|, | style="text-align:center;"|, | <code>0C8 21</code> | <code>0C8 21</code> | 0-3-8<br/>0-1-2-8 | 0-3-8 | <code>2 </code> | <code>21</code> | M Multiply | |- | style="text-align:center;"| ( | style="text-align:center;"| ( | style="text-align:center;"| ( | style="text-align:center;"| ( | <code>0 84</code> | <code>0 84</code> | 0-4-8 | 0-4-8 | <code>2 </code> | <code>4</code> | C Compare | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>2 </code> | <code>4 1</code> | TD Transmit Digit | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>2 </code> | <code>42 </code> | TF Transmit Field | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>2 </code> | <code>421</code> | BT Branch and Transmit | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>2 </code> | <code> 8</code> | LD Load Dividend | Optional special feature (Model I).<br/>Standard (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>2 </code> | <code> 81</code> | D Divide | Optional special feature (Model I).<br/>Standard (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code> </code> | TRNM Transmit Record No RM | (Model II) |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code>1</code> | TR Transmit Record | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code>2 </code> | SF Set Flag | |- | style="text-align:center;"| = | style="text-align:center;"| = | style="text-align:center;"| = | style="text-align:center;"| = | <code>8 21</code> | <code>8 21</code> | 3-8<br/>1-2-8 | 3-8 | <code>21</code> | <code>21</code> | CF Clear Flag | |- | style="text-align:center;"| @ | style="text-align:center;"| @ | style="text-align:center;"| @ | style="text-align:center;"| @ | <code>C84</code> | <code>C84</code> | 4-8 | 4-8 | <code>21</code> | <code>4</code> | K Control (I/O device) | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code>4 1</code> | DN Dump Numeric | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code>42 </code> | RN Read Numeric | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code>421</code> | RA Read Alphameric | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code> 8</code> | WN Write Numeric | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>21</code> | <code> 81</code> | WA Write Alphameric | |- | style="text-align:center;"| A | style="text-align:center;"| A | style="text-align:center;"| A | style="text-align:center;"| A | <code> X01</code> | <code> X01</code> | 12-1 | 12-1 | <code> 4</code> | <code>1</code> | NOP No Operation | |- | style="text-align:center;"| B | style="text-align:center;"| B | style="text-align:center;"| B | style="text-align:center;"| B | <code> X02 </code> | <code> X02 </code> | 12-2 | 12-2 | <code> 4</code> | <code>2 </code> | BB Branch Back | |- | style="text-align:center;"| C | style="text-align:center;"| C | style="text-align:center;"| C | style="text-align:center;"| C | <code> X0C21</code> | <code> X0C21</code> | 12-3<br/>12-1-2 | 12-3 | <code> 4</code> | <code>21</code> | BD Branch On Digit | |- | style="text-align:center;"| D | style="text-align:center;"| D | style="text-align:center;"| D | style="text-align:center;"| D | <code> X04</code> | <code> X04</code> | 12-4 | 12-4 | <code> 4</code> | <code>4</code> | BNF Branch No Flag | |- | style="text-align:center;"| E | style="text-align:center;"| E | style="text-align:center;"| E | style="text-align:center;"| E | <code> X0C 4 1</code> | <code> X0C 4 1</code> | 12-5<br/>12-1-4 | 12-5 | <code> 4</code> | <code>4 1</code> | BNR Branch No Record Mark | |- | rowspan="2" style="text-align:center;"| F | rowspan="2" style="text-align:center;"| F | rowspan="2" style="text-align:center;"| F | rowspan="2" style="text-align:center;"| F | rowspan=2 | <code> X0C 42 </code> | rowspan=2 | <code> X0C 42 </code> | rowspan=2 | 12-6<br/>12-2-4 | rowspan=2 | 12-6 | rowspan=2 | <code> 4</code> | rowspan=2 | <code>42 </code> | BI Branch Indicator | |- | UMK Unmask<br/>MK Mask | 1710 interrupt feature. Modifiers in Q field. |- | rowspan="2" style="text-align:center;"| G | rowspan="2" style="text-align:center;"| G | rowspan="2" style="text-align:center;"| G | rowspan="2" style="text-align:center;"| G | rowspan=2 | <code> X0421</code> | rowspan=2 | <code> X0421</code> | rowspan=2 | 12-7<br/>12-1-2-4 | rowspan=2 | 12-7 | rowspan=2 | <code> 4</code> | rowspan=2 | <code>421</code> | BNI Branch No Indicator | |- | BO Branch Out<br/>BOLD Branch Out and Load | 1710 interrupt feature. Modifiers in Q field. |- | style="text-align:center;"| H | style="text-align:center;"| H | style="text-align:center;"| H | style="text-align:center;"| H | <code> X0 8</code> | <code> X0 8</code> | 12-8 | 12-8 | <code> 4</code> | <code> 8</code> | H Halt | |- | style="text-align:center;"| I | style="text-align:center;"| I | style="text-align:center;"| I | style="text-align:center;"| I | <code> X0C81</code> | <code> X0C81</code> | 12-9<br/>12-1-8 | 12-9 | <code> 4</code> | <code> 81</code> | B Branch | |- | style="text-align:center;"| -0 | style="text-align:center;"| N/A | style="text-align:center;"| - | style="text-align:center;"| - | style="text-align:center;"| N/A | <code> X</code> | 11-0 | 11-0 | <code> 4 1</code> | <code> </code> | | |- | style="text-align:center;"| J<br/>-1 | style="text-align:center;"| J | style="text-align:center;"| J | style="text-align:center;"| J | <code> X C1</code> | <code> X C1</code> | 11-1 | 11-1 | <code> 4 1</code> | <code>1</code> | | |- | style="text-align:center;"| K<br/>-2 | style="text-align:center;"| K | style="text-align:center;"| K | style="text-align:center;"| K | <code> X C2 </code> | <code> X C2 </code> | 11-2 | 11-2 | <code> 4 1</code> | <code>2 </code> | | |- | style="text-align:center;"| L<br/>-3 | style="text-align:center;"| L | style="text-align:center;"| L | style="text-align:center;"| L | <code> X21</code> | <code> X21</code> | 11-3<br/>11-1-2 | 11-3 | <code> 4 1</code> | <code>21</code> | | |- | style="text-align:center;"| M<br/>-4 | style="text-align:center;"| M | style="text-align:center;"| M | style="text-align:center;"| M | <code> X C 4</code> | <code> X C 4</code> | 11-4 | 11-4 | <code> 4 1</code> | <code>4</code> | | |- | style="text-align:center;"| N<br/>-5 | style="text-align:center;"| N | style="text-align:center;"| N | style="text-align:center;"| N | <code> X4 1</code> | <code> X4 1</code> | 11-5<br/>11-1-4 | 11-5 | <code> 4 1</code> | <code>4 1</code> | BNG Branch No Group Mark | Optional special feature. |- | style="text-align:center;"| O<br/>-6 | style="text-align:center;"| O | style="text-align:center;"| O | style="text-align:center;"| O | <code> X42 </code> | <code> X42 </code> | 11-6<br/>11-2-4 | 11-6 | <code> 4 1</code> | <code>42 </code> | | |- | style="text-align:center;"| P<br/>-7 | style="text-align:center;"| P | style="text-align:center;"| P | style="text-align:center;"| P | <code> X C 421</code> | <code> X C 421</code> | 11-7<br/>11-1-2-4 | 11-7 | <code> 4 1</code> | <code>421</code> | | |- | style="text-align:center;"| Q<br/>-8 | style="text-align:center;"| Q | style="text-align:center;"| Q | style="text-align:center;"| Q | <code> X C8</code> | <code> X C8</code> | 11-8 | 11-8 | <code> 4 1</code> | <code> 8</code> |WAIT Wait for Interrupt |1710 interrupt feature. |- | style="text-align:center;"| R<br/>-9 | style="text-align:center;"| R | style="text-align:center;"| R | style="text-align:center;"| R | <code> X81</code> | <code> X81</code> | 11-9<br/>11-1-8 | 11-9 | <code> 4 1</code> | <code> 81</code> | | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code> 42 </code> | <code> </code> | BS Branch and Select | (Model II) |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code> 42 </code> | <code>1</code> | BX Branch and Modify Index Register | Optional special feature (Model II). |- | style="text-align:center;"| S | style="text-align:center;"| S | style="text-align:center;"| S | style="text-align:center;"| S | <code>0C2 </code> | <code>0C2 </code> | 0-2 | 0-2 | <code> 42 </code> | <code>2 </code> | BXM Branch <wbr/>and Modify Index Register Immediate | Optional special feature (Model II). |- | style="text-align:center;"| T | style="text-align:center;"| T | style="text-align:center;"| T | style="text-align:center;"| T | <code>021</code> | <code>021</code> | 0-3<br/>0-1-2 | 0-3 | <code> 42 </code> | <code>21</code> | BCX Branch Conditionally<wbr/> and Modify Index Register | Optional special feature (Model II). |- | style="text-align:center;"| U | style="text-align:center;"| U | style="text-align:center;"| U | style="text-align:center;"| U | <code>0C 4</code> | <code>0C 4</code> | 0-4 | 0-4 | <code> 42 </code> | <code>4</code> | BCXM Branch Conditionally <wbr/>and Modify Index Register Immediate | Optional special feature (Model II). |- | style="text-align:center;"| V | style="text-align:center;"| V | style="text-align:center;"| V | style="text-align:center;"| V | <code>04 1</code> | <code>04 1</code> | 0-5<br/>0-1-4 | 0-5 | <code> 42 </code> | <code>4 1</code> | BLX Branch and Load Index Register | Optional special feature (Model II). |- | style="text-align:center;"| W | style="text-align:center;"| W | style="text-align:center;"| W | style="text-align:center;"| W | <code>042 </code> | <code>042 </code> | 0-6<br/>0-2-4 | 0-6 | <code> 42 </code> | <code>42 </code> | BLXM Branch <wbr/>and Load Index Register Immediate | Optional special feature (Model II). |- | style="text-align:center;"| X | style="text-align:center;"| X | style="text-align:center;"| X | style="text-align:center;"| X | <code>0C 421</code> | <code>0C 421</code> | 0-7<br/>0-1-2-4 | 0-7 | <code> 42 </code> | <code>421</code> | BSX Branch and Store Index Register | Optional special feature (Model II). |- | style="text-align:center;"| Y | style="text-align:center;"| Y | style="text-align:center;"| Y | style="text-align:center;"| Y | <code>0C8</code> | <code>0C8</code> | 0-8 | 0-8 | <code> 42 </code> | <code> 8</code> | | |- | style="text-align:center;"| Z | style="text-align:center;"| Z | style="text-align:center;"| Z | style="text-align:center;"| Z | <code>0 81</code> | <code>0 81</code> | 0-9<br/>0-1-8 | 0-9 | <code> 42 </code> | <code> 81</code> | | |- | style="text-align:center;"| 0 | style="text-align:center;"| 0 | style="text-align:center;"| 0 | style="text-align:center;"| 0 | <code>0 </code> | <code>0 </code> | 0<br/>12-0 | 0 | <code> 421</code> | <code> </code> | MA Move Address | Optional special feature (Model II). |- | style="text-align:center;"| 1 | style="text-align:center;"| 1 | style="text-align:center;"| 1 | style="text-align:center;"| 1 | <code>1</code> | <code>1</code> | 1 | 1 | <code> 421</code> | <code>1</code> | MF Move Flag | Optional special feature (Model I).<br/>Standard (Model II). |- | style="text-align:center;"| 2 | style="text-align:center;"| 2 | style="text-align:center;"| 2 | style="text-align:center;"| 2 | <code>2 </code> | <code>2 </code> | 2 | 2 | <code> 421</code> | <code>2 </code> | TNS Transmit Numeric Strip | Optional special feature (Model I).<br/>Standard (Model II). |- | style="text-align:center;"| 3 | style="text-align:center;"| 3 | style="text-align:center;"| 3 | style="text-align:center;"| 3 | <code>C21</code> | <code>C21</code> | 3 | 3 | <code> 421</code> | <code>21</code> | TNF Transmit Numeric Fill | Optional special feature (Model I).<br/>Standard (Model II). |- | style="text-align:center;"| 4 | style="text-align:center;"| 4 | style="text-align:center;"| 4 | style="text-align:center;"| 4 | <code> 4</code> | <code> 4</code> | 4 | 4 | <code> 421</code> | <code>4</code> | | |- | style="text-align:center;"| 5 | style="text-align:center;"| 5 | style="text-align:center;"| 5 | style="text-align:center;"| 5 | <code>C 4 1</code> | <code>C 4 1</code> | 5 | 5 | <code> 421</code> | <code>4 1</code> | | |- | style="text-align:center;"| 6 | style="text-align:center;"| 6 | style="text-align:center;"| 6 | style="text-align:center;"| 6 | <code>C 42 </code> | <code>C 42 </code> | 6 | 6 | <code> 421</code> | <code>42 </code> | | |- | style="text-align:center;"| 7 | style="text-align:center;"| 7 | style="text-align:center;"| 7 | style="text-align:center;"| 7 | <code> 421</code> | <code> 421</code> | 7 | 7 | <code> 421</code> | <code>421</code> | | |- | style="text-align:center;"| 8 | style="text-align:center;"| 8 | style="text-align:center;"| 8 | style="text-align:center;"| 8 | <code>8</code> | <code>8</code> | 8 | 8 | <code> 421</code> | <code> 8</code> | | |- | style="text-align:center;"| 9 | style="text-align:center;"| 9 | style="text-align:center;"| 9 | style="text-align:center;"| 9 | <code>C81</code> | <code>C81</code> | 9 | 9 | <code> 421</code> | <code> 81</code> | | |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>8</code> | <code>4</code> | SA Select Address<br/>SACO Select Address, Contact Operate<br/>SAOS Select Analog Output Signal | 1710 feature. Modifiers in Q field |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>8</code> | <code>42 </code> | SLTA Select TAS<br/>SLAR Select ADC Register<br/>SLTC Select Real-Time Clock<br/>SLIC Select Input Channel<br/>SLCB Select Contact Block<br/>SLME Select Manual Entry | 1710 feature. Modifiers in Q field |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>8</code> | <code>F 42 </code> | RNIC Read Numeric Input Channel | 1710 feature. Modifiers in Q field |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>8</code> | <code>F 421</code> | RAIC Read Alphameric Input Channel | 1710 feature. Modifiers in Q field |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>8</code> | <code> 8</code> | WNOC Write Numeric Output Channel | 1710 feature. Modifiers in Q field |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>8</code> | <code> 81</code> | WAOC Write Alphameric Output Channel | 1710 feature. Modifiers in Q field |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code> </code> | BBT Branch on Bit | Optional special feature (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code>1</code> | BMK Branch on Mask | Optional special feature (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code>2 </code> | ORF OR to Field | Optional special feature (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code>21</code> | ANDF AND to Field | Optional special feature (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code>4</code> | CPLF Complement Octal Field | Optional special feature (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code>4 1</code> | EORF Exclusive OR to Field | Optional special feature (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code>42 </code> | OTD Octal to Decimal Conversion | Optional special feature (Model II). |- | style="text-align:center;"| invalid | style="text-align:center;"| | style="text-align:center;"| Ж ❚ | colspan=5 | | <code>81</code> | <code>421</code> | DTO Decimal to Octal Conversion | Optional special feature (Model II). |- | style="text-align:center;"| RM | style="text-align:center;"| ‡ | style="text-align:center;"| (Stop) | style="text-align:center;"| (Stop) | <code>0 8 2 </code> | <code>E</code><br/>(Stop) | 0-2-8 | 0-2-8 | <code></code> | <code> 8 2 </code> | | ''Record Mark'' |- | style="text-align:center;"| GM | style="text-align:center;"| [[File:IBM 1401 Group Mark.GIF|12px]] | style="text-align:center;"| (Stop) | style="text-align:center;"| (Stop) | <code>0 8421</code> | <code>E</code><br/>(Stop) | 0-7-8 | 1-2-4-8 | <code></code> | <code> 8421</code> | | ''Group Mark'' |} {{Clear left}} The table below lists numeric mode characters. {| class="wikitable" |- ! rowspan=2 | Character ! colspan=2 | Typewriter ! colspan=2 | Printer ! colspan=2 | [[paper tape|Tape]] ! colspan=2 | Card ! rowspan=2 | [[Magnetic-core memory|Core]] ! rowspan=2 | ''Definition'' and notes |- ! In || Out || Out || Dump || In || Out || In || Out |- | style="text-align:center;"| Blank | style="text-align:center;"| | style="text-align:center;"| 0 | style="text-align:center;"| 0 | style="text-align:center;"| 0 | <code>C</code> | <code>0 </code> | | 0 | <code>C </code> | |- | style="text-align:center;"| 0 | style="text-align:center;"| 0 | style="text-align:center;"| 0 | style="text-align:center;"| 0 | style="text-align:center;"| 0 | <code>0 </code> | <code>0 </code> | 0<br/>12-0<br/>12 | 0 | <code>C </code> | |- | style="text-align:center;"| 1 | style="text-align:center;"| 1 | style="text-align:center;"| 1 | style="text-align:center;"| 1 | style="text-align:center;"| 1 | <code>1</code> | <code>1</code> | 1<br/>12-1 | 1 | <code> 1</code> | |- | style="text-align:center;"| 2 | style="text-align:center;"| 2 | style="text-align:center;"| 2 | style="text-align:center;"| 2 | style="text-align:center;"| 2 | <code>2 </code> | <code>2 </code> | 2<br/>12-1 | 2 | <code>2 </code> | |- | style="text-align:center;"| 3 | style="text-align:center;"| 3 | style="text-align:center;"| 3 | style="text-align:center;"| 3 | style="text-align:center;"| 3 | <code>C21</code> | <code>C21</code> | 3<br/>12-3<br/>1-2<br/>12-1-2 | 3 | <code>C21</code> | |- | style="text-align:center;"| 4 | style="text-align:center;"| 4 | style="text-align:center;"| 4 | style="text-align:center;"| 4 | style="text-align:center;"| 4 | <code> 4</code> | <code> 4</code> | 4<br/>12-4 | 4 | <code>4</code> | |- | style="text-align:center;"| 5 | style="text-align:center;"| 5 | style="text-align:center;"| 5 | style="text-align:center;"| 5 | style="text-align:center;"| 5 | <code>C 4 1</code> | <code>C 4 1</code> | 5<br/>12-5<br/>1-4<br/>12-1-4 | 5 | <code>C4 1</code> | |- | style="text-align:center;"| 6 | style="text-align:center;"| 6 | style="text-align:center;"| 6 | style="text-align:center;"| 6 | style="text-align:center;"| 6 | <code>C 42 </code> | <code>C 42 </code> | 6<br/>12-6<br/>2-4<br/>12-2-4 | 6 | <code>C42 </code> | |- | style="text-align:center;"| 7 | style="text-align:center;"| 7 | style="text-align:center;"| 7 | style="text-align:center;"| 7 | style="text-align:center;"| 7 | <code> 421</code> | <code> 421</code> | 7<br/>12-7<br/>1-2-4<br/>12-1-2-4 | 7 | <code>421</code> | |- | style="text-align:center;"| 8 | style="text-align:center;"| 8 | style="text-align:center;"| 8 | style="text-align:center;"| 8 | style="text-align:center;"| 8 | <code>8</code> | <code>8</code> | 8<br/>12-8 | 8 | <code>8</code> | |- | style="text-align:center;"| 9 | style="text-align:center;"| 9 | style="text-align:center;"| 9 | style="text-align:center;"| 9 | style="text-align:center;"| 9 | <code>C81</code> | <code>C81</code> | 9<br/>12-9<br/>1-8<br/>12-1-8 | 9 | <code>C 81</code> | |- | style="text-align:center;"| -0 | style="text-align:center;"| <span style="text-decoration: overline">0</span> | style="text-align:center;"| <span style="text-decoration: overline">0</span> | style="text-align:center;"| - | style="text-align:center;"| - | <code> X</code><br/><code> X0C</code> | <code> X</code> | 11-0 | 11-0 | <code> F</code> | |- | style="text-align:center;"| -1 | style="text-align:center;"| <span style="text-decoration: overline">1</span> | style="text-align:center;"| <span style="text-decoration: overline">1</span> | style="text-align:center;"| J | style="text-align:center;"| J | <code> X C1</code> | <code> X C1</code> | 11-1 | 11-1 | <code>CF1</code> | |- | style="text-align:center;"| -2 | style="text-align:center;"| <span style="text-decoration: overline">2</span> | style="text-align:center;"| <span style="text-decoration: overline">2</span> | style="text-align:center;"| K | style="text-align:center;"| K | <code> X C2 </code> | <code> X C2 </code> | 11-2 | 11-2 | <code>CF2 </code> | |- | style="text-align:center;"| -3 | style="text-align:center;"| <span style="text-decoration: overline">3</span> | style="text-align:center;"| <span style="text-decoration: overline">3</span> | style="text-align:center;"| L | style="text-align:center;"| L | <code> X21</code> | <code> X21</code> | 11-3<br/>11-1-2 | 11-3 | <code> F21</code> | |- | style="text-align:center;"| -4 | style="text-align:center;"| <span style="text-decoration: overline">4</span> | style="text-align:center;"| <span style="text-decoration: overline">4</span> | style="text-align:center;"| M | style="text-align:center;"| M | <code> X C 4</code> | <code> X C 4</code> | 11-4 | 11-4 | <code>CF 4</code> | |- | style="text-align:center;"| -5 | style="text-align:center;"| <span style="text-decoration: overline">5</span> | style="text-align:center;"| <span style="text-decoration: overline">5</span> | style="text-align:center;"| N | style="text-align:center;"| N | <code> X4 1</code> | <code> X4 1</code> | 11-5<br/>11-1-4 | 11-5 | <code> F 4 1</code> | |- | style="text-align:center;"| -6 | style="text-align:center;"| <span style="text-decoration: overline">6</span> | style="text-align:center;"| <span style="text-decoration: overline">6</span> | style="text-align:center;"| O | style="text-align:center;"| O | <code> X42 </code> | <code> X42 </code> | 11-6<br/>11-2-4 | 11-6 | <code> F 42 </code> | |- | style="text-align:center;"| -7 | style="text-align:center;"| <span style="text-decoration: overline">7</span> | style="text-align:center;"| <span style="text-decoration: overline">7</span> | style="text-align:center;"| P | style="text-align:center;"| P | <code> X C 421</code> | <code> X C 421</code> | 11-7<br/>11-1-2-4 | 11-7 | <code>CF 421</code> | |- | style="text-align:center;"| -8 | style="text-align:center;"| <span style="text-decoration: overline">8</span> | style="text-align:center;"| <span style="text-decoration: overline">8</span> | style="text-align:center;"| Q | style="text-align:center;"| Q | <code> X C8</code> | <code> X C8</code> | 11-8 | 11-8 | <code>CF8</code> | |- | style="text-align:center;"| -9 | style="text-align:center;"| <span style="text-decoration: overline">9</span> | style="text-align:center;"| <span style="text-decoration: overline">9</span> | style="text-align:center;"| R | style="text-align:center;"| R | <code> X81</code> | <code> X81</code> | 11-9<br/>11-1-8 | 11-9 | <code> F81</code> | |- | style="text-align:center;"| RM | style="text-align:center;"| ‡ | style="text-align:center;"| (Stop, WN)<br/>‡<br/>(DN) | style="text-align:center;"| (Stop) | style="text-align:center;"| ‡ | <code>0 8 2 </code> | <code>E</code><br/>(Stop, WN)<br/><code>0 8 2 </code><br/>(DN) | 0-2-8 | 0-2-8 | <code>C 8 2 </code> | ''Record Mark''<br/>On tape a WN punches EOL instead! |- | style="text-align:center;"| flag RM | style="text-align:center;"| <span style="text-decoration: overline">‡</span> | style="text-align:center;"| (Stop, WN)<br/><span style="text-decoration: overline">‡</span><br/>(DN) | style="text-align:center;"| (Stop) | style="text-align:center;"| W | <code> X8 2 </code> | <code>E</code><br/>(Stop, WN)<br/><code> X8 2 </code><br/>(DN) | 11-2-8<br/>12-2-8 | 11-2-8 | <code> F8 2 </code> | ''Flagged Record Mark''<br/>On tape a WN punches EOL instead! |- | style="text-align:center;"| EOL | style="text-align:center;"| ‡ | style="text-align:center;"| (Stop, WN)<br/>‡<br/>(DN) | style="text-align:center;"| (Stop) | style="text-align:center;"| ‡ | <code>E</code> | <code>E</code><br/>(WN)<br/><code>0 8 2 </code><br/>(DN) | 0-2-8 | 0-2-8 | <code>C 8 2 </code> | ''End of line'' Tape only.<br/>Note: In memory is a Record Mark! |- | style="text-align:center;"| GM | style="text-align:center;"| [[File:IBM 1401 Group Mark.GIF|12px]] | style="text-align:center;"| (Stop, WN)<br/>[[File:IBM 1401 Group Mark.GIF|12px]]<br/>(DN) | style="text-align:center;"| (Stop) | style="text-align:center;"| G | <code>0 8421</code> | <code>0 8421</code> | 0-7-8 | 0-7-8 | <code>C 8421</code> | ''Group Mark'' |- | style="text-align:center;"| flag GM | style="text-align:center;"| <span style="text-decoration: overline">[[File:IBM 1401 Group Mark.GIF|12px]]</span> | style="text-align:center;"| (Stop, WN)<br/><span style="text-decoration: overline">[[File:IBM 1401 Group Mark.GIF|12px]]</span><br/>(DN) | style="text-align:center;"| (Stop) | style="text-align:center;"| X | <code> X8421</code> | <code> X8421</code> | 12-7-8 | 12-7-8 | <code> F8421</code> | ''Flagged Group Mark'' |- | style="text-align:center;"| NB | style="text-align:center;"| @ | style="text-align:center;"| @ | style="text-align:center;"| | style="text-align:center;"| @ | <code>C84</code> | <code>C84</code> | 4-8 | | <code>C 84</code> | ''Numeric Blank'' |- | style="text-align:center;"| flag NB | style="text-align:center;"| <span style="text-decoration: overline">@</span> | style="text-align:center;"| <span style="text-decoration: overline">@</span> | style="text-align:center;"| | style="text-align:center;"| * | <code> X84</code> | <code> X84</code> | 11-4-8 | | <code> F84</code> | ''Flagged Numeric Blank'' |} {{Clear left}} {{hidden end}} ===Invalid character=== The [[IBM 1620 Model I|Model I]] used the [[Cyrillic script|Cyrillic character]] [[Zhe (Cyrillic)|Ж]] (pronounced zh) on the typewriter as a general purpose invalid character with correct parity (invalid parity being indicated with an overstrike "–"). In some 1620 installations it was called a SMERSH, as used in the [[James Bond]] novels that had become popular in the late 1960s. The [[IBM 1620 Model II|Model II]] used a new character ❚ (called "pillow") as a general purpose invalid character with correct parity. ===Architectural difficulties=== Although the IBM 1620's architecture was very popular in the scientific and engineering community, computer scientist [[Edsger Dijkstra]] pointed out several flaws in its design in EWD37, "A review of the IBM 1620 data processing system".<ref>[https://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD37.html E.W. Dijkstra Archive: A review of the IBM 1620 Data Processing System (EWD 37)]</ref> Among these are that the machine's Branch and Transmit instruction together with Branch Back allow only one level of nested subroutine call, forcing the programmer of any code with more than one level to decide where the use of this "feature" would be most effective. <!-- The branch-back address could NOT be saved or restored as there was no instruction to do that. --> He also showed how the machine's paper tape reading support could not properly read tapes containing record marks, since record marks are used to terminate the characters read in storage. One effect of this is that the 1620 cannot duplicate a tape with record marks in a straightforward way: when the record mark is encountered, the punch instruction punches an EOL character instead and terminates. However this was not a crippling problem: * the data can be copied to the end of memory and punched verbatim with a DN instruction instead of WN * tapes were usually duplicated [[offline]]. Most 1620 installations used the more convenient punched card input/output,<ref>{{cite web|url=http://www.textfiles.com/bitsavers/pdf/ibm/1620/Basic_Programming_Concepts_and_the_IBM_1620_Computer_1962.pdf |archive-url=https://web.archive.org/web/20150720184343/http://www.textfiles.com/bitsavers/pdf/ibm/1620/Basic_Programming_Concepts_and_the_IBM_1620_Computer_1962.pdf |title=Basic Programming Concepts and The IBM 1620 Computer |archive-date=2015-07-20 |quote=The punched card is the most widely used media for communication with machines}}</ref> rather than paper tape. The successor to the 1620, the [[IBM 1130]],<ref>"Similar demands for small to medium scientific computers resulted in the IBM 1620 and its successor the IBM 1130." {{cite book |url=https://books.google.com/books?isbn=1483268594 |isbn=978-1483268590 |title=Computer Organization and Assembly Language Programming |author1=James L. Peterson |author2=Werner Rheinboldt |date=2014}}</ref> was based on a totally different, 16-bit binary architecture. (The 1130 line retained one 1620 peripheral, the [[IBM 1627]] drum plotter.) ==Software== [[Image:IBM1620SPSpunchcard.agr.jpg|thumb|IBM 1620 SPS card]] IBM supplied the following software for the 1620: * 1620 Symbolic Programming System (SPS) ([[assembly language]]) * [[Fortran|FORTRAN]] * FORTRAN II{{snd}} required 40,000 digits or more of memory {{anchor|GOTRAN}} * GOTRAN{{snd}} simplified, interpreted version of FORTRAN for "load and go" operation<ref>{{cite web |url=http://hissa.nist.gov/mlists/ibm1620/199901/19990128-2.html |title=Subject: GOTRAN ON THE IBM 1316 DISK STORAGE PACK (Serial No. K7402) |access-date=2006-03-03 |url-status=dead |archive-url=https://web.archive.org/web/20060221192243/http://hissa.nist.gov/mlists/ibm1620/199901/19990128-2.html |archive-date=2006-02-21 }}</ref> * Monitor I and Monitor II{{snd}} disk [[operating system]]s. The Monitors provided disk based versions of 1620 SPS IId, FORTRAN IId as well as a DUP (Disk Utility Program). Both Monitor systems required 20,000 digits or more of memory and one or more [[#Disk drives|1311 disk drives]]. A collection of IBM 1620 related manuals in PDF format exists at bitsavers.<ref>{{Cite web |url=http://www.bitsavers.org/pdf/ibm/1620/ |title=Index of /pdf/ibm/1620 |access-date=2006-04-06 |archive-url=https://web.archive.org/web/20060211020440/http://bitsavers.org/pdf/ibm/1620/ |archive-date=2006-02-11 |url-status=dead }}</ref> ==1620 non-decimal arithmetic== Since the ''Model I'' used in-memory lookup tables for addition/subtraction,<ref name=Swansea>{{cite web |url=https://www.swansea.ac.uk/library/archive-and-research-collections/hocc/computersandsoftware/earlycomputers/ibm1620 |title=IBM 1620 |website=Swansea University{{snd}} swansea.ac.uk |access-date=2017-12-19 |archive-url = https://web.archive.org/web/20171222105457/http://www.swansea.ac.uk/library/archive-and-research-collections/hocc/computersandsoftware/earlycomputers/ibm1620 |archive-date=2017-12-22 |url-status=dead}}</ref> limited bases (5 to 9) unsigned number arithmetic could be performed by changing the contents of these tables, but noting that the hardware included a ten's complementer for subtraction (and addition of oppositely signed numbers). To do fully signed addition and subtraction in bases 2 to 4 required detailed understanding of the hardware to create a "folded" addition table that would fake out the complementer and carry logic. Also the addition table would have to be reloaded for normal base 10 operation every time address calculations were required in the program, then reloaded again for the alternate base. This made the "trick" somewhat less than useful for any practical application. Since the ''Model II'' had addition and subtraction fully implemented in hardware, changing the table in memory could not be used as a "trick" to change arithmetic bases. However an optional special feature in hardware for octal input/output, logical operations, and base conversion to/from decimal was available. Although bases other than 8 and 10 were not supported, this made the Model II very practical for applications that needed to manipulate data formatted in octal by other computers (e.g., the IBM 7090). ==Model I== [[Image:1620 Model I Layout.png|thumb|Drawing showing internal layout of "gates"]] The '''IBM 1620 Model I''' (commonly called "1620" from 1959 until the 1962 introduction of the [[#Model II|Model II]]) was the original. It was produced as inexpensively as possible, to [[#Under $1620|keep the price low]]. * [[#CADET|It lacked]] conventional [[arithmetic logic unit|ALU]] hardware: arithmetic was done by [[core memory|memory table]] lookup. Addition and subtraction used a 100-digit table (at address 00300..00399). Multiplication used a 200-digit table (at address 00100..00299).<ref name=FP.CE>{{cite book |title=227-5630-1 IBM 1620 Floating Point Feature CE Manual |url=http://bitsavers.trailing-edge.com/pdf/ibm/1620/fe/227-5630-1_IBM_1620_Floating_Point_Feature_CE_Manual_1962.pdf |archive-url=https://ghostarchive.org/archive/20221010/http://bitsavers.trailing-edge.com/pdf/ibm/1620/fe/227-5630-1_IBM_1620_Floating_Point_Feature_CE_Manual_1962.pdf |archive-date=2022-10-10 |url-status=live |publisher=IBM Corporation}}</ref>{{rp|p.4.4}} The basic machine used software subroutines for division, although optional divide hardware could be installed that used a repeated subtraction algorithm. Floating-point arithmetic instructions were an available option (if the divide option was installed). * The first 20,000 decimal digits of [[magnetic-core memory]] were internal to the [[central processing unit|CPU]] itself (which reduced the floor space requirements of the basic system). Expansion to either 40,000 or 60,000 decimal digits required the addition of an IBM 1623 Memory unit. The memory cycle time was 20 [[microsecond|μs]] (that is, the memory speed was 50 [[kilohertz|kHz]] = 1/20 of a MHz). A Memory Address Register Storage (MARS)<ref name=FP.CE/> Core memory read, clear, or write operation took 2 μs and each write operation was automatically (but not necessarily immediately) preceded by a read or clear operation of the same "register(s)" during the 20 μs memory cycle. * The central processor clock speed was 1 [[megahertz|MHz]], which was divided by 20 by a 10-position [[ring counter]] to provide the system timing and control signals. Instructions took eight memory cycles (160 μs) to fetch and a variable number of memory cycles to execute. Indirect addressing<ref name=IBM.intro59/> added four memory cycles (80 μs) for each level of indirection. * It weighed about {{convert|1210|lb|kg}}.<ref>{{Cite web |url=https://www.ed-thelen.org/comp-hist/BRL61-ibm1401.html#IBM-1620 |title=IBM 1620|last=Weik|first=Martin H.|date=Mar 1961 |website=ed-thelen.org |series=A Third Survey of Domestic Electronic Digital Computing Systems }}</ref> ==Model II== The '''IBM 1620 Model II''' (commonly called simply the Model II) was a vastly improved implementation, compared to the original [[#Model I|Model I]]. The Model II was introduced in 1962. * It had basic [[arithmetic logic unit|ALU]] hardware for addition and subtraction, but multiplication was still done by [[core memory|in-core memory]] table lookup, using a 200-digit table (at address 00100..00299). [[core memory|Memory addresses]] at address 00300..00399 were freed by the replacement of the addition table with hardware, resulting in storage of two selectable "bands" of seven five-digit [[index register]]s. * Rather than being an available option, as in the Model I, the divide hardware using a repeated subtraction algorithm, was built in. [[Floating-point arithmetic]] was an available option, as were octal input/output, logical operations, and base conversion to/from decimal instructions. * The entire core memory was in the IBM 1625 memory unit. Memory cycle time was halved compared to the Model I's (internal or 1623 memory unit), to 10 [[microsecond|μs]] (i.e., the cycle speed was raised to 100 [[kilohertz|kHz]]) by using faster cores.<ref name=NordBook/> A Memory Address Register Storage (MARS) core memory read, clear, or write operation took 1.5 μs and each write operation was automatically (but not necessarily immediately) preceded by a read or clear operation of the same "register(s)" during the 10 μs memory cycle. * The processor clock speed was also doubled, to 2 [[megahertz|MHz]], which was still divided by 20 by a 10 position [[ring counter]] to provide the system timing/control signals. The fetch/execute mechanism was completely redesigned, optimizing the timing and allowing partial fetches when the P or Q fields were not needed. Instructions took either 1, 4, or 6 memory cycles (10 μs, 40 μs, or 60 μs) to fetch and a variable number of memory cycles to execute. Indirect addressing<ref name=IBM.intro59/> added three memory cycles (30 μs) for each level of [[indirection]]. Indexed addressing added five memory cycles (50 μs) for each level of indexing. Indirect and indexed addressing could be combined at any level of indirection or indexing.<ref>"Multi-level indirection could be used (you could even put the machine in an infinite indirect addressing loop), and in the middle three digits of five-digit addresses (on the 1620 II) they were set to select one of seven index registers. {{cite book |url=https://books.google.com/books?isbn=1456751158 |isbn=978-1456751159 |title=History of Computer Graphics |publisher=DLR Associates Series |author=Dan Ryan |date=2011}}</ref> ==Models I and II consoles== While the ''Lower console'' for both the Model 1<ref name=ModOne.1620>{{cite web |url=https://www.bitsavers.org/pdf/ibm/1620/A26-5706-3_IBM_1620_CPU_Model_1_Jul65.pdf |title=IBM 1620 Central Processing Unit, Model 1 |page=28 |access-date=2017-12-18 |archive-url=https://web.archive.org/web/20171009212302/http://www.bitsavers.org/pdf/ibm/1620/A26-5706-3_IBM_1620_CPU_Model_1_Jul65.pdf |archive-date=2017-10-09 |url-status=dead }}</ref> and the Model 2<ref name=ModTwo.1620>{{cite web |url=https://www.bitsavers.org/pdf/ibm/1620/A26-5781-2_IBM_1620_CPU_Model_2_Nov65.pdf |title=IBM 1620 Central Processing Unit, Model 2 |page=71 |access-date=2017-12-18 |archive-url=https://web.archive.org/web/20190525180847/http://bitsavers.org/pdf/ibm/1620/A26-5781-2_IBM_1620_CPU_Model_2_Nov65.pdf |archive-date=2019-05-25 |url-status=dead }}</ref> IBM 1620 systems had the same lamps and switches, the ''Upper console'' of the pair were partly different. ===Upper console=== {| class="wikitable" border="1" ! class="unsortable"|'''Model I''' (Upper console) | class="unsortable"|#Lamps ! class="unsortable"|'''Model II''' (Upper console) | class="unsortable"|#Lamps |- | Instruction and Execute Cycle | 60 | Control Gates | 60 |- | Control Gates | 35 | Input-Output | 35 |- | Input-Output | 15 | Inst & Exec Cycle | 15 |} The balance of the ''Upper console'' was the same on both models: * Operation Register{{snd}} 25 lamps * Memory Buffer Register{{snd}} 30 lamps * Memory Address Register{{snd}} 25 lamps * Memory Address Register Display Selector – Rotary switch, 12 positions ===Lower console=== * Emergency Off Pull{{snd}} Pull switch * Check Condition status lamps/switches{{snd}} 15 lamps & 5 toggle switches * Program Switches{{snd}} 4 toggle switches * Console operator lights/switches{{snd}} 13 lights, 1 power switch, and 12 buttons ===Console typewriter=== The ''Model I'' console typewriter was a modified [[IBM Electric typewriter|Model B1]], interfaced by a set of relays, and it typed at only 10 characters per second. There were a set of instructions that wrote to the typewriter, or read from it. The general '''RN''' (read numeric) and '''WN''' (write numeric) instructions had assembly language mnemonics that supplied the "device" code in the second address field, and the control code in the low-order digit of the second address field. * '''WNTY''': '''W'''rite '''N'''umeric '''TY'''pewriter: each memory location contained a 6-bit character in the range of 000000 to 001001; with this instruction, each memory location was rendered as one of the characters "0" through "9". * '''WATY''': '''W'''rite '''A'''lphanumeric '''TY'''pewriter: each pair of memory locations contained two 6-bit digits that appeared on the typewriter as one of the 64 characters that could appear. * '''RNTY''': '''R'''ead '''N'''umeric '''TY'''pewriter: read a numeric value from the typewriter keyboard * '''RATY''': '''R'''ead '''A'''lphanumeric '''TY'''pewriter: read a character from the keyboard and store as a two-digit alphanumeric character * '''TBTY''': '''T'''a'''B''' '''TY'''pewriter. Tabs had to be set manually, so this instruction was rarely used. * '''RCTY''': '''R'''eturn '''C'''arriage '''TY'''pewriter: Caused the typewriter to do what we now call a CR/LF sequence. To simplify input and output, there were two instructions: * '''TNS''': '''T'''ransmit '''N'''umeric '''S'''trip: Converts a two-digit alphanumeric representation of "0" to "9" to a single-digit representation * '''TNF''': '''T'''ransmit '''N'''umeric '''F'''ill: Converts a single-digit representation of digits to a sequence to two-digit alphanumeric sequence that represented "0" through "9" The ''Model II'' used a modified [[IBM Selectric typewriter|Selectric]] typewriter, which could type at 15.5 cps{{snd}} a 55% improvement. ==Peripherals== [[File:IBM 1627 plotter.mw.jpg|thumb|[[IBM 1627]] drum plotter]] Available peripherals were: * [[IBM 1621]]{{snd}} Paper tape reader * [[IBM 1622]]{{snd}} Punch card reader/punch * [[IBM 1624]]{{snd}} Paper tape punch (sat inside the 1621 on a shelf) * [[IBM 1626]]{{snd}} Plotter controller * [[IBM 1627]]{{snd}} Plotter * [[IBM 1311]]{{snd}} Disk drive: Model 3 master drive controlling up to 3–Model 2 slave drives.<ref name=IBM.1311>{{cite web |url=http://www-03.ibm.com/ibm/history/exhibits/storage/storage_1311.html |archive-url=https://web.archive.org/web/20050121014322/http://www-03.ibm.com/ibm/history/exhibits/storage/storage_1311.html |url-status=dead |archive-date=January 21, 2005 |title=IBM 1311|date=23 January 2003}}</ref><ref>"... storage for 2 million characters.</ref> * [[IBM 1443]]{{snd}} [[Lineprinter|Printer]], flying type bar * [[IBM 1405]]{{snd}} Disk Drive available as [[Request price quotation|RPQ]] (request price quotation) The standard "output" mechanism for a program was to punch cards, which was faster than using the typewriter. These punched cards were then fed through an [[IBM 407]] mechanical calculator which could be programmed to print two cards, thus being able to use the additional print columns available on the 407. All output was synchronous, and the processor paused while the [[Input/Output]] (I/O) device produced the output, so the typewriter output could completely dominate program running time. A faster output option, the [[IBM 1443]] printer was introduced May 6, 1963,<ref name=IBM.196x>"1963 : On May 6, the IBM 1443 printer, for use with the IBM 1620 data processing system, makes its debut." {{cite web |url=https://www-03.ibm.com/ibm/history/exhibits/dpd50/dpd50_chronology2.html |archive-url=https://web.archive.org/web/20100820215557/http://www-03.ibm.com/ibm/history/exhibits/dpd50/dpd50_chronology2.html |url-status=dead |archive-date=August 20, 2010 |title=DPD chronology|date=23 January 2003}}</ref> and its 150–600 lines/minute capability was available for use with either model of the 1620.<ref name=x1620.1443>{{cite web |url=http://bitsavers.trailing-edge.com/pdf/ibm/1620/A26-5730-2_1443_printer_for_1620.pdf |archive-url=https://ghostarchive.org/archive/20221010/http://bitsavers.trailing-edge.com/pdf/ibm/1620/A26-5730-2_1443_printer_for_1620.pdf |archive-date=2022-10-10 |url-status=live |series=IBM Systems Reference Library |title=IBM 1443 PRINTER for 1620/1710 Systems}}</ref><ref>This publication describes the IBM 1443 Printer as an on-line output unit for the 1620 Data Processing Systems, :Models 1 and. 2, and for the 1710 Control System. File No. 1620/1710-03. Form A26-5730-2</ref> It could print either 120 or 144 columns. The character width was fixed, so it was the paper size that changed; the printer printed 10 characters to the inch, so a printer could print a maximum of 12 inches or 14.4 inches of text. In addition, the printer had a buffer, so the I/O delay for the processor was reduced. However, the print instruction would block if the line had not completed. ==Operating procedures== The "operating system" for the computer constituted the human operator, who would use controls on the computer [[system console|console]], which consisted of a [[front panel]] and typewriter, to load programs from the available bulk storage media such as decks of punched cards or rolls of paper tape that were kept in cabinets nearby. Later, the model 1311 disc storage device attached to the computer enabled a reduction in the fetch and carry of card decks or paper tape rolls, and a simple "Monitor" operating system could be loaded to help in selecting what to load from disc.<ref name=IBM.1311/><ref>"... 2 million characters, the equivalent of approximately 25,000 punched cards or a fifth of a reel of magnetic tape."</ref> A standard preliminary was to clear the computer memory of any previous user's detritus{{snd}} being magnetic cores, the memory retained its last state even if the power had been switched off. This was effected by using the console facilities to load a simple computer program via typing its machine code at the console typewriter, running it, and stopping it. This was not challenging as only one instruction was needed such as 160001000000, loaded at address zero and following. This meant ''transmit field immediate'' (the 16: two-digit op-codes) to address 00010 the immediate constant field having the value 00000 (five-digit operand fields, the second being from address 11 back to 7), decrementing source and destination addresses until such time as a digit with a "flag" was copied. This was the normal machine code means of copying a constant of up to five digits. The digit string was addressed at its low-order end and extended through lower addresses until a digit with a flag marked its end. But for this instruction, no flag would ever be found because the source digits had shortly before been overwritten by digits lacking a flag. Thus the operation would roll around memory (even overwriting itself) filling it with all zeroes until the operator grew tired of watching the roiling of the indicator lights and pressed the ''Instant Stop - Single Cycle Execute'' button. Each 20,000 digit module of memory took just under one second to clear. On the [[IBM 1620 Model II|1620 II]] this instruction would ''NOT'' work (due to certain optimizations in the implementation). Instead there was a button on the console called ''Modify'' which when pressed together with the ''Check Reset'' button, when the computer was in Manual mode, would set the computer in a mode that would clear all of memory in a tenth of one second regardless of how much memory you had; when you pressed ''Start''. It also stopped automatically when memory was cleared, instead of requiring the operator to stop it. Other than typing machine code at the console, a program could be loaded via either the paper tape reader, the card reader, or any disk drive. Loading from either tape or disk required first typing a "[[Bootstrapping (computing)|bootstrap]]" routine on the console typewriter. The card reader made things easier because it had a special ''Load'' button to signify that the first card was to be read into the computer's memory (starting at address 00000) and executed (as opposed to just starting the card reader, which then awaits commands from the computer to read cards){{snd}} this is the "bootstrap" process that gets into the computer just enough code to read in the rest of the code (from the card reader, or disc, or...) that constitutes the loader that will read in and execute the desired program. Programs were prepared ahead of time, offline, on paper tape or punched cards. But usually the programmers were allowed to run the programs personally, hands-on, instead of submitting them to operators as was the case with mainframe computers at that time. And the console typewriter allowed entering data and getting output in an interactive fashion, instead of just getting the normal printed output from a blind batch run on a pre-packaged data set. As well, there were four [[sense switch|program switch]]es on the console whose state a running program could test and so have its behavior directed by its user. The computer operator could also stop a running program (or it may come to a deliberately programmed stop) then investigate or modify the contents of memory: being decimal-based, this was quite easy; even floating-point numbers could be read at a glance. Execution could then be resumed, from any desired point. Aside from debugging, scientific programming is typically exploratory, by contrast to commercial data processing where the same work is repeated on a regular schedule. ===Console=== [[File:IBM 1620 Memory address register display selector.jpg|thumb|IBM 1620 Memory address register display selector switch]] The most important items on the 1620's console were a pair of buttons labeled ''Insert'' & ''Release'', and the console typewriter. * Insert – Pressing this key with the computer in ''Manual'' mode reset the program counter (in the MARS core memory) to zero, switched the computer into ''Automatic'' and ''Insert'' modes, and simulated the execution of a Read Numeric from Typewriter to address zero (unlocked the typewriter keyboard, shifted the typewriter into numeric mode). Note: unlike a real Read Numeric from Typewriter, ''Insert'' mode would force a ''Release'' after 100 digits had been typed to prevent overwriting the arithmetic tables. * Release – Pressing this key while doing a Read from the Typewriter terminated the Read, switched the computer into ''Manual'' mode, and locked the typewriter keyboard. The typewriter is used for operator input/output, both as the main console control of the computer and for program controlled input/output. Later models of the typewriter had a special key marked ''R-S'' that combined the functions of the console ''Release'' & ''Start'' buttons (this would be considered equivalent to an ''Enter'' key on a modern keyboard). Note: several keys on the typewriter did not generate input characters, these included ''Tab'' and ''Return'' (the 1620s alphameric and numeric BCD character sets lacked character codes for these keys). The next most important items on the console were the buttons labeled ''Start'', ''Stop-SIE'', and ''Instant Stop-SCE''. * Start – Pressing this key with the computer in ''Manual'' mode switched the computer to ''Automatic'' mode (causing the computer to begin executing at the address in the program counter). * Stop-SIE – Pressing this key with the computer in ''Automatic'' mode switched the computer to ''Manual'' mode when the currently executing instruction completes. Pressing this key with the computer in ''Manual'' mode switched the computer into ''Automatic'' mode for one instruction. * Instant Stop-SCE – Pressing this key with the computer in ''Automatic'' mode switched the computer into ''Automatic/Manual'' mode at the end of the current memory cycle. Pressing this key with the computer in ''Manual'' or ''Automatic/Manual'' mode switched the computer into ''Automatic/Manual'' mode and executed one memory cycle. For program debugging there were the buttons labeled ''Save'' & ''Display MAR''. * Save – Pressing this key with the computer in ''Manual'' mode saved the program counter into another register in the MARS core memory and activated ''Save'' mode. When a Branch Back instruction was executed in ''Save'' mode, it copied the saved value back to the program counter (instead of copying the return address register as it normally did) and deactivated ''Save'' mode. This was used during debugging to remember where the program had been stopped to allow it to be resumed after the debugging instructions that the operator had typed on the typewriter had finished. Note: the MARS register used to save the program counter in was also used by the ''Multiply'' instruction, so this instruction and the ''Save'' mode were incompatible! However, there was no need to use multiply in debugging code, so this was not considered to be a problem. * Display MAR – Pressing this key with the computer in ''Manual'' mode displayed the selected MARS register and the contents of the memory at that address on the console lamps. {| class="wikitable" |- !"Breakpoint" procedure !Notes |- |Press ''Stop-SIE'' |Stop the computer at the end of the current instruction. |- |Press ''Save'' |Save the address to resume execution at. |- |Press ''Insert'' |Unlocks typewriter keyboard and shifts into numeric mode. |- |Type 35xxxxx0010036xxxxx0010042<br/> |xxxxx is the address that you plan to set the breakpoint at. |- |Press ''Release'' |Locks typewriter keyboard. |- |Press ''Start'' |Begin execution. Allow the 12 digit instruction to print out. |- |Press ''Release'' |Stops the Dump Numeric. |- |Press ''Start'' |Begin execution. |- |Type 48 |Replace the opcode of the instruction to "break" at with a Halt opcode. |- |Press ''Release'' |Locks typewriter keyboard. |- |Press ''Start'' |Resume execution. Wait until the computer halts at the "breakpoint". |- |Press ''Insert'' |Unlocks typewriter keyboard and shifts into numeric mode. |- |Type 36xxxxx0010049xxxxx<br/> |xxxxx is the address that you previously set the breakpoint at, you are now going to clear it. |- |Press ''Release'' |Locks typewriter keyboard. |- |Press ''Start'' |Begin execution. |- |Type oo |oo is the 2 digit opcode the original 12 digit instruction previously printed out. |- |Press ''Release'' |Locks typewriter keyboard. |- |Press ''Stop-SIE'' |The machine is now ready to resume execution from the location of the (now cleared) "breakpoint". You can perform any required debugging actions now, before continuing. |} All of main memory could be cleared from the console by entering and executing a transfer instruction from address to address +1, this would overwrite any word mark, that would normally stop a transfer instruction, and wrap around at the end of memory. After a moment, pressing Stop would stop the transfer instruction and memory would be cleared. ===IBM 1621/1624 Paper Tape reader/punch=== [[File:IMB1620 and IBM 1621 with paper tape.jpg|thumb|User holding paper tape at the IBM 1620 with the IBM 1621 paper tape reader in background, IBM headquarters, White Plains, NY, 1961]] The '''IBM 1621 Paper Tape Reader''' could read a maximum of 150 characters per second;<br/>The '''IBM 1624 Paper Tape Punch''' could output a maximum of 15 characters/second.<ref name=IBM.intro59/> Both units: * could handle eight-channel paper tape * performed self-checking to ensure accuracy * accommodated both numerical and alphabetic information in single-character coding. The [[IBM 1621|1621]] Tape Reader and [[IBM 1624|1624]] Tape Punch included controls for: * Power switch – If "on" the unit reader is powered up when the CPU is powered on. * Reel-Strip switch – This switch selects whether Reels or Strips of paper tape are used. * Reel power key – Applies power to the supply and takeup Reels to position the tape for reading and places the reader in ready state. * Non-process runout key – Feeds tape until the reader is empty and takes the reader out of ready state. {| class="wikitable" |- !Bootstrap procedure !Notes |- |Press ''Insert'' |Unlocks typewriter keyboard and shifts into numeric mode. |- |Type 36xxxxx0030049yyyyy<br/> |xxxxx is the address to load the tape into.<br/>yyyyy is the address to begin execution. |- |Press ''Release'' |Locks typewriter keyboard. |- |Press ''Start'' |Begin execution. |} ===IBM 1622 Card reader/punch=== The '''[[IBM 1622|IBM 1622 Card reader/punch]]''' could: * read a maximum of 250 cards per minute * punch a maximum of 125 cards/minute.<ref name=IBM.intro59/> The 1622's controls were divided into three groups: 3 punch control rocker switches, 6 buttons, and 2 reader control rocker switches. Punch Rocker switches: * Punch Off/Punch On – This rocker turned the punch mechanism off or on. * Select No-Stop/Select Stop – This rocker selected if mispunched cards (deposited in the punch error select stacker instead of the normal punch stacker) let the punch continue or caused a check stop. * Non-Process Runout – This rocker with the punch hopper empty, "ranout" remaining cards from the punch mechanism. Buttons: * Start punch – Pressing this key with the punch idle and on, started the punch. The computer could now punch cards. * Stop punch – Pressing this key with the punch active, stopped the punch. * Check Reset – Pressing this key reset all "error check" conditions in the reader and punch. * Load – Pressing this key with the reader idle and on and the computer in ''Manual'' mode started the reader, reset the program counter (in the MARS core memory) to zero, read one card into the reader's buffer and checked the card for errors, and simulated the execution of a Read Numeric from Card Reader to address zero (reading the 80 characters of the reader's buffer into memory addresses 00000 to 00079), then switched the computer into ''Automatic'' mode (starting execution at the address in the program counter). * Stop reader – Pressing this key with the reader active, stopped the reader. * Start reader – Pressing this key with the reader idle and on, started the reader and read one card into the reader's buffer and checked the card for errors. The computer could now read cards. Reader Rocker switches: * Non-Process Runout – This rocker with the read hopper empty, "ranout" remaining cards from the reader mechanism. * Reader Off/Reader On – This rocker turned the reader mechanism off or on. {| class="wikitable" |- !Bootstrap procedure !Notes |- |Press ''Load'' | |} ===Disk drives=== [[File:BRL64-IBM 1311 DiskDrives.jpg|thumb|IBM 1311 Disk Drives{{snd}} Model 2 (Slave) & Model 3 (Master), attached to an IBM 1620 II]] The [[IBM 1311|1311]] Disk drive controls. * Module light – This light shows the drive number. When it lights the drive is ready for access. * Compare-Disable key-switch – When this (Master only) switch is in the ON position and the Write Address button is pressed a full track write may be performed without comparing addresses. Used to format disk packs. * Select Lock light – When this (Master only) lights one or more of the drives has malfunctioned. No disk access can be performed. * Write Address button/light – This (Master only) key controls writing sector addresses. Pressing it toggles this enable and turns its light on/off. * Enable-Disable toggle-switch – This switch enables or disables access to the drive. If this switch is disabled on the Master, all drives are disabled regardless of the state of their own switches. Also controls the disk usage time meter(s). * Start Stop button – Pressing this key starts or stops the disk drive motor. The motor must be stopped to open the lid and change disk packs. {| class="wikitable" |- !Bootstrap procedure !Notes |- |Press ''Insert'' |Unlocks typewriter keyboard and shifts into numeric mode. |- |Type 3400032007013600032007024902402<br/>x<br/>y1963611300102 |x{{snd}} Specifies source of Monitor control cards: 1=typewriter, 3=paper tape, 5=cards<br/>y{{snd}} Specifies disk drive on which Monitor resides: 1, 3, 5, 7<br/>02402 is the address of the entry point of the Monitor program. |- |Press ''Release'' |Locks typewriter keyboard. |- |Press ''Start'' |Begin execution. |} {| class="wikitable" |- !Restart procedure !Notes |- |Press ''Insert'' |Unlocks typewriter keyboard and shifts into numeric mode. |- |Type 490225<sup>FLG</sup>6<br/> |02256̅ is the address of the location containing the address of the restart point of the Monitor program.<br/>Note: this procedure assumes the Monitor is already loaded in memory |- |Press ''Release'' |Locks typewriter keyboard. |- |Press ''Start'' |Begin execution. |} ===General=== The FORTRAN II compiler and SPS assembler were somewhat cumbersome to use<ref>{{cite book |url=http://www.bitsavers.org/pdf/ibm/1620/C26-5619-1_fortran.pdf |series=IBM Systems Reference Library |title=1620 FORTRAN (with FORMAT) |pages=51–56 |archive-url=https://web.archive.org/web/20090109151231/http://www.bitsavers.org/pdf/ibm/1620/C26-5619-1_fortran.pdf |archive-date=2009-01-09 |url-status=live}}</ref><ref>{{cite book |url=http://www.bitsavers.org/pdf/ibm/1620/C26-5876-2_FORTRAN_II_Mar65.pdf |series=IBM Systems Reference Library |title=IBM 1620 FORTRAN II Programming System Reference Manual |pages=22–28 |archive-url=https://web.archive.org/web/20090109145636/http://www.bitsavers.org/pdf/ibm/1620/C26-5876-2_FORTRAN_II_Mar65.pdf |archive-date=2009-01-09 |url-status=live}}</ref> by modern standards, however, with repetition, the procedure soon became automatic and you no longer thought about the details involved. {| class="wikitable" |- !FORTRAN II compilation procedure !Notes |- |Set the Program Switches as follows: #''OFF'' (No Source listing) #''OFF'' (No Batch compilation) #''OFF'' (Source is entered from cards) #''OFF'' (Only used if 3 is ''ON'') |Pass I options |- |Set Overflow Check switch to Program and all others to Stop | |- |Press ''Reset'' | |- |Load blank cards (face down 12-edge first) into the Punch hopper then press ''Punch Start'' | |- |Load Pass I of the compiler (face down 9-edge first) into the Read hopper then press ''Load'' |Wait for Pass I to load and print on the typewriter "ENTER SOURCE PROGRAM, PRESS START" |- |Remove Pass I of the compiler from the Read stacker | |- |Load the program source deck (face down 9-edge first) into the Read hopper then press ''Start'' |Wait for Pass I to complete and print on the typewriter "TURN SW 1 ON FOR SYMBOL TABLE, PRESS START" |- |Turn Program Switch 1 ''OFF'' then press ''Start'' |If a symbol table listing is desired for debugging, turn Program Switch 1 ''ON'' instead. The symbol table listing will be printed on the typewriter.<br/>Wait for Pass I to print on the typewriter "END OF PASS 1" |- |Set the Program Switches as follows: #''OFF'' (No statement number/address listing) #''OFF'' (Not used) #''OFF'' (No trace for IF statements) #''OFF'' (No trace for arithmetic statements) |Pass II options |- |Set Overflow Check switch to Program and all others to Stop | |- |Press ''Reset'' | |- |Load blank cards (face down 12-edge first) into the Punch hopper then press ''Punch Start'' | |- |Load Pass II of the compiler (face down 9-edge first) into the Read hopper then press ''Load'' |Wait for Pass II to load |- |Remove Pass II of the compiler from the Read stacker | |- |Remove the intermediate output of Pass I from the Punch stacker, then load it (face down 9-edge first) into the Read hopper and press ''Reader Start'' then ''Start'' |Wait for Pass II to complete and print on the typewriter "SW 1 ON TO PUNCH SUBROUTINES, PRESS START" |- |Remove the intermediate output from the Reader stacker | |- |Turn Program Switch 1 ''ON'', load the Subroutine deck (face down 9-edge first) into the Read hopper, then press ''Reader Start'' then ''Start'' |Wait for Pass II to print on the typewriter "END OF PASS II" |- |Remove the Subroutine deck from the Reader stacker and the completed Object deck from the Punch stacker | |} GOTRAN was much simpler to use, as it directly produced an executable in memory. However it was not a complete FORTRAN implementation. To improve this various third-party FORTRAN compilers were developed. One of these was developed by Bob Richardson,<ref>{{cite book |title=History of Computer Graphics: Dlr Associates Series |url=https://books.google.com/books?isbn=1456751158 |isbn=978-1456751159 |author=Dan Ryan |date=2011 |quote=developed by Bob Richardson, a programmer at Rice University}}</ref><ref>User:Br6cycles3, in his/first and only edit to date (24 Feb 2019, 18:15) attempted to change the name in the article from ''Bob Richardson'' to ''Mike McCants'' and wrote in the summary: "Correct misattribution: I'm Bob Richardson and I know the programmer was actually Mike McCants."</ref> a programmer at [[Rice University]], the FLAG (FORTRAN Load-and-Go) compiler. Once the FLAG deck had been loaded, all that was needed was to load the source deck to get directly to the output deck; FLAG stayed in memory, so it was immediately ready to accept the next source deck. This was particularly convenient for dealing with many small jobs. For instance, at [[Auckland University]] a batch job processor for student assignments (typically, many small programs not requiring much memory) chugged through a class lot rather faster than the later [[IBM 1130]] did with its disk-based system. The compiler remained in memory, and the student's program had its chance in the remaining memory to succeed or fail, though a bad failure might disrupt the resident compiler. Later, disk storage devices were introduced, removing the need for working storage on card decks. The various decks of cards constituting the compiler and loader no longer need be fetched from their cabinets but could be stored on disk and loaded under the control of a simple disk-based operating system: a lot of activity becomes less visible, but still goes on. Since the punch side of the card reader-punch did not edge-print the characters across the top of the cards, one had to take any output decks over to a [[unit record equipment|separate machine]], typically an [[IBM 557]] Alphabetic Interpreter, that read each card and printed its contents along the top. Listings were usually generated by punching a listing deck and using an [[IBM 407]] accounting machine to print the deck. ==Hardware implementation== [[File:SMScard.jpg|thumb|A [[Standard Modular System]] (SMS) card]] Most of the logic circuitry of the 1620 was a type of [[resistor–transistor logic]] (RTL) using [[drift-field transistor|"drift" transistor]]s (a type of transistor invented by [[Herbert Kroemer]] in 1953) for their speed, that IBM referred to as [[Saturated Drift Transistor Resistor Logic]] (SDTRL). Other IBM circuit types used were referred to as: ''Alloy'' (some logic, but mostly various non-logic functions, named for the kind of transistors used), ''CTRL'' (another type of RTL, but slower than ''SDTRL''), ''CTDL'' (a type of [[diode–transistor logic]] (DTL)), and ''DL'' (another type of RTL, named for the kind of transistor used, "drift" transistors). Typical logic levels of all these circuits (''S Level'') were high: 0 V to -0.5 V, low: -6 V to -12 V. [[Transmission line]] logic levels of ''SDTRL'' circuits (''C Level'') were high: 1 V, low: -1 V. Relay circuits used either of two logic levels (''T Level'') high: 51 V to 46 V, low: 16 V to 0 V or (''W Level'') high: 24 V, low: 0 V. These circuits were constructed of individual discrete components mounted on single sided paper-epoxy [[printed circuit board|printed circuit]] boards {{convert|2.5|by|4.5|in|mm|abbr=off|sp=us}} with a 16-pin gold-plated [[edge connector]], that IBM referred to as ''SMS'' cards (''[[Standard Modular System]]''). The amount of logic on one card was similar to that in one [[7400 series]] [[Integrated circuit#Small-scale integration (SSI)|SSI]] or simpler [[Integrated circuit#Medium-scale integration (MSI)|MSI]] package (e.g., 3 to 5 logic gates or a couple of flip-flops). These boards were inserted into sockets mounted in door-like racks which IBM referred to as ''gates''. The machine had the following "gates" in its basic configuration: * "Gate A"{{snd}} Forward hinged gate that swings out the back for access, after "Gate B". * "Gate B"{{snd}} Rear hinged gate that swings out the back for access. * "Gate C"{{snd}} Slides out back for access. Console Typewriter interface. Mostly [[relay]] logic. * "Gate D"{{snd}} Slides out back for access. Standard I/O interface. There were two different types of [[core memory]] used in the 1620: * Main memory ** Coincident Current X-Y Line addressing *** 20,000, 40,000, or 60,000 Digits ** 12-bit, even-odd Digit Pair ** 12 one-bit planes in each module, 1 to 3 modules *** 10,000 cores per plane * Memory Address Register Storage (MARS) memory ** Word Line addressing *** 16 Words, minimum of eight used in basic configuration *** Single Word read, multiple Word clear/write ** 24-bit, five-digit decimal Memory Address (no 8 - Ten Thousand bit stored) ** 1 plane *** 384 cores The address decoding logic of the Main memory also used two planes of 100 [[pulse transformer]] cores per module to generate the X-Y Line half-current pulses. There were two models of the 1620, each having totally different hardware implementations: * [[IBM 1620 Model I|IBM 1620 I]] * [[IBM 1620 Model II|IBM 1620 II]] ==Development history== ===A computer for the "small scientific market"=== In 1958 IBM assembled a team at the [[Poughkeepsie, New York]] development laboratory to study the "small scientific market". Initially the team consisted of Wayne Winger (Manager), Robert C. Jackson, and William H. Rhodes. ====Requirements and design==== The competing computers in this market were the [[Librascope LGP-30]] and the [[Bendix G-15]]; both were [[drum memory]] machines. IBM's smallest computer at the time was the popular [[IBM 650]], a fixed word length decimal machine that also used drum memory. All three used [[vacuum tube]]s. It was concluded that IBM could offer nothing really new in that area. To compete effectively would require use of technologies that IBM had developed for larger computers, yet the machine would have to be produced at the least possible cost. To meet this objective, the team set the following requirements: * Core memory * Restricted instruction set ** No divide or floating-point instructions, use subroutines in the "general program package" * Wherever possible replace hardware with existing logical machine functions ** No arithmetic circuits, use tables in core memory * Least expensive Input/Output possible ** No punch cards, use paper tape ** No printer, use operator's console typewriter ====The prototype==== The team expanded with the addition of Anne Deckman, Kelly B. Day, William Florac, and James Brenza. They completed the [[#CADET|(codename) CADET]] prototype in the spring of 1959. Meanwhile, the [[San Jose, California]] facility was working on a proposal of its own. IBM could only build one of the two and the [[Poughkeepsie, New York|Poughkeepsie]] proposal won because "the San Jose version is top of the line and not expandable, while your proposal has all kinds of expansion capability - never offer a machine that cannot be expanded". {| style="float:right;" |- | [[Image:IBM1620A.jpg]] |- | style="text-align:center;"| IBM 1620 Model I Level A (prototype), as it appeared<br/> in the IBM announcement of the machine. |} Management was not entirely convinced that [[core memory]] could be made to work in small machines, so Gerry Ottaway was loaned to the team to design a [[drum memory]] as a backup. During [[acceptance testing]] by the Product Test Lab, repeated core memory failures were encountered and it looked likely that management's predictions would come true. However, at the last minute it was found that the [[muffin fan]] used to blow hot air through the core stack was malfunctioning, causing the core to pick up noise pulses and fail to read correctly. After the fan problem was fixed, there were no further problems with the core memory and the drum memory design effort was discontinued as unnecessary. ====Transferred to San Jose for production==== Following announcement of the IBM 1620 on October 21, 1959, due to an internal reorganization of IBM, it was decided to transfer the computer from the Data Processing Division at Poughkeepsie (large scale mainframe computers only) to the General Products Division at San Jose (small computers and support products only) for manufacturing. Following transfer to San Jose, someone there jokingly suggested that the code name '''[[#CADET|CADET]]''' actually stood for "'''C'''an't '''A'''dd, '''D'''oesn't '''E'''ven '''T'''ry", referring to the use of addition tables in memory rather than dedicated addition circuitry (and SDTRL actually stood for "'''S'''old '''D'''own '''T'''he '''R'''iver '''L'''ogic" became a common joke among the CEs). This stuck and became very well known among the user community.<ref>"In 1962, IBM began delivery of a remarkable little machine originally called the Cadet but marketed as the IBM 1620." {{cite book |title=Milestones in Computer Science and Information Technology |url=https://archive.org/details/milestonesincomp0000reil |url-access=registration |isbn=978-1573565219|author=Edwin D. Reilly |date=2003}}</ref><ref name=McNabbs>even five years later, it was still uncommon for a high school to have an IBM 1620: {{cite web |url=http://paul.mcnabbs.org/ibm1620 |title=IBM 1620}}</ref><ref name="IBM 1620 CADET">"The IBM 1620 (a.k.a. CADET) ... stood for 'Can't Add and Doesn't Even Try.'"</ref> ===Implementation "levels"=== * [[IBM 1620 Model I|Model I]] ** Level A; prototype. *** All [[Flip-flop (electronics)|flip-flop]]s in the design were [[transistor]]ized versions of the original ''Eccles-Jordan trigger circuit''. While this machine was fully functional, it was found that the [[capacitor]] coupling used in these proved troublesome in the noisy signal environment of [[relay]]s and timing [[Cam (mechanism)|cam]] driven [[switch]]es used to drive the console typewriter. This necessitated a ''complete redesign'' of the machine to use ''S-R'' flip-flops instead (except for two triggers used to generate clocks for the ''S-R'' flip-flops). However usage of the term ''Trigger'' was retained in all the documentation when referring to a flip-flop, as it was IBM's conventional term (as ''alphamerics'' was their term for alphanumerics). *** This is the only level using a one piece vertical control panel, when the design was transferred from Poughkeepsie to San Jose it was redesigned to the two piece angled control panel used on all production models. ** Level B; first production. *** This is the only level using a burnished aluminum lower control panel, later levels finished this panel with white. ** Level C; introduction of 1622 card reader/punch. ** Level D; introduction of 1311 disk drives and addition of optional "Gate J" containing disk control logic. ** Level E; introduction of Floating-Point option. ** Level F ** Level G; introduction of Interrupt option (needed for [[IBM 1710]]). *** Did not support BT & BB subroutines in interrupt code! *** Disk control logic on "Gate J" logic merged into "Gate A" & "Gate B". **** Made possible because much of logic was compacted using cards designed for the Model II. ** Level H; improved Interrupt option that supported BT & BB subroutines in interrupt code. *** Final version of the Model I. * [[IBM 1620 Model II|Model II]] (no information on "Levels" available at this time) :: The 1620 Model II introduced basic [[arithmetic logical unit|ALU]] hardware for addition and subtraction (making "'''C'''an't '''A'''dd, '''D'''oesn't '''E'''ven '''T'''ry" no longer applicable) and [[index register]]s. * Model III ** Work was begun on a 1620 Model III but the project was quickly canceled as IBM wanted to promote sales of their new [[System/360]] and discontinue the old lines. ===Patents=== {| border="0" style="width:100%;" cellpadding="10" |- | style="width:50%; vertical-align:top;"| * {{US patent|3049295}}{{snd}} Multiplying Computer ** Patent filed: December 20, 1960 ** Patent issued: August 14, 1962 ** Inventors *** William H. Rhodes *** James G. Brenza *** Wayne D. Winger *** Robert C. Jackson ** Claims and prior art references *** 21 claims *** No prior art ** Diagrams and Text *** 156 sheets of diagrams (Describes 1620 in full details.) *** 31 sheets of text * {{US patent|3328767}}{{snd}} Compact Data Lookup Table ** Patent filed: December 31, 1963 ** Patent issued: June 27, 1967 ** Inventors *** Gerald H. Ottaway ** Claims and prior art references *** 11 claims *** 5 prior art ** Diagrams and Text *** 5 sheets of diagrams *** 4 sheets of text | style="width:50%; vertical-align:top;"| * {{US patent|3199085}}{{snd}} Computer with Table Lookup Arithmetic Unit Feature ** Patent filed: December 20, 1960 ** Patent issued: August 3, 1965 ** Inventors *** William H. Rhodes *** James G. Brenza *** Wayne D. Winger ** Claims and prior art references *** 21 claims *** 5 prior art ** Diagrams and Text *** 156 sheets of diagrams (Describes 1620 in full details.) *** 31 sheets of text * {{US patent|3239654}}{{snd}} Dividing Computer ** Patent filed: February 8, 1961 ** Patent issued: March 8, 1966 ** Inventors *** Robert C. Jackson *** William A. Florac *** Wayne D. Winger ** Claims and prior art references *** 9 claims *** 1 prior art *** 3 publications ** Diagrams and Text *** 13 sheets of diagrams *** 19 sheets of text |} ==Notable uses== An IBM 1620 model II was used by Vearl N. Huff, NASA Headquarters (FOB 10B, Washington DC) to program a three-dimensional simulation in [[Fortran]] of the tethered [[Project Gemini|Gemini]] capsule{{snd}} [[RM-81 Agena|Agena]] rocket module two-body problem at a time when it was not completely understood if it was safe to tether two objects together in space due to possible elastic tether induced collisions. The same computer was also used to simulate the orbits of the Gemini flights, producing printer-art charts of each orbit. These simulation were run over-night and the data examined the next day.<ref>Personal recollections of Donald N. Huff, son of Vearl N. Huff</ref> In 1963 an IBM 1620 was installed at IIT Kanpur providing the kicker for India's software prowess.<ref>Jayant K Singh, The Spark, Icct 2021, IIT Kanpur</ref> In 1964 at the Australian National University, Martin Ward used an IBM 1620 model I to calculate the order of the Janko group ''[[Janko group J1|J<sub>1</sub>]]''.<ref>Zvonimir Janko, [http://www.pnas.org/content/53/3/657.full.pdf ''A new finite simple group with abelian Sylow subgroups''], Proc. Natl. Acad. Sci. USA 53 (1965) 657-658</ref> In 1966 the [[International Typographical Union|ITU]] produced an explanatory film on a 1963 system for [[typesetting]] by computer at the ''[[Washington Evening Star]]'', using an IBM 1620 and a Linofilm [[phototypesetting|phototypesetter]].<ref>{{Cite web |title=I.T.U. - Story of Technology |publisher=[[International Typographical Union]] |year=1966 |url=https://vimeo.com/128146910 }}</ref> In 1964 an IBM 1620 was installed at [[University of Iceland|The University of Iceland]], becoming the first computer in Iceland.<ref>{{Cite web|title=Ský - Fyrstu tölvurnar|url=https://www.sky.is/index.php/20-faghopar/oeldungadeild/123-fyrstu-toelvurnar|access-date=2021-11-02|website=www.sky.is|archive-date=2021-11-02|archive-url=https://web.archive.org/web/20211102113015/https://www.sky.is/index.php/20-faghopar/oeldungadeild/123-fyrstu-toelvurnar|url-status=dead}}</ref> ==Use in film and television== * A radio program was developed by DJ Rege Cordic for KDKA Pittsburgh, based on a baseball game simulator developed by John Burgeson of IBM and his brother, Paul, then an ensign in the U.S. Navy. This program was used in numerous demonstration events in the years 1960 to 1963 as an example of the power of computers to perform simulation exercises. * The [[fictional computer]] Colossus of ''[[Colossus: The Forbin Project]]'' used about a dozen scrapped 1620 front panels purchased on the surplus market, in various orientations.<ref>{{Citation |title = The IBM 1620 Restoration Project |first = Dag |last = Spicer |author-link = Dag Spicer |url = http://leitl.org/docs/public_html/TheIBM1620RestorationProject.pdf |journal = [[IEEE Annals of the History of Computing]] |volume = 27 |number = 3 |pages = 33–43 |date = July–September 2005 |doi = 10.1109/MAHC.2005.46 |s2cid = 710051 |access-date = 2010-09-02 }}{{Dead link|date=July 2018 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> * A similar arrangement was used in a late TV episode<ref>"THRUSH is developing an 'ultimate computer'..." {{cite web |title=The Man from U.N.C.L.E. - The Ultimate Computer Affair (TV Episode) |website=[[IMDb]] |date=October 1965|url=https://www.imdb.com/title/tt0641153}}</ref> and a movie<ref>The IBM 1316 was the removable disk pack to the IBM 1311 disk drive of the IBM 1620, which explains the following: "“The Man from U.N.C.L.E.” movie's full of technological anachronisms ... Back in 1963, when the movie took place, there were disk packs available like the 10-pound IBM 1316." {{cite web |url=https://www.linkedin.com/pulse/man-from-uncle-movies-full-technological-anachronisms-steve-leibson |title=The Man from U.N.C.L.E." movie's full of technological anachronisms}}</ref> of ''[[The Man from U.N.C.L.E.]]'' to portray a '''''THRUSH''''' supercomputer. ==Anecdotes== ===CADET=== Many in the user community recall the 1620 being referred to as ''CADET'', jokingly meaning "'''C'''an't '''A'''dd, '''D'''oesn't '''E'''ven '''T'''ry", referring to the use of addition tables in memory rather than dedicated addition circuitry.<ref name=ornstein2002>{{Cite book | last = Ornstein | first = Severo | author-link = Severo Ornstein | title = Computing in the Middle Ages: A View from the Trenches 1955-1983 | page = 62 | publisher = 1st Books | year = 2002 | location = Lexington, KY | isbn = 978-1-4033-1517-5 }} </ref> See [[#Development history|development history]] for an explanation of all three known interpretations of the machine's code name. The internal code name '''CADET''' was selected for the machine. One of the developers says that this stood for "'''C'''omputer with '''AD'''vanced '''E'''conomic '''T'''echnology", however others recall it as simply being one half of ''"SPACE - CADET"'', where '''SPACE''' was the internal code name of the [[IBM 1401]] machine, also then under development.{{Citation needed|date=December 2021}} ==Bibliography== * {{cite book|title=Computers and how they work: IBM 1620, IBM 1401, IBM 650|first=Edward J.|last=Laurie|year=1963|url=https://archive.org/details/computershowthey0000laur|publisher=South-Western Publishing Company}} — An introductory book written shortly after its introduction. ==See also== * [[CDC 160 series|CDC 160]], another desk scientific computer from [[Control Data Corporation]] released in 1960 * [[CAB 500]], another desk scientific computer from [[Société d'électronique et d'automatisme|Société d'Electronique et d'Automatisme]] released in 1960 ==References== {{Reflist}} ==External links== {{Commons category}} * [https://web.archive.org/web/20040604102203/http://www.computerhistory.org/projects/ibm_1620/ The IBM 1620 Data Processing System (archived 2004)] from [[Computer History Museum]] * [https://web.archive.org/web/20041024081838/http://www-1.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP1620.html IBM Archives: 1620 Data Processing System (archived)] from IBM Archives Exhibits * [https://bitsavers.org/pdf/ibm/1620/ IBM 1620 documents] from bitsavers.org * [https://bitsavers.org/pdf/ibm/1620/A26-5706-3_IBM_1620_CPU_Model_1_Jul65.pdf System Reference Manual for the IBM 1620 Central Processing Unit, Model 1 (July 1965)] from bitsavers.org * [https://bitsavers.trailing-edge.com/pdf/ibm/1620/A26-5781-2_IBM_1620_CPU_Model_2_Nov65.pdf System Reference Manual for the IBM 1620 Central Processing Unit, Model 2 (Nov. 1965)] from bitsavers.org * {{usurped|1=[https://web.archive.org/web/20070312021332/http://www.tmth.edu.gr/el/kiosks/computers/expo/comp_e1.html IBM 1620 Model II (archived 2007, in Greek)]}} at the Thessaloniki Science Center & Technology Museum * [http://www.jowsey.com/java/sim1620/ IBM 1620 Simulator Java Applet (v1.0.1a)] (part of the IBM 1620 restoration project) {{Authority control}} {{DEFAULTSORT:Ibm 1620}} [[Category:1950s computers]] [[Category:IBM transistorized computers|1620]] [[Category:Magnetic-core memory computers]] [[Category:Variable word length computers]] [[Category:Computer-related introductions in 1959]] [[Category:Decimal computers]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Anchor
(
edit
)
Template:Authority control
(
edit
)
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Clear
(
edit
)
Template:Clear left
(
edit
)
Template:Commons category
(
edit
)
Template:Contains special characters
(
edit
)
Template:Convert
(
edit
)
Template:Dead link
(
edit
)
Template:Em
(
edit
)
Template:Essay-like
(
edit
)
Template:Hidden begin
(
edit
)
Template:Hidden end
(
edit
)
Template:Infobox information appliance
(
edit
)
Template:Reflist
(
edit
)
Template:Rp
(
edit
)
Template:Short description
(
edit
)
Template:Snd
(
edit
)
Template:US patent
(
edit
)
Template:Usurped
(
edit
)
Search
Search
Editing
IBM 1620
Add topic