(Ri)costruzioni: il simulatore della prima CEP

Il simulatore replica la prima Calcolatrice Elettronica Pisana, o Macchina Ridotta,
nella sua versione finale, completata nel 1957, documentata dal manuale utente
redatto a marzo 1958 e utilizzata per servizi di calcolo scientifico a favore
di diversi altri progetti di ricerca, pisani e non.

Il modello usato per realizzare il simulatore è stato definito al dettaglio
degli schemi logici della macchina, usando come fonti i progetti e gli schemi originali.
In alcuni casi, come per la simulazione dei triodi a catodo freddo Z50T usati
sul pannello di controllo, il dettaglio del modello è alle specifiche di funzionamento
dei componenti elettronici.

Per approfondimenti sulla ricostruzione si rimanda a (Cignoni et al., 2015),
per la storia delle CEP a (Cignoni, 2025) e (Cignoni e Gadducci, 2020).
Altre pubblicazioni, anche sugli usi didattici, sono nella bibliografia di HMR,
le scansioni dei documenti originali sono nell’archivio storico.



Ringraziamenti

Il simulatore è un one-man-project di Giovanni A. Cignoni iniziato nel 2010.
Un grazie speciale, in ordine di apparizione, va a Luciano Azzarelli e Elio Fabri, protagonisti dei fatti. Luciano è stato di grande aiuto nel recupero della documentazione dagli archivi. Poi, con Elio abbiamo passato tante belle ore insieme a interpretare gli schemi e colmare le lacune nei documenti.

Lo sviluppo del simulatore è stato parzialmente supportato nell’ambito di alcuni progetti del Dipartimento di Informatica cofinanziati dalla Fondazione Pisa.
Per avere un’idea dell’impegno richiesto è stata calcolata una misura del codice con SLOCCount (modello di base CoCoMo e costi di mercato di default USA 2004). Il risultato di oltre 230mila dollari US (del 2004) è solo una stima, ma da un’idea dell’ordine di grandezza dell’impegno; inoltre considera solo il codice C++: non include l’impegno per il disegno delle bitmap necessarie per l’interfaccia grafica, né quello, assai più consistente, per la ricerca storica e tecnologica.

Distribuzioni

In dipendenza della distribuzione/versione di Linux, può richiedere particolari versioni delle librerie C/C++, WxWidgets, OpenAL Utility Toolkit: farlo funzionare può essere un incubo - o una sfida appassionante, dipende dai punti di vista. Per comodità c’è anche una distribuzione come macchina virtale.

Software e documentazione

Per mostrare il funzionamento e la programmazione della prima CEP, proponiamo un esempio semplice, ma curioso: un gioco che la trasforma in una macchina mangiasoldi del tempo. Cioè una slot-machine basata sui canonici 3 rulli con 8 simboli (campana, limone, arancia, ciliege, dollaro, ferro di cavallo, lingotto e sette) ovviamente codificati in binario.
I rulli sono rappresentati dai 3 bit centrali dei 3 gruppi di 5 in cui è organizzato l’indicatore della memoria sul pannello di controllo. Dopo aver caricato il programma e avviato il simulatore, si dà il giro ai rulli con il pulsante di avviamento e si bloccano con la chiave di arresto condizionato più a destra.
Buona fortuna!

Il programma si basa su un generatore di numeri pseudocasuali congruenziale: un algoritmo che ai tempi della prima CEP ancora non esisteva. In altre parole la macchina esegue un programma che appartiene al suo futuro: un paradosso temporale per riflettere sulla tesi di Church-Turing.
Inoltre, l’algoritmo richiede una moltiplicazione che però non è fra le istruzioni di macchina della prima CEP - con la divisione e altri sottoprogrammi utili erano parte delle librerie software della macchina. Con un po’ di aritmetica si può essere più efficienti invece di usare il sottoprogramma. Infine, l’esempio usa i breakpoint hardware (una caratteristica sfiziosa della prima CEP) per ottenere il massimo dell’interattività possibile su una macchina di quel tipo.