SD2IEC fatta in casa!

Buongiorno a tutti,

parliamo di SD2IEC.

SD2IEC è un dispositivo di archiviazione di massa che utilizza una scheda SD e si interfaccia con il bus IEC. Il progetto si basa sul microcontrollore ATmega644 di Atmel (si possono utilizzare ad esempio ATmega644p ed ATmega1284p). SD2IEC è utilizzata per rimpiazzare l'unità disco 1541 per Commodore C64 C16, VIC-20, C64, C128 (no burst mode) ecc. L'hardware e il firmware sono disponibili open source.

In allegato è presente un circuito realizzato in breadboard di una SD2IEC FUNZIONANTE. Ecco di seguito una descrizione delle funzionalità di SD2IEC.

Una configurazione minima prevede l’utilizzo di un microcontrollore Atmel (ad esempio ATmega644p o ATmega1284p), di un modulo per la lettura delle SDCARD e di alcuni componenti (tre condensatori ed un oscillatore al cristallo a 8Mhz).

Passo ora alla descrizione del progetto dal punto di vista relativo alle funzionalità.

Il firmware SD2IEC
Il firmware è reperibile sul sito https://sd2iec.de/. È possibile optare per due “configurazioni”. Una prima configurazione prevede il caricamento sul microcontrollore di un bootloader (reperibile a questo indirizzo: https://sd2iec.de/bootloader/newboot-0.4.1-binaries.zip) e la copia del vero e proprio firmware SD2IEC nella SDCARD. Una volta acceso per la prima volta il dispositivo, il bootloder flasherà automaticmente il firmware; tale firmware è scaricabile qui: https://sd2iec.de/sd2iec-current-binaries.zip (attenzione a scegliere la versione corretta per il microcontrollore in uso nel file .zip!). Sarà poi possibile cancellare dalla SD il file non appena flashato.
La seconda configurazione, invece, prevede il flash del firmware SD2IEC direttamente nella memoria microcontrollore (e non del bootloader come nel caso precedente). Francamente ho optato per la prima soluzione in ottica di un possibile rilascio di un nuovo firmware. In tal caso sarà possibile copiare il nuovo firmware ed il bootloader già installato penserà all’aggiornamento. La seconda soluzione, invece, prevedrà solamente il reflash di un nuovo firmware aggiornato.

Programmazione del microcontrollore
In questo caso possiamo seguire varie strade. La prima strada consiste nell’utilizzare un programmatore stand-alone (ad esempio l’ormai famoso MiniPro supporta entrambi i microcontrollori consigliati). La seconda strada, consiste nell’utilizzare il software a riga di comando “AVRDUDE” (presente anche nel pacchetto IDE di programmazione di Arduino). Una terza stradaprevede l’utilizzo, ad esempio, del programma Atmel Studio ed un programmatore compatibile (ad esempio, AVRISP MK2). AVRISP MK2 può essere comunque utilizzato anche con AVRDUDE.

Pulsanti DiskSwap1 e DiskSwap2
I pulsanti DiskSwap1 e DiskSwap2 offrono un valido aiuto per i giochi multidisco. È necessario creare un file di testo denominato “AUTOSWAP.LST” nella stessa directory contenente l’elenco dei file .D64 del gioco multidisco. Fatto ciò, sarà possibile aprire il File Browser, navigare verso directory che contiene l'immagine del disco ed uscire dal programma premendo il tasto Q. Ora basta premere il pulsante DiskSwap1 per poter caricare la prima immagine .D64 nel drive corrente. A questo punto è possibile effettuare il caricamento ed il RUN del primo disco. Il gioco verrà caricato. Quando il gioco chiede di inserire il disco 2, premere il pulsante DiskSwap2 ed SD2IEC monterà il disco successivo specificato nel file AUTOSWAP.LST. Quando si raggiunge l'ultimo disco, SD2IEC ricomincerà l'elenco e selezionerà nuovamente il primo disco. Molto comodo. In mancanza dei pulsanti DiskSwap sarà possibile, di norma (a meno di qualche trick), giocare solamente con giochi da un disco.

Bottone di reset
Tale funzionalità non effettua un vero e proprio “reset” del dispositivo ma permette di tornare alla cartella di root della SD. Un tipico caso d’uso riguarda l’utilizzo dell’ormai famoso “File Browser”. Esplorando le cartelle della SD (ad esempio ci portiamo in “giochi”) possiamo scegliere mediante il tasto “Q” di chiudere FB per giocare un gioco multidisco. Ecco ora saremo “bloccati” in “giochi”, con l’impossibilità (se non mediante i comandi offerti da SD2IEC) di ritornare alla root. In taluni casi, può succedere che una DEMO si blocchi costringendoci a resettare il Commodore. Sappiate che il percorso sarà sempre “giochi” (poiché non avviene anche il reset di SD2IEC) a meno di spegnere e riaccendere il dispositivo. Premendo il bottone reset è possibile, in ogni momento, tornare alla cartella principale della SD. Tutto questo premendo un solo bottone.

Device address
SD2IEC può essere configurata come device #8, #9, #10 oppure #11. Un componente molto comodo per operare tale scelta è il dip switch. Mediante varie combinazioni (fare riferimento al disegno del circuito in allegato) è possibile settare il nuovo drive. In alternativa, è possibile sempre impostare automaticamente #8 e poter, a piacimento, cambiare da riga di comando il dispositivo SD2IEC corrente (ad esempio #9, #10 o #11).

FastLoaders
Una nota dolente di SD2IEC è la compatibilità con alcuni FastLoader. I Fastloader sono costituiti da una parte di codice in esecuzione sul C64 e da un codice in esecuzione sul floppy. SD2IEC non può emulare un 1541 “reale” poiché ciò implicherebbe emulare un intero processore 6502, diversi circuiti aggiuntivi e il meccanismo del floppy. Le risorse di un microcontrollore non sono sufficienti (non si tratta solo di potenza di elaborazione e tempistica, ma anche di requisiti di memoria). Un’ emulazione più completa può essere ottenuta mediante un PI1541 o, meglio, mediante una scheda 1541 Ultimate/Ultimate 64. Per SD2IEC, è possibile aggiungere un supporto speciale solo per i singoli Fastloader al firmware (il che significa sostanzialmente reimplementare il codice del Fastloader precedentemente in esecuzione sul floppy per il controller ATMega). Questo è stato fatto per alcuni Fastloader noti. Detto questo, sd2iec ha un supporto speciale per alcuni noti caricatori veloci.
Anche in questo caso è possibile, per velocizzare i caricamenti fare riferimento a varie soluzioni provando e riprovando varie strade. Una prima soluzione consiste nella scelta di una cartuccia Fastloader (ad esempio Epyx FastLoad o The Final Cartridge III) possiedono una buonissima compatibilità con la maggior parte dei giochi, rispetto ad altri FastLoader. A mio parere, avere a disposizione EasyFlash III (che può integrare anche le suddette), salva la vita.
Per quanto concerne, invece, una possibile altra soluzione, si può prendere in considerazione come giustamente ha fatto notare Marcello Messora in qualche video, JiffyDos oppure exOS. In alternativa, esistono dei FastLoad software. Ad esempio, la versione software di Epyx FastLoad oppure SJLOAD, rappresentano un discreto compromesso a costo zero. Si tratta di fare delle prove in riferimento al caso specifico prima di alzare bandierina bianca.

Ottimizzazioni
Per quanto concerne, una prima ottimizzazione, è possibile aggiungere un tasto di reset per il nostro Commodore, utilizzando la Userport (a questo punto possiamo utilizzarla anche per alimentare SD2IEC visto che ci siamo). Molto spesso, però, la tendenza è quella di utilizzare il TapePort per alimentare SD2IEC ed utilizzare la UserPort per altri scopi.

Alimentazione di SD2IEC
Per quanto concerne l’alimentazione del dispositivo, la buona notizia riguarda i consumi. SD2IEC come da me configurata, consuma relativamente poco (in Idle ~15mA e a carico dai 30 agli 80mA). A tal riguardo, è possibile alimentarla anche con il classico alimentatore per smartphone (ad esempio 5V ed assorbimento di corrente di 1A) nonché mediante una porta USB libera di un computer (fisso o portatile). Le possibilità comunque lato Commodore sono varie: porta joystick, TapePort o Userport.

Vantaggi e svantaggi
SD2IEC non è sempre la soluzione migliore per chi gioca o per chi è appassionato soprattutto di DEMO. Il più grande svantaggio di questo prodotto è la scarsa compatibilità con il software. I programmi con FastLoader integrati, molto spesso, hanno difficoltà di avvio. In molti casi è necessario testare diverse versioni di una immagine .D64 per trovarne una compatibile.

Ecco un breve elenco di vantaggi e svantaggi di SD2IEC:

• supporto per il protocollo di bus seriale veloce JiffyDOS;
• supporto per Fastloader Final Cartridge 3 ed Epyx Fastloader;
• supporta un pulsante "cambio disco" esterno;
• supporta le funzioni IEC più tipiche (LOAD, SAVE, OPEN, CLOSE ecc.);
• supporto di molte tipologie di file immagine, tra cui: PRG, D64, D71, D81;
• caricamento molto veloce del device;
• lettura veloce delle immagini .D64 mediante Fastloader;
• disponibili diversi layout di scheda montabili ed alloggiabili anche internamente;
• compatibile con alcuni Kernal/FastLoader come exOS, JiffyDOS, Final Cartridge III, Epyx Fastload;
• dispositivo di facile gestione;
• prezzo conveniente;
• nessuna opzione avanzata (ad esempio gestione REU);
• nessun supporto TAP, T64 e G64.

In conclusione SD2IEC comunque è un dispositivo molto apprezzato, veloce ma limitato sotto certi punti di vista che consiglio comunque a tutti gli appassionati che vogliono giocare ad un costo relativamente basso. Consiglio inoltre l’acquisto abbinato a EasyFlash III per poter sperimentare il miglior FastLoader/kernal veloce per un determinato gioco.

Il disegno in allegato mostra un semplice schema di SD2IEC realizzato in una breadboard. Attenzione che, il modulo SDCARD, ha un regolatore a 3,3 V. Provatelo a vostro rischio, non sono responsabile se qualcosa si rompe!

Allegato: 

Category: 

Commenti

Veramente un articolo utile...Bravo!

Sapevo ti sarebbe piaciuto!!!! Guarda le views da ieri sera ;-)

si si...viste....bravo!

Aggiungi un commento

CAPTCHA
Questa domanda è un test per verificare che tu sia un visitatore umano e per impedire inserimenti di spam automatici.
agricol_ura:
X