16.2. Summa Prima 20

Francesco Sblendorio

Come ho scritto altrove, circa una settimana fa sono riuscito a procurarmi al mercatino delle pulci (per 5 euro) una calcolatrice meccanica Olivetti Summa Prima 20.

Il suo funzionamento e' semplice, ma capirlo non lo e' stato proprio: sia io che altri miei amici siamo letteralmente impazziti nel cercare analogie (che non ci sono) con le odierne calcolatrici.

Alla fine, dopo vari tentativi, una email chiarificatrice di Sergio S. ed una chiacchierata serale con Daniele Gratteri, sono riuscito a capire come funziona "in toto"; mi appresto a scrivere quindi un resoconto della "fatica".

In piu', ho scritto un simulatore di tale macchina, in modo tale da poterci "giocare" senza averla materialmente. Il simulatore e' scritto in Java, e fornisco sia l'eseguibile che i sorgenti (rilasciati sotto G.P.L.). E' stato scritto "di getto", quindi e' liberamente migliorabile, magari anche nell'estetica (gli elementi della Olivetti sono simulati con normali bottoni, magari un grafico di buona volonta' potrebbe metterci delle immagini di tasti/leve/testine...), purche' resti sotto GPL.

Il simulatore e' scaricabile presso gli URL:

Per i binari (compreso un banale .bat che lancia il .jar): http://www.retrocensimento.bbk.com/varie/summaprima_bin.zip

Per i sorgenti: http://www.retrocensimento.bbk.com/varie/summaprima_src.zip

Per eseguirlo e' necessario avere installato il JRE 1.4: http://java.sun.com/j2se/1.4.2/download.html

Ecco un breve HOW-TO:

16.2.1. DESCRIZIONE GENERALE

La Olivetti Summa Prima 20 e' essenzialmente un sommatore: l'operazione base e' la somma *algebrica* (puo' sommare quindi sia numeri positivi che negativi). La sottrazione e' quindi eseguita come somma di un numero positivo con uno negativo.

Gestisce solo numeri interi, quindi niente euro ;-)

Puo' eseguire anche moltiplicazioni e divisioni, eseguite rispettivamente come ripetizione di somme e ripetizione di differenze.

16.2.2. INTERFACCIA UTENTE


                                 L (=leva nera)

                     *
                   <   -  [div]
                     #
cursore
-0987654321

           7 8 9
                    +---+
C(=clear)  4 5 6    |   |
                    | X |
           1 2 3    |   |
                    +---+
          0 00 000

Per capire meglio la simbologia usata, e' bene osservare una foto: http://www.retrocensimento.bbk.com/varie/olivetti1.jpg

16.2.3. PRINCIPI GENERALI

Prendiamo in considerazione il cursore rosso, quello che "viaggia" sulla scritta "-0987654321". La sua posizione indica di quante cifre e' composto il numero che stiamo digitando in questo momento sul tastierino numerico. Se digito "76" il cursore si posizionera' su "2" (76 ha due cifre), se digito "632" si posizionera' su "3" e cosi' via.

La leva "C" serve per le correzioni: tirata verso il basso cancella l'ultima cifra digitata, tirata verso l'alto cancella tutto il numero digitato ed e' possibile riscriverlo da zero.

All'interno della macchina c'e' una sorta di "accumulatore" meccanico, al quale ogni volta si va ad aggiungere il numero che diamo in input. Una volta digitato un numero, tirando a fondo e rilansciando la leva nera laterale, il numero viene stampato (in nero) sul rullo ed aggiunto alla somma parziale contenuta nell'accumulatore.

Per inserire un numero negativo, basta posizionare il pomello bianco sul "-" prima di tirare la leva nera: sul rullo apparita' il simbolo "-" sulla destra del numero.

Per "visualizzare" (=stampare) la somma parziale raggiunta, posizionare il pomello bianco su "#" (cioe' l'asso di quadri, quello sotto l'asterisco) e tirare la leva: viene stampata, in rosso, la somma parziale evidenziata dal simbolo dell'asso di quadri a destra del numero. Da questo momento in poi, rispetto a prima, nulla e' mutato (a parte la stampa della somma parziale): ogni numero inserito verra' ancora aggiunto alla somma parziale.

Se si vuole "azzerare" l'accumulatore bisogna eseguire l'operazione di "somma totale": bisogna posizionare il pomello sull'asterisco "*" (invece dell'asso di quadri) e tirare la leva nera. A questo punto viene stampato in rosso il risultato, evidenziato dall'asterisco. Ora l'accumulatore e' azzerato, ed e' possibile eseguire altre operazioni.

Il simbolo "<" invece indica... commento: digitando un numero e posizionando il pomello sul "<" prima di tirare la leva nera, si fa in modo che il numero digitato venga stampato (ed opportunamente evidenziato dal segno "<" ma non tenuto in considerazione nel calcolo della somma.

16.2.4. ESECUZIONE DELLE OPERAZIONI

* Somma e sottrazione: seguire il procedimento indicato nel paragrafo precedente

* Moltiplicazione: la moltiplicazione e' eseguita come una somma ripetuta. A tale scopo bisogna utilizzare l'interruttore "X": tale interruttore ha lo scopo di "bloccare" il numero digitato anche dopo che e' stata tirata la leva nera: di solito, dopo il "tiraggio" della leva il cursore torna in posizione di partenza ed e' possibile scrivere un nuovo numero. Con l'interruttore attivato invece, anche dopo che e' stata tirata la leva nera, il numero appena digitato resta "in memoria", ed e' quindi possibile tirare la leva "n" volte, dove "n" e'... il secondo fattore.

Alla fine, selezionare "somma totale" (l'asterisco) e tirare la leva l'ultima volta: l'interruttore "X" torna al suo posto e viene stampato il risultato, come una normale somma.

Esempio: voglio eseguire 8x5.

Risultato: 40

* Divisione: la divisione e' eseguita attraverso sottrazioni successive. Vengono eseguite "k" sottrazioni finche' il numero nell'accumulatore cambia segno (passando da positivo a negativo). Il risultato e' "k-1". Il cambio di segno e' segnalato dal rettangolino a forma di "-" presente nel riquadro del cursore (il "-" di "-0987654321"): nero significa "positivo", bianco significa "negativo". A tale scopo e' presente la levetta "[div]", che e' possibile "attivare" solo quando il pomello e' posizionato sul "-" (in caso contrario la levetta torna in posizione di partenza). Vediamo ora il procedimento con un esempio: Voglio eseguire 15 / 7 (Risultato: 2 con resto di 1)

  • Digito 15

  • Tiro la leva nera

  • Digito 7

  • Seleziono "-"

  • Abbasso la levetta "[div]"

  • Attivo l'interruttore "X" (per "bloccare" il 7)

  • Tiro la leva nera facendo attenzione al rettangolino: e' nero

  • Tiro la leva nera facendo attenzione al rettangolino: e' nero

  • Tiro la leva nera facendo attenzione al rettangolino: e' bianco

A questo punto saranno stati stampati tre "-": sottraggo uno: Risultato: 2 (il quoziente). Per il resto devo ri-sommare il 7 cosi':

  • Alzo la levetta "[div]": il pomello torna al centro

  • Tiro la leva nera

  • Posiziono il pomello su "*"

  • Tiro la leva nera

Risultato: 1 (il resto)

Buon calcolo meccanico a tutti :)