Controlador de disquette (FDC) µPD765 de NEC
NEC µPD765 es un controlador de disquete (FDC) icónico de los años 80, fundamental en la arquitectura de los ordenadores de la época. En el ecosistema de Amstrad, se integró de forma nativa en modelos como el CPC 664, CPC 6128 y la serie PCW, además de utilizarse en la interfaz externa DDI-1 para el CPC 464.
Especificaciones Técnicas Principales
- Capacidad: Puede controlar hasta 4 unidades de disquete simultáneamente.
- Densidad: Soporta formatos de densidad simple (FM, IBM 3740) y densidad doble (MFM, IBM System 34), incluyendo grabación por ambas caras.
- Modos de operación: Permite transferencias de datos mediante DMA (Direct Memory Access) o mediante interrupciones (Non-DMA).
- Comandos: Ejecuta un conjunto de 15 comandos para lectura, escritura, formateo y búsqueda (seek).
Uso en Sistemas Amstrad (CPC/PCW)
En los sistemas Amstrad, el chip se comunica con el procesador a través de puertos de E/S específicos:
- Port &FB7E: Registro de estado principal (solo lectura).
- Port &FB7F: Registro de datos (lectura/escritura) para enviar comandos y recibir resultados.
- Port &FA7E: Control del motor del disquete (On/Off) mediante un flip-flop externo.
El bit b10 del puerto de dirección se restablece, ya que el FDC se considera una expansión, incluso si se trata de un chip interno. El bit b7 se restablece para seleccionar el FDC. Los bits b8 y b0 se utilizan para seleccionar el modo de operación específico. Todos los demás bits deben establecerse en 1 para evitar conflictos.
Legado y Documentación
Este chip no solo fue el corazón del almacenamiento en Amstrad, sino que también fue el estándar en los primeros IBM PC, el ZX Spectrum +3 y la Sega SC-3000.
Accediendo al µPD765
El registro de estado principal señala cuando el FDC está listo para enviar/recibir el siguiente byte a través del registro de datos.
El Registro de Datos se utiliza para escribir comandos y parámetros, leer/escribir bytes de datos y recibir bytes de resultado. Estas tres operaciones son:
- Fase de comando: un comando consta de un byte de comando (que eventualmente incluye los bits MT, MF y SK) y hasta 8 bytes de parámetros.
- Fase de ejecución: Durante esta fase, se transfieren los datos reales (si los hay). Normalmente, estos son los bytes de datos de los sectores de lectura/escritura, excepto para el comando de formato de pista, en cuyo caso se transfieren 4 bytes por cada sector. Durante las transferencias de datos entre el FDC y el procesador, el FDC debe recibir servicio cada 26 µs (en modo MFM con temporización CPC) o el FDC finalizará el comando FDC.
- Fase de resultado: Devuelve hasta 7 bytes de resultado (según el comando) que contienen información de estado. Durante la fase de resultado, se deben leer todos los bytes de resultado. El FDC no aceptará un nuevo comando hasta que se hayan leído todos los bytes de resultado.
Nota: Los comandos Recalibrar y Buscar Pista no devuelven bytes de resultado directamente. En su lugar, el programa debe esperar hasta que el Registro de Estado Principal indique que el comando se ha completado. Y luego debe enviar un comando Detectar Estado de Interrupción para finalizar el comando Buscar/Recalibrar.
Documentación
En los siguientes enlaces podrá ver toda la documentación en (pdf) referente al chip.

