VISICALC

 

Nei miei studi sulla storia dell'informatica, un posto rilevante spetta a VisiCalc per tutta una serie di motivi che vanno dal fatto di essere stato il primo programma di foglio di calcolo al fatto di essere stato portato su quasi tutte le piattaforme dell'epoca (dall' Apple II/III al TRS-80 al Commodore PET 8032, all'Atari 800, al PC-IBM e ai vari  HP-85/87, HP serie 100 - tra cui il 125 in CP/M). Addirittura HP sviluppò una versione per il suo minicomputer HP3000 che chiamò Deluxe VisiCalc/3000 della quale sono rimaste pochissime tracce. In rete si trovano quasi tutti i manuali per i VisiCalc dei computer sopra elencati e non avendone nessuno da provare - PC IBM a parte - la parola d'ordine per vedere all'opera VisiCalc è EMULARE!

LA STORIA

VisiCalc (che sta per VISIbile CALCulator) è stato il primo programma di foglio di calcolo ("spreadsheet" in inglese) per computer, uscito originariamente per l'Apple II. E' spesso considerato l'applicazione che ha trasformato il microcomputer da un hobby per appassionati in un serio strumento di lavoro. VisiCalc ha venduto oltre 700.000 copie in sei anni.

Concepito da Dan Bricklin, affinato da Bob Frankston, sviluppato dalla loro società Software Arts, e distribuito da Personal Software nel 1979 (in seguito denominata VisiCorp) per il computer Apple II, spinse l'Apple a diventare da giocattolo per hobbisti ad un utile strumento per le imprese, due anni prima della introduzione del PC IBM.

VisiCalc è stato,in parte, ispirato da precedenti programmi di calcolo "riga e colonna" diffusi su sistemi time-sharing di diverse aziende americane. Tra questi prodotti c'erano Business Planning Language (BPL) della International Timesharing Corporation (ITS) e Foresight, della Foresight Sytems. Tuttavia, questi programmi di foglio di calcolo in timesharing non erano completamente interattivi, né potevano essere eseguiti su personal computer.

Secondo Bricklin, egli stava guardando un professore della Harvard Business School creare
un modello finanziario su una lavagna. Quando il professore trovava un errore o voleva  cambiare un parametro, doveva cancellare e riscrivere una serie di voci sequenziali nella tabella. Bricklin si rese conto che poteva replicare il processo su un computer utilizzando un "foglio elettronico" per visualizzare i risultati delle formule di base. Lo sviluppo di VisiCalc prese due mesi di lavoro di Frankston e Bricklin durante l'inverno del 1978-79. La loro intenzione iniziale era di poterlo far girare in 16K di memoria, ma questo si rivelò impossibile e rese necessario l'utilizzo di 32K (alcune caratteristiche aggiuntive che richiedevano uno schermo testo/grafica dovettero essere omesse per ragioni di spazio).  Tuttavia, Apple finalmente iniziò a vendere Apple II con 48k a seguito di un calo dei prezzi della memoria RAM e questo non fu più un problema. La versione iniziale non aveva le funzioni logiche (@IF, @AND, @OR, @NOT,  ecc..) e supportava anche il registratore a cassetta che fu poi rapidamente abbandonato (la versione 1.35 per Apple II aveva i comandi /SW e /SR per scrivere e leggere da cassetta).

A seguito del rilascio di VisiCalc, Bricklin e Frankston svilupparono versioni anche per l'Atari 800 e il Commodore PET, cosa che si poteva fare abbastanza facilmente grazie al fatto che condividevano la stessa CPU 6502 con Apple II, e si era quindi in grado di riciclare grandi porzioni di codice. La versione di PET è stata ampiamente criticata perché lasciava solo una piccola quantità di spazio per il foglio di lavoro a causa dell'insistenza degli sviluppatori di includere un proprio DOS personalizzato (che "mangiava" una grande quantità di memoria). Altre versioni seguirono per l'HP 150 e il TRS-80 Modello I e II. Infine, VisiCalc è stato portato su PC IBM ed è diventato uno dei pezzi iniziali del software disponibile per esso all'epoca del suo lancio nel 1981. E' interessante notare come, tipico dell'epoca, tutte le versioni fossero protette dalla copia (eccetto quella per il TRS-80 modello I) ed addirittura la versione Commodore aveva una ROM di protezione da inserire all'interno.

