Quello dell’emulazione è un settore di cui m’interesso da più di vent’anni ormai, da quando cioé rimasi a bocca aperta vedendo su MC MicroComputer la foto di un’Amiga che faceva girare il DOS grazie a IBeM (il cui nome è tutto un programma), il primo emulatore 8086. Meraviglia che si ripeté quando arrivò l’emulatore Commodore 64 dell’arcinota ReadySoft (sì, proprio la software house che portò Dragon’s Lair su Amiga e altri sistemi).
Da allora enormi passi sono stati fatti, e numerosi emulatori di e per i sistemi più o meno blasonati hanno calcato la scena, per cui mi è difficile rimanere stupito leggendo una notizia riguardo un emulatore che ha fatto capolino su una piattaforma, se non per il fatto che un ben noto “concorrente” di Nokia giri sul suo N95…
In effetti vedere le immagini di Windows 3.1 girare sul questo telefonino “di punta” fa un po’ sorridere, considerato che Microsoft ha da tempo deciso di espandersi proprio nel settore mobile dominato da Nokia, che è diventato sempre più strategico a causa dei notevoli volumi che genera (ricordiamo che in Italia abbiamo più telefonini che abitanti).
Il piccolo prodigio è avvenuto grazie al porting di un ben noto software, DOSBox, che nasce per emulare interi PC, sebbene abbastanza datati. Infatti supporta al più un 386 come CPU, dalla monocromatica Hercules fino alla SuperVGA VESA come scheda grafica, e una nutrita serie di vecchie schede audio (dallo speaker, alla mitica SoundBlaster, fino addirittura alla ben più complicata GUS).
Purtroppo la velocità di esecuzione che garantisce DOSBox non è molto elevata, a causa dell’assenza di un compilatore JIT. Infatti la CPU viene emulata tramite un tradizionale ciclo leggi opcode -> decodificalo -> esegui l’istruzione -> controlla se ci sono operazioni “di manutenzione” (generalmente interrupt che nel frattempo sono arrivati) -> ritorna all’inizio del ciclo.
Nella notizia si parla di un 486, ma bisogna tenere sempre presente che un conto è l’architettura che si sta emulando, e tutt’altra cosa è la velocità di esecuzione ottenuta. Per essere chiari, con un programma come DOSBox si potrebbe emulare anche un AMD64 (o x86-64 che dir si voglia; quindi una CPU a 64 bit), ma a velocità ridicole visto l’hardware che mette a disposizione l’N95.
A proposito di ciò, dalle specifiche di questo modello di cellulare la CPU in dotazione è un OMAP 2420 della Texas Instruments, basato su core ARM-11 e che, quindi, garantisce delle buone prestazioni, sebbene con una pipeline a 8 stadi questo processore nasca per raggiungere frequenze ben superiori ai 333Mhz dell’N95, ma suppongo che un clock così basso sia stato scelto per contenere i consumi.
Personalmente mi aspetto da DOSBox, quindi, delle prestazioni a metà strada fra quelle di un 386 e un 486. Quindi sufficienti a far girare in scioltezza Windows 3.1 e le sue applicazioni. D’altra parte un 486 a 25Mhz sulla carta è in grado di erogare 15MIPS che, trattandosi di un microprocessore CISC, sono istruzioni decisamente più complicate di quelle che normalmente fa girare un ARM, e che richiederanno a quest’ultimo non poche risorse per la loro decodifica ed esecuzione.
Il limite più grosso che noto in questo caso non è tanto la velocità di esecuzione della CPU x86 (accettabile come dicevo prima), quanto la risoluzione offerta dall’N95: una 240×320 che mal si concilia con la 640×480 che è la minima indispensabile per far girare Windows 3.1. Si nota dalle immagini, infatti, la scarsa qualità resa a causa dell’operazione di scaling necessaria.
Comunque coi 128MB di memoria che ha in dotazione l’N95 non credo che DOSBox abbia particolari difficoltà a far girare anche Windows ’95 e, perché no, anche Windows ’98. Gli unici limiti che permangono sono quelli a cui ho accennato prima: la velocità di esecuzione e la risoluzione video.
Rimane pertanto un bell’esperimento, in attesa che si facciano strada cellulari dotati di una risoluzione più elevata, ma nulla toglie che nel frattempo si possa utilizzare DOSBox non tanto per smanettare con Windows 3.1, quanto per rispolverare qualche vecchio gioco che a 320×200 (risoluzione “principe” in quanto utilizzata dal famigerato mode 13h delle VGA) sarà sicuramente godibile…