SFD-700 Controlador de Disquete Multi-Host
Actualizacion febrero 2024 - El hardware v1.2 esta completamente funcional y ha sido probado en mi MZ-80A, MZ-700 y MZ-1500 utilizando el adaptador EXT700 y en la unidad de expansion MZ-2000. Se han reportado problemas usando el MZ-1U06 que necesitan investigacion, parece un problema de temporizado del CPLD. La logica CPLD (VHDL) esta completa y toda la logica de paginacion ROM/RAM y modo host funciona correctamente. El software ROM Filing System portado al SFD-700 es funcional para operaciones FDC basicas (arranque de disquete via comando 'F') pero aun no incluye la suite completa de herramientas de monitor de disquete; esto esta en desarrollo continuo. La carga de trabajo de clientes ha ralentizado el progreso -- consulte el repositorio Gitea para el estado actual. La placa no ha sido probada en otras maquinas de la serie MZ; esperamos hacerlo en su debido momento.
Uno de los accesorios mas necesarios para la serie Sharp MZ es el venerable controlador de disquete. Estos son relativamente escasos ya que pocas personas los usaban, principalmente debido al costo durante la era Sharp MZ.
Sharp diseno y lanzo varias tarjetas de expansion de disquete. Algunas integradas en la maquina base, como la serie MZ-2500/2800/3500/5600/6500, otras requerian una tarjeta enchufable. Inicialmente comenzaron con un controlador personalizado en la serie MZ-80K, luego con la llegada de la maquina de negocios MZ-80B, Sharp estandarizo la arquitectura Western Digital Floppy Disk Controller y diseno y produjo su propio IC controlador, el MB8866.
Desafortunadamente, para los modelos menores como el MZ-80A/MZ-700, los disquetes no fueron considerados en la etapa de diseno y por lo tanto requerian el desarrollo de nuevas tarjetas de expansion de controlador con ROM integrada para proporcionar el firmware de arranque de disquete necesario.
Este documento describe el nuevo esquema, la logica programable y cualquier problema descubierto en cada maquina.
Compatibilidad de Host
El SFD-700 v1.2 soporta todas las maquinas de la serie Sharp MZ desde el MZ-80A en adelante (excluyendo maquinas con controladores de disquete integrados). El host de destino se selecciona mediante un jumper MODE de 3 bits en el PCB que se almacena durante el reset.
| MODE | Maquina 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 |
Esquema

Logica Programable
v1.0 / v1.1 -- Diseno basado en GAL
Las revisiones tempranas usaban dos dispositivos GAL. La version 1.2 los reemplazo con un solo Altera MAX7000S EPM7128SLC84-15 CPLD (PLCC-84, 128 macroceldas), implementado en VHDL y compilado con Quartus II 13.0.1 SP1.
Instalacion y build automatizados
Tanto la logica heredada CUPL/GAL (v1.0 / v1.1) como el bitstream actual CPLD/VHDL (v1.2) pueden compilarse desde un unico script de instalacion autonomo para su plataforma. El script instala las cadenas de herramientas requeridas -- DOSBox para la logica CUPL y Altera Quartus II 13.0sp1 para el CPLD -- clona el repositorio y puede ejecutar uno o ambos builds, todo de forma interactiva con valores por defecto sensatos que puede aceptar pulsando Enter. Esta es la forma recomendada de compilar; las secciones detalladas de GAL y CPLD que siguen se conservan para usuarios avanzados que quieran compilar a mano o realizar recompilaciones parciales.
macOS / Linux – setup_SFD700.sh
chmod +x setup_SFD700.sh ./setup_SFD700.sh
Esto instala
git, curl/wget y DOSBox (para la cadena de herramientas CUPL), y configura Quartus II 13.0sp1 para el CPLD. En Linux, Quartus se instala de forma nativa en ~/altera/13.0sp1 (~1,6 GB); en macOS -- donde no existe Quartus nativo -- la cadena de herramientas CPLD se ejecuta desde una imagen Docker (sfd700-quartus:13.0sp1) en su lugar. El paquete de dispositivos MAX7000S se obtiene automaticamente.
Windows 10 / 11 – setup_SFD700_windows_native.ps1 (Git Bash nativo, sin WSL). Desde PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\setup_SFD700_windows_native.ps1
Esto usa winget para instalar Git for Windows (que proporciona
bash) y DOSBox, luego instala Quartus II 13.0sp1 de forma nativa en C:\altera\13.0sp1 junto con el paquete MAX7000S. Los scripts de build se ejecutan bajo Git Bash. Para usar Docker para la cadena de herramientas CPLD en lugar de Quartus nativo, defina $env:SFD700_CPLD_METHOD = "docker" antes de ejecutar el script.
Cada solicitud tiene un valor por defecto seguro entre corchetes; la letra en mayuscula es el valor por defecto, asi que pulsar Enter lo acepta. El instalador pide la URL del repositorio (por defecto el publico
https://git.eaw.app/eaw/SFD700.git) y un directorio de instalacion, luego ofrece compilar la logica CUPL/GAL (./build_cupl.sh) y el bitstream CPLD/VHDL (./build_cpld.sh). El build CUPL escribe SFD700_1.JED y SFD700_2.JED en CUPL/ para un programador TL866 / XGecu; el build CPLD escribe CPLD/v1.2/build/output_files/sfd700.pof para programacion JTAG con un USB-Blaster.
Registro de I/O
| Puerto | R/W | Descripcion |
|---|---|---|
| 0xD8-0xDB | R/W | Registros FDC WD1773 (Status, Command, Track, Sector, Data). |
| 0xDC | W | Unidad & motor: bits [2:0] seleccionan unidad (4=A, 5=B, 6=C, 7=D, 0=ninguna); bit [7] controla motor. |
| 0xDD | W | Lado de cabezal: D0=0 -> lado 1, D0=1 -> lado 0. |
| 0xDE | W | Tasa de datos: D0=0 -> doble densidad, D0=1 -> densidad simple. |
| 0xDF | W/R | Interrupcion: escritura -> habilitar INT WD1773 al host; lectura -> deshabilitar INT WD1773. |
| 0x60 | R/W | Registro de pagina EXXX: D7 selecciona almacenamiento (0=Flash ROM, 1=RAM); bits [6:0] seleccionan una pagina de 4 KB mapeada en E300:EFFF. |
| 0x61 | R/W | Registro de pagina FXXX: D7 selecciona almacenamiento (0=Flash ROM, 1=RAM); bits [6:0] seleccionan una pagina de 4 KB mapeada en F000:FFFF. |
| 0x63 | R | Registro de modo: lee el valor del jumper MODE (0-6). |
PCB
PCB v1.1

PCB v1.2

Manuales
| Manual | Descripcion |
|---|---|
| Manual de Usuario | Descripcion general de la placa, configuracion del jumper MODE, instalacion de unidades, uso del ROM Filing System y solucion de problemas |
| Guia Tecnica | Arquitectura hardware, diseno CPLD, mapa de registros I/O, mapa de memoria y procedimientos de compilacion/programacion |
| Guia del Desarrollador | Revision completa del codigo fuente VHDL con VHDL explicado para no-programadores VHDL |
Documentacion
Archivos
Consulte Gitea para todos los archivos del proyecto.
Creditos
El diseno original SFD-700 tiene derechos de autor 1985 Kersten & Partners GmbH de Aquisgran, Alemania, una empresa que ha dejado de operar.
El SFD-700 mkII es un nuevo diseno inspirado en el concepto original. El trazado PCB, el esquema y la logica programable (CUPL para v1.0/v1.1; VHDL para v1.2) fueron escritos desde cero.
El SFD-700 mkII es un nuevo diseno inspirado en el concepto original. El trazado PCB, el esquema y la logica programable (CUPL para v1.0/v1.1; VHDL para v1.2) fueron escritos desde cero.
Licencias
Este diseno, hardware y software, esta bajo licencia GNU Public Licence v3.