Visto il successo di VisiCalc seguì una serie di altri programmi di fogli di calcolo con funzioni più sofisticate, tra cui il Supercalc per il sistema operativo CP/M, Lotus 1-2-3 per MS-DOS (1983), Microsoft Multiplan (1983) per svariate piattaforme tra cui anche il Commodore 64, AppleWorks (1984), e Microsoft Excel (1985) per Windows 2. A partire dal 1983 ci furono dei problemi sia di marketing che legali tra Software Arts e Visicorp finché non si giunse all'acquisizione da parte di Lotus e così il suo sviluppo fu interrotto nel 1985, mentre Lotus 1-2-3 diventò il programma di foglio elettronico dominante sui PC compatibili prima dell'era di Windows.


LE CARATTERISTICHE

Considerando la sua età, VisiCalc è sorprendente capace. Il sistema di menù "slash-based" e le funzioni '@' sono molto pratiche. Le celle possono contenere etichette o numeri (ma non date) e si possono immette riferimenti a celle nello stile 'A1' ancora oggi usato dai moderni fogli elettronici come Microsoft Excel. Il limite di 63 colonne e 254 è meno stringente di quanto sembri se si considera che la visualizzazione avviene una finestra di 80x25 (o peggio 40x25) caratteri. Le funzioni di VisiCalc (circa una trentina) includono sia funzioni numeriche semplici come SUM, MAX e AVERAGE, come pure LOOKUP che le comuni trigonometriche e logaritmiche. Il formato dei dati numerici può essere di tipo intero, decimale, scientifico o "a grafico". Quest'ultimo formato, che visualizza una riga di asterischi lunga quanto il numero stesso, è stato usato per creare una tavola "grafica" della funzione seno. VisiCalc è sorprendentemente agile riguardo la replicazione delle formule: per ogni riferimento di cella nella formula, viene chiesto se si vuole mantenere il riferimento non modificato o se si vuole aggiornarlo relativamente alla posizione della cella. C'è poi la possibilità di fissare righe o colonne come titolo (vedi la riga 1 dell'esempio) o di dividere il foglio in due finestre per visualizzarne due aree diverse contemporaneamente.

L'EMULAZIONE

Dopo aver scaricato la documentazione reperibile in rete, il passo successivo è stato quello di reperire le immagini dei dischi VisiCalc e di farli eseguire sui vari emulatori, non sempre con successo. Vediamo cosa è successo macchina per macchina (vedi anche la tabella riassuntiva ). Per il confronto ho scelto il file demo di esempio dell'HP-85/87 XYZ.VC

1) APPLE ][. Per APPLE ][ la scelta tra i vari emulatori disponibili è caduta su APPLEWIN. Per far girare l'emulatore basta procurarsi una copia del DOS 3.3 Apple, assegnarlo al Drive 1, assegnare l'immagine VisiCalc al Drive 2 e lanciare l'emulatore. Dopo un CATALOG,D2 lanciare VisiCalc con BRUN VISICALC (o qualcosa di simile). Agli inizi, paradossalmente, per la macchina che ha visto nascere VisiCalc si trovava in rete poca documentazione, ma finalmente la situazione è migliorata, così dopo la Reference Card della prima versione - la 1.35 -  con il relativo manuale e svariati file di testo con elenchi di comandi (il migliore di questi è un file PDF qui riportato ) sono arrivati anche altri libri e manuali. Il libro di Donald Beil (The VisiCalc Book - Apple Edition) comperato su Ebay si è rivelato una buona integrazione del manuale. Più recentemente è arrivata anche la versione Advanced per Apple II, fatta girare con un altro buon emulatore per Apple II GS e cioè KEGS.

Lo schermo di VisiCalc per Apple II - versione italiana

VisiCalc Advanced per Apple II GS

2) APPLE III. Per Apple III non c'è stato niente da fare: con l'emulatore SARA non ha funzionato. Peccato perché la versione VisiCalc Advanced è molto interessante e costituiva l'evoluzione naturale di VisiCalc verso un prodotto più prestazionale (funzioni finanziarie estese, larghezza individuale per le colonne, formati cella personalizzati, protezione celle ecc...). Alla fine comunque sul sito https://winworldpc.com/product/visicalc è stato trovato il manuale ed i dischi  da uno dei quali è stato estratto l'help e che è stato messo in un file PDF qui riportato . Inizialmente per l'Apple III era commercializzata la versione chiamata VisiCalc III (a 80 colonne) simile a quella dell'Apple][.

3) COMMODORE PET 8032 & 4032. Qui la scelta è obbligata: WIN VICE è perfetto! La difficoltà è stata quella di reperire l'immagine della ROM di protezione, ma una volta trovata tutto è andato liscio. Per avviare VisiCalc, si configura la ROM come qui sotto.

