Programma 101. The Olivetti Programma 101, also known as Perottina or P101, is one of the first "all in one" commercial desktop programmable calculators, although not the first.
Produced by Italian manufacturer Olivetti, based in Ivrea, Piedmont, and invented by the Italian engineer Pier Giorgio Perotto, the P101 used many features of large computers of that period. It was launched at the 1964 New York World's Fair; volume production started in 1965. A futuristic design for its time, the Programma 101 was priced at $3,200
().
About 44,000 units were sold, primarily in the US.

It is usually called a printing programmable calculator or desktop calculator because its arithmetic instructions correspond to calculator operations, while its instruction set (which allows for conditional jump) and structure qualifies it as a stored-program computer.

Design 

The Programma 101 was designed by Olivetti engineer Pier Giorgio Perotto in Ivrea. The styling, attributed to Marco Zanuso but in reality by Mario Bellini, was ergonomical and innovative for the time. Some of the design was based on a 1961 Olivetti computer co-developed by Federico Faggin that served as a model for the programmable calculator.

The computational hardware consisted of standard (for its time) discrete devices (transistors, diodes, resistors and capacitors mounted on phenolic resin circuit card assemblies). The design predated microprocessors, and no integrated circuits were used since they were in their infancy.

A total of 240 bytes of information were electrically stored in magnetostrictive delay-line memory, which had a cycle time of 2.2 milliseconds.

Ergonomics 

The focus of the engineering team was to deliver a very simple product, something that anyone could use. To take care of the ergonomics and aesthetics of a product that did not exist before, Roberto Olivetti called Mario Bellini, a young Italian architect:

One of the direct results of the Programma 101 team focus on human-centered objectives was the invention of a removable magnetic card to store programmed calculation, a revolutionary item for that time, allowing anyone to just insert it and execute any program in a few seconds.

The Programma 101's design would earn the Mario Bellini the Compasso d'Oro Industrial Design Award.

Technical characteristics 
 
 Size: 275 mm ( A ) x 465 mm ( L ) x 610 mm ( P )
Weight: 35.5 kg
Consumption: 0.35 kW
Output device: 30 column printer on 9 cm paper
Accuracy: 22 digits and up to 15 decimal places
Operations: add, subtract, multiply, divide, square root and absolute value
Total memory: 240 bytes in the ALU (estimated) [AP 10]
Keyboard: 36 keys.
Archive: Magnetic card reader

Operation 

The Programma 101 can calculate the four basic arithmetic functions (addition, subtraction, multiplication, and division), plus square root, absolute value, and fractional part. It is equipped with memory registers with features such as clear, transfer, and exchange, plus printing and halt for input.

Programming is a kind of assembly language, simpler than the assembly of the contemporary computers, as there are fewer options and allowed to use directly arithmetic functions. It directs the exchange between memory registers and calculation registers, and operations in the registers. There are 16 jump instructions and 16 conditional jump instructions. Thirty-two label statements were available as destinations for the jump instructions and/or the four start keys (V, W, Y, Z).

While not stated in the General Manual and only in some Programming Manual, it is possible to perform a "modified jump", which allows to go back to different part of the program from the same subroutine.

There are 10 memory registers: three for operations (M, A, R); two for storage (B, C); three for storage and/or program (assignable as needed: D, E, F); and two for program only (p1, p2). Each full register holds a 22-digit number with sign and decimal point or 24 instructions each consisting of a letter and a symbol. Five of the registers (B, C, D, E, F) can be subdivided into half-registers, each containing an 11-digit number with sign and decimal point. It uses a kind of Modified Harvard architecture where data registers and instruction register are clearly separated, but it allows for some data to be written in the instruction registers under some conditions. That was a common feature in the 1960s desktop computer/programmable calculator and only HP provided a true Von Neumann architecture which allowed for self-modifying code, similarly to the contemporary general-purpose mainframes and minicomputers.

The stored programs can be recorded onto plastic cards approximately 5 cm × 20 cm that have a magnetic coating on one side and an area for writing on the other. Each card can be recorded on two stripes, enabling it to store two programs. Five registers are stored on the card; two registers are dedicated to the program code, the other three registers (D, E, F) can be used for code and/or numbers. Instructions occupy one byte, and a magnetic card can hold 120 instructions. The cards use  a simple machine language.

The instructions or digits occupy eight bits, codified in binary-coded decimal. In instructions the left nibble stores the affected register and the right nibble the instruction, while in digits the first nibble stores information about the number, such as the sign or the decimal place, and the last nibble stores the actual digit.

It prints programs and results onto a roll of paper tape, similar to calculator or cash register paper.

Instruction set

Sales history 

The Programma 101 was launched at the 1964 New York World's Fair, attracting major interest. A total of 40,000 units were sold; 90% of them in the United States where the sale price was $3,200 (increasing to about $3,500 in 1968.)

About 10
Programma 101 were sold to NASA and used to plan the Apollo 11 landing on the Moon.

The P101 is mentioned as part of the system used by the US Air Force to compute coordinates for ground-directed bombing of B-52 Stratofortress targets during the Vietnam War.

Simulators 
Many simulators for the Programma 101's function have developed over the years:

 1976 - Translator to map Programma 101 code to BASIC was written by Steven DeRose at The Prairie School, used to teach programming before students moved on to BASIC
 1995 – Programma 101 simulator written by E.H. Dooijes of the University of Amsterdam for the local Computer Museum in Turbo Pascal (only worked in batch mode)
  2005 – Simulator written by Eng. Claudio Larini, which had some contact with Gastone Garziera, another of the P101 engineers
 2016 – simulator of the Programma 101 developed at the Department of Information Engineering and Electrical Engineering of University of Cassino, supervision of Eng. Giovanni De Sandre
 The Tecnologicamente Museum in Ivrea has a Java simulator of the Programma 101 written by Giuliano Gaiti, one of Perotto's collaborators.
 The former Olivetti employee Marco Galeotti created a full integrated development environment (IDE) for the Programma 101, which allows for a simpler programming and some debug functions.

References

External links 

 .
 Olivetti, Programma 101 General Reference Manual, hosted by the Old Calculator Web Museum, retrieved 2009-12-17.
 Internal pictures Old Calculator Web Museum.
 A simulator of the Olivetti Programma 101
 
 A Technical Description of the Olivetti Programma 101 with a picture gallery, by Alfredo Logioia
 Olivetti calcolatore Programma 101 publicity film (1966–1967) (Archivio Nazionale del Cinema d'Impresa)

Olivetti computers
Programmable calculators
Transistorized computers
Computer-related introductions in 1965
Italian inventions
Olivetti calculators