Dopo aver
letto una recensione curata da Alfio Colussi del libro dell'Ing.
Pier Giorgio Perotto
"Programma 101.
L'invenzione del personal computer: una storia appassionante mai
raccontata" sul "Il Giornale dell'Ingegnere" (n. 10 del Giugno 1996), ho iniziato ad interessarmi della storia
della P101
della quale, nonostante ne sia quasi contemporaneo (nel 1965
avevo cinque anni), non avevo mai sentito parlare.

Copertina e retro del libro di Perotto
(ed. Sperling & Kupfer) Le ricerche
successive sono state finalizzate alla realizzazione di un
emulatore completo per poter eseguire e provare il software, e
mi hanno portato a raccogliere oltre 600 mega di manuali,
fotografie, video, brevetti e documentazione varia. Così oltre
ad ottenere informazioni dirette sull' "oggetto" Programma 101
ed i suoi successori, mi è piaciuto ripercorrere anche il
contesto storico (basterà ricordare le figure luminose di Adriano Olivetti e di
Mario Tchou con i calcolatori
della serie
ELEA) in cui tutto questo è nato ed è stato triste dover
constatare quanto l'ignavia, sia politica che manageriale,
dell'epoca abbia contribuito a far perdere all'Italia una
occasione storica (e, come noto, non è stata la sola occasione persa degli
anni '60): chissà che fine avrebbero fatto circa dieci anni dopo
i vari Bill Gates e Steve Jobs .......

Testata dell'articolo sul "Il giornale dell'Ingegnere"
- Ottobre 1996 Tra l'altro nel
corso delle mie ricerche è anche uscito fuori il nome di Massimo
Rinaldi che circa un anno prima di Perotto aveva presentato una
calcolatrice elettronica, la IME 84, che aveva una memoria a
nuclei magnetici ed un display a tubi Nixie con 16 cifre - però questa è un'altra
storia.......
In realtà, nonostante le pretese del suo
progettista, la Olivetti Programma 101, come il suo primo
concorrente
diretto - l'HP 9100, non è definibile un "personal
computer" nel senso moderno del termine ed, operando con un
linguaggio operante su registri ("keystroke" come dicono gli americani), è decisamente più vicina al modello di
"calcolatrice programmabile" sviluppato
negli anni settanta dalla Hewlett Packard (HP-65) e dalla Texas
Instruments (SR-52). E' altrettanto vero, però, che se per "personal
computer" si intende uno "strumento di calcolo personale -
programmabile, elettronico e con 'memoria di massa'" allora possiamo
essere completamente d'accordo con l'Ing. Perotto.

Struttura di base della P101

Dal manuale della macchina

Le istruzioni della P101 -
direttamente da Gastone Garziera!!!!
Sulla Programma 101 è già stato pubblicato tanto
e quindi la macchina è molto nota (contrariamente ai suoi vari successori
che restano decisamente in ombra): si
rimanda dunque alla documentazione chi volesse approfondire. Una piccola
gemma bisogna comunque mostrarla: su un libro del 1970 ho trovato questo
esempio didattico con la codifica in binario(!) delle istruzioni.

Comunque tale fu
l'impatto sull'opinione pubblica che si arrivò addirittura a dedicarle
un francobollo:

Lo
sviluppo dell'emulatore |
La versione originale dell'emulatore risale
al 2005 ed è stata scritta in
Quick Basic 4.5 (quindi a 16 bit) utilizzando una libreria di funzioni BCD, il che permette di
ottenere gli stessi risultati della macchina originale.
L'emulatore è stato poi arricchito nel corso del del tempo con
nuove funzionalità; lanciato con lo switch /? fornisce un
piccolo aiuto:
G:\P101>p101emul
/?
Emulatore Olivetti Programma 101 (16 bit version)
P101EMUL [/?] | [[/NODEBUG] [/PRINTERx] [/IT|/US]
[/SOUND]]
/? switch riga comandi /NODEBUG non scrive il file di debug /PRINTERx scrive su stampante esterna [LPTx:] (x=1,2,3) /IT carica layout tastiera italiana /US carica layout tastiera americana (default)
/SOUND abilita il suono (solo a 32/64
bit) |
Dopo aver
scoperto l'esistenza nel 2013 di QB64, progetto
open-source che
consente di portare in ambienti 32/64 bit programmi scritti per Qbasic/QuickBasic
senza doverli riscrivere completamente, l'emulatore è stato leggermente modificato
per poter essere compilato sotto QB64 ed è nato così il "fratellino", P101EMUL64.EXE,
che può essere eseguito nativamente anche sotto Windows 7/8/10.
In entrambe le
versioni è possibile visualizzare lo status degli switch tramite
l'icona
presente in alto a
sinistra.
|
P101TOQB: traduttore da Programma 101 a Quick Basic |
E' presente pure un traduttore (sia a 16 bit
- P101TOQB.EXE - che a 32/64 bit P101TOQB64.EXE)
da P101 a QuickBasic (vedi nota 5 della sezione 'Note sull'Emulatore'): chiaramente
l'esecuzione dei programmi così tradotti potrà fornire risultati diversi
rispetto alla macchina reale poiché viene utilizzata nei calcoli la
doppia precisione Microsoft.
P101TOQB utilizza per la
traduzione un file di transcodifica (ogni istruzione P101 viene
resa con uno più statement BASIC) e poi aggiunge due file di
libreria (scritti sempre in Quick BASIC) rispettivamente uno in
cima e l'altro in fondo al programma: un file di note presente
nella distribuzione spiega più in dettaglio l'intero processo.
Si può notare che la stessa metodologia
può essere usata per la traduzione da P101 in un qualsiasi
linguaggio di tipo interpretato. |
Breve cronistoria |
-
Dicembre 2005: Prima versione;
per i calcoli veniva usata la doppia precisione del QuickBasic 4.5 con tutti i problemi della virgola mobile
implementata dalla Microsoft..... A questa data risale anche
il traduttore P101TOQB. A parte l'emulatore (scritto
in Pascal) dell'Università di Amsterdam, che però si limita
all'esecuzione di programmi, questo è il primo emulatore
completo della Programma 101 al mondo !!
-
Ottobre 2007: Emulatore messo on
line sul vecchio sito Tiscali - aggiornato nel Luglio 2008 ed a cui
fanno riferimento ancora certi link su Internet.
-
Giugno 2009: Riscrittura del
codice utilizzando le
routine a multipla precisione "BIGNUM"; si ottengono così gli
stessi risultati della macchina originale.
-
Agosto 2010: Oltre a migliorie
varie introdotta la funzione Timer per avere anche i
tempi di esecuzione della P101 reale.
-
Agosto 2013: Prima versione a
32/64 bit con QB64
-
Ottobre 2014: Rivista la
gestione del mouse (sia a 16 bit che a 32/64) e passaggio
sul nuovo sito - questa pagina ha subito nel tempo estensioni e
miglioramenti.
-
Marzo 2015: Penultima versione
aggiornata poi anche a Novembre dello stesso anno.
-
Settembre/Ottobre 2017: Revisione completa del codice con ulteriori correzioni e miglioramenti
(tra i quali una schermata introduttiva e l'uso dei suoni
nella versione a 32/64 bit);
inoltre la versione a 16
bit è stata ricompilata con Microsoft BASIC PDS 7.1 mentre
quella a 32/64 bit con QB64 1.1.
Aggiunto pure P101TOQB64 a 32/64 bit.
-
Gennaio 2019: Grazie alla
segnalazione di un utente via mail, corretto un errore
dell'emulatore (non veniva controllato l'overflow
nell'addizione). Ricompilata la versione a 32/64 bit con
QB64 1.2.
-
Luglio 2023: Ricompilata la
versione a 32/64 bit con
QB64 1.5.
|
Download, Installazione
ed Esecuzione
|
Download
(15/01/2019) - entrambe le versioni a 16 bit e 32/64 bit:
P101Emul.rar
(27/11/2017) - manuale dell'emulatore:
Manuale P101Emul.pdf

