Programma 101

From Wikipedia, the free encyclopedia
Programma 101
Olivetti Programma 101 - Museo scienza e tecnologia Milano.jpg
A Programma 101
ManufacturerOlivetti S.p.A.
Typedesktop programmable calculators
Release date1965
Memory240 bytes
Input36 Key keyboard
Mass35.5 kg
SuccessorProgramma P102

The Olivetti Programma 101, also known as Perottina or P101, is one of the first "all in one" commercial desktop programmable calculators,[1][2] although not the first.[3] 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[4] (equivalent to $27,500 in 2021). 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,[5][6] while its instruction set (which allows for conditional jump) and structure qualifies it as a stored-program computer.[7]


Layout of the keyboard

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.[8]

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.


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 didn't exist before, Roberto Olivetti called Mario Bellini, a young Italian architect:

I remember that one day I received a call from Roberto Olivetti: "I want to see you for a complex project I'm building". It involved the design not of a box containing mechanisms and stamped circuits, but a personal object, something that had to live with a person, a person with his chair sitting at a table or desktop and that had to start a relationship of comprehension, of interaction, something quite new because before then computers were as big as a wardrobe. With a wardrobe we don't have any relationship: in fact the most beautiful wardrobes disappear in the wall. But this wasn't a wardrobe or a box, this was a machine designed to be part of your personal entourage.

— Mario Bellini, 2011, "Programma 101 — memory of the future", cit.
Olivetti P101 magnetic card

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.[9]

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

Technical characteristics[edit]

  • Size: 275 mm ( A ) x 465 mm ( L ) x 610 mm ( P )
  • Weight: 35.5 kg
  • Consumption: 0.35 kW[10]
  • 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


Front view of a Programma 101 showing the printer and programming keys

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).[7]

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.[11] 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 '60s desktop computer/programmable calculator and only HP provided a true Von Neumann architecture which allowed for self-modifying code,[12] 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.[13][14][15][16][17]

The instructions or digits occupy 8 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.[18]

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

Instruction set[edit]

Instruction Opcode Operation
Sum + A = A + Chosen Register (since now CR)
Subtraction - A = A - CR
Multiplication x A = A * CR
Division : A = A : CR
Square root A = sqrt(CR)
Absolute value A ↕ A = abs(A)
Transfer from M CR = M
Transfer in A A = CR
Exchange with A A = CR
CR = A
Decimal part of A in M / ↕ M = A - abs(A)
Clear * CR = 0
Print Print the chosen register
Vertical spacing / Print a blank line
Stop S Stop the computer to let the user introduce data in the M register or to use the machine manually as a calculator
D-R exchange RS Store the D register temporarily in the R register; this is a special instruction used in multi-card program to save data from the deletion that happens while reading a new card

Sales history[edit]

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

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

By Apollo 11 we had a desktop computer, sort of, kind of, called an Olivetti Programma 101. It was a kind of supercalculator. It was probably a foot and a half square, and about maybe eight inches tall. It would add, subtract, multiply, and divide, but it would remember a sequence of these things, and it would record that sequence on a magnetic card, a magnetic strip that was about a foot long and two inches wide. So you could write a sequence, a programming sequence, and load it in there, and the if you would – the Lunar Module high-gain antenna was not very smart, it didn't know where Earth was. [...] We would have to run four separate programs on this Programma 101 [...]

— David W. Whittle, 2006[20]

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.[21]


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

  • 2005 - Simulator written by Eng. Claudio Larini, which had some contact with Gastone Garziera, another of the P101 engineers[24]
  • 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[25]
  • The Tecnologicamente Museum in Ivrea has a Java simulator of the Programma 101 written by Giuliano Gaiti, one of Perotto's collaborators.[26]
  • 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.[27]


  1. ^ "Olivetti Programma 101 Electronic Calculator". The Old Calculator Web Museum. technically, the machine was a programmable calculator, not a computer.
  2. ^ "2008/107/1 Computer, Programma 101, and documents (3), plastic / metal / paper / electronic components, hardware architect Pier Giorgio Perotto, designed by Mario Bellini, made by Olivetti, Italy, 1965-1971". Retrieved 2016-03-20.
  3. ^ "Olivetti Programma 101 Electronic Calculator". The Old Calculator Web Museum. It appears that the Mathatronics Mathatron calculator preceeded [sic] the Programma 101 to market.
  4. ^ a b "Cyber Heroes: Camillo Olivetti". Hive Mind. Retrieved 2010-11-07.
  5. ^ "Olivetti Programma 101 "Perottina"".
  6. ^ "Note in: WANTED - Data Acquisition Corp. DAC-512". The Old Calculator Web Museum. See footnote.
  7. ^ a b c Bell, C. Gordon; Newell, Allen (1971). "Chapter 19: The Olivetti Programma 101 desk calculator". Computer Structures: Readings and Examples. McGraw-Hill. p. 235. ISBN 0-07-004357-4. Retrieved 2009-12-17.
  8. ^ "Oral History of Federico Faggin" (PDF). Computer History Museum. 2006. Archived (PDF) from the original on 2017-01-10. Retrieved 2020-05-11.
  9. ^ "Olivetti Programma 101 Electronic Calculator". The Old Calculator Web Museum.
  10. ^ "Olivetti Programma 101 -". 9 December 2020. Retrieved 9 October 2021.
  11. ^ Wladimir Zaniewski (2016-09-04), Olivetti Programma 101 - Utilizzo dei registri, archived from the original on 2021-12-12, retrieved 2016-09-04
  12. ^ HP 9100A/B programming
  13. ^ 101proj (2010-12-21), Programma 101 – Memory of Future, retrieved 2016-03-20
  14. ^ Archivio Nazionale Cinema d'Impresa (2013-12-03), Spot - Olivetti - calcolatore - Programma 101, archived from the original on 2021-12-12, retrieved 2016-03-20
  15. ^ "The incredible story of the first PC, from 1965". Pingdom Royal. Archived from the original on 2012-08-30. Retrieved 2016-04-04.
  16. ^ "101 Project". Archived from the original on 2016-04-22. Retrieved 2016-04-04.{{cite web}}: CS1 maint: unfit URL (link)
  17. ^ "Premio Perotto - Press". (in Italian). Retrieved 2022-11-01.
  18. ^ Olivetti Programma 101 functional description
  19. ^ "Programma 101 Memory of the Future / Quando Olivetti Inventò il PC". History Channel. June 26, 2011.
  20. ^ Whittle, David W (Feb 16, 2006). "NASA Space Center" (PDF). Oral History Project (Interview). Interviewed by Sandra Johnson. Houston, TX. Archived from the original (PDF) on 31 January 2017.
  21. ^ Shawcross (1991). "Bombing Cambodia: A Critique". In Rotter, Andrew (ed.). Light at the end of the tunnel: A Vietnam War Anthology. New York. p. 280. ISBN 0-312-04529-8.
  22. ^ "White paper on data survival". 2003-03-28.
  23. ^ "Olivetti Programma 101 Emulator".
  24. ^ "Emulatore Programma 101".
  25. ^ "Simulator of Programma 101".
  26. ^ "Simulatore P101".
  27. ^ "P101Simulator". Archived from the original on 2018-01-15.

External links[edit]