# IBM System/360 Model 20

The IBM System/360 Model 20 is the smallest member of the IBM System/360 family announced in November 1964. The Model 20 supports only a subset of the System/360 instruction set, with binary numbers limited to 16 bits and no floating point arithmetic. In later years it would have been classified as a 16-bit minicomputer rather than a mainframe, but the term "minicomputer" was not current, and in any case IBM wanted to emphasize the compatibility of the Model 20 rather than its differences from the rest of the System/360 line. It does, however, have the full System/360 decimal instruction set, that allows for addition, subtraction, product, and dividend of up to 31 decimal digits.
Developed by IBM in Böblingen, Germany,$^{:pp.217–218,352}$ the system was intended for data processing and as a replacement for tabulating equipment. An incompatible small computer, the IBM 1130 introduced the following year, was designed for scientific and engineering computing.
The design of the Model 20 was the result of a tug of war within IBM. John Haanstra had wanted a low-end machine that could execute IBM 1401 instructions. Fred Brooks wanted the machine to have System/360 architecture. The final result was a compromise where cost concerns predominated: the system leased for under $2000 per month (equivalent to $19,648 in 2023) including Multi-Function Card Machine and line printer, compared to around $3000 (equivalent to $29,472 in 2023) for a comparable 1401 system.$^{:p.446}$
Based on number of systems sold, the Model 20 was the most successful model of System/360. According to Pugh "The number of Model 20 processors installed by the end of 1970 in the United States exceeded 7,400."$^{:p.639}$ Other models, however, brought in greater revenue. Despite their popularity there are relatively few Model 20s in existence in working condition in 2020.

## Architecture

The Model 20 was available with six memory sizes: 4, 8, 12, 16, 24 and 32 KB. As in other models of System/360, memory is byte-addressable.$^{:p.1}$ It has eight 16-bit general purpose registers numbered R8 through R15 which can be used in computations as base registers. All of memory is also directly addressable through a feature, called direct addressing, that combines the twelve-bit displacement and the low-order bits of what would normally be the base register field of the instruction (R0-R7) to form a combined fifteen bit address.$^{:p.4}$ No storage protection is provided, except for the low 144 bytes of "protected area".
The instruction set is a subset of System/360 consisting of 37 instructions instead of 143,$^{:pp.7–25}$$^{:p.384}$ with some incompatible instructions, such as a BASR (Branch And Store Register) rather than BALR (Branch And Link Register).
* Binary arithmetic uses the S/360 "halfword" instructions to operate on 16-bit quantities. Load Halfword, Add Halfword, Subtract Halfword, Compare Halfword, and Store Halfword were available, along with Add Register and Subtract register,
* Decimal arithmetic includes the complete S/360 decimal instruction set for operations on packed decimal operands of up to 31 digits plus sign in storage.
* Logical instructions are Move Characters, Move with offset, Move Immediate, Move Numerics, Move Zones, Compare Logical Immediate, Compare Logical Characters, Edit, And immediate, Or immediate, Test under Mask, and Translate. One particularly unusual logical instruction, not present in other System/360 models, is "Halt and Proceed" (HPR, operation code X'99') which will quiesce input/output and stop the processor displaying a code to the operator. Operation can be restarted by pressing the "start" button.
* Branch instructions include standard S/360 Branch on Condition. Instead of "Branch and Link" the instruction set uses "Branch and Store" (BASR, X'0D', and BAS, X'4D') which functions similarly except that a 16-bit link address is stored. "Set PSW" (SPSW, X'B1'), which loads a 32 bit Program Status Word (PSW) replaces the standard "Load PSW". The Model 20 has no concept of privileged instructions or a distinction between supervisor state and user state so SPSW is available to user programs.
* Input/output instructions are unique to the Model 20. Lacking I/O channels all peripherals are directly controlled by the processor.
** "Test I/O and Branch" (TIOB, X'9A') which tests a specified device for any combination of four hardware-dependent conditions.
** "Control I/O" (CIO, X'9B') performs a control (non data) operation on a device.
** "Transfer I/O" (XIO, X'D0') performs a data transfer operation on a device. XIO starts a transfer and specifies the number of bytes to be read or written. Data transfer can optionally be performed by cycle stealing (IBM documentation calls this time-sharing), that is taking processor cycles from the user program as necessary to perform the operation.
Like most other models of System/360 the Model 20 is microprogrammed; it uses transformer read-only storage (TROS).

## Peripherals

As of 1967 the following peripherals were supported:$^{:pp.36–110}$
* IBM 2415 Magnetic Tape Unit with up to 6 tape drives.
* IBM 2560 Multi-Function Card Machine.
* IBM 2520 Card Read/Punch or Card Punch.
* IBM 1419 Magnetic Ink Character Reader.
* IBM 2311 Disk Storage (Models 11 and 12).
* IBM 1442 Model 5 Card Punch.
* IBM 2203 Line Printer.
* IBM 1403 Line Printer.
* IBM 2501 Card Reader.
The system can also have an integrated communications adapter. Two adapter versions were available, one for Synchronous transmit-receive (STR) and one for binary synchronous communications (Bisync).

