EMULATORE PER OLIVETTI PROGRAMMA 101

OLIVETTI PROGRAMMA 101 EMULATOR

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....

DOCUMENTAZIONE

In questa sezione è possibile vari manuali della Programma 101 (sia in italiano che in inglese) in formato PDF. Questa sezione tenderà in futuro a coprire anche gli altri modelli successori della P101 (P102, P203, P602, P603) appena troverò della documentazione fruibile.

Per il manuale generale della P203 devo ringraziare Gastone Garziera, che ho avuto l'onore di conoscere personalmente.

_________________________

Una piccola nota (polemica): questa manualistica è stata da me trascritta in formato Word dagli originali  e resa liberamente disponibile come PDF; ma se il tutto è scaricato direttamente da altri siti si prega almeno per correttezza di citare la fonte. Un esempio (negativo) è dato dall'Università di Cassino - ma non sono i soli - che ha una pagina su un suo proprio emulatore P101 on-line (tra l'altro con un po' di "bug" - che posso segnalare se interessati) con i relativi manuali copiati spudoratamente dal mio sito. Un po' più di rispetto della netiquette non guasterebbe!!!

_________________________

   

Alcune copertine dei miei originali......

 *** CONVEGNO A VERONA 11/11/2017***

 

Adesso la pagina è completa!    Il tutto è visibile qui.

 

 *** DOCUMENTATION WANTED ***

 

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.