ZX Dandanator! Mini : una cartuccia low-cost open source per Sinclair ZX Spectrum. Con a bordo un PIC® e una GAL

In queste ultime settimane ho passato dei bei momenti nel mio laboratorio cimentandomi nella realizzazione dello ZX Dandanator! Mini. Si tratta di una cartuccia per Sinclair ZX Spectrum che permette di avere numerose funzionalità:

Molti penseranno: perchè ha passato del tempo a realizzare una cosa così inutile? Se siete di questa scuola di pensiero, vi prego: abbandonate settorezero.com, cancellatelo dalla vostra memoria e non osate nemmeno più seguire un solo tutorial su questo blog. Siete scomunicati a vita!

Riassumo qui brevemente due dei motivi principali che mi hanno spinto a cimentarmi in questa realizzazione:

  • Si tratta di un progetto open source, e i progetti Open Source (quelli veri), ci permettono di imparare tante cose nella maniera più naturale: con la sperimentazione.
  • Stiamo parlando di retrogaming e il retrogaming, per quelli a cui piacciono davvero i videogiochi, è l’unica maniera di viverli appieno, perchè tutti ben sappiamo che i videogiochi di oggi sono in realtà, parafrasando gli amici del gruppo Arcadian, film trasformati in videogiochi e pochi riusciranno a capire cosa significa e la reale differenza. Ma ben sapete che io per pochi ho sempre scritto e per pochi tengo in piedi questo blog.

Lo ZX Dandanator! (il punto esclamativo fa parte del nome, non è che lo inserisco per dargli importanza, si chiama proprio così!) a bordo ha 3 circuiti integrati programmabili:

  • Un microcontrollore PIC® 16F1826
  • Una memoria flash SST (Silicon Storage Technology) 39SF040 (non so se lo sapete, ma SST = Microchip)
  • Una GAL, GAL22V10

Adesso mettete che:

  • C’è il codice sorgente per ogni componente, compresa l’interfaccia software lato PC
  • Il mio TL866 ha nella lista dei dispositivi anche la Flash e la GAL (anche se la GAL, in realtà, non veniva programmata e ho passato settimane a sbatterci, vedi ultimo paragrafo)
  • Nella mia collezione ho un paio di ZX Spectrum che non ho mai utilizzato fino in fondo perchè lo Spectrum non ha l’interfaccia Joystick di serie e giocare con quella orrenda tastiera gommosa è un calcio nelle palle. Unisci questo al fatto che , passati i 40, ormai, mi scoccio di caricare i giochi dalla cassetta.
  • Sono un retrogamer convinto
  • Questa interfaccia mi permetterà di provare degli homebrew interessanti che all’epoca non esistevano, come quelli utilizzanti l’engine Nirvana di Einer Saukas

Breve parentesi: per chi non lo sapesse, Einer Saukas, 5 anni fa, con tecniche di programmazione (=senza modifiche hardware) è riuscito a superare uno dei limiti più grandi dello Spectrum (tastiera, sonoro, mancanza di joystick, e qualche altra manciata di fesserie a parte): il famigerato problema del colour clash. Questa cosa, dal 2013 che è uscito il Nirvana engine, mi ha sempre incuriosito non poco, anche perchè questo schifo che lo Spectrum faceva era sempre uno degli argomenti chiave durante le lotte di classe Commodore64/ZX Spectrum in cui lo Spectrum usciva vincitore soltanto sul fronte Costo/Eh-ma-Sir-Clive-è-un-genio-che-ha-fatto-un-computer-così-figo-con-poca-roba/Eh ma vuoi mettere lo stile dello Spectrum/Eh ma il Basic dello Spectrum è tutta un’altra cosa (quando poi la roba seria si faceva in assembly ma vabbè).

Non ho esitato un attimo a farmi realizzare in Cina (sia benedetta) un paio di PCB e a recuperare tutti i componenti per poterne realizzare qualche esemplare per me e per i miei amici retrogamers, e credo che mai scelta fu più sentita e azzeccata.