La ROM di protezione per il PET.

Si associa poi l'immagine del disco VisiCalc al drive 8: per far partire VisiCalc LOAD"*",8 e poi RUN.

Purtroppo anche per questa macchina c'è pochissima documentazione (solo la "Pocket Reference Guide"). Un fattore critico di questa implementazione è il fatto che venga lasciata pochissima memoria per il foglio elettronico (uno semplice come quello dell'esempio lascia liberi solo 5K contro, ad esempio, i 16K dell'Atari che è sempre una macchina da 32K di memoria ): questo è dovuto probabilmente che questa versione di Visicalc contiene un proprio DOS per la gestione dei dischi anziché usare il Kernal del PET.  Allo stesso modo è possibile avere anche le 40 colonne usando l'emulazione per il Commodore PET 4032 con la stessa ROM di cui sopra. Con i modelli superiori (PET 8096) è possibile, sfruttando l'espansione di memoria da 64K ed avendo la versione 1.76A di Visicalc ottenere 73K di memoria per i propri fogli elettronici: al momento non sono ancora riuscito a configurare WIN Vice per replicare questo risultato. Mio commento finale: peccato non sia mai uscita una versione per C64 ma solo il Multiplan !!

4) TRS-80. Qui tutto bene: ho fatto girare VisiCalc su tre emulatori (TRS32 di Matthew Reed- in figura, TRS80 di Matthew Hamilton e SDLTRS). Quest'ultimo va configurato, salvato su un file .t8c e richiamato dopo la partenza con il tasto F7. La documentazione per il TRS-80 è veramente imponente e disponibile per le varie versioni di VisiCalc.

E' stata ritrovata anche la versione 02.09.02 a 80 colonne per il TRS-80 Mod. 4!

5) ATARI 800. ATARI 800 EMULATOR ha risposto pienamente alle aspettative. Tramite un file batch è possibile configurare il tutto e farlo girare comodamente. Questa macchina, assieme ai TRS-80, dispone di TUTTA la documentazione! (compreso il libro di Beil sopracitato)

6) HP 85, 86 e 87. Qui nessun problema. La versione di VisiCalc Plus per HP-85 è stata fatta girare su due emulatori (HP85 EMULATOR di Everett Kaser e HP-EMU di Olivier de Smeet che fa girare anche il VisiCalc Plus per HP-87 con un ottimo manuale). Questa versione, oltre ad avere un maggior numero di funzioni, si può interfacciare con una serie di programmi in HP Basic per disegnare istogrammi, diagrammi a torta, curve di regressione ecc. Un HP-87XM espanso al suo massimo e cioè a 640K (come un XT IBM !) poteva tenere in memoria tutte le 16002 celle di un tabellone VisiCalc.