(20/07/2023) - versione a 32/64 bit
ricompilata con QB64 v 1.5:
P101EXE64.rar
Installazione - Per
l'installazione è sufficiente scompattare il file di cui sopra
nella radice di una qualsiasi unità - disco fisso o chiavetta USB.
La situazione delle cartelle sarà la seguente:
C:\>tree p101 Elenco del percorso delle cartelle per il volume ACER Numero di serie del volume: 1CE0-B742 C:\P101 ├───AMSTERDAM
◄----
emulatore Univ.di
Amsterdam con mia traduzione QuickBasic ├───ANGELA
◄----
ANGELA GAME (tradotto
dalla versione Java sito di Perotto) │ └───ANGELA GAME (Programma101)_file ├───COMPIL
◄----
traduttore da P101 a QuickBasic ├───FORM
◄---- files di "form" per il mouse ├───QUEENS
◄---- programmi tratti da altri
siti ├───SCHEDE
◄----
file schede magnetiche "virtuali" └───SCHERMI
◄----
schermate varie (compresi i file di
help)
Esecuzione - Per l'esecuzione basterà lanciare uno
dei due eseguibili - a seconda del sistema operativo ospite. Ecco le due schermate: la prima è
quella di P101EMUL (a 16 bit - a schermo intero sotto XP)

mentre la seconda è P101EMUL64 (a
finestra - sotto Win7 - versione 32/64 bit):

I Sistemi Operativi
supportati sono i seguenti:
nome |
DOS 6.x |
Windows 9.x |
Windows XP |
Windows 7/8/10 32 bit |
Windows 7/8/10 64 bit |
P101EMUL |
(schermo intero) |
(finestra e schermo intero) |
(finestra e schermo intero) |
(solo finestra) |
solo in virtualizzazione (ad esempio DosBox). |
P101EMUL64 |
no |
no |
 |
 |
 |
Lo stesso vale per le
versioni P101TOQB e P101TOQB64 del programma
traduttore. Come indicato P101EMUL funziona anche a 64 bit
usando un software di virtualizzazione; senza ricorrere ad
applicazioni pesanti - tipo VM Player o Virtual PC - il buon
DosBox 0.74 sarà più che sufficiente. Basterà montare
il disco di installazione di P101EMUL con una istruzione
mount e poi si va: una sola avvertenza, dovrà essere
disponibile l'applicazione EDIT a 16 bit per poter
accedere ad alcune funzioni del menù
Controllo .

Nota: In alcune configurazioni (usando P101EMUL in una
finestra) la palette dei colori
potrebbe non essere applicata correttamente a causa dei driver della scheda video, cosicché i colori risulteranno
sfalsati. Si consiglia di utilizzare la versione a 32/64 bit. |
Note
sull'Emulatore |
|
1. |
Per visualizzare correttamente i caratteri P101,
utilizzare la codepage 437 (con il comando chcp 437 oppure
modificando permanentemente il registro di Windows). |
|
2. |
Le stampe generate dall'emulatore
vengono scritte di default sul file P101TAPE.PRN, ma si può
stampare, tramite lo switch /PRINTERx, anche
su carta utilizzando una stampante collegata ad
una porta LPTx. (reale oppure virtualizzata) . E' possibile ottenere una simulazione
realistica della P101 utilizzando una stampante termica ad
almeno 28 colonne che stampi l'intero set dei caratteri ASCII. |
|
3. |
Nella cartella SCHEDE sono presenti
svariati programmi: le schede numerate da 001 a 099 contengono programmi
originali tratti da fonti Olivetti, mentre quelle numerate da 100 in poi
contengono programmi
scritti da me o trovati in rete (ognuno con il proprio autore). Tutti i programmi sono stati testati e funzionano
correttamente con l'emulatore. |
|
4. |
Nella cartella ANGELA si può trovare il mitico "ANGELA
GAME",
convertito in QuickBasic 4.5 da una versione scritta in Java contenuta
nel sito dell'Ing. Perotto. Ricordo che "ANGELA GAME" fu presentato al
BEMA di New York nel 1965 come programma dimostrativo delle capacità
della P101. |
|
5. |
Nella cartella COMPIL sono disponibili pure
P101TOQB.EXE e
P101TOQB64.EXE che consentono di tradurre
un programma P101 in QuickBasic/Qbasic, generando il file .BAS corrispondente. Tale
programma accetta fino a 400 istruzioni P101, permettendo così di
eseguire e verificare anche programmi che non potrebbero girare sulla
P101 originale (limitata, com'è noto, a 120 istruzioni). |
|
6. |
Dalla versione 2015 è possibile specificare con lo switch
/IT che venga
caricato P101EMUL con la tastiera italiana anziché con quella
di default (americana). |
|
7. |
Sempre dalla versione 2015 è
disponibile la funzione Timer che fornisce una stima realistica
dei tempi di esecuzione sulla P101 reale. |
|
8. |
Si può scaricare, a complemento del
pacchetto di installazione, anche il file "contenuto
schede.pdf"
che
presenta i dettagli sui programmi forniti. |
|
9. |
L'utilizzo dell'emulatore,
nelle fasi iniziali, è uguale a quello della macchina reale:
si accende la P101 (si lancia il programma di emulazione) e la
luce rossa si accende, si preme (si clicca) il tasto di "General
Reset" così da inizializzare il tutto, la luce rossa si spegne e
si è pronti. |
 |
Un
piccolo esempio ..... |
Vediamo
un piccolo esempio di utilizzo dell'emulatore, usando una delle
schede programma già pronte e precisamente la #136 (Tabella
di potenze intere). L'utilizzo del programma è semplice: si preme
V poi si imposta un
numero e si preme
S
per l'esecuzione; il programma si blocca in
errore (luce rossa accesa) quando viene superata la
capacità di calcolo. Si cancella l'errore con
CLEAR e si può ricominciare.
Lanciamo l'emulatore, premiamo su
General
Reset per preparare la P101, attiviamo il menù
Controllo e scegliamo la voce
Usa scheda magn.

Impostiamo il numero di scheda 136
cliccando sul piccolo tastierino numerico a destra e confermando
con OK. (CE cancella l'ultima cifra impostata). La
"scheda magnetica" viene trasferita in memoria.
Cliccando sullo switch PRINT (che
passa da OFF a ON) e premendo
*
e poi
♦
otteniamo
il listato del programma (sulla macchina reale non vengono
stampati i passi di programma)

A questo punto clicchiamo sullo switch
PRINT (che passa da ON a OFF) e siamo
pronti per una esecuzione di prova: con la rotella a 2 decimali
si preme
V
poi le cifre 1 2
e successivamente
S . L'elaborazione si
ferma con un errore di "overflow" (luce rossa accesa)

Tramite la voce
Vedi
Nastro del menù
Controllo possiamo vedere il
risultato completo dell'elaborazione (si noti in basso a destra
il Timer in secondi: sulla macchina reale
questa esecuzione dovrebbe durare quindi circa 20 secondi....)

e possiamo confrontarlo con
quello della macchina reale (che, ahimè, non possiedo.......)

Come già detto, con
CLEAR si azzera l'errore e si riparte:
ovviamente OFF "spegne" la macchina. Nel nostro
caso, dopo aver premuto
CLEAR, la situazione dei registri è la seguente
(dalla voce
Registri del
menù
Controllo ):
 |
Dove parlano di noi |
Questo emulatore è stato sviluppato essenzialmente
a fini personali, ma lo stesso nel corso del tempo ha acquisito una sia
pur piccola visibilità: segnalo quindi con piacere questi link:
https://ub.fnwi.uva.nl/computermuseum/p101emul.html (in inglese) con un esecutore
di programma P101 scritto in Pascal nel 1996, da cui ho tratto
ispirazione per scrivere la prima versione del mio emulatore nel 2005 -
tra l'altro, qualche anno dopo l'ho tradotto in Quick Basic
(ovviamente!) e l'ho reso disponibile in questo download (cartella
AMSTERDAM).
http://paololatella.blogspot.it/2013/04/emulatore-per-olivetti-programma-101.html
il primo sito che ha parlato di questo emulatore (anche se si riferisce
ad una versione del 2008 - già superata ed ospitata sul vecchio sito
Tiscali)
http://www.vincenzoscarpa.it/emuwiki/pmwiki/pmwiki.php?n=Emulatori.Win,P101?&lng=it&r=1&w=1024&h=768
che ospita il mio emulatore (anche se si riferisce ad una versione del
2008 - già superata ed ospitata sul vecchio sito Tiscali)
http://www.cambiarvita.net/down.htm che ospita il mio emulatore
(anche se si riferisce ad una versione del 2008 - già superata ed ospitata
sul vecchio sito Tiscali)
https://scikingpc.eu/programmiamo-la-programma-101/6/ che contiene,
tra l'altro, un piccolo corso sul linguaggio di programmazione della P101
http://museo.inf.upv.es/es/programma-101-4/ (in spagnolo) che
contiene una bella pagina sulla P101 (dal titolo
La calculadora programable Programma 101) e parla anche di
questo emulatore - con un link finalmente riferito a questa pagina!!!!
Tra l'altro ho avuto l'onore di scambiare delle mail con l'autore della
pagina, Antonio Estrella Contreras, una persona veramente
squisita. E' anche disponibile on-line la sua tesi di laurea sulla
Programma 101: anche se è scritta in spagnolo si legge che è una
meraviglia....
|
MI STO INTERESSANDO ANCHE DEI SUCCESSORI
della Olivetti P101 e in specifico della P102, P203, P602 e P603 perché sarebbe
interessante emulare anche questi modelli. Perciò chiunque abbia
informazioni tecniche specifiche (manuali, esempi di programmazione) in
qualsiasi lingua su questi modelli mi può scrivere a
claudiolarini
(at) tiscali.it
perché in Internet, a parte le solite
fotografie strausate negli (inutili) siti-museo che ospitano cadaveri
di computer, non si trova quasi nessuna informazione utile su questi modelli !!!
I'm interesting in receiving technical
informations (manuals, programming examples ...) in every language for
Olivetti
P102, P203, P602 and P603 so we can write a full emulation program for these
models! Thanks in advance. Write to
claudiolarini (at) tiscali.it.
|