XUM1541

XUM1541: i floppy del Commodore sul PC

La XUM1541 è un piccolo adattatore USB che collega un drive 1541, 1571 o 1581 a un computer moderno. Con lei puoi salvare in un'immagine D64 i dischi che hai nel cassetto da quarant'anni, prima che si smagnetizzino, oppure scrivere sui floppy veri i giochi e le demo scaricati da internet.

In questa pagina trovi il programma per usarla direttamente dal browser e la guida completa: com'è fatta, come costruirla con un Arduino Pro Micro, come caricare il firmware e installare i driver.

Floppy C64 dal browser

—

Disco nel drive

Trascina qui file PRG o SEQ per scriverli sul disco

Trascina qui i file dal tuo computer
PRG, P00, SEQ, immagini D64, D71, D81 e archivi ZIP

1Cos'è la XUM1541

I drive Commodore parlano con il computer attraverso il bus seriale IEC: un cavo con la presa DIN a 6 poli e cinque segnali (ATN, CLK, DATA, RESET, SRQ) con tempi di pochi microsecondi. Un PC non ha niente del genere, e una semplice porta USB non riesce a rispettare quei tempi.

La XUM1541 risolve il problema con un microcontrollore che ha l'USB integrato: il suo firmware, scritto da Nate Lawson e distribuito con il progetto OpenCBM, gestisce da solo tutti i tempi del bus, mentre il computer gli manda solo comandi ad alto livello (“parla con il drive 8”, “manda questi byte”, “leggi la risposta”).

XUM1541 fai-da-te

Un Arduino Pro Micro e una presa DIN: è la versione di questa guida, costa pochi euro di componenti.

ZoomFloppy

La versione commerciale di RETRO Innovations, con porta parallela per i cavi XP1541 e bus IEEE-488 per i drive PET. Usa lo stesso firmware e funziona anche con il nostro programma.

Drive compatibili

1541, 1541-II, 1570, 1571, 1581 e in generale le periferiche sul bus seriale del C64 e del VIC-20.

2Com'è fatta

Nella versione più semplice non ci sono altri componenti: le linee del bus IEC vanno saldate direttamente ai pin del Pro Micro. Il firmware usa i pin in modalità “open collector” (li porta a massa oppure li lascia liberi), proprio come fa il C64.

PC Chrome · Edge USB 32U4 ARDUINO PRO MICRO 5V · 16 MHzfirmware xum1541 16148 910GND DATACLKATN SRQRESETGND 543 162 DIN 6 1541
Schema di principio: a sinistra i pin del Pro Micro (numeri stampati sulla scheda), a destra i pin della presa DIN del bus IEC.
Pro Micro (scritta sulla scheda)ATmega32U4SegnalePin DIN IEC
16PB2DATA5
14PB3CLK4
8PB4ATN3
9PB5SRQ1
10PB6RESET6
GND—GND2
Il 5 V non va collegato alla presa IEC: il Pro Micro si alimenta dall'USB e il drive ha il suo alimentatore. Si collega solo la massa (GND).

Collegamenti facoltativi

  • Cavo parallelo XP1541 (per le copie veloci di OpenCBM e per nibtools, con il drive modificato): D0–D7 sui pin 3, 2, RXI, TXO, A3, A2, A1, A0. Nel circuito di tebl è il connettore J2 a 2×8 pin.
  • Versione con 7406: un invertitore open collector tra Pro Micro e bus, come nella ZoomFloppy originale; usa altri pin come ingressi (5, 15, 7, 4, 6) e un firmware diverso (PROMICRO_7406). Protegge meglio il microcontrollore e permette la lettura “nibbler” sulla 1571.
  • LED con resistenza da 330 Ω per vedere quando la scheda è alimentata, e un pulsante di reset per riprogrammarla senza toccare i pin con un filo.

3Costruirla

Per la nostra abbiamo seguito il progetto C64-XUM1541 di tebl: un circuito stampato pensato per non dover saldare fili, con il Pro Micro su zoccolo, la presa DIN e un pulsante. I file Gerber per farlo produrre sono nel suo repository (e su PCBWay). Lo stesso schema si può realizzare anche su millefori o con pochi fili.