Un CATalog del dischetto del VisiCalc per HP85.

VisiCalc Plus per HP-87

VisiCalc per HP-85

7) HP 125/120/150 e HP-75. Purtroppo niente da fare: non esistono emulatori per queste macchine, ma almeno esiste un ottima documentazione. Di solito il nome ufficiale per VisiCalc riporta anche il modello della macchina: si parla così di VISICALC/125, VISICALC/150, VISICALC/75 ecc. La versione per HP-75 (su ROM) si è rivelata la più interessante perché implementata su un dispositivo portatile e perché presenta caratteristiche differenti dalle altre versioni (è interfacciabile con l'HP Basic residente).  La versione per HP-120/125 è l'unica di VisiCalc sotto CP/M. Un'occhiata particolare alla versione "touch-screen" per HP-150 (sotto MSDOS 2 o 3 ma non PC IBM compatibile):

Sempre dall'immagine del disco di VISICALC/150 ho recuperato l'help del programma e i fogli elettronici di esempio .

La ROM del VisiCalc/75.

8) PC-IBM.  Qui, ovviamente, si può spaziare come si vuole. Consiglio di scaricare VC.COM (la versione 1.0 e cioè 27K di puro assembler 8088 !!!) dal sito www.bricklin.com e di farlo tranquillamente girare su una macchina DOS o Windows (16/32 bit). Io l'ho messo su un floppy 3"½ (assieme alla versione 1.1) ed ho importato dai dischi delle altre versioni i file di esempio.

Ho fatto poi lo stesso lavoro usando invece un floppy da 5"¼ (360K): Visicalc, sia 1.0 che 1.1, è stato eseguito direttamente sul mio PC-IBM (512Kb di memoria, floppy A: da 360K e disco fisso C: da 10Mb col DOS 3.30). Al solito, l'uso della memoria disponibile è un po' ballerino - all'avvio sono disponibili solo 151Kb per il foglio elettronico - ma comunque il tutto funziona. In foto il solito XYZ.VC.

Sul manuale del PC-DOS IBM 2.0 [Gennaio 1983] ci sono due paginette per aggiornare  il VisiCalc 1.1 dal PC DOS 1.1 alla versione 2.0. In realtà per il PC-IBM ho potuto verificare l'esistenza di cinque versioni e precisamente:

  • la 1.0 datata 1979,1981 (con /V che la riporta come 1.76 -  quella scaricabile dal sito di Bricklin) per il PC-DOS 1.00;

  • la 1.1 datata 1979,1982 (con /V che la riporta come 1.77) per il PC-DOS 1.1;

  • la 1.2 datata 1979,1983 per il PC-DOS 2.x (con /V che la riporta come 2.02 o 2.04) che poteva utilizzare fino a 512K di memoria conven-zionale ed un hard disk.

  • sul sito https://winworldpc.com/product/visicalc sono state trovate anche le "tarde" versioni di VisiCalc, cioè la Advanced - simile a quella per Apple III - e Visicalc IV- con il manuale e solo per PC, oggetto di un numero speciale di PC Magazine del 17 Aprile 1984 - che era in pratica la versione 1.2 con integrato il programma "StretchCalc" il quale aggiunge al menù Visicalc il comando "Þ" che permetteva di avere integrata la parte grafica e quella di database.

Quest'ultima versione doveva probabilmente rispondere al predominio del Lotus 1-2-3 che all'epoca era diventato lo stato dell'arte nel campo dei fogli elettronici: solo qualche mese dopo, agli inizi del 1985, la Visicorp veniva acquisita da Lotus e il "progetto" VisiCalc chiuso definitivamente.

Visicalc IV (vers. 1.2 con "StretchCalc")

Visicalc Advanced per PC-IBM

Il programma di test in esecuzione con Windows XP

