Uno slideshow a fosfori verdi per l’IBM PC 5150

Schermate di software storici a rotazione sullo schermo di un signor computer come il primo PC IBM. Il progetto nato a MuPIn e rilasciato in open source.


di Riccardo Raneri

i file sorgente di riferimento e supporto all’articolo sono disponibili qui:
https://github.com/raneri/ibm-pc-slideshow/

Esporre dei computer storici comporta anche fare il possibile per mostrarli accesi e in funzione. La “funzione” dovrebbe inoltre essere rappresentativa del lavoro che la macchina di turno svolgeva nel suo tempo. Nel caso del PC di IBM non si può pensare di risolvere facilmente mettendo un videogioco in autoplay: facile ma ben poco esemplare nel caso di questo computer che nel 1981, quando fu lanciato sul mercato, fu presentato e recepito dal pubblico come un calcolatore squisitamente professionale.
Mi sono così trovato a pensare a quale fosse il software più rappresentativo per questo computer: il primo applicativo che mi è venuto in mente è Lotus 1-2-3, che è anche il foglio di calcolo che utilizzavo al liceo nelle ore di informatica.

Il problema è che lanciarlo in esecuzione automatica (in AUTOEXEC.BAT nel caso di MS-DOS o PC-DOS) non risolve molto perché ci troveremmo un computer esposto con una schermata statica – quella di un foglio di lavoro vuoto – e niente di più:

Poco “attraente”; ci dice poco della storia della macchina e (aspetto da non sottovalutare) rappresenta un pericolo per i fosfori del monitor che con il tempo (ore di esposizione con computer accesi) tenderanno ad esaurirsi, lasciando sullo schermo delle tracce che saranno sempre più evidenti.

Lo stesso discorso vale però per qualsiasi altro applicativo. I programmi per ufficio – o scientifici – non prevedono solitamente una modalità demo in cui vengono mostrate le principali funzionalità del software.
Ho pensato così di seguire un’altra strada, scattando degli screenshot dei programmi più importanti di questi anni per l’IBM PC. Quindi utilizzando un programmino che mi permetterà di mostrarli in sequenza. Una sorta di presentazione automatica dell’offerta software del periodo storico di questo computer.

Con questo articolo voglio condividere ciò che ho fatto per aiutare chi dovesse trovarsi con la stessa esigenza (e allo stesso modo invito tutti a dare i propri consigli su come migliorare il procedimento!)
Le operazioni si sono dimostrate più complesse del previsto:

  • in primo luogo stiamo parlando di un computer che, nella configurazione originaria, dispone di una scheda video MDA che non è “semplicemente monocromatica”: parliamo di un’interfaccia basata solo sui caratteri, senza nessuna funzionalità grafica, quindi estrarre degli screenshot da questa scheda video non è così banale e corrisponde più ad un copia-e-incolla di tutto il testo visualizzato sullo schermo
  • una volta estratti gli screenshot, sarà necessario trovare un programma che sia in grado di riprodurli, e possibilmente farlo in modo temporizzato, ovvero “ad anello” in modo da ottenere uno slideshow infinito

Dopo diverse prove ho identificato un programma “d’epoca” adatto a questo scopo: BOSSKEY, che è facilmente reperibile in rete, basta cercare “bossky13.zip” su Google per ottenere diversi risultati. BossKey nasce in realtà come “via di fuga” per chi utilizza il computer dell’ufficio anche per motivi personali, rimanendo residente in memoria e attivandosi solo con una combinazione di tasti che fa apparire una schermata a piacere precedentemente “catturata”, in modo da nascondere al proprio supervisore le attività personali che si stavano svolgendo in sua assenza.

In dotazione con il programma principale trovate SCRSAVE.EXE che, una volta eseguito, rimane residente in memoria (è un programma TSR: “Terminate-and-stay-resident”) e serve a salvare su disco il contenuto dello schermo. Funziona anche con la “grafica” MDA: basta premere ALT+PRINTSCREEN sulla tastiera e dare INVIO per salvare (o modificare prima il nome del file a piacere, e quindi INVIO). I file salvati hanno estensione .IMG di default, sebbene non siano immagini vere e proprie ma sequenze di caratteri e relative proprietà (per ogni carattere è indicato un codice che specifica se il carattere è normale, grassetto, in negativo, ecc.).

Un altro programma che ho trovato per effettuare la stessa operazione è SNIPPER.COM – anch’esso facile da trovare in rete cercando su Google “snipper.com msdos” – che ha il pregio di poter salvare anche porzioni di schermo invece che tutto quanto; inoltre si attiva con più facilità da tastiera con una semplice combinazione “ALT+W”.

In questo modo ho salvato una serie di schermate significative di diversi applicativi storici come Word per MS-DOS, Norton Utilities, Eureka: The Solver, IBM Fixed Disk Organizer, Print Master…

Lo stesso pacchetto di utility di BossKey include anche un visualizzatore chiamato SHOW-IMG.EXE che permette di visualizzare i file salvati con SCRSAVE.EXE indicandone semplicemente il nome. Ad esempio:

SHOW-IMG.EXE C:SCREENSWORD.IMG

La schermata viene visualizzata a pieno schermo e per uscire è sufficiente premere qualsiasi tasto. Utile per verificare la bontà delle schermate catturate, ma purtroppo inutilizzabile ai fini di uno slideshow.

In realtà è possibile utilizzare SHOW-IMG.EXE anche per visualizzare una sequenza di immagini in una directory: basta indicare il percorso della cartella al posto di quello di una singola immagine e verranno visualizzate tutte in sequenza, ma è comunque richiesto l’input dell’utente (premere un tasto per cambiare immagine) e sfortunatamente, quando nella directory sono presenti più di una decina di file, viene spesso visualizzato un errore.

Ho fatto qualche prova con un ulteriore TSR che simula la pressione di tasti dopo un intervallo di tempo (DELAYKEY, anche questo facilmente trovabile in rete), però i risultati non sono stati confortanti (il timing sembra variare da volta a volta e non sempre la pressione del tasto simulato viene recepita, non è affidabile) quindi non può essere considerato un sistema adeguato per un’esposizione permanente.


A questo punto mi sono accorto di un’ulteriore utility inclusa in BossKey: CONV-IMG.COM che ha la funzione di convertire i file .IMG prodotti da SHOW-IMG.COM in un file .h, ovvero un’intestazione in linguaggio C++ che assegna ad una variabile il contenuto dello schermo catturato in precedenza.

Ho pensato così di sviluppare un piccolo programma in C++ che possa svolgere esattamente la sequenza di comandi di cui avevo bisogno. Il problema è che il linguaggio C++ attuale è molto diverso da quello di 40 anni fa, non si può semplicemente installare Visual Studio, creare un file .EXE e aspettarsi che venga eseguito su MS-DOS 3.22 (o precedenti) su un computer basato su di una CPU Intel 8088.

Sebbene ci siano sicuramente alternative per una cross-compilazione su di un computer contemporaneo, ho scelto una strada semplice – forse semplicistica – ma comunque accettabile per la stesura di un programma così semplice come quello di cui avevo bisogno: utilizzare la versione più recente di Turbo C++ (3.0) che supporta l’architettura 8088. E’ un software per MS-DOS che, per motivi di semplicità, ho eseguito all’interno di un Windows 98 emulato con PCem.

Il programma che ho scritto è davvero elementare e, in questa prima versione, anche piuttosto “stupido”: si limita a includere tutti i file .h che ho generato con CONV-IMG.COM e poi, in sequenza, a chiamare la funzione puttext, specifica per MS-DOS, che manda alla memoria video il contenuto di una variabile, specificando il numero di colonne e righe (nel caso dell’IBM PC è molto semplice: sono le solite 80 colonne per 25 linee).

Dopo ogni puttext chiamo la funzione sleep(10) che effettua una pausa di dieci secondi per permette allo spettatore di “godersi” l’immagine e passo alla successiva. Al termine della sequenza chiamo nuovamente la funzione main() che riparte da capo.

Il risultato è quello atteso:

i file sorgente di riferimento e supporto all’articolo sono disponibili qui:
https://github.com/raneri/ibm-pc-slideshow/

Condividi

Creative Commons License
Privacy e Cookie Policy | MuPIn - Museo Piemontese dell'Informatica
Hosted by INRETE