Torna alla pagina precedente...
dT n. 15/2026 del 13.05.2026
Cornice stile Ritorno al futuro
   
MAY 13 2026
   

Immagine di apertura

#MicroC64: state su che è arrivato!

Annunciazione, annunciazione… no, vabbè, facciamo le persone serie... 🤣

Dall'alto (o dal basso) dei miei 64 anni suonati, e compiuti proprio oggi - il rilascio odierno non è casuale! - sono in dubbio se ripetermi con un disneyano «se puoi immaginarlo, puoi farlo», o lasciarmi andare con un ben più casereccio e realistico… MA CHI CAXXO ME L'HA FATTA FARE?!? 🤨

(scherzo naturalmente!)

Immagine_inlineNe ho già parlato qui dentro e nella mia pagina FB: strada facendo ho anche sfanculato per sempre Gemini AI Pro, che alle prime complicazioni è entrato in un circolo vizioso di tentativi non-risolutivi sparati a casaccio.

La goccia è stata il riuscire a dar voce al SID dell'emulatore tramite l'amplificatore digitale da me utilizzato, ma dopo trentacinque (!!!) tentativi a vuoto e altrettante sue arrampicate sugli specchi, sono andato via senza nemmeno salutare. Rivolgendomi a Claude AI che, nel giro di qualche ora di vero brAInstorming, ha individuato e risolto brillantemente il problema.

Breve Recap

È stato un progettino tenuto in pectore per non meno di un paio d'anni, dai tempi dell'#AmighinoRPi: come suggeriscono le ultime tre lettere, era/è basato sul Raspberry Pi.Immagine_inline Il passo successivo, ça va sans dire, sarebbe stato un mini emulatore C64, e per questo poteva essere più che sufficiente un ESP32-S3. Con la sua CPU dual core a 240 MHz e, soprattutto, tanta voglia di fare, poteva gestire in scioltezza l'emulazione di tutti i suoi chip.

Naturalmente l'emulatore NON è farina del mio sacco, ce n'è uno famoso disponibile su GitHub... definibile QUASI pronto all'uso. Dico questo - e lo sottolineo per bene - perché a seconda dell'hw periferico utilizzato (ampli digitale, display LCD, joystick e le immancabili varie ed eventuali) gli aggiustamenti alla configurazione dei tanti componenti sw presenti diventano, e sono state, la parte più complicata da portare a termine.

Il problema non riguardava l'ESP32-S3 e nemmeno l'emulatore in sé, ma come questi due riescano a parlare efficacemente con il loro piccolo mondo esterno.

Immagine_inlinePerché insisto tanto su questo? Perché se è vero che rilascio nel pubblico dominio, sotto licenza Creative Commons, tutto il rilasciabile (sorgenti e SDL inclusi), ci tengo a rimarcare che il tutto è calibrato su quelle specifiche periferiche e quei collegamenti, come da schemi allegati. Non funzionerà con altre, a meno di non effettuare parecchi aggiustamenti. Ed essendoci passato... non vi invidio!

Joystick e tastiera

Inizialmente non avevo previsto il joystick integrato, ma solo quello esterno, collegato via USB al PC e in comunicazione Bluetooth Low Energy (BLE) con l'ESP32-S3, idem per la tastiera. Chiaramente quella visibile nella foto d'apertura è a fini estetici: non vorrei offenderla, ma è solo un coperchio a protezione del display, tenuto in posizione da un leggero incastro e da alcuni magneti al neodimio. L'STL di questa l'ho recuperato in Rete, ed è l'unica parte 3D non disegnata da me. Con tanto amore! ❤️

Per digitare la qualunque, incluso usare i tasti funzione che come ricorderete erano presenti a destra anche sul C64, si utilizza quella del computer, tramite il medesimo canale BLE utilizzato dal joystick esterno. A proposito: quando connesso e correttamente riconosciuto quest'ultimo ha priorità su quello integrato e cablato.

Immagine_inlinePer tutto ciò serviva poi una parte residente sul PC: uno script Python, molto articolato, che oltre a interfacciare joy e tastiera doveva occuparsi anche, o per meglio dire soprattutto, del trasferimento file dal PC all'ESP32-S3.

È possibile infatti memorizzare nella capiente Flash RAM dell'ESP32-S3 un numero considerevole di programmi preinstallati, da selezionare con il joystick integrato tramite un meccanismo aggiunto all'emulatore.

Su e giù per scorrere la lista, click sul Fire per lanciarlo: nel video in basso è ben mostrato.

Si iniettano i comandi Open "nomefile.prg",8 e il successivo RUN direttamente nel buffer di tastiera (espediente che conosco e ricordo molto bene, visto che lo utilizzavo anche io sulle pagine di MCmicrocomputer ai tempi dei veri C64 e Vic-20) ed è per questo che li vedremo digitare sulla schermata basic dalla solita manina fantasma.