N.B 1:  Le due versioni più "antiche" di Visicalc (1.0 & 1.1) presentano alcuni problemi nell'essere eseguite in un ambiente moderno: non riescono ad utilizzare completamente la memoria disponibile (solo 128K a cui vanno tolti la parte DOS residente ed i 27K di Visicalc stesso - restano così al meglio 70K per il foglio elettronico); hanno problemi nella gestione del file system (non è possibile ad esempio sovrascrivere un file modificato: bisogna avere un file system FAT12 o FAT16). Questi due problemi vengono nettamente ridotti usando l'emulatore DOSBox (v. 0.74): infatti montando il device su cui risiede VisiCalc come A: (con mount a: <device_path>) si ottiene che VisiCalc 1.0 & 1.1 vedono entrambi 92K utili per il foglio elettronico e tutte le operazioni su file sono possibili. Per la cronaca, la versione DOS riportata dall'emulatore è la 5.0.

N.B. 2: Se si utilizza una stampante IBM Graphics o Epson è possibile fornire la stringa per la stampa in compresso come indicato sul manuale. E' possibile scegliere anche la porta di stampa, sia seriale che parallela (ammesso di avere una stampante DOS compatibile!).

N.B. 3: Sul dischetto del Mouse Microsoft (1983 !!!) ho trovato un programmino che permette di aggiungere il mouse alle versioni 1.x di VisiCalc per PC: prima di usare il nostro si lancia "MENU VC", un piccolo TSR, et voilà Visicalc ha il mouse !!!

Il tutto funziona in un ambiente DOS 5/6 puro (o anche in DosBox 0.74) usando come gestore del mouse la versione che viene data con il QuickBasic 4.5 (la 6.24A). Quindi riepilogando, con MS-DOS o DosBox attivati, si può scrivere anche un file batch del tipo:

MOUSE
MENU VC
VC

 

N.B. 4: Per ovviare ad una delle manchevolezze principali del programma, e cioè l'help in linea, ho realizzato un piccolo TSR in Turbo Pascal 3 che, lanciato prima di VisiCalc, consente con Shift+F1 di avere almeno una pagina di help: meglio di niente .............

Volendo comunque emulare il PC IBM c'è PCE-PC Emulator di Hampa Hug: abbiamo potuto così vedere all'opera VisiCalc a 40 colonne sul PC-IBM con una CGA !

  

Purtroppo questo programma ha un grosso neo costituito dal fatto che non dispone di utilità per manipolare direttamente i formati virtuali (PFDC) consentendo, ad esempio, l'import/export di file "reali" dal PC. L'unico modo che ho trovato consiste nel generare delle immagini di dischetti reali (il che richiede potrebbe anche richiedere un lettore di floppy da 5"¼) usando l'utility WinImage e poi con PFDC.EXE trasformarla nel formato richiesto dall'emulatore.

 

Una bella foto di tutte le macchine con il loro VisiCalc !! Si riconoscono da sinistra a destra in alto APPLE III, TRS-80 MOD. 3, APPLE II, PC IBM, TRS-80 Mod. 2 ed in basso ATARI-800, HP-150, COMMODORE PET 8032 con dual disk drive.

DELUXE VISICALC/3000

Su un articolo di Computer World Vol. XIII N. 10 pag. 13-14-15 vengono comparati vari programmi di foglio elettronico che girano su minicomputer o superiori. Vengono esaminati 17 prodotti, tra i quali anche il nostro Visicalc/3000, e viene proposta a questo scopo una tabella riassuntiva. Scopriamo così che il nostro 3000 ha una capacità di 254x254 celle, consente di proteggere e/o nascondere celle, dispone di 35 funzioni ma nessuna definibile dall'utente, ha 13 formati per le celle numeriche, ha la possibilità di interfacciarsi con package grafici(come è tradizione dei Visicalc HP), lavora su 16 cifre decimali - contro le 11 del normale Visicalc ed è stato scritto in Pascal (!)