Rivolgendomi a quelli che “il retrogaming e il retrocomputing sono cacca”, questa esperienza mi ha fatto imparare un sacco di cose: mi ha permesso di approcciarmi al mondo dei dispositivi logici programmabili: affascinato dalla presenza di una GAL a bordo di questa scheda, ancor prima di realizzare il Dandanator e nel frattempo che mi arrivava tutta la roba, mi documentavo perchè volevo saperne di più.

Avevo nel cassetto un paio di GAL16V8 recuperate nella mia smania perenne di riciclo, ho studiato un po’ e mi sono cimentato nella realizzazione di qualcosina con esse e ho anche scoperto che il vecchio software di programmazione delle GAL, WinCUPL, è diventato free e di proprietà della Atmel/Microchip!

Forse, se mi gira, tutto questo potrebbe anche essere oggetto di un prossimo tutorial, anche se le GAL oggigiorno non si usano più dato che i microcontrollori fanno già tutto. L’utilizzo delle GAL, per me, è propedeutico nell’affrontare un’altra cosa che ho sempre voluto imparare ad utilizzare: le FPGA, per cui sono contento di aver imparato ad utilizzare questi dispositivi e chissà che, grazie al Dandanator, non mi venga voglia di andare avanti.

Ringraziamenti

Prima di proseguire, per me è doveroso fare alcuni ringraziamenti:

  • Daniel Leòn (Dan Dare) – l’autore del Dandanator, che stimo tantissimo per il progetto e per il fatto che ha reso disponibile proprio tutto. Lo ringrazio anche per aver risposto alle numerose email che gli ho mandato dato che ho avuto non pochi problemi, in fase iniziale soprattutto per la programmazione della GAL.
  • Henry da Bergamo – utente di Settorezero.com, che mi ha fornito alcune GAL22V10 per il Dandanator.
  • Adriano Avecone – amico, che mi supporta sempre in queste avventure.

Principio di funzionamento

Sul sito ufficiale, nella sezione download, è possibile scaricare tutta la documentazione.

Il PIC® gestisce i pulsanti, l’identificazione del modello di Spectrum, il boot, la paginazione della memoria flash e coadiuva la GAL per la programmazione della memoria flash durante l’upload del romset. Sul PIC è anche presente un bootloader che permette l’aggiornamento del firmware a bordo del PIC stesso qualora il software lato PC includa un nuovo firmware nel romset.

Il PIC® sfrutta il clock interno a 32MHz e viene eseguita una gestione dei pulsanti a regola d’arte in quanto vengono rilevati pressione corta, pressione lunga e doppio click sfruttando gli interrupt sul Timer1: in base ai vari tipi di click sui pulsanti vengono inviati segnali sulla linea di reset o sulla linea NMI (Non Maskable Interrupt) gestendo opportunamente le parti della memoria flash da rendere visibili al bus dati.

La memoria flash utilizzata, una SST 39SF040, è da 512KiB  ed ha quindi 19 linee indirizzi (219=524288=512K), è collegata allo slot di espansione dello Spectrum mediante le linee di indirizzi da A0 ad A13 (16KiB), le restanti 5 linee indirizzi della memoria flash, da A14 ad A18, sono collegate al PIC che può quindi gestire/suddividere i 512KiB della memoria flash in 32 (25) banchi da 16K.

Lo Z80 a bordo dello Spectrum ha 16 linee indirizzi, 14 sono condivise con memoria, bus esterno ecc ecc e le restanti A14 e A15, sono condivise con l’ULA per la gestione dell’accesso alla memoria RAM e agli IO e sono collegati sul Dandanator anche alla GAL22V10 che, oltre a gestire l’interfaccia Kempston, controlla l’accesso in scrittura o in lettura della memoria flash a bordo del Dandanator.

Dalle equazioni della GAL vediamo che c’è un accesso alla memoria flash con l’attivazione della linea MREQ (Memory request) e i bit di indirizzo A14 e A15:

EEPReq = MREQ # A14 # A15;

