# Olivetti Programma 101

La Olivetti Programma 101 (sigla P101) è un calcolatore da tavolo programmabile, definita da molti "Desktop Computer" (computer da tavolo) e ritenuta da una parte della storiografia informatica il primo personal computer della storia.
Venne sviluppata dalla ditta italiana Olivetti negli anni tra il 1962 e il 1964 e prodotta tra il 1965 e il 1971. Presentata per la prima volta alla grande esposizione di prodotti per ufficio BEMA di New York nell'ottobre 1965, fu progettata da un gruppo di ricerca guidato dall'ingegnere Pier Giorgio Perotto, in omaggio al quale assunse il soprannome di Perottina in assonanza con la pascalina, celebre macchina da calcolo inventata nel 1642 dallo scienziato francese Blaise Pascal; il gruppo, oltre a Perotto stesso, comprendeva anche Giovanni De Sandre, Gastone Garziera, Giancarlo Toppi e Giuliano Gaiti. Il designer Mario Bellini le conferì un disegno avveniristico per l'epoca.
La Programma 101 all'epoca del lancio era considerata da alcuni osservatori il primo calcolatore da tavolo programmabile prodotta su larga scala. Storicamente è confrontata con le prime calcolatrici programmabili da tavolo, Mathatron (1963) e Mathatron II (1965) dell'azienda americana Mathatronics, che però differentemente dalla P101 non utilizzava condizioni logiche interattive e non disponeva di base di una memoria di archiviazione.
La macchina era dotata di condizioni logiche (salti condizionati e incondizionati), istruzioni di output, registri e possibilità di salvare dati e programmi in una memoria interna e su un supporto magnetico esterno ed operava su registri numerici (con spostamenti tra di essi). Le unità vendute della P101 furono circa 44 000.

## Classificazione

Nella stampa statunitense dell'epoca Programma 101 fu presentato come «Desk-top Computer». Il termine inglese computer però ha subito negli anni una grande mutazione di significato. Il termine, attestato per la prima volta nel 1613 indicava originariamente un essere umano, incaricato di eseguire dei calcoli. Il primo utilizzo nel senso moderno data al 1947 e designava genericamente qualsiasi macchina calcolatrice programmabile.
Molto presto però venne avvertita l'esigenza di elaborare anche dati non numerici e nell'uso moderno, sia inglese che italiano, computer è diventato un sinonimo di elaboratore elettronico, ovvero una macchina in grado di elaborare qualsiasi tipo di dati, non solo numeri. In questo senso, la Programma 101 non si potrebbe definire un computer, a causa di limitazioni tecniche quali la mancanza di memoria completamente indirizzabile e di una vera memoria di massa (la sua impropria "RAM" è limitata a 1.920 bit).
Del resto, già nel 1971 Gordon Bell la definiva "calcolatore da tavolo" ("Desk Calculator"), pur riconoscendone la natura di computer a programma memorizzato, definizione accolta poi da uno storico specializzato come l'ex curatore dello Smithsonian P. Ceruzzi e dai curatori del Computer History Museum di Mountain View, il più grande museo di informatica al mondo. In Italia negli anni settanta (ad esempio nella seconda edizione dell'Enciclopedia Universo (1971) e in Soresini (1977)), la P101 veniva indicata come "calcolatrice", quando il termine non aveva ancora assunto la più ristretta accezione odierna; mentre il Dizionario biografico degli italiani (2015) la paragona testualmente a "un vero e proprio computer, di dimensioni ridotte".
Peraltro adottare la ambigua terminologia di presentazione, catalogando la P101 come "computer" porterebbe, oltre che ad ovvi fraintendimenti, a numerose incongruenze; il titolo di primo "personal computer" andrebbe senz'altro assegnato all'HP 9100A(macchina basata sulla Programma 101 con violazione di brevetto e risarcimento alla Olivetti), mentre la Programma potrebbe aspirare al titolo di primo "computer da tavolo". I progettisti la descrivono dal punto di vista odierno un "personal computer" ma con le dovute limitazioni dell'epoca, epoca in cui il concetto di personal computer non esisteva ancora.
Anche fuori dai confini nazionali viene riconosciuto alla macchina il titolo di "primo personal computer", o di "primo personal computer a programma memorizzato", ma non unanimemente: Swaine e Freiberger nella loro storia del personal computer menzionano Olivetti solo di sfuggita parlando di Federico Faggin. Lo storico inglese dell'informatica Campbell-Kelly invece accenna all'azienda italiana discutendo il fenomeno dei cosiddetti "Compatibili IBM". Campbell-Kelly fa anche notare che la questione della primogenitura nell'ambito dei personal computer è ancora aperta perché nessuno ha ancora scritto resoconti storici sufficientemente completi.