Immagine_inlineSempre dall'interfaccia Python, alla quale ho dedicato un dettagliato articolo, è possibile incollare programmi Basic in formato TXT, anche questi magicamente digitati a video, riga dopo riga, con la medesima tecnica.

Sarò anche il solito e inguaribile nostalgico, ma mi ha emozionato e non poco!

L'ESP32-S3 di XIAO e tutto quanto.

La scelta di questa scheda, come del resto per tutti gli altri componenti, è dovuta alle sue dimensioni ultraridotte, a fronte di funzionalità più che complete. Integra finanche la logica di gestione per una batteria ricaricabile ai polimeri di litio che, ovviamente, è integrata anche questa all'interno del piccolo cabinet. Immagine_inlinePurtroppo non ha un connettore per collegarla "con un click" ma bisogna saldare i fili + e - della batteria direttamente sul fondo della schedina, in due piazzole piccolissime. Non è stato facilissimo - non sono cintura nera di saldature, e si vede! - ma ci sono riuscito. La cosa più complicata è stata tenere saldatore e fili con le dita incrociate! 😁

Scherzi a parte, nonostante le sue ridotte dimensioni e una capacità di appena 250 mAh assicura circa un'ora e mezza di autonomia, testata tenendo in funzione un gioco in modalità demo, incluso l'audio riprodotto. La ricarica completa avviene in circa due ore e mezza, il che fa dedurre una corrente media di ricarica pari a 100 mA.

Il display è un modulo TFT da 2 pollici con controller ST7789V. È collegato all'ESP32-S3 tramite il bus Serial Peripheral Interface (SPI), un protocollo seriale sincrono comunemente usato per periferiche ad alta velocità, a quattro fili: clock, dati, chip select e data/command.

Immagine_inlineDa segnalare una piccola imprecisione nella serigrafia del modulo display: i pin sono etichettati SCL e SDA, denominazioni proprie del bus I2C, mentre come detto il display utilizza in realtà il bus SPI. I nomi corretti sarebbero SCK (Serial Clock) e MOSI (Master Out Slave In).

Pare sia un errore comune sui moduli di produzione cinese, probabilmente dovuto all'utilizzo della stessa serigrafia per famiglie diverse di display.

Riguardo al meccanismo, l'emulatore genera il segnale video replicando il comportamento del chip VIC-II del C64, con la sua palette originale di 16 colori fissi. L'immagine viene poi trasmessa al display in formato RGB a 16 bit - il formato nativo del controller ST7789V - a una risoluzione di 320×240 pixel. Ad ogni ciclo di refresh - circa 50 volte al secondo, fedele alla frequenza originale del C64 PAL - il framebuffer viene trasferito al display tramite DMA, liberando la CPU per continuare l'emulazione senza interruzioni. La risoluzione nativa del C64 (320×200 pixel) viene mappata direttamente sul display senza alcun ridimensionamento. Le barre laterali presenti nell'output originale del VIC-II - visibili sui monitor dell'epoca - qui semplicemente non sono riprodotte.

Immagine_inlineIn merito all'audio, l'emulatore genera il segnale tramite la replica software del chip SID del C64, producendo campioni digitali a 44.100 Hz.

Questi vengono trasmessi all'amplificatore digitale di classe D MAX98357A tramite il protocollo Inter-IC Sound (I2S), uno standard seriale per il trasferimento di audio digitale tra circuiti integrati, a tre fili: clock, word select e dati.

In pratica il MAX98357A riceve i dati digitali, li converte in analogico internamente e li amplifica, pilotando l'altoparlante senza bisogno di ulteriori componenti esterni.