La gestione in lettura o scrittura della flash si ha mediante i bit Read (RD)/ write (WR) sul bus di espansione, che automaticamente attivano le linee collegate ai rispettivi pin della memoria flash:

Rom_RD = EEPReq # RD;
Rom_WR = EEPReq # WR;

L’intefaccia Kempston entra in funzione quando vengono attivate le linee IOREQ (IO request), RD (read) ed A5 (in realtà, per l’interfaccia Kempston, bisognerebbe monitorare anche A6 e A7):

Kempston = IOREQ # RD # A5; /*Decode by A5 only*/

La linea di indirizzi A5 viene scollegata dalla GAL mediante il jumper identificato come “Joystick”: non venendo più rilevata la linea A5, l’interfaccia Kempston viene automaticamente disattivata, questa opzione è stata inserita per poter sfruttare, ad esempio, un altra interfaccia joystick collegata a cascata sul Dandanator.

L’interfaccia seriale è legata alla Kempston: la linea dati seriali in ingresso combacia difatti con il pin del connettore DB9 collegato al pulsante “destra” del joystick. La linea, attivata, viene dirottata sulla linea dati D0. A questo punto posso solo immaginare che il resto del lavoro venga fatto dal software (il loader caricato sullo Spectrum) che legge la linea dati D0 per ricevere i dati seriali e trasferirli nella memoria alta dello Spectrum, che è da 32KiB (l’intero romset viene difatti trasferito in 16 blocchi: 16x32KiB=512KiB) e quindi verso la memoria flash inviando i dati su tutte e 8 linee D0-D7 dato che la programmazione di questa flash è possibile solo su bus parallelo.

Utilizzo del Dandanator

Prima di proseguire ricordo una cosa importantissima: mai inserire/disinserire il Dandanator o qualsiasi altra cartuccia con lo ZX Spectrum acceso! Prima di fare ogni collegamento spegnete tutto altrimenti il rischio di danneggiare sia lo Spectrum che l’interfaccia è praticamente certo! In particolare è facilissimo danneggiare la sezione alimentazione interna dello Spectrum che è nota dare un sacco di problemi ed è già un miracolo che normalmente riesca a funzionare.

I pulsanti

Il dandanator a bordo ha due pulsanti che chiameremo destro (SW2) e sinistro (SW1). I pulsanti sono importantissimi e assolvono a diverse funzioni:

Durante il boot (ovvero pulsante tenuto premuto nel momento in cui si accende lo Spectrum):

  • Pulsante sinistro: Avvia la ROM extra, che di default è il software di diagnostica di Brendan Alford e Dylan Smith. Questa ROM, definita extra perchè le viene riservato uno spazio a parte sulla memoria flash, può anche essere cambiata con una rom qualsiasi che desideriamo.
  • Pulsante destro: Avvia la ROM interna dello Spectrum e abilita l’aggiornamento della memoria flash tramite upload via audio. Questa cosa è importantissima.
  • Entrambi i pulsanti: aggiorna il firmware del PIC con il software installato nel romset.

Dopo il boot (durante un gioco o nel menù del dandanator)

  • Pulsante sinistro: mette tutto in pausa. La pausa termina premendo un tasto qualsiasi sulla tastiera.
  • Pulsante sinistro – click prolungato: Resetta lo spectrum e disabilita l’avvio automatico del dandanator. Per riabilitare l’avvio automatico del dandanator basta premere il pulsante destro.
  • Pulsante sinistro – doppio click: carica il menu del dandanator a meno che non sia stata lanciata la rom extra, in questo caso passa alla rom successiva.
  • Pulsante destro: resetta e lancia sempre il menù del dandanator.

 

Interfaccia Kempston/Seriale

Tale interfaccia permette di utilizzare un joystick con attacco DB9 che segue lo standard Atari (quindi si possono anche usare i joystick del Commodore 64). Chiaramente il gioco deve supportare questa interfaccia e gli utenti Spectrum ben sanno che in tantissimi giochi è disponibile la selezione Tastiera (default)/Interfaccia Kempston. Tanti altri giochi purtroppo supportano solo la tastiera e in quel caso datevi da fare coi tastini gommosi (se avete un modello Spectrum+ siete già più fortunati).