## Storia

La Programma 101, secondo il racconto del progettista Perotto, trae origine dalla considerazione che all'epoca della sua uscita (presentazione nel 1965 come prototipo) si era completamente estranei al concetto di informatica distribuita, che comportava capacità di elaborazione e di immagazzinamento dati su un unico computer a disposizione dell'operatore.
In quegli anni esistevano i minicomputer: due esempi tipici sono il LINC (Laboratory Instrument Computer) (1962) ed il PDP-8 (1964), in catalogo dalla primavera 1965, che venderà quaranta o cinquantamila esemplari nei dieci anni successivi. I minicomputer erano ancora piuttosto cari, quindi c'era ampio spazio per una macchina dal costo relativamente contenuto che automatizzasse i tipici calcoli scientifici, segmento di mercato perfetto per inserire quella che sarebbe diventata la Programma 101. Olivetti forniva programmi di algebra, geometria, statistica, ingegneria e finanza. Nella letteratura scientifica sono inoltre documentati programmi di biochimica e radiochimica..
L'azienda Olivetti, che dopo la morte di Adriano Olivetti aveva puntato più sui sistemi di calcolo meccanici che su quelli elettronici, presentò quindi la Programma 101 al BEMA in tono minore; tuttavia, quando la mostra newyorkese aprì i battenti, la nuova macchina richiamò l'attenzione dei visitatori, i quali finirono per trascurare tutti gli altri prodotti esposti dall'Olivetti nello stand. In aggiunta a ciò, la contemporanea Logos 27-A, calcolatrice elettromeccanica anch'essa presente a New York e in cui Olivetti aveva investito i maggiori sforzi, cominciò a presentare problemi di produzione e un'accoglienza di mercato inferiore alle aspettative, mentre la Programma 101 riscuoteva successo anche a Mosca (URSS) e successivamente, nel 1966, alla fiera campionaria di Milano; questo spinse Roberto Olivetti, primogenito di Adriano ed erede della dinastia ai vertici dell'azienda, a farsi propugnatore di un tentativo di orientare la strategia aziendale in direzione dell'elettronica, obiettivo solo parzialmente perseguito e mai pienamente consolidato. Per il lancio fu deciso il mercato statunitense, nonostante le perplessità circa i problemi eventuali di manutenzione dovuti alla mancanza di tecnici elettronici dell'Olivetti negli Stati Uniti.
Essendo l'Olivetti completamente a corto della fabbricazione in serie di apparecchiature elettroniche, il direttore di produzione dell'epoca pretese specifiche dettagliate di assemblaggio, senza tuttavia impegnarsi a collaudare alcun manufatto completato dalla sua linea di montaggio; in ragione di ciò Perotto, con due collaboratori, si recò in fabbrica quando furono pronti gli imballaggi con i primi esemplari assemblati e li aprì a uno a uno per collaudarli personalmente ed eventualmente correggere errori; fu così possibile far partire per il Nordamerica un lotto di macchine senza problemi di funzionamento. La produzione ebbe un notevole impulso quando la General Electric, che da qualche anno era in joint-venture con la divisione elettronica Olivetti, in una nuova società chiamata OGE (della quale gli statunitensi detenevano il 75% del capitale sociale), manifestò la sua intenzione di uscire dal mercato dell'"office", essendo interessata solo ai computer; questo spinse molti progettisti e ingegneri, che erano rimasti con tutta la loro struttura "office" nella nuova società, a rientrare nella Olivetti, e che, dopo l'impennata degli ordini della Programma 101, si stava avviando a essere il ramo vincente dell'azienda.
Le vendite ebbero talmente successo che alla fine del 1966 la Underwood, ditta statunitense controllata dalla Olivetti, chiese di poter fabbricare le macchine sul suolo degli Stati Uniti al fine di poter rifornire anche gli uffici delle amministrazioni federali di quel Paese. Nel frattempo, già dal marzo 1965, era stato depositato presso il competente ufficio statunitense il brevetto sulle soluzioni tecniche adottate del calcolatore; la manovra si rivelò essere opportuna perché la società concorrente Hewlett-Packard produsse, sull'idea costituiva della P101, un analogo dispositivo di largo consumo, l'HP 9100A; successivamente, quando le fu contestata la violazione di brevetto, la compagnia statunitense addivenne a un accomodamento extragiudiziale, riconoscendo a Olivetti un compenso a titolo di royalty di 900.000 dollari.
Furono venduti circa 44 000 esemplari, il 90 per cento dei quali sul mercato nordamericano. Alcune Programma 101 furono vendute alla NASA e utilizzate per pianificare lo sbarco dell'Apollo 11 sulla Luna. La Programma 101 fece parte del sistema di calcolo balistico dell'aeronautica statunitense per i bombardamenti con i B-52 durante la guerra del Vietnam. Olivetti promosse anche l'utilizzo della macchina nelle scuole italiane.