Nello schema qui riportato, trovate i collegamenti (sono esclusi per semplicità solo gli ovvi Vcc e GND rispettivamente collegati ai pin 3V3 (3.3 V) e GND dell'ESP32-S3. Immagine_inlinePer mia comodità ho indicato anche i colori dei fili utilizzati, così da non fare (io) confusione durante l'assemblaggio finale.

Fili? In che ssenZo??? 🤔

Sì, c'è un dettaglio sul quale non posso sorvolare, che a molti non sarà sfuggito osservando la prima foto. Per rimanere nei tempi, ma anche perché potrebbe esserci ancora qualche modifica ulteriore, non ho previsto da subito un PCB.

Immagine_inlineAnche perché inizialmente temevo di dovermi rimboccare troppo le maniche, visto che l'ultimo da me realizzato risale a qualche decennio fa, e all'epoca si procedeva - quando andava bene - con i trasferibili appositi e tanta pazienza.

Però posso anticipare che sto già familiarizzando con un CAD 3D online per i PCB - citofonare EasyEDA.com - e sono a buon punto, pur distante ancora dalla meta. Gli ho dedicato finora un paio d'ore, e posso dire che è stato più semplice di quanto temessi.

Immagine_inlineTornando al rilascio attuale, al momento i componenti elettronici sono tutti fissati alla cornice superiore: display e joystick con le viti previste, ESP32-S3 e ampli con semplice biadesivo gommato.

Per ridurre al massimo l'ingombro verticale ho dovuto adattare i classici connettori Dupont dandogli una forma a L, non prima di aver eliminato soltanto la parte in plastica e utilizzato al suo posto della normale guaina restringente. Alta sartoria! 👀

Stampa 3D

Direi di chiudere in bellezza con qualche dettaglio sugli STL per la stampa 3D del piccolo case. Come dicevo la tastiera l'ho, per mia fortuna, trovata già bell'e fatta online. Non ricordo dove, ma l'ho scaricata immediatamente e scalata alle dimensioni di cui avevo bisogno.

Immagine_inlineOvvero q.b. per coprire l'intero display, che si espande in verticale fino alla barra spaziatrice.

Questo mi ha permesso di rispettare le proporzioni originarie del C64, quello vero, perfino con la misura "64" stessa da qualche parte. Infatti la sua impronta, non a caso, è 125x64 mm 🤔

(caxxo ridete????? 🤣)

Idiozie mie, lo ammetto, a parte, torniamo a parlare di cose ben più serie. Come mostrato nell'immagine bisogna stampare, oltre alla tastierina, ben otto parti. Due, facilmente riconoscibili, costituiscono il cabinet vero e proprio, privo della cornice superiore, e pertanto il terzo pezzo importante è quest'ultima, ovvero il supporto per tutta l'elettronica: l'LDC e il joystick, ma come ho anticipato anche per l'ESP32S3 e l'ampli audio. Le altre parti, più piccole, riguardano il blocco per il joystick, quello per la tastiera, il pomello e la griglia decorativa, a sua volta composta da una parte principale (da stampare beige come tutto il resto) e i due piccoli intarsi qui mostrati in blu, da stampare marrone scuro come la stessa tastiera e il pomello del joystick.

La griglia decorativa beige e i due intarsi marroni, vanno incollati nella loro sede con semplice colla epossidica (Attack e simili), idem per il blocco tastiera con quest'ultima. Immagine_inlineLe aree curve ai due estremi del blocco tastiera hanno quella forma perché come parte metallica (sensibile al magnetismo del neodimio) ho usato due fette di un anello metallico, peraltro già dotato di biadesivo sottile, di quelli per rendere magsafe-compatibile qualsiasi cover di qualsiasi cellulare.

Ho previsto i fori passanti per le viti ma non quelli dove le stesse dovranno avvitarsi. Questo perché con le tolleranze in gioco potevano risultare più larghi del previsto (parliamo di meno di un millimetro di diametro, sono micro-viti) e pertanto bisogna praticarli a mano, sovrapponendo le parti prima, con un piccolo trapanino manuale, di quelli che si usano a mo' di giravite. Non certo con il Parkside a percussione di turno.

Materiali e file

Riguardo ai materiali, come sempre tutti i link sono PULITI: non c'è di mezzo alcuna sponsorizzazione o altro. Ho preso quasi tutto su Aliexpress, solo i filamenti PLA su Amazon, ma non escludo che gli stessi articoli siano acquistabili a prezzi inferiori su altri ecom:

I file, viceversa, sono liberamente scaricabili da qui. È un'unica cartella zippata con dentro tutto il necessario:

Immagine_inlineCome anticipato sto lavorando alla versione con PCB, che utilizza gli stessi componenti, ma potrebbe richiedere qualche modifica alle parti stampate 3D. In particolare per la cornice superiore, dove è ancorata tutta l'elettronica e sono presenti i collegamenti Dupont. Lì verrà posizionato il PCB per una soluzione come si deve

Infine... per i nostalgici livello Pro - e non sono pochi - ho impaginato questo stesso articolo come avveniva a MC. Così i più coraggiosi, solo i migliori, potranno rivivere quei bei tempi... digitando a mano il listato Python.

Mi raccomando: occhio all'indentazione, il pitone non perdona! 🤣

AdP

CURIOSITÀ: mi ha sorpreso che il lunghissimo testo e le molte immagini qui presenti, impaginate "come a MC", sviluppino appena quattro pagine: un mio articolo medio-breve di allora. Proprio altri tempi!

Video generato da NotebookLM, fornendogli solo il link a questo articolo.


#C64-128#Amarcord#digiTANTO#Commodore#Video#AI#VideoAI#DIY#MC-style#ESP32

Progetto a cura di  Andrea de Prisco - AdP

Per ulteriori informazioni,
utilizza il modulo Contattami

RSS

Privacy policy Informativa estesa RST