Rif.ComponenteQ.tà
A1Arduino Pro Micro 5 V / 16 MHz (ATmega32U4)1
A12 strip da 12 pin maschio, oppure femmina per poter togliere il Pro Micro2
J1Presa DIN 6 poli femmina da circuito stampato1
SW1Pulsante 6×6 mm ad angolo retto (serve per caricare il firmware)1
D1, R1LED 5 mm e resistenza da 330 Ω (facoltativi)(1)
J2Connettore 2×8 pin per il cavo parallelo (facoltativo)(1)
—Scatola 70×45×30 mm (facoltativa)(1)
—Cavo seriale IEC DIN 6 maschio–maschio, come quello tra C64 e 15411
Attenzione al Pro Micro: serve la versione a 5 V e 16 MHz (quella a 3,3 V / 8 MHz non va bene). Esistono cloni di dimensioni leggermente diverse: prima di saldare controlla che i pin coincidano con il circuito. Sui cloni il ponticello J1 deve essere chiuso (di solito lo è già).

4Caricare il firmware

Il firmware ufficiale è nel repository di OpenCBM, già compilato per il Pro Micro:

La versione 8 è quella che abbiamo provato con il programma di questa pagina. Il Pro Micro ha un bootloader (Caterina) che resta dopo la programmazione, quindi il firmware si può cambiare quando si vuole. Si programma con avrdude, che si trova già installato con l'Arduino IDE.

  1. Collega il Pro Micro al PC con il cavo USB, senza drive collegato.
  2. Premi due volte di seguito il pulsante di reset (o tocca due volte il pin RST con GND). Il LED lampeggia piano: per circa 8 secondi il bootloader compare come una nuova porta COM in Gestione dispositivi. Attenzione: non è la stessa porta che vedi prima del reset.
  3. Entro quegli 8 secondi lancia avrdude con la porta del bootloader (qui COM10):
avrdude -p m32u4 -c avr109 -P COM10 -b 57600 -D -U flash:w:xum1541-PROMICRO-v08.hex:i

Con l'Arduino IDE avrdude si trova in %LOCALAPPDATA%\Arduino15\packages\arduino\tools\avrdude\ (cartella bin, con avrdude.conf in etc da indicare con -C). Su Linux:

stty -F /dev/ttyACM0 speed 1200      # reset nel bootloader
avrdude -p m32u4 -c avr109 -P /dev/ttyACM0 -U flash:w:xum1541-PROMICRO-v08.hex:i
Se tutto è andato bene, scollegando e ricollegando la scheda non compare più una porta COM ma un dispositivo xum1541 (USB 16D0:0504).

La guida di tebl consiglia la versione 7 del firmware, perché con la sua configurazione di OpenCBM la 8 non funzionava: se usi OpenCBM e hai problemi, prova la v07 dal suo repository. Il programma di questa pagina accetta le versioni 7 e 8.

5Installare i driver

Windows

Windows non ha un driver per la xum1541: si installa con Zadig. Quale scegliere dipende dal programma che vuoi usare:

DriverProgramma di questa pagina (Chrome, Edge)OpenCBM (riga di comando)
WinUSB✔ necessariodipende dalla versione: da provare
libusb-win32✘ il browser non la vede✔ quello indicato nella guida di tebl
  1. Collega la xum1541 (con il firmware già caricato) e apri Zadig.
  2. Menu Options → List All Devices, poi scegli xum1541 nell'elenco (controlla che l'USB ID sia 16D0 0504).
  3. A destra della freccia scegli WinUSB e premi Replace Driver (o Install Driver).

Il driver si può cambiare quando si vuole rifacendo gli stessi passi con Zadig: per esempio WinUSB per usare la pagina e libusb-win32 per tornare a OpenCBM.

Linux

Non serve un driver, ma un permesso: crea il file /etc/udev/rules.d/45-xum1541.rules con questa riga, poi ricarica le regole e ricollega la scheda.

SUBSYSTEM=="usb", ATTR{idVendor}=="16d0", ATTR{idProduct}=="0504", TAG+="uaccess"
sudo udevadm control --reload-rules

macOS

Non serve niente: la xum1541 è subito disponibile per il browser.

6Usarla con il programma

Collega e scollega i cavi a drive spento. Il bus IEC non ama le prese inserite sotto tensione: prima i cavi, poi accendi il drive.
  1. Apri questa pagina con Chrome o Edge su computer (Firefox e Safari non hanno WebUSB).
  2. Collega il cavo IEC tra la xum1541 e il drive, poi la xum1541 al PC, e accendi il drive.
  3. Nel programma scegli ● Drive reale e premi Collega la xum1541: il browser mostra l'elenco dei dispositivi compatibili, scegli la xum1541. Il permesso resta: le volte successive basta Ricollega l'ultima.
  4. Il pannello diventa verde con la scritta ONLINE e il drive risponde con il suo messaggio, per esempio 73,CBM DOS V2.6 1541,00,00. Inserisci un floppy e premi Directory.

Cosa puoi fare

  • Dal floppy al PC: scarica un singolo file come .prg, oppure con Disco → immagine copia tutto il disco in un D64 (o D71, D81).
  • Dal PC al floppy: trascina sul pannello del drive i file PRG, SEQ o P00, oppure apri un D64 nella scheda «Immagine disco» e scrivi sul floppy un file alla volta o l'immagine intera con Immagine → disco.
  • Da CSDb: cerca una demo o un gioco, apri il file (anche dentro gli ZIP) e mandalo sul drive.
  • Formattare, cancellare, rinominare, validare, mandare comandi DOS e aggiungere i classici separatori "----------------" DEL alla directory.

Quanto ci mette

Il programma usa il protocollo seriale standard, lo stesso del C64 senza caricatori veloci: qualche centinaio di byte al secondo. Un file da 30 blocchi (circa 7,5 KB) richiede una ventina di secondi; un disco intero letto blocco per blocco richiede circa dieci minuti. I trasferimenti veloci di OpenCBM (d64copy, circa un minuto a disco) caricano un programma nella memoria del drive: non sono ancora nel programma web.

Se qualcosa non va

  • La xum1541 non compare nell'elenco: su Windows manca il driver WinUSB; su Linux la regola udev.
  • Compare ma non si apre: un altro programma la sta usando (OpenCBM, VICE, un'altra scheda del browser), oppure il driver non è WinUSB.
  • 99, DRIVER ERROR o «nessun drive risponde»: il drive è spento, il cavo IEC non è inserito bene o il numero di periferica non è 8 (cambialo nel menu Numero).
  • La scheda Registro mostra tutti i comandi mandati al drive: copiala e mandacela se ti serve aiuto.

Senza xum1541 puoi provare tutto con la Simulazione: un drive virtuale in memoria che risponde come quello vero, ma non legge e non scrive nessun floppy. Il visualizzatore di immagini D64 e l'estrazione dei file funzionano in qualsiasi browser.

7Con OpenCBM (riga di comando)

La stessa scheda funziona con OpenCBM, la raccolta di programmi da riga di comando da cui viene il firmware. Su Windows si scompatta lo ZIP, si apre un prompt dei comandi come amministratore nella cartella e si installa con install xum1541. Poi:

cbmctrl detect                    rem elenca i drive collegati
cbmctrl dir 8                     rem directory del disco nel drive 8
d64copy 8 disco.d64               rem copia veloce del disco in un'immagine
d64copy -n 8 disco.d64 > disco.log 2>&1   rem idem, con un registro degli errori

Per archiviare una collezione di dischi è utile tenere il registro di ogni copia: un disco con errori di lettura si riconosce subito anche dopo anni.

Fonti e ringraziamenti: firmware xum1541 di Nate Lawson e progetto OpenCBM; circuito stampato e guida di tebl, a sua volta basato sull'articolo di myoldcomputer.nl. Il programma web è un'implementazione indipendente di RetroFixer.

Views: 25