## Descrizione sintetica

La Programma 101 dispone di una unità aritmetica e logica che opera su alcuni registri di memoria interni alla unità centrale. La memoria è parzialmente indirizzabile.
Vi sono inoltre una piccola stampante alfanumerica utilizzata come periferica di output, una tastiera utilizzata come periferica di input ed un sistema di salvataggio per dati e programmi su cartolina magnetica. La presenza di questo sistema di salvataggio permette di richiamare programmi precedentemente creati semplicemente introducendo la scheda magnetica corretta, senza doverli riscrivere ogni volta che si accende la macchina.
Questo sistema di salvataggio non può però essere considerato una vera memoria di massa, vista la capacità molto limitata (soprattutto per quanto riguarda i dati) e la gestione completamente manuale.Nonostante qualche limite, il sistema a schede magnetiche piacque e i produttori americani di calcolatrici tascabili lo usarono sui loro modelli di punta fino agli inizi degli anni ottanta. Due esempi significativi sono la HP-67 (1976) e la TI-59 (1977).

## Descrizione analitica
### Design

Il progetto dello châssis fu affidato inizialmente a Marco Zanuso e in seguito a Mario Bellini, all'epoca giovane architetto, in quanto Perotto si era accorto che la soluzione iniziale progettata da Zanuso prevedeva un grande ingombro, incompatibile con le esigenze di uno strumento da scrivania. Bellini ideò una struttura in alluminio profilato, al fine di evitare interferenze con altre apparecchiature elettriche,, e il peso finale di tutto l'apparato fu di circa 35 chilogrammi. Alcuni esemplari di P101 sono tuttora esposti in musei come esempi di design innovativo (ad esempio, il MoMA di New York).

### Caratteristiche tecniche

* Olivetti P101, esposto al Museo dell'Istituto Tecnico Tecnologico "G. e M. Montani", di FermoDimensione: 275 mm (A) x 465 mm (L) x 610 mm (P)
* Peso: 35,5 kg
* Consumo: 350 W
* Dispositivo di output: stampante a 30 colonne su carta di 9 cm
* Precisione: 22 cifre e fino a 15 decimali
* Operazioni: somma, sottrazione, moltiplicazione, divisione, radice quadrata e valore assoluto
* Memoria complessiva: 240 byte nella ALU (stimata)
* Tastiera: 36 tasti meccanici
* Archivio: apparecchio per lettura e scrittura di schede magnetiche

### Architettura
#### Generalità

La Programma 101 opera solo su tipi di dati numerici decimali. Le applicazioni pratiche della P101 spaziavano dalla contabilità alle simulazioni scientifiche e finanziarie. Il calcolatore utilizza una notazione simile alla notazione polacca inversa (RPN), ma il principio di funzionamento è diverso. Non è infatti presente uno stack e tentare di utilizzare la macchina come calcolatrice RPN porta a gravi errori.
Il linguaggio di programmazione è di tipo Assembler. Le istruzioni predefinite sono:
* le quattro operazioni matematiche fondamentali (somma, sottrazione, moltiplicazione e divisione);
* la radice quadrata;
* il valore assoluto;
* operazioni con i registri: azzeramento, spostamento di dati tra di essi, lettura dall'utente;
* definizioni di etichette di riga, salti condizionati e incondizionati;
* stampa del valore di un registro e di righe vuote.

##### Dettaglio del set di istruzioni

| Comando | Simbolo | Spiegazione |
| Addizione | + | A = A + il registro scelto |
| Sottrazione | - | A = A - il registro scelto |
| Moltiplicazione | x | A = A * il registro scelto |
| Divisione | : | A = A:registro scelto |
| Radice quadrata | √ | A = sqrt(registro scelto) |
| Valore assoluto | A ↕ | A = abs(a) |
| Spostamento da M | ↑ | registro scelto = M |
| Spostamento in A | ↓ | A = registro scelto |
| Scambi con A | ↕ | A = registro scelto registro scelto = A |
| Decimali di A in M | / ↕ | M = parte decimale di A |
| Azzeramento | * | registro scelto = 0 |
| Stampa | ♢ | Stampa il registro selezionato |
| Interlinea | /♢ | Stampa una linea vuota |
| Stop | S | Ferma la macchina per permettere l'inserimento di un dato nel registro M |
| Scambio di R e D | RS | Permette di salvare il contenuto del registro D ed inserirlo nel registro R, usata quando si cambia o si ruota la cartolina magnetica ad esecuzione in corso |

