Retrocomputer: NVRCA, Non Visual Retro Computer Access

Tempo di lettura: 5 minuti

Premessa

Oggi voglio pubblicare un mio articolo sul mondo dei retro computer e della retro programmazione, scritto per la rivista Retro Magazine World, periodico online di cui faccio parte come membro dello staf di redazione.
NVDA su Windows, Voiceover su iOS e OSX, Talkback su Android e Orca su Linux, sono tutti software per le tecnologie assistive vocali, rivolte a persone con disabilità visiva. Tecnicamente si chiamano screen reader.
Tramite questi strumenti, è possibile utilizzare a pieno, tutte le funzionalità messe a disposizione dal PC in uso.
Questi software fanno uso di un sintetizzatore vocale per vocalizzare il testo presente sullo schermo. Non vi sono restrizioni di funzionamento nei casi in cui il testo sia contenuto in oggetti messi a disposizione del sistema operativo in uso: finestre, icone, menù, documenti di testo o prompt dei comandi / terminale. Tali strumenti, non funzionano invece in caso si desideri utilizzare software che fanno uso di grafica tramite le tecniche di rendering 2D e 3D. Cito ad esempio il caso di un videogame. Come appare ovvio, in questo caso, lo screen reader, non è in grado di descrivere le scene o le schermate e non è nemmeno in grado di vocalizzare il solo testo presente a video, nemmeno quello dei menù, in quanto prodotto tramite rendering grafico.
Unica soluzione possibile è che chi sviluppa il software, ad esempio un videogioco, inserisca funzionalità vocali ad-hoc al suo interno. Cosa non impossibile, ma certamente non adatta a tutti i prodotti concepiti con la grafica al centro dello sviluppo software. Questo limite esclude le persone con disabilità da tutta una serie di prodotti software 2D e 3D, dai videogiochi fino ai software per il disegno CAD, solo per citarne alcuni.

L’idea di NVRCA

Negli anni 80/90 ero vedente. Come tanti ho posseduto anche io alcuni home computer e ne ricordo molti modelli a casa degli amici dell’epoca. Sono rimasto innamorato dei miei MSX 1, Commodore 64 e Commodore Amiga 500 Plus. Questa passione mi è servita per avvicinarmi al mondo della programmazione, per farla poi diventare la mia professione a partire dal 2000. Ho ripreso in mano da poco questa mia passione, con la differenza che ora sono non vedente e si presenta il problema dell’impossibilità di utilizzo di queste fantastiche macchine.
Così, mi è frullata una (spero geniale) idea nella mente: “Perché non sviluppare uno screen reader per i retro-computer?”. Naturalmente, le limitazioni di cui ho parlato nel precedente paragrafo rimarrebbero anche sui retro-computer. Penso quindi che sarebbe fantastico avere uno screen reader da utilizzare nella console BASIC, all’avvio di macchine come il C64 o l’MSX. In questo modo si avrebbe il controllo della macchina e la si potrebbe programmare. In aggiunta, penso che potrebbero essere sviluppati alcuni giochi con il supporto vocale, ad esempio delle avventure testuali o IF (Interactive Fiction).

Come implementare NVRCA

Dopo alcune ricerche, che possono essere comunque estese e migliorate, ho individuato, come macchina di partenza il Commodore 64. Principalmente per due motivi: Il primo è la disponibilità di un sintetizzatore vocale software, il S.A.M. (Software Automatic Mouth), in lingua inglese e in italiano (comparso in edicola tanti anni fa a cura della redazione della storica rivista Commodore Computer Club e chiamato “La Voce”). Il secondo motivo è la quantità di memoria RAM presente sul C64. Per non parlare poi dell’ampia diffusione nel mondo di questa macchina.
Il S.A.M. si presta anche particolarmente bene perché, una volta caricato in memoria, lascia ampio spazio al BASIC V2 nativo della macchina per poter scrivere programmi e giochi in BASIC o Linguaggio Macchina in grado di usare i comandi aggiuntivi messi a disposizione dal software di sintesi vocale. Il tutto in maniera piuttosto semplice e immediata.

Funzionalità base di NVRCA

Gli screen reader PER i PC odierni sopra citati sono provvisti di numerosissime funzionalità. Per NVRCA provo a definirne alcune di base:

  • lettura dei caratteri digitati sulla tastiera. Ad esempio mentre si digita nella console o si inserisce un comando in una avventura testuale, il sintetizzatore pronuncia il carattere premuto;
  • pronuncia automatica del testo stampato a video dalla console o dall’avventura;
  • (opzionale) in digitazione, ammesso che venga pronunciata ogni lettera premuta, quando si sta scrivendo una parola seguita dalla barra spaziatrice, il sintetizzatore deve leggere la parola completa appena digitata a conferma della bontà della digitazione;
  • con uno shortcut da tastiera impartire il comando di leggere la riga corrente;
  • con uno shortcut da tastiera impartire il comando di lettura dell’intero schermo di testo corrente;
  • ove possibile, inserire dei piccoli feedback uditivi, minimali, quando non serve un feedback della sintesi vocale, ma magari è presente un’operazione in corso, per segnalare all’utente che sta accadendo qualcosa sullo schermo (caricamento e salvataggio dati, elaborazioni in corso, ecc.).

Alcune note tecniche

Naturalmente, all’avvio del retro-computer, il sintetizzatore vocale non sarà presente in memoria. A meno che non si utilizzi una cartuccia o qualcosa del genere. Per questa ragione ci vorrebbe una procedura automatica di avvio del software o l’utente dovrà digitare “alla cieca” almeno il primo comando di LOAD del software NVRCA. È necessario, quindi, che il programma NVRCA integri il sintetizzatore vocale o che questo venga modificato ed esteso con le funzionalità che ho elencato sopra per diventare un vero sistema di accessibilità. In alternativa, bisognerebbe caricare prima il sintetizzatore e successivamente caricare NVRCA. Insomma, l’automazione completa del primo caricamento necessario sarebbe davvero il massimo.
Superato questo primo ostacolo, bisogna capire come caricare in memoria NVRCA in modo che rimanga in ascolto dei comandi dell’utente e della digitazione dei caratteri/comandi. Naturalmente, per quanto riguarda la gestione dello schermo, il retro-computer deve continuare a funzionare nel medesimo modo di prima. Se si digita un tasto esso deve essere stampato a video oltre che vocalizzato e così via. Deve essere possibile programmare in BASIC o eseguire comandi macchina e udire vocalmente gli output a video del sistema.

Piano di lavoro

Sono un programmatore Java con 20 anni di esperienza, ma non ne ho con la programmazione in BASIC o Assembly per queste retro-macchine che implica la gestione della memoria, dei chip audio e video, dell’input da tastiera, ecc. Ho letto diversi numeri della rivista che ospita questo mio contributo, ho consultato il manuale sul BASIC del C64 e installato diversi software per Windows per programmare i retro-computer. Ho fatto alcune prove di cros programming con CC65 (compilatore da linguaggio C a linguaggio macchina assembly per cpu 6502). Mi piacerebbe avere un confronto sulla mia idea, sulla sua fattibilità e sulla sua complessità. Se realizzabile, mi piacerebbe svilupparlo a più mani, sfruttando così questa idea per entrare nel vivo della programmazione sui retro-computer. Potremmo così allargare gli orizzonti di questo fantastico e affascinante mondo anche ai non vedenti. Sostengo poi da tempo che i retro-computer siano adatti alla formazione e all’apprendimento dell’informatica e dell’elettronica per i giovani. Chiunque sia interessato o voglia contribuire con un’idea o con codice, può contattarmi ad uno dei miei recapiti.

Un aggiornamento

Sono venuto a conoscenza che nei lontani anni 80, tramite l’audio rivista argo computer magazine, probabilmente distribuita dal radio club ciechi d’Italia, è stato rilasciato una sorta di screen reader per Commodore 64, probabilmente sviluppato da un certo Paolo Biondo. Sarebbe molto interessante ritrovare tale software, un vero e proprio retroritrovamento archeologico.

Riferimenti bibliografici e link

Pubblicato da

Alessandro Albano

Analista programmatore, formatore e tiflologo.