Newsgroup: it.comp.software.emulatori
Titolo: Emulatore di calcolatrice meccanica

Sulla scia dell'emulatore di grillo parlante, sottopongo anche su ICSE un
emulatore di calcolatrice meccaniche che ho scritto qualche giorno fa. Si
riferisce alla calcolatrice meccanica Olivetti Summa Prima 20. Ci sono
sorgenti (rilasciati sotto GPL) ed eseguibili (Java). Spero sia gradito.
sorgenti:
http://www.retrocensimento.bbk.com/varie/summaprima_src.zip
eseguibili:
http://www.retrocensimento.bbk.com/varie/summaprima_bin.zip
Java Runtime: 
http://java.sun.com/j2se/1.4.2/download.html
Ringrazio Sergio F. per l'aiuto fornito. Riporto qui di seguito un piccolo
HOWTO:
******************************************************
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.
"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 che usata, e' bene osservare una foto:
http://www.retrocensimento.bbk.com/varie/olivetti1.jpg
Con il simbolo "#" e' indicato quello che nella macchina "vera" e' una
specie di asso di quadri.
Con il simbolo "[div]" e' indicata la piccola levetta/interruttore presente
alla destra degli "operatori"
Con il simbolo "L" e' indicata la leva nera laterale
Con il simbolo "X" e' indicato l'interruttore presente sotto il simbolo "X"
Con il simbolo "C" e' indicata la levetta a sinistra della tastiera numerica
Con "-0987654321" e' indicato il "cursore" al di sopra della levetta "C"
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.
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.
-Digito 8
-Attivo l'interruttore "X"
-Tiro 5 volte la leva nera
-Seleziono "*"
-Tiro la leva
-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
--
Retrocensitevi! Su:
http://www.retrocensimento.bbk.com
http://www.retrocensimento.cjb.net

Post scriptum:
Graficamente non e' il massimo, se qualcuno volesse contribuire per
migliorarlo in questo senso, e' il benvenuto, mi contatti in privato ;)

 Si riferisce alla calcolatrice meccanica Olivetti Summa Prima 20
Ti sei proprio flippato con quella olivetti eh? :-)
Comunque in questo caso -mì come son pignolo- è un simulatore, non un
emulatore.
-- 
Regards LaZ
.·´¯`·.¸.·´¯`·.¸ ><((((º> ....... <º))))>< .·´¯`·.¸.·´¯`·.¸
Mi riservo, con fermezza, il diritto di contraddirmi. (Paul Claudel) 
.·´¯`·.¸.·´¯`·.¸ ><((((º> ....... <º))))>< .·´¯`·.¸.·´¯`·.¸

 emulatore.
Si hai ragione, infatti prima di questo post l'ho sempre chiamato
simulatore. Poi la storia dell'emulatore Grillo Parlante (che no ho visto,
c'e' da verificare che anche quello sia un emulatore o no) mi ha flippato.


Infatti anche quello č un simulatore.

c'e' da verificare che anche quello sia un emulatore o no)
SASS = Speak And Spell SIMULATOR :)
-- 
マッシ　カデンティ - E-mail massi.cadenti(at)
tiscali.it
 <-- NEW
Mastro di chiavi della GHOULS
Obiettore di coscienza ufficiale della BOBBLE
Dittatore del gruppo di fansub IBC-CIF (Rebirth)