### 2311 Disk Storage

Model 20 disk storage uses IBM 2311 disk drives, model 11 or 12, attached to an integrated "storage control feature" on the CPU.$^{:pp.58–76}$ If multiple drives are attached they have to be the same model. Both models use the 1316 disk pack which provides a maximum of 203 cylinders with 10 tracks per cylinder. The model 11 uses all cylinders, the model 12 uses only the outermost 103. Each track is divided into ten sectors of 270 bytes each. The model 11 has a formatted capacity of 5.4 million bytes, and the model 12 of 2.5 million.

### IBM 2560 Multi-Function Card Machine

The IBM 2560 Multi-Function Card Machine (MFCM) is a peripheral first offered on the Model 20. Due to its reliability problems, often involving card jams, the acronym was frequently interpreted as referring to many less favorable names.
The 2560 has two hoppers into which punch cards can be placed. The cards in the second hopper can contain punched cards to be read or blank cards to be punched. Two models were offered:
* Model A1: five card stackers, and an optional printing/interpreter, with two, four or six print heads.
* Model A2: four card stackers.
Card flow is: a read station, a punch station, and on the A2 a print station allowing text to be printed on cards. Cards then flowed into one of the stackers after being processed.$^{:41–43}$ This allows it to function as a card reader and a card punch. As a program can issue a Write Card instruction to print on the card after reading card data with a Read Primary Card or Read Secondary Card instruction, it can also, under program control, function as an interpreter and, as a program can issue a Primary Card Stacker Select or Secondary Card Stacker Select instruction to select the stacker into which a card should be put after reading card data, it can function as a card sorter. This allows the Model 20 to replace several separate pieces of punched-card equipment.
IBM's announcement proclaimed the 2560 as providing "a card-handling capability never before possible on a single pass through the system."$^{:13}$ Since all I/O is performed by the processor, the system is particularly suited to controlling timing-dependent devices such as the 2560, where a card can be read, punched into, printed on, and sent to a specified output stacker with tight timing requirements if full rated speed is to be maintained.

## Software
### Disk Programming System

The Disk Programming System (DPS) is a control program for a Model 20 with at least 12 KiB of memory and one disk drive. The components of DPS are:
* The Initial Program Loader (IPL).
* A small resident monitor which handles disk input/output, error recovery, and job-to-job transition, and loads programs to be executed from the core-image library on disk.
* A Job Control Program loaded by the monitor between jobs handled job setup.
* Service programs for library management, I/O device table maintenance, linkage editing, and for loading and copying the systems residence disk, backing up and restoring other disk drives.
Rollout/Rollin allows the computer operator to interrupt a running batch program, execute an inquiry program, and then restart the batch job where it was interrupted.

### Tape Programming System

Tape Programming Support (TPS) supports systems with magnetic tape drives but no disk drives. The minimum configuration for TPS is 4096 bytes of main storage, a card reader, a card punch, a printer and two magnetic tape drives. On such systems TPS provides an assembler and tape manipulation utility programs. Additional capabilities are provided on systems with 8192 bytes of main storage, and still more with four or more magnetic tape drives.$^{:42–43}$

### Card Programming Support

Card Programming System (CPS) is a set of control programs for a Model 20 computer system with only card input/output devices.

### Languages

* Report Program Generator (RPG).
* PL/I subset, DPS only.
* Basic Assembler versions were available for CPS, TPS, and DPS including Input/Output Control System (IOCS) macros and processing routines.

### Other IBM programs

* Sort/Merge.
* Disk and tape utility programs such as initialize disk, initialize tape, clear disk.

## Clones

The UNIVAC 9200 and 9300 computers were clones of the Model 20.

## Remaining machines

Despite having been sold or leased in very large numbers for a mainframe system of its era, only a few of System/360 Model 20 computers remain. These are primarily the property of museums or collectors. Examples of existing systems include:
* Two Model 20 processors along with numerous peripherals (forming at least one complete system) located in Nürnberg, Germany were purchased on eBay in April/May 2019 for €3710 by two UK enthusiasts who, over the course of some months, moved the machine to Creslow Park in Buckinghamshire, United Kingdom. The system was in a small, abandoned building left untouched for decades, and apparently had been used in that building since all peripherals were still fully wired and interconnected. As of September 2024 the systems have been moved on a long-term loan basis to the System Source Computer Museum in Hunt Valley, Maryland, USA for display and restoration.
* As of 2020, a Model 20 processor along with some peripherals is on public display at the Deutsches Museum in Munich, Germany.
A running list of remaining System/360s can be found at World Inventory of remaining System/360 CPUs.