#### Organizzazione della unità centrale

I registri di memoria dell'unità centrale sono realizzati a linea di ritardo magnetostrittiva. Ne deriva una struttura logica di tipo ciclico L'elettronica è realizzata in componentistica discreta: transistor in package TO-18 e diodi montati su basette in bachelite.
L'unità centrale dispone di dieci registri, identificati da numeri e lettere: tre sono di calcolo (A, M, R), due di memoria dati (B, C), altri tre di memoria dati e/o memoria di programma (D, E, F, ripartibili a seconda dell'esigenza) e due (chiamati 1 e 2) riservati alla memorizzazione del programma. Uno dei tre registri di calcolo, quello identificato dalla lettera "M" immagazzina i dati ricevuti dalla tastiera e scambia informazioni con gli altri registri. Ogni registro della P101 può contenere 24 istruzioni composte ognuna da un carattere e un simbolo, da un numero con al massimo 22 cifre o da due numeri con al massimo 11 cifre (con segno e virgola).

#### Periferiche di output

La stampa dell'output avviene su un nastro di carta comune. I programmi vengono memorizzati su schede delle dimensioni di 7 centimetri di larghezza per 24 di lunghezza, che ospitano due piste magnetiche. Tali piste sono leggibili una alla volta, inserendo la scheda nell'apposito lettore prima in un senso e poi nell'altro.
Il lettore è a controllo esclusivamente manuale. Non è possibile quindi leggere o scrivere automaticamente una scheda, neanche creando un programma che faccia ciò; per farlo bisogna impartire il relativo comando manualmente. D'altronde una gestione automatica delle schede avrebbe aumentato di molto la complessità della macchina. Le schede sono pensate principalmente per memorizzare programmi: ogni singola pista magnetica può memorizzare infatti fino a 120 passi di programma. Se si sceglie di memorizzare anche dati numerici si scende ad un massimo di 48 passi, e anche in quest'ultimo caso i numeri memorizzabili sono al massimo sei.

#### Modello di calcolo

Ognuna delle due piste delle cartoline magnetiche può memorizzare programmi comprendenti fino a 120 istruzioni. Sono possibili programmi con più di 120 istruzioni utilizzando entrambe le piste di una scheda magnetica e/o più schede e cambiando e/o girando la scheda a programma in esecuzione dopo aver salvato i dati temporanei del programma in esecuzione nei registri di memoria (programmazione "ad overlay").
Sono possibili subroutine, richiamabili sia manualmente (usando i tasti V,W, Y e Z) che da programma.

## Sistemi derivati

I primi derivati diretti della Programma 101 furono la Programma 102 e la Programma 203: la prima, praticamente identica alla P101, aggiungeva la capacità di scambiare dati con dispositivi esterni attraverso una connessione proprietaria; la Programma 203 integrava invece le capacità di calcolo con quelle di una macchina da scrivere elettronica.
Versione ridotta della P101 è la Logos 328 (1968), calcolatrice elettronica non programmabile.
Evoluzioni della P101 sono l'Olivetti P602 e P652, con funzioni matematiche migliorate, l'inserimento di alcuni programmi in ROM e registri più capienti.

## Simulatori

Negli anni sono stati sviluppati diversi simulatori di programma 101:
* 1976 - Traduttore da programma 101 a BASIC scritto da Steven DeRose alla The Prairie School, usato per insegnare programmazione prima di BASIC
* 1995 – Simulatore di Programma 101 scritto da E.H. Dooijes dell'University of Amsterdam per il museo locale di computer Turbo Pascal
* 2005 – Simulatore scritto dall'ingegnere Claudio Larini, il quale ha avuto contatti con Gastone Garziera, progettista della P101.
* 2016 – Simulatore di Programma 101 sviluppato al Department of Information Engineering and Electrical Engineering dell'University of Cassino, supervisionato dall'Ing.Giovanni De Sandre
* Il Laboratorio-Museo Tecnologicamente di Ivrea ha un simulatore Java della Programma 101 scritto da Giuliano Gaiti, membro del team di progettazione della P101.
* L'ex impiegato Olivetti Marco Galeotti ha creato un integrated development environment (IDE) per la Programma 101, che permette di programmare in modo semplice.

## Filmografia

* Alessandro Bernard e Paolo Ceretto, Quando Olivetti inventò il PC, History, 26 giugno 2011. Documentario televisivo.