Programma 101

{{Short description|Olivetti programmable calculator launched in 1964}}

{{Infobox information appliance

| name = Programma 101

| image = Olivetti Programma 101 - Museo scienza e tecnologia Milano.jpg

| image_size = 250px

| caption = A Programma 101

| type = desktop programmable calculators

| Released = 1965

| Discontinued =

| Processor =

| Memory = 240 bytes

| OS =

| predecessor =

| successor = Programma P102

| weight = 35.5 kg

| input = 36 Key keyboard

| manufacturer = Olivetti S.p.A.

}}

The Olivetti Programma 101, also known as Perottina or P101, is one of the first "all in one" commercial desktop programmable calculators,{{cite web|url=https://www.oldcalculatormuseum.com/c-programma101.html|title=Olivetti Programma 101 Electronic Calculator|website=The Old Calculator Web Museum|quote=technically, the machine was a programmable calculator, not a computer.}}{{Cite web

| title= 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

| website= www.powerhousemuseum.com

| language= en

| url= http://www.powerhousemuseum.com/collection/database/?irn=378406

| access-date= 2016-03-20

}}

although not the first.{{cite web|url=https://www.oldcalculatormuseum.com/c-programma101.html|title=Olivetti Programma 101 Electronic Calculator|website=The Old Calculator Web Museum|quote=It appears that the Mathatronics Mathatron calculator {{sic|prec|eeded|nolink=y}} the Programma 101 to market.}}

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

{{cite web

| title= Cyber Heroes: Camillo Olivetti

| publisher= Hive Mind

| url= http://wvegter.hivemind.net/abacus/CyberHeroes/Olivetti.htm

| access-date= 2010-11-07

}}

({{Inflation|US|3200|1965|fmt=eq|r=-2}}).

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,{{Cite web|url=http://www.curtamania.com/curta/database/brand/olivetti/Olivetti%20Programma%20101/index.html|title=Olivetti Programma 101}}{{cite web |title=Note in: WANTED – Data Acquisition Corp. DAC-512 |url=https://www.oldcalculatormuseum.com/w-dac512.html |website=The Old Calculator Web Museum|at=See footnote}} while its instruction set (which allows for conditional jump) and structure qualifies it as a stored-program computer.

Design

File:Paolo Monti - Servizio fotografico (Italia, 1968) - BEIC 6355896.jpg

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.{{cite web

| title= Oral History of Federico Faggin

| date= 2006

| publisher= Computer History Museum

| url= http://archive.computerhistory.org/resources/text/Oral_History/Faggin_Federico/Faggin_Federico_1_2_3.oral_history.2004.102658025.pdf

| access-date= 2020-05-11

| archive-url= https://web.archive.org/web/20170110232713/http://archive.computerhistory.org/resources/text/Oral_History/Faggin_Federico/Faggin_Federico_1_2_3.oral_history.2004.102658025.pdf

| archive-date= 2017-01-10

| url-status= live

}}

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:

{{blockquote |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.}}

File:Olivetti P101 magnetic card.jpg

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.{{cite web|url=https://www.oldcalculatormuseum.com/c-programma101.html|title=Olivetti Programma 101 Electronic Calculator|website=The Old Calculator Web Museum}}

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{{cite web |title=Olivetti Programma 101 - Laptop-s.com |url=https://laptop-s.com/info/olivetti-programma-101/ |access-date=9 October 2021 |language=en |date=9 December 2020}}
  • 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

File:Olivetti programma 101, calcolatrice elettronica programmabile, 1965.jpg

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

{{Cite book

| last1= Bell

| first1= C. Gordon

| last2= Newell

| first2= Allen

| title= Computer Structures: Readings and Examples

| publisher= McGraw-Hill

| year= 1971

| chapter= Chapter 19: The Olivetti Programma 101 desk calculator

| page= [https://archive.org/details/computerstructur00bell/page/235 235]

| chapter-url= http://research.microsoft.com/en-us/um/people/gbell/Computer_Structures__Readings_and_Examples/00000257.htm

| access-date= 2009-12-17

| isbn= 0-07-004357-4

| url-access= registration

| url= https://archive.org/details/computerstructur00bell/page/235

}}

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.{{Citation|last=Wladimir Zaniewski|title=Olivetti Programma 101 – Utilizzo dei registri|date=2016-09-04|url=https://www.youtube.com/watch?v=eMJRQRGOGD4 |archive-url=https://ghostarchive.org/varchive/youtube/20211212/eMJRQRGOGD4| archive-date=2021-12-12 |url-status=live|access-date=2016-09-04}}{{cbignore}} 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,{{Cite web|url=https://www.hpmuseum.org/prog/hp9100pr.htm|title=HP 9100A/B Programming|website=www.hpmuseum.org}} 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.

{{Citation

| last= 101proj

| title= Programma 101 – Memory of Future

| date= 2010-12-21

| url= https://www.youtube.com/watch?v=lpkqdbz1R_s

| access-date= 2016-03-20

}}

{{Citation

| last= Archivio Nazionale Cinema d'Impresa

| title= Spot – Olivetti – calcolatore – Programma 101

| date= 2013-12-03

| url= https://www.youtube.com/watch?v=WnItIQSwfSw

|archive-url=https://ghostarchive.org/varchive/youtube/20211212/WnItIQSwfSw| archive-date=2021-12-12 |url-status=live| access-date= 2016-03-20

}}{{cbignore}}

{{Cite web|url=http://royal.pingdom.com/2012/08/28/the-first-pc-from-1965/|title=The incredible story of the first PC, from 1965|website=Pingdom Royal|access-date=2016-04-04|archive-url=https://web.archive.org/web/20120830231139/http://royal.pingdom.com/2012/08/28/the-first-pc-from-1965/|archive-date=2012-08-30|url-status=dead}}{{Cite web|url=http://www.101project.eu/|title=101 Project|website=www.101project.eu|access-date=2016-04-04|archive-url=https://web.archive.org/web/20160422072503/http://www.101project.eu/|archive-date=2016-04-22|url-status=unfit}}{{Cite web|url=https://www.piergiorgioperotto.it/programma101/press.html|title=Premio Perotto – Press|language=Italian|website=www.piergiorgioperotto.it|access-date=2022-11-01}}

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.{{Cite web|url=https://hack42.nl/wiki/Overleg:Olivetti_Programma_101_functional_description|title=Overleg:Olivetti Programma 101 functional description - Hack42|website=hack42.nl}}

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

= Instruction set =

class="wikitable"

!Instruction

!Opcode

!Operation

Sum

|+

|A = A + Chosen Register (hereinafter "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

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

{{cite web

| title= Programma 101 Memory of the Future / Quando Olivetti Inventò il PC

| work= History Channel

| date= June 26, 2011

| url= https://www.youtube.com/watch?v=lpkqdbz1R_s

}}

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

{{blockquote |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 then 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

{{cite interview

| first= David W

| last= Whittle

| interviewer= Sandra Johnson

| title= NASA Space Center

| work= Oral History Project

| date= Feb 16, 2006

| place= Houston, TX

| url= http://www.jsc.nasa.gov/history/oral_histories/WhittleDW/WhittleDW_2-16-06.pdf

| archive-url= https://web.archive.org/web/20170131025445/https://www.jsc.nasa.gov/history/oral_histories/WhittleDW/WhittleDW_2-16-06.pdf

| archive-date= 31 January 2017

| url-status= dead

}}

}}

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.

{{cite book

| last= Shawcross

| editor-last= Rotter

| editor-first= Andrew

| title= Light at the end of the tunnel: A Vietnam War Anthology

| chapter= Bombing Cambodia: A Critique

| page= [https://archive.org/details/lightatendoftunn0000unse/page/215 215]

| year= 1991

| location= New York

| isbn= 0-312-04529-8

| chapter-url= https://archive.org/details/lightatendoftunn0000unse/page/215

}}

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{{cite web|url=http://derose.net/steve/writings/whitepapers/datasurvival.html|title=White paper on data survival|date=2003-03-28|archive-url=https://web.archive.org/web/20221101135401/http://derose.net/steve/writings/whitepapers/datasurvival.html|archive-date=2022-11-01|url-status=dead}}
  • 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){{Cite web|url=https://ub.fnwi.uva.nl/computermuseum/p101emul.html|title=Olivetti Programma 101 emulator|website=ub.fnwi.uva.nl}}
  • 2005 – Simulator written by Eng. Claudio Larini, which had some contact with Gastone Garziera, another of the P101 engineers{{Cite web|url=http://www.claudiolarini.altervista.org/emul2.htm|title=EMULATORI PER OLIVETTI PROGRAMMA 101|website=www.claudiolarini.altervista.org}}
  • 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{{Cite web|url=http://aida.unicas.it/|title=AIDA Lab – Artificial Intellingence and Data Analysis Laboratory}}
  • The Tecnologicamente Museum in Ivrea has a Java simulator of the Programma 101 written by Giuliano Gaiti, one of Perotto's collaborators.{{Cite web|url=http://www.museotecnologicamente.it/simulatore-p-101/|title=Simulatore P-101 - Museo Tecnologicamente|website=www.museotecnologicamente.it}}
  • 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.{{cite web|url=http://www.marcogaleotti.com/P101Simulator.html|title=P101Simulator|archive-url=https://web.archive.org/web/20180115203532/http://www.marcogaleotti.com/P101Simulator.html|archive-date=2018-01-15}}

References

{{Reflist |33em}}