Tramite interfaccia Kempston viene anche gestito l’aggiornamento della memoria flash. A tal proposito è presente un connettore in alto a sinistra al quale andrà collegata l’interfaccia seriale: GND a sinista e TX dell’adattatore seriale sul pin di destra.

Il jumper tra GAL e connettore DB9 (Joystick) serve per abilitare (chiuso) o disabilitare (aperto) l’interfaccia Kempston: questo nel caso in cui vogliate collegare in cascata un’altra scheda e sfruttare l’interfaccia joystick che essa mette eventualmente a disposizione. Se il jumper è aperto, l’interfaccia kempston non è disponibile e quindi nemmeno l’upload tramite seriale.

Inserire i giochi

La presenza di una memoria flash on board da 512KiB permette di avere a disposizione una certa quantità di giochi: diciamo 10 giochi da 48K non compressi, personalmente ne ho caricati 20 dato che molti titoli classici hanno dimensioni più piccole e il software consente anche di eseguire una compressione selezionando un’apposita opzione per ogni gioco. I giochi vengono caricati sulla memoria flash in vari modi:

  • Con un programmatore su PC che supporti la memoria SST 39SF040 (i TL866 / TL866 II supportano questa memoria)
  • Mediante collegamento seriale (adattatore USB/Seriale)
  • Mediante collegamento audio (Jack cuffie su PC -> jack EAR su ZX Spectrum)

Per caricare la nostra compilation di giochi (romset) è necessario avviare l’applicazione PC del Dandanator (che si chiama ROM Generator, disponibile in cima alla lista nella pagina downloads ufficiale), importare tutti i giochi che ci interessano e quindi procedere all’upload sulla memoria flash con uno dei 3 sistemi elencati sopra e che tra poco vedremo in dettaglio.

Se abbiamo a disposizione un romset già pronto basta cliccare su File->Importazione romset

Altrimenti possiamo iniziare un romset vuoto all’interno del quale possiamo inserie giochi nei formati SNA, Z80, TAP e MLD. Le rom singole si importano premendo il tasto + sotto l’elenco dei giochi, la X li elimina tutti, il tasto – elimina la rom selezionata. 

Per ogni gioco viene mostrata l’anteprima e possiamo cambiare il nome che deve apparire nell’elenco e abilitare la compressione:

Se una particolare ROM richiede un’interfaccia particolare (come la IF2) questo viene segnalato in rosso nella scheda general e vuol dire che potremmo non riuscire a farla funzionare a meno di non avere a disposizione l’interfaccia specificata. Per ogni gioco viene indicato se è 48K o 128K, i giochi da 128K chiaramente potremo utilizzarli soltanto su un modello Plus e su uno Spectrum 48K appariranno disabilitati (scritti con una linea trasversale).

Il limite a disposizione per le rom è indicato dalla barra blu in basso a destra nel software con la scritta R (rom): se diventa rossa vuol dire che abbiamo sforato.

La barra sottostante, P, è invece per i Poke, ovvero i cheat che possiamo scegliere per ogni gioco e che permettono di avere vite infinite, energia infinita, armi ecc a seconda del gioco. Per ogni gioco possiamo cliccare sulla scheda Pokes e inserirli dando loro un titolo:

In questa immagine di esempio ho inserito vari poke per Atic Atac: vite infinite e energia infinita (i poke si trovano su tantissimi siti, se siete a conoscenza di Google non ci vuole nulla per trovarli, così come le rom dei giochi). Per inserire Vite infinite, ad esempio, ho cliccato il tasto +, ho scritto “Vite infinite” e dato invio, dopodichè ho cliccato di nuovo + tenendo selezionata la scritta appena messa: di default il software scrive 16384,0 giusto per far capire come scrivere: locazione di memoria,byte. Questi poke saranno disponibili nel menù del dandanator: quando sullo Spectrum compare il menù possiamo premere il tasto P: i giochi che hanno poke inseriti hanno il numero scritto in reverse, selezioniamo quindi il gioco premendo Fire e viene visualizzato l’elenco dei poke disponibili: selezioniamo quelli che vogliamo attivare cliccando Fire e infine con invio si avvia il gioco con i cheat attivi. I poke possono anche essere esportati/importati come files .POK mediante l’apposita opzione:

Una volta compilato l’elenco di rom possiamo premere il tasto “Creare ROM” per salvare il file.

Se abbiamo a disposizione un programmatore sul PC, come il TL866, possiamo utilizzare il file appena creato: è già leggibile dal software del programmatore. Il salvataggio del romset è comunque sempre consigliato anche se non intendiamo usare il programmatore: il file ottenuto infatti è sempre caricabile dal software ROM generator in modo da tenerlo disponibile per modifiche.

Se invece vogliamo utilizzare il sistema classico (upload del romset via seriale o via audio), cosa che bisogna comunque fare se abbiamo realizzato il Dandanator e non abbiamo la possibilità di programmare la memoria flash, bisogna procedere in maniera diversa.

C’è da dire una cosa: il romset contiene di default sia la rom diagnostica (modificabile dal menu file/opzioni) sia il software loader che permette, da spectrum, l’upload da audio/seriale. La rom del loader condivide lo stesso spazio dei giochi e dei poke e capita che, anche se c’è ancora spazio a disposizione questo potrebbe non essere sufficiente per ospitare il loader per cui questo non viene incluso e l’utente non viene avvisato di questa condizione.

Questo non è un problema perchè il loader è sempre caricabile sullo spectrum mediante interfaccia audio come spiego più in basso, ad ogni modo ho aperto un issue su Github per segnalare allo sviluppatore del software un sistema per far capire all’utente che il loader non è stato incluso in maniera tale che se gli è strettamente necessario (perchè l’interfaccia audio non funziona bene) può modificare il romset per togliere qualcosa e fare spazio ad esso. L’issue è visibile qui.

Upload via audio

Questo sistema è quello da utilizzare nei casi in cui:

  • la memoria flash a bordo del dandanator è vuota (lo abbiamo appena costruito e il nostro programmatore di eprom non supporta la memoria flash 39SF040)
  • la memoria flash si è corrotta perchè magari è andata via la corrente mentre facevamo un upload
  • la voce “Loader” non è disponibile nel menù del Dandanator come spiegato più in alto
  • Non abbiamo un’interfaccia seriale/USB

A ZX Spectrum spento innestiamo la cartuccia del Dandanator. Teniamo premuto il tasto destro del dandanator e accendiamo lo Spectrum, quando appare il video rilasciamo il pulsante. Questo passaggio è di fondamentale importanza: senza tenere il pulsante destro premuto all’accensione tutti i passaggi successivi non vanno a buon fine!

Io sbagliavo di continuo perchè non premevo il pulsante destro all’avvio e il Loader, dopo essere stato caricato via audio, non rilevava il Dandanator e me lo segnalava con l’icona di una Bomba in alto a sinistra (vedi video).

Colleghiamo un cavetto jack audio (viene consigliato un cavetto stereo) maschio/maschio classico da 3,5mm: da un lato al connettore EAR dello Spectrum e dall’altro all’uscita cuffie del computer.

Anche qui ci possono essere fraintendimenti perchè a volte viene spontaneo connettere il cavo al terminale MIC dato che è logico pensare che MIC=microfono=ingresso audio. Le scritte sul retro dello Spectrum servono ad indicare a quale porta del registratore collegarsi, non indicano la funzione!

Sul nostro PC avviamo il software del Dandanator, creiamo/carichiamo il nostro romset. Dal menù File->Opzioni andiamo nella scheda Loader: le opzioni di default generalmente vanno bene, in molti casi è necessario spuntare la voce Boost audio. Alziamo anche al massimo il volume di sistema.

Questa finestra possiamo anche lasciarla aperta e continuare a lavorare su quella principale: l’una non esclude l’altra. Sulla schermata principale del Dandanator, quella dove compare il disegno di come apparirà il menù sullo Spectrum, notiamo che sulla cornice, in basso, ci sono due cerchietti: clicchiamo sul secondo per cambiare la schermata:

Compare la schermata del loader lato pc:

Sullo ZX Spectrum digitiamo LOAD”” e diamo invio

Se non vi ricordate come si scrive, dato che nel Basic ogni tasto genera una parola chiave: tasto J, teniamo premuto Symbol Shift e premiamo due volte su P.

Dopo dato invio lo ZX Spectrum si mette in ascolto. Sul PC premiamo il tasto Play sul Software del Dandanator.

Lo Spectrum carica il software EEP Writer:

Durante il caricamento si deve sentire il fischio del caricamento uscire dall’altoparlantino dello Spectrum. A fine caricamento parte il Loader.

In caso tutto ciò non avvenise o si verifica un Load Error: controllare/cambiare il cavo audio, verificare che la sezione audio dello spectrum non abbia problemi (magari il connettore femmina è arrugginito o fa cilecca), provare con differenti impostazioni di volume/boost o con altro PC. Io ho avuto non pochi problemi inizialmente: ho dovuto alzare il volume al massimo e selezionare la voce “Boost Audio” lasciando tutte le altre impostazioni di default.

Quando il loader parte, il software lato PC comincia ad inviare i dati per la programmazione della flash: si tratta di 16 blocchi da 32KiB ognuno: vengono caricati nella RAM alta (fase gialla – loading) e quindi scritti sulla flash (fase rossa – writing):

Quando il counter arriva a 16 e supera la fase di scrittura, il sistema si resetta e riparte il menù del Dandanator con il nuovo romset. Questa procedura è la più lenta e richiede, credo,7/8 minuti. Inutile dire che durante la scrittura della memoria flash, lo spectrum dovrebbe stare sotto gruppo di continuità altrimenti bisogna rifare tutto daccapo se va via la corrente.

Questo video illustra tutto il procedimento:

Upload via Seriale

Per questo è necessario utilizzare uno di quei piccoli adattatori USB/Seriale cbasati su chip FTDI o sul CH340G o altri. Questo sistema è decisamente più rapido dell’opzione upload audio (dura circa 2 minuti).

L’adattatore seriale va collegato sul dandanator mediante un cavetto jumper che termini col connettore femmina: il terminale di GND va collegato al pin di sinistra e il teminale TX del vostro adattatore va collegato al pin di destra.

Dal menù File->Opzioni andiamo nella scheda Loader. Cerchiamo nella lista “Serial Port->Kempston” il nome della nostra porta seriale e selezioniamola:

Nel caso in cui il menù Loader non sia presente nel menù del Dandanator o la Flash sia vuota è necessario spuntare anche l’opzione Send Writer by Audio: questo permetterà di uploadare il Loader sullo Spectrum, da fare con la procedura descritta prima che questa volta funzionerà solo per caricare il loader nella fase iniziale, mentre per la scrittura della flash sarà utilizzata la seriale.

Se invece dal menù del dandanator è disponibile la voce Loader, allora basta soltanto richiamare il programma EEP Writer premendo la lettera L sulla tastiera dello spectrum quando è attivo il menù del Dandanator bypassando la fase di LOAD”” iniziale. Il caricamento via seriale avviene allo stesso modo visto per l’audio: premendo il tasto play sul software lato PC.

Questo video illustra la procedura:

TL866 e GAL22V10

Ho inserito questo paragrafo giusto perchè sappiate chi dovete ringraziare se il vostro TL866 con l’ultimo aggiornamento firmware riesce finalmente a programmare le GAL22V10. Come dicevo all’inizio, appena ho visto del Dandanator ho cominciato a studiare le GAL e a fare delle prove: a casa avevo delle GAL16V8 e sono riuscito a programmarle senza problemi. Quando mi sono arrivate le GAL22V10 sono cominciati i dolori: nell’elenco erano riportate ma qualsiasi tentativo di programmazione falliva con un errore di verifica all’indirizzo 32, chi mi segue su Twitter ha potuto seguire tutta la vicenda:

Ho quindi fatto numerose ricerche e ho visto che questo era un problema molto vecchio: ci sono post di qualche anno fa su molti forum in cui la gente si lamentava dello stesso identico problema proprio con la GAL22V10 (ad esempio qui e qui e qui per citarne qualcuno). Tutti risolvevano comprando un nuovo programmatore perchè pare che la Autolectric (la ditta che produce il TL866) non rispondeva a nessuno.

Ho scritto quindi una prima volta alla Autoelectric facendo presente il problema e atteso una settimana senza risposta. Ho quindi fatto numerose prove modificando anche i fuses a mano nella finestra di programmazione e ho potuto notare che il programmatore infilava nella GAL sempre la stessa sequenza di bit: 32 ‘0’ seguiti da da 12 ‘1’ qualsiasi fosse il programma caricato:

Ho quindi mandato una seconda email alla Autoelectric evidenziando tutte le cose che avevo scoperto allegando immagini e prove. Nel frattempo mi sono cimentato nella costruzione di un programmatore per GAL trovato in rete, per porta parallela, per il quale sono stato anche costretto ad utilizzare un vecchio laptop con Windows 98.

La autoelectric ancora non rispondeva: mando loro un’altra email facendo un elenco di tutti i siti che avevo trovato in cui le persone si lamentavano del problema, del fatto che la gente aveva acquistato altri programmatori e che avessero almeno la bontà di eliminare la GAL22V10 dall’elenco dei dispositivi programmabili dato che era universalmente riconosciuto che il TL866 non le programmava correttamente ma le riempiva soltanto con una sequenza standard.

Dopo qualche giorno arriva una risposta che lascia ben sperare, io chiaramente felicissimo:

Sono stato a controllare il loro sito tutti i giorni mattina e sera fino a che, solo 5 giorni dopo:

 

Finalmente arriva l’aggiornamento, e la cosa bella è stata che insieme a questo hanno anche rilasciato un altro aggiornamento per il TL866II che, guardacaso, anch’esso riguardava i modelli GAL22V10. Sul TL866 primo modello hanno anche aggiunto un paio di GAL della Atmel, sul modello II le hanno poi aggiunte tutte… però potevano chiaramente anche farlo per il modello I… credo che non lo faranno mai perchè devono chiaramente favorire il nuovo modello… e non sarebbe cortese rompere loro le scatole anche per questo… Questo è quanto!

Immagini:



Questo articolo ti è stato utile? Ti ha permesso di risolvere un problema o di migliorare le tue applicazioni? Ci lavori? Ti ha permesso di scrivere la tua tesina? Ti ha semplicemente fatto spendere un po' del tuo tempo in maniera costruttiva? Allora clicca il banner qui sotto:


Settorezero.com è un blog personale di Giovanni Bernardo aperto dal 25 Ottobre 2007. Non è una testata giornalistica né un sito a carattere commerciale.
Settorezero.com, il logo Zroid™ e la tagline "Play embedded electronics™" sono copyright ©2007÷2018 Giovanni Bernardo.
La navigazione su settorezero.com e la fruizione dei contenuti ivi presenti sono soggette ai seguenti Termini di utilizzo - Informativa sulla privacy - Utilizzo dei Cookie.
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche.
Per poter contattare il gestore del sito potete utilizzare la sezione contatti o inviare una email a gianni[at]settorezero[dot]com.
Per seguire gli aggiornamenti del blog Settorezero, oltre al feed RSS, puoi anche seguire la pagina Facebook o iscriverti al canale Telegram.
Su Twitter, invece, pubblico un po' di tutto e, quando mi va, uso anche Tumblr - Google+ - Blogspot - Youtube.