SFD-700 Controller Floppy Disk Multi-Host
Aggiornamento febbraio 2024 - L'hardware v1.2 e completamente funzionante ed e stato testato sul mio MZ-80A, MZ-700 e MZ-1500 utilizzando l'adattatore EXT700 e nell'unita di espansione MZ-2000. Sono stati segnalati problemi con l'utilizzo dell'MZ-1U06 che necessitano di indagine, sembra un problema di timing del CPLD. La logica CPLD (VHDL) e completa e tutta la logica di paginazione ROM/RAM e modalita host funziona correttamente. Il software ROM Filing System portato sull'SFD-700 e funzionante per le operazioni FDC di base (avvio floppy tramite comando 'F') ma non include ancora la suite completa di strumenti monitor floppy disk; questo e in sviluppo continuo. Il carico di lavoro dei clienti ha rallentato i progressi -- consultare il repository Gitea per lo stato attuale. La scheda non e stata ancora testata su altre macchine della serie MZ; speriamo di farlo a tempo debito.
Uno degli accessori piu necessari per la serie Sharp MZ e il venerabile controller floppy disk. Questi sono relativamente rari poiche poche persone li usavano, principalmente a causa del costo durante l'era Sharp MZ.
Sharp ha progettato e rilasciato diverse schede di espansione floppy disk. Alcune integrate nella macchina base, come la serie MZ-2500/2800/3500/5600/6500, altre richiedevano una scheda plug-in. Inizialmente hanno utilizzato un controller personalizzato nella serie MZ-80K, poi con l'avvento della macchina business MZ-80B, Sharp ha standardizzato l'architettura Western Digital Floppy Disk Controller e ha progettato e prodotto il proprio IC controller, l'MB8866.
Purtroppo, per i modelli inferiori come l'MZ-80A/MZ-700, i floppy disk non erano stati considerati nella fase di progettazione e richiedevano quindi lo sviluppo di nuove schede controller di espansione con ROM integrata per fornire il firmware di bootstrap floppy disk necessario.
Questo documento illustra il nuovo schema, la logica programmabile e tutti i problemi scoperti su ciascuna macchina.
Compatibilita Host
L'SFD-700 v1.2 supporta tutte le macchine della serie Sharp MZ dall'MZ-80A in poi (escluse le macchine con controller floppy integrati). L'host di destinazione e selezionato da un jumper MODE a 3 bit sul PCB che viene memorizzato al reset.
| MODE | Macchina Host |
|---|---|
| 0 | Sharp MZ-80A / MZ-1200 |
| 1 | Sharp MZ-700 |
| 2 | Sharp MZ-80B |
| 3 | Sharp MZ-800 |
| 4 | Sharp MZ-1500 |
| 5 | Sharp MZ-2000 |
| 6 | Sharp MZ-2200 |
Schema

Logica Programmabile
v1.0 / v1.1 -- Design basato su GAL
Le prime revisioni utilizzavano due dispositivi GAL. La versione 1.2 li ha sostituiti con un singolo Altera MAX7000S EPM7128SLC84-15 CPLD (PLCC-84, 128 macrocelle), implementato in VHDL e compilato con Quartus II 13.0.1 SP1.
Setup e build automatizzati
Sia la logica CUPL/GAL legacy (v1.0 / v1.1) che il bitstream CPLD/VHDL attuale (v1.2) possono essere compilati da un unico script di setup autonomo per la propria piattaforma. Lo script installa le toolchain necessarie — DOSBox per la logica CUPL e Altera Quartus II 13.0sp1 per il CPLD — clona il repository e puo eseguire una o entrambe le build, il tutto in modo interattivo con valori predefiniti ragionevoli che potete accettare premendo Invio. Questo e il modo piu semplice per compilare; le sezioni dettagliate GAL e CPLD che seguono sono mantenute per utenti avanzati che vogliono compilare manualmente o eseguire ricostruzioni parziali.
macOS / Linux — setup_SFD700.sh
chmod +x setup_SFD700.sh ./setup_SFD700.sh
Questo installa
git, curl/wget e DOSBox (per la toolchain CUPL), e configura Quartus II 13.0sp1 per il CPLD. Su Linux, Quartus viene installato nativamente in ~/altera/13.0sp1 (~1,6 GB); su macOS — dove non esiste un Quartus nativo — la toolchain CPLD viene eseguita da un'immagine Docker (sfd700-quartus:13.0sp1). Il package del dispositivo MAX7000S viene recuperato automaticamente.
Windows 10 / 11 — setup_SFD700_windows_native.ps1 (Git Bash nativo, senza WSL). Da PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\setup_SFD700_windows_native.ps1
Questo usa winget per installare Git for Windows (che fornisce
bash) e DOSBox, quindi installa Quartus II 13.0sp1 nativamente in C:\altera\13.0sp1 insieme al package MAX7000S. Gli script di build vengono eseguiti sotto Git Bash. Per usare Docker per la toolchain CPLD invece di Quartus nativo, impostare $env:SFD700_CPLD_METHOD = "docker" prima di eseguire lo script.
Ogni richiesta ha un valore predefinito sicuro tra parentesi — la lettera maiuscola e il valore predefinito, quindi premendo Invio lo si accetta. Il setup chiede l'URL del repository (predefinito il pubblico
https://git.eaw.app/eaw/SFD700.git) e una directory di installazione, quindi offre di compilare la logica CUPL/GAL (./build_cupl.sh) e il bitstream CPLD/VHDL (./build_cpld.sh). La build CUPL scrive SFD700_1.JED e SFD700_2.JED in CUPL/ per un programmatore TL866 / XGecu; la build CPLD scrive CPLD/v1.2/build/output_files/sfd700.pof per la programmazione JTAG con un USB-Blaster.
Registro I/O
| Porta | R/W | Descrizione |
|---|---|---|
| 0xD8-0xDB | R/W | Registri FDC WD1773 (Status, Command, Track, Sector, Data). |
| 0xDC | W | Unita & motore: bit [2:0] selezionano l’unita (4=A, 5=B, 6=C, 7=D, 0=nessuna); bit [7] controlla il motore. |
| 0xDD | W | Lato testina: D0=0 -> lato 1, D0=1 -> lato 0. |
| 0xDE | W | Velocita dati: D0=0 -> doppia densita, D0=1 -> singola densita. |
| 0xDF | W/R | Interrupt: scrittura -> abilita INT WD1773 verso l’host; lettura -> disabilita INT WD1773. |
| 0x60 | R/W | Registro pagina EXXX: D7 seleziona memoria (0=Flash ROM, 1=RAM); bit [6:0] selezionano una pagina da 4 KB mappata su E300:EFFF. |
| 0x61 | R/W | Registro pagina FXXX: D7 seleziona memoria (0=Flash ROM, 1=RAM); bit [6:0] selezionano una pagina da 4 KB mappata su F000:FFFF. |
| 0x63 | R | Registro modalita: legge il valore del jumper MODE (0-6). |
PCB
PCB v1.1

PCB v1.2

Manuali
| Manuale | Descrizione |
|---|---|
| Manuale Utente | Panoramica della scheda, configurazione jumper MODE, installazione unita, utilizzo ROM Filing System e risoluzione problemi |
| Guida Tecnica | Architettura hardware, design CPLD, mappa registri I/O, mappa memoria e procedure di build/programmazione |
| Guida dello Sviluppatore | Revisione completa del codice sorgente VHDL con VHDL spiegato per non-programmatori VHDL |
Documentazione
File
Consultare Gitea per tutti i file del progetto.
Crediti
Il design originale SFD-700 e copyright 1985 Kersten & Partners GmbH di Aachen, Germania, un'azienda che ha cessato l'attivita.
L'SFD-700 mkII e un nuovo design ispirato al concetto originale. Il layout PCB, lo schema e la logica programmabile (CUPL per v1.0/v1.1; VHDL per v1.2) sono stati scritti da zero.
L'SFD-700 mkII e un nuovo design ispirato al concetto originale. Il layout PCB, lo schema e la logica programmabile (CUPL per v1.0/v1.1; VHDL per v1.2) sono stati scritti da zero.
Licenze
Questo design, hardware e software, e sotto licenza GNU Public Licence v3.