Il simulatore replica la prima Calcolatrice Elettronica Pisana, o Macchina Ridotta (MR57), nella sua versione finale, documentata dal manuale utente redatto a marzo 1958 e utilizzata nei mesi successivi per servizi di calcolo scientifico a favore di diversi altri progetti di ricerca, pisani e non. Il modello della MR è stato ricostruito al dettaglio degli schemi logici della macchina, utilizzando come fonti i disegni originali. In alcuni casi, come per la simulazione dei triodi a catodo freddo Z50T usati sul pannello di controllo, il dettaglio arriva al funzionamento dei componenti elettronici. Per ulteriori notizie sulla MR si rimanda alla pagina della bibliografia di progetto e all’archivio storico.
Il simulatore è in corso di sviluppo. La versione attuale riproduce
l’uso della MR57 attraverso il quadro di controllo manuale.
Permette
inoltre il caricamento di immagini della memoria, anche parziali, da file
di testo in formato leggibile.
La simulazione è in tempo reale
con un errore medio intorno al centesimo di secondo su hardware ordinario.
È attualmente oggetto di ricerche e di sperimentazione
la modellazione fedele del comportamento delle periferiche della MR57:
una telescrivente Olivetti T2CN in ingresso/uscita, una telescrivente
Olivetti T2ZN con perforatore di nastro in ingresso/uscita, un lettore
meccanico di nastro perforato Olivetti T2TA10, un lettore fotoelettrico
di nastro perforato Ferranti TRMk2.
L’obiettivo è ricreare fedelmente il contesto d’uso della MR incluse
le situazioni limite quali, per esempio, la possibile perdita di caratteri
durante il ritorno carrello delle telescriventi.
Altri sviluppi previsti riguardano funzionalità accessorie per
avere maggiori semplicità d’uso e controllo della simulazione, come
l’ispezione di registri e memoria o la visualizzazione in decimale dello
stato del quadro di controllo.
Il simulatore della MR57 è un one-man-project di Giovanni A. Cignoni iniziato nel 2010: lo sviluppo dipende dal tempo e dalle risorse disponibili. Il lavoro è 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 un’idea dell’ordine di grandezza la dà; inoltre considera solo il codice C++: non include l’impegno per il disegno delle bitmap necessarie per l’interfaccia grafica, né quello per la ricerca storica e tecnologica.
Il simulatore sarà rilasciato con licenza GPL 3. In attesa di una versione del sorgente stabile e distribuibile, è stato rilasciato in forma binaria per Linux. In dipendenza della distribuzione/versione di Linux, può richiedere versioni particolari delle librerie C/C++, WxWidgets, OpenAL Utility Toolkit: può essere un incubo (o una sfida appassionante, dipende dai punti di vista). Per comodità c’è anche una distribuzione come macchina virtale.
Per mostrare il funzionamento e la programmazione della MR57, proponiamo un esempio semplice, ma curioso: un gioco che rende la MR 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 della MR57. 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 MR ancora non esisteva. In altre parole
la MR57 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
c’è fra le istruzioni di macchina della MR: con un po’ di aritmetica
si può aggirare la mancanza. Infine, l’esempio usa i breakpoint
hardware (una caratteristica sfiziosa della MR57) per ottenere il massimo
dell’interattività possibile su una macchina di quel tipo.
La ricerca per simulare fedelmente tutti i dettagli delle periferiche della MR57 è ancora in corso. Fra le cose fatte, è disponibile la replica digitale del carattere delle telescriventi Olivetti T2 usate dalla MR57. Il carattere Truetype è stato disegnato partendo dalla documentazione originale Olivetti e dall’analisi diretta dei martelletti degli esemplari di telescriventi conservate al Museo degli Strumenti per il Calcolo.
L’insieme di caratteri, secondo l’alfabeto standard CCITT ITA2 adottato dalle telescriventi a partire dagli anni ’30, include i 26 glifi delle letters (le maiuscole dell’alfabeto internazionale, nel TTF corrispondenti alle minuscole) e i 26 glifi delle figures (cifre, punteggiatura e simboli, nel TTF corrispondenti alle maiuscole, cioè alle letters shiftate). Per comodità le figures sono replicate anche nei codici ASCII corrispondenti e sono realizzati anche alcuni dei glifi ASCII non inclusi nell’insieme ITA2.