# Programma 101

La Programma 101 (també coneguda com a Perottina o P101), és una de les primeres calculadores programables de sobretaula "tot en un", tot i que no n'és la primera. Inventada per Pier Giorigio Perotto, però llençada al mercat per l'empresa italiana Olivetti a l'Exposició Mundial de Nova York de 1964. Així i tot, la seva producció en sèrie no es va iniciar fins al 1965.
Amb un disseny realment futurista per a aquell temps, la Programma 101 tenia un preu de mercat de 3.200 dòlars estatunidencs (equivalents a 31.759 dòlars el 2023). Es van arribar a vendre, principalment als Estats Units, unes 44.000 unitats. S'acostuma a anomenar com a "calculadora programable d'escriptori" o "calculadora de sobretaula" perquè, d'una banda, les seves instruccions aritmètiques corresponen a les operacions pròpies d'una calculadora, mentre que, d'altra banda, el seu conjunt d'instruccions (que permet salts condicionals) i la seva estructura la defineixen també com a un ordinador de programa emmagatzemat.

## Desenvolupament i presentació

A la primavera del 1962, Roberto Olivetti (llavors president de l'empresa Olivetti), va donar instruccions a l’enginyer Pier Giorgio Perotto per iniciar l’estudi de viabilitat d’una calculadora electrònica que fos capaç d’automatitzar una seqüència d’instruccions. A més a més, aquesta hauria d’estar a l’abast d’un usuari no especialitzat, a un preu raonable, i que tingués unes dimensions reduïdes, preferiblement similars a les d’una màquina d’escriure.
Per a poder exercir l’encàrrec, Perotto va crear un equip de desenvolupament amb quatre homes més; Gastone Garziera, Giovanni De Sandre, Giancarlo Toppi i Giuliano Gaiti. Encara que el projecte va començar amb unes especificacions molt clares, a causa de la falta d'una referència de partida, car mai s'havia fet res similar, la diflicultat durant la seva realització va augmentar exponencialment. A més a més, a aquesta falta d'un referent clar se li afegia la pressió per a finalitzar el projecte l'abans possible, ja que, com que no sabien si la competència estava treballant en aquell moment en quelcom similar, era molt important que la Programma 101 sortís al mercat abans que qualsevol altre producte semblant. Dos punts molt rellevants per a aconseguir l’èxit del projecte va ser, d’una banda, substituir les memòries existents al moment per memòries de línia de retard acústica magnetostrictiva, ja que era una millor opció per la seva magnitud, senzillesa i cost; a més a més, cal remarcar que l'empresa fabricant estava preparada tècnicament per a poder assolir la producció de susdites memòries. D’altra banda, es van utilitzar els nous (en aquell moment) transistors 2N708 que, junt amb la seva reduïda mida, no tenien tants problemes de sobreescalfament i de fiabilitat com les vàlvules de buit que s’utilitzaven a l'època. A més a més, la seva vida útil va resultar ser excel·lent.
Finalment, el treball de l’equip de desenvolupament de la Programma 101 va finalitzar la seva tasca l’abril de 1964 –després de dos anys de treball– aconseguint un producte senzill, versàtil, amb memòria i programable; és a dir, un producte que seria el començament de la història dels PC (Personal Computer) o ordinadors personals, el qual van batejar, per motius de màrqueting, amb el nom femení: ”Programma 101”. Així doncs, com que necessitaven demostrar davant del públic el potencial que presentava l'invent, l'octubre de 1965 van tenir l'oportunitat de donar-se a conèixer a l'Exposició Mundial de Nova York de 1964 (exposició que va estar oberta al públic durant dues temporades de sis mesos, compreses cadascuna des de mitjan d'abril fins a mitjan de novembre de 1964 i de 1965 respectivament), això sí, dins la secció dedicada a les empreses que volien presentar els seus productes a l'anomenada BEMA (Business Equipment Manufacures Association). Als inicis de l'exposició es va mostrar l'aparell en un segon pla, dins d'una petita habitació, ja que Olivetti va bolcar inicialment l'exposició a la calculadora mecànica LOGOS 27. És per això que Perotto va realitzar una presentació de la Programma 101, dirigida a usuaris no especialitzats en informàtica, on es calculava l’òrbita d’un satèl·lit al voltant de la Terra -cosa que va ser molt encertada comercialment parlant, ja que en aquell moment de la història s'estava produint la cursa espacial entre els Estats Units i l'URSS-. Així i tot, la demostració va tenit tant d'èxit que els responsables d'Olivetti es van veure forçats a traslladar la Programma 101 a un punt més central de l'exposició.

### Repercussió

La Programma 101 va arribar a nombrosos àmbits on mai abans s’havia conegut l’ús d’ordinadors com és el cas, entre d'altres, de la medicina, de les petites empreses, de l'ús personal acadèmic, dels topògrafs i, fins i tot, va arribar a introduir-se exitosament dins la vida quotidiana d'un àmpli públi; quelcom inimaginable per a les grans computadores que existien en aquell moment.
Un altre ús que se li va donar a la Programma 101 va ser en la planificació d’operacions bèl·liques durant la Guerra de Vietnam per part de les forces aèries nord-americanes, més concretament es van utilitzar per a calcular coordenades en els bombardejos dirigits des de terra del B-52 Stratofortress.
Altrament, cal destacar que l’agència espacial nord-americana NASA va arribar a comprar el 1966 més de 10 unitats, les quals van ésser utilitzades per a l'elecció de punts d'aterratge i per elaborar els càlculs de les maniobres d’allunament de la missió Apol·lo 11 que van dur a l'home a la lluna per primera vegada el juliol de 1969.
| « | En el moment de l'Apol·lo 11 teníem una computadora d'escriptori, o alguna cosa així, o s'hi assemblava, anomenada Olivetti Programma 101. Era una mena de "supercalculadora". Probablement era un quadrat d'un peu i mig d'alçada, i a prop de 8 polzades d'altura. Podia sumar, restar, multiplicar i dividir, però podia recordar una seqüència d'aquestes operacions i guardava aquesta seqüència en una targeta magnètica, una cinta magnètica que era d'un peu i mig de llarg i dues polzades d'ample. Així que podies escriure una seqüència, una seqüència de programació i carregar-la allà, i si ho faria — L'antena d'alt guany del mòdul lunar no era gaire intel·ligent, no sabia on estava la terra. [...] Havíem de córrer quatre programes separats en el Programma 101 [...] | » |
| — David W. Whittle, 2006. |||

## Disseny

Olivetti era una empresa famosa per la seva atenció en aspectes com l'enginyeria i el disseny, com bé testimonia la col·lecció permanent al Museu d’Art Modern de Nova York, i, per tant, les Programma 101 van ser inevitablement un altre clar exemple d’aquest interès pel detall. Així doncs, per tal de cuidar l'ergonomia i l’estètica, les quals mai no s’havien tingut en consideració durant el disseny d’aquest tipus de màquines, el president de l’empresa en aquell moment, Roberto Olivetti, va contactar personalment amb Mario Bellini, un jove dissenyador i arquitecte italià:
| « | Recordo que un dia vaig rebre una trucada de Roberto Olivetti: "Vull veure't per a un projecte complex que estic construint". Es tractava del disseny, no d'una caixa que contenia mecanismes i circuits impresos, sinó d'un objecte personal, alguna cosa que havia de conviure amb una persona, una persona amb la seva cadira asseguda davant d'una taula o escriptori i que havia de començar una relació de comprensió, d'interacció, alguna cosa molt nova, perquè abans d'aquella data les computadores eren tan grans com un armari. Amb un armari no tenim cap relació: de fet, els armaris més bonics desapareixen a la paret. Però això no era un armari o una caixa, es tractava d'una màquina dissenyada per ser part del seu seguici personal. | » |
| — Mario Bellini, 2011, "Programma 101 — memory of the future". |||
És per aquest motiu que l’equip, centrant-se en l’usuari personal com a objectiu principal, va treballar intensament per a oferir un producte simple i versàtil que qualsevol persona pogués fer servir. Per tal de donar suport a aquest objectiu, a part de les innovacions tècniques com la ideació de les targetes de memòria programables (un element revolucionari per a aquella època car permetia executar qualsevol programa en pocs segons a través de la introducció de la targeta en l’aparell), van intentar cercar un preu i una mida raonable.
El resultat va ser un aparell amb una mida de 48 × 61 × 19 cm i un pes de 35,5 quilograms, cosa que va ésser revolucionària per al públic, ja que fins al moment tots els ordinadors eren excessivament grans per a l’ús personal i en cap cas no tenien una estètica agradable als ulls. Altrament, Berllini va haver d’integrar en el disseny de la Programma 101 les parts corresponents a la interfície d’usuari, tant per a l’entrada com per a la sortida de dades. La interfície d’entrada està constituïda per un teclat i una roda de decimals per a indicar la precisió de les operacions aritmètiques, mentre que la interfície de sortida consisteix en un "display", format per dues bombetes (una verda per a les confirmacions i una altra de vermella per als errors), i d’una impressora. Susdita impressora mostra la informació de sortida sobre un rotlle de paper amb una velocitat de fins a 30 caràcters per segon.

### Característiques tècniques

| Barem | Valor |
| Mida | 48 × 61 × 19 cm. |
| Pes | 35,5 quilograms. |
| Consum | 0.35 kW. |
| Disseny de sortida | Impressora de 30 columnes sobre un paper de 9 cm. |
| Exactitud | 22 digits i 15 decimals. |
| Operacions | sumar, restar, multiplicar, dividir, arrel quadrada i valor absolut. |
| Memòria total | 240 bytes a la UAL (aproximat). |
| Teclat | 36 tecles. |
| Arxiu | Lector de targetes magnètiques. |

## Arquitectura interna

L’arquitectura d’aquest aparell segueix les pautes marcades per John von Neumann (físic i matemàtic americà), en el model que rep el seu nom i que va ser publicat el 30 de juny de 1945 per la Universitat de Pensilvània conjuntament amb la marina dels Estats Units en un esborrany anomenat “First Draft of a report to the EDVAC”. Aquest model descriu una arquitectura composta per una unitat de control connectada a una memòria i aquestes dues, al seu torn, es comuniquen amb l’usuari a través dels dispositius d’entrada i sortida. En el cas de la Olivetti, està formada pel teclat i la impressora respectivament; a més a més, té la unitat de lectura/escriptura de targetes magnètiques que compleixen amb ambdues funcions a la vegada.

### Capacitats

El Programma 101 pot calcular les quatre operacions aritmètiques bàsiques (addició, sostracció, multiplicació i divisió), a més de l'arrel quadrada, el valor absolut i la part fraccionària. Està equipat també amb registres de memòria amb funcions com neteja, transferència i intercanvi, a més d'impressió i aturada per a l'entrada.
La programació és una mena de llenguatge d'assemblador, més simple que l'assemblador dels ordinadors contemporanis, ja que hi ha menys opcions i permet utilitzar directament les funcions aritmètiques. Dirigeix l'intercanvi entre els registres de memòria i els registres de càlcul, així com les operacions als registres. Hi ha 16 instruccions de salt i 16 instruccions de salt condicional; addicionalment, hi havia disponibles trenta-dues declaracions d'etiquetes com a destinació per a les instruccions de salt i/o les quatre tecles d'inici (V, W, Y, Z).
Per tant, en total hi ha 10 registres de memòria: tres per a les operacions (M, A, R); dos per a l'emmagatzematge (B, C); tres per a emmagatzematge i/o programa (assignables segons necessitat: D, E, F); i dos per a programar únicament (p1, p2). Cada registre complet conté un nombre de 22 dígits amb un signe i un punt decimal o 24 instruccions, cadascuna formada per una lletra i per un símbol. Cinc dels registres (B, C, D, E, F) es poden subdividir en mig-registres, i cadascun conté un nombre d'11 dígits amb un signe i un punt decimal. Seguidament, s'imprimien els programes en un rotlle de paper (similar al funcionament d'una calculadora o d'una caixa registradora).

#### Targeta magnètica

Les targetes magnètiques van ser una de les novetats que incloïa la Programma 101. Fins al moment només es disposava de grans i pesats rotlles de cinta magnètica, però com que aquests no eren un mitjà factible per a la nova màquina que s’estava ideant, van haver d’adaptar-los al seu corresponent dispositiu de lectura/escriptura. Aquesta mena de targetes eren molt més fàcils de manipular a causa de les seves petites dimensions.
Així doncs, els programes emmagatzemats es poden gravar en targetes de plàstic (d'aproximadament 5 cm × 20 cm) que tenen un revestiment magnètic d'un costat, i una zona on poder escriure-hi de l'altre. Cada targeta es pot gravar en dues tires, fent així que es puguin emmagatzemar dos programes alhora. A més a més, es guarden cinc registres a la targeta; dos dels registres estan dedicats al codi del programa, i els altres tres registres (D, E, F) es poden utilitzar per al codi i/o als nombres. Les instruccions acostumen a ocupar únicament un byte, i una targeta magnètica pot arribar a contenir fins a 120 instruccions.

#### Instruccions

Com que el disseny de la Programa 101 estava ortientat a un públic que no necessàriament havia d'estar especialitzat, o havia de tenir molts coneixements en l'àmbit tecnològic i de la programació, Olivetti es va veure forçada a fer un canvi en la filosofia de l'empresa que tenien fins al moment. Per això, van crear un llenguatge de programació realment fàcil d'utilitzar que, amb poca pràctica i poc temps d'aprenentatge, els usuaris podien dominar.
Les instruccions, o dígits, de la màquina ocupen 8 bits, codificats en decimal i aquest, al seu torn, codificat binari. A les instruccions, el"nybble" esquerre emmagatzema el registre afectat i el "nybble" dret la instrucció, mentre que en els dígits el primer nybble emmagatzema informació sobre el nombre (com ara el signe o el lloc decimal), l'últim "nybble" s'encarrega d'emmagatzemar el dígit real.

##### Set d'instruccions

Instruccions generals :
| Instrucció | Codi d'operació | Operació |
| Stop | S | Quan es troba amb aquesta instrucció, atura l'ordinador per permetre que l'usuari introdueixi dades al registre M o per utilitzar la màquina manualment com a calculadora. Seguidament, s'ha de polsar "S" per a validar la dada introduïda i reprendre l'execució. |
| Clear | * | Esborra el contingut d'un registre especificat (per exemple, B*). |
| Print | ♢ | Imprimeix el contingut del registre especificat amb la quantitat de decimals que se li demani. Si en lloc d'especificar un registre apareix el codi ”/♦”, realitza una impressió d'una línia en blanc. |
Tranferència de dades :
| Instrucció | Codi d'operació | Operació |
| Transferència a "A" | ↓ | Trasllada el contingut del registre especificat a l'acumulador; si no s'especifica al programa, la màquina dona per suposat que és "M". |
| Transferència des de "M" | ↑ | Trasllada el contingut de M al registre especificat, menys en dos casos: R↑ , el qual no és operatiu, i A↑, el qual s'utilitza per a la introducció de constants. |
| Intercanvi amb "A" | ↕ | Intercanvia el contingut del registre especificat i l'acumulador, si no s'indica al registre, dona per suposat que és "M". |
| Intercanvi D-R | RS | Intercanvia el contingut dels registres "d" i "D" amb el contingut del registre "R". Aquesta instrucció té dues utilitats molt especials: d'una banda, pot carregar un programa des de diverses targetes magnètiques (per a fer-ho emmagatzema temporalment el contingut al registre "R"). D'altra banda, pot esborrar "D" quan aquest registre emmagatzema una instrucció a través de la seqüència de les instruccions: "R*", "RS". |
| Decimal, part de "A", a la "M" | /↕ | Passa la part decimal del contingut del registre "A" al registre "M". |
Operacions aritmètiques :
| Instrucció | Codi d'operació | Operació |
| Suma (addició) | + | Suma el contingut del registre especificat amb el registre "A". |
| Resta (sostracció) | - | Resta al contingut de "A" el valor desat al registre especificat. |
| Multiplicació | x | Multiplica els valors del registre "A" amb els del registre especificat. |
| Divisió | : | Divideix el contingut de "A" entre el contingut del registre especificat; en aquest cas, el quocient es desa a "A" i la resta es desa a "R". |
| Arrel quadrada | √ | Fa l'arrel quadrada del contingut del registre especificat i desa el resultat troncat a "A". |
| Valor absolut | A ↕ | A = abs(A) |

## Derivats

Els derivats de la Programma 101 són:
* P102: Una P101 amb porta serial.
* P203, amb maquina d'escriure.
* Olivetti P602 i P652, desenvolupades per aplicacions matemàtiques.

## Simuladors

Al llarg dels anys s'han desenvolupat nombrosos simuladors per a la Programma 101. A continuació tenim una llista, ordenada cronològicament, de diversos simuladors:
* 1976 - Traductor per a "mapejar" el codi de la Programma 101 a BASIC, escrit per Steven DeRose a The Prairie School. Es va utilitzar per a ensenyar programació abans que els estudiants passessin a utilitzar BASIC.
* 1995 - Simulador de la Programma 101 escrit per E.H. Dooijes, professor de la Universitat d'Amsterdam, per al Museu d'Informàtica local, i escrit en Turbo Pascal.
* 2005 - Simulador escrit per l'enginyer Claudio Larini, el qual va tenir algun contacte amb Gastone Garziera, un altre dels enginyers del P101.
* 2016 - Simulador desenvolupat al Departament d'Enginyeria de la Informació i Enginyeria Elèctrica de la Universitat de Cassino, sota la supervisió de l'enginyer Giovanni De Sandre.
* El Museu Tecnològic a Ivrea té un simulador, en format JavaScript, de la Programma 101 escrit per Giuliano Gaiti, un dels col·laboradors de Perotto.
* L'antic treballador d'Olivetti, Marco Galeotti, va crear un entorn integrat de desenvolupament (IDE) complet per la Programma 101, el qual permet una programació més simple, a més d'algunes funcions de depuració.

## Bibliografia

* Pier Giorgio Perotto, P101. Quando l'Italia inventò il personal computer, Edizioni di Comunità, Roma, 2015. ISBN 978-88-98220-39-7.

## Referències

* 1 2 «Olivetti Programma 101» (en anglès). The old calculator web museum. [Consulta: 24 novembre 2023].
* ↑ «Inflation Calculator | Find US Dollar's Value From 1913-2023» (en anglès americà), 14-11-2023. [Consulta: 24 novembre 2023].
* 1 2 3 4 5 6 Estrella Contreras, Antonio. Arqueología informática: la calculadora programable Programma 101 (PDF) (Tesi) (en castellà). Universitat Politècnica de València, 2015-10-02.
* 1 2 Arnal Diaz, Joaquín. «Diseño e implementación de antiguas calculadoras Olivetti con Scratch» (en castellà). Museu d'Informàtica de la UPV. [Consulta: 24 novembre 2023].
* ↑ Estrella Contreras, Antonio. «La calculadora programable Programma 101.». Museu d'Informàtica de la UPV. [Consulta: 24 novembre 2023].
* ↑ «Programma 101 - Museo Tecnologicamente» (en italià). [Consulta: 24 novembre 2023].
* 1 2 «Olivetti, Storia di un’impresa.» (en italià). Associazione Archivio Storico Olivetti.. [Consulta: 24 novembre 2023].
* 1 2 https://www.youtube.com/watch?v=3WYCjP2V9Sc Documental (en castellà) "Programma 101. La máquina que cambió el mundo". Museu de la Història de la Computació.
* ↑ «Olivetti Programma 101» (en anglès). Computer Museum, University of Amsterdam, 1995. [Consulta: 24 novembre 2023].
* ↑ «History Channel» (en anglès), 21-12-2010. [Consulta: 25 novembre 2023].
* ↑ Whittle, David W. «"NASA Space Center"» (PDF) (en anglès). Oral History Project (Interview). Interviewed by Sandra Johnson. Houston, 16-02-2006. Arxivat de l'original el de gener 31, 2017. [Consulta: de novembre 25, 2023].
* ↑ von Neumann, John. First Draft of a Report on the EDVAC (PDF) (tesi) (en anglès).
* ↑ Bell, C. Gordon; Newell, Allen. «Chapter 19: The Olivetti Programma 101 desk calculator». A: Computer Structures: Readings and Examples. (en anglès). McGraw-Hill, p. 235. ISBN 9780070043572.
* 1 2 «Olivetti Programma 101 functional description» (en anglès). [Consulta: 26 novembre 2023].
* ↑ «Olivetti Programma 101 Emulator» (en anglès). [Consulta: 26 novembre 2023].
* ↑ «Emulatore per olivetti programma 101.» (en italià).
* ↑ «Simulatore Programma 101» (en italià).
* ↑ «Simulatore P-101» (en italià).
* ↑ «P101Simulator» (en anglès). Arxivat de l'original el 2018-01-15. [Consulta: 26 novembre 2023].