L’emulazione “bare metal”

di | 9 Maggio 2021

L’incremento dell’interesse verso il retrocomputing ha fatto schizzare alle stelle il costo dei primi home computer, per cui spesso sono richieste cifre del tutto improponibili ed immotivate. Ma se per i collezionisti dell’hardware non ci sono alternative, per chi – come me – è più interessato al software, rimane la soluzione emulazione.

Un emulatore è un programma che riproduce, via software, le funzionalità dei vari, singoli componenti di un computer, per costruire un ambiente virtuale il più possibile fedele all’oggetto da emulare, ed in cui possano essere eseguiti i programmi originariamente scritti per quel computer, senza modifiche. Gli emulatori sono un ottimo strumento per preservare il software scritto per macchina non più disponibili, come l’hp3000 di cui ho scritto in passato. L’offerta di emulatori è molto ampia, sia open source che commerciale, e praticamente tutti i sistemi principali hanno svariati emulatori dedicati, per non parlare di progetti a largo spetto come il MAME, nato per emulare i videogiochi ‘cabinet’, e poi cresciuto verso un sistema di emulazione general purpose.

L’emulazione degli home computer ha però dei limiti tecnici derivanti dalla presenza di uno ‘strato’ aggiuntivo: il sistema operativo del computer ‘ospite’. Il primo, è più evidente, è il tempo necessario all’avvio. Se un Commodore 64 è pronto in pochi secondi dall’accensione, per avviare la sua versione emulata può essere necessario attendere anche un paio di minuti. Ma spesso presentano anomalie sia sulla restituzione video che su quella audio, ambiti in cui le ‘interferenze’ del sistema operativo della macchina ospitante sono più evidenti.

Già da tempo c’è però una terza via, non molto nota: l’emulazione ‘bare metal’, una espressione che tradurrei come metallo grezzo. In questa modalità l’emulatore non dipende da un sistema operativo che funge da opsite, ma accede direttamente alle risorse dell’hardware. Questo consente di risolvere quasi tutti i problemi dell’emulazione tradizionale, e di ottenere prestazioni molto vicine a quelle del sistema emulato.

L’hardware più adatto a questo tipo di applicazione rimane il Raspberry PI, e spesso non è necessario nemmeno utilizzare le versioni più performanti (RPi3 o RPi4), ma prestazioni accettabili sono ottenibili anche con il microscopico Pi Zero da pochi euro di costo. Il range spazia dalla versione zero, con un SOC BCM 2835 single core ad 1 GHz e 512MByte di RAM, sino alla versione 4, che usa invece un Broadcom 2711 con una CPU ARM Cortex-A72 4 core e RAM a partire da 1GByte.

Al momento ci sono due progetti realmente maturi disponibili, ognuno dedicato ad un particolare e significativo tipo di home computer.

Il primo è BMC64., che emula la famiglia degli home computer di casa Commodore: C64, C128, Vic20, Plus4, PET.

E’ basato sul ben noto VICE, e le caratteristiche salienti sono:

  • Tempo di accensione di circa 4 secondi
  • Frequenza di aggiornamento dello schermo  a 50/60 Hz reali, senza artefatti video
  • Bassissima latenza del sistema
  • Eccellente sincronizzazione audio-video
  • Nessuna procedura di spegnimento
  • Supporto tastiera e joystick originali su GPIO
  • Supporto per controller USB
  • Emulazione (parziale) della userport via GPIO

Io lo uso regolarmente da almeno un paio di anni, prima su un RPi1 ed ora su un RPi3, ed a mio giudizio è quello che fornisce l’esperienza d’uso più vicina a quella originale del ‘biscottone’.

Il secondo è ZXBaremulator, che è invece destinato a riprodurre le funzionalità dello ZX Spectrum.

Anche in questo caso le caratteristiche sono simili:

  • Tempo di accensione di pochi secondi
  • Emulazione completa del processore Z80, comprese le caratteristiche non documentate
  • Emulazione precisa dello Spectrum 48k/128k/+2a
  • Disponibile per gli RPi da Zero a 3, non c’è ancora un supporto per la versione 4
  • Supporto per una vasta serie di controller USB
  • Emulazione del mouse Kempston
  • Caricamento accelerato (ove possibile) dei nastri virtuali formato TAP/TZX
  • Possibilità di connettere una tastiera originale via GPIO

Da quanto ho potuto constatare anche questo emulatore si comporta egregiamente – sicuramente meglio di quelli tradizionali – anche se, non avendo uno Spectrum fisico, non ho potuto fare una paragone con l’originale.

Un altro emulatore interessante è EMUZ8RPI, che non emula un hardware specifico, ma fornisce un ambiente generico Z80 atto ad eseguire il CP/M. Anche in questo caso, l’avvio è pressoché istantaneo (circa 5 secondi) ed è possibile eseguire i programmi di quello che è stato il sistema operativo più utilizzato dalla prima generazione di computer personali a cavallo fra gli anni ’70 ed ’80.

Ci sono altri interessanti progetti, che hanno come target altre macchine significative, ma che sono ancora in fase di sviluppo.
Segnalo, fra questi, Faux86, un emulatore per il set di istruzioni 8086/80186, video  CGA/EGA/VGA, PC speaker, schede sonore Adlib e Soundblaster, mouse seriale.

Un pensiero su “L’emulazione “bare metal”

  1. Gianni Gardella

    Ciao, grazie per queste notizie, molto interessante il tuo sito. L’idea dell’emulazione bare-metal mi sembra formidabile.
    Se non vado errato lo Z80 era il processore del Tandy Radio Shack. Che infatti faceva girare cp/m in alcuni suoi modelli. Ma i principali suoi sistemi erano trsdos e newdos80, che qualcuno considerava superiori a cp/m, ma io qui non posso giudicare perché non me ne intendo fino a tal punto.
    Credo che anche queste macchine si potrebbero emulare (sono le mie preferite, sto provando alcuni vecchi emulatori con freeDOS) per cui anziché cp/m e wordstar, avremmo emulato trsdos e derivati.

    Rispondi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *