NEC µPD765 Floppy-Disk-Controller (FDC)
Der NEC µPD765 ist ein ikonischer Floppy-Disk-Controller (FDC) aus den 80er Jahren, der für die Computerarchitektur jener Zeit von grundlegender Bedeutung war. Im Amstrad-Ökosystem wurde er nativ in Modelle wie den CPC 664, CPC 6128 und die PCW-Serie integriert sowie im externen DDI-1-Interface für den CPC 464 verwendet.
Wichtigste technische Spezifikationen
- Kapazität: Kann bis zu 4 Diskettenlaufwerke gleichzeitig steuern.
- Dichte: Unterstützt Formate mit einfacher Dichte (FM, IBM 3740) und doppelter Dichte (MFM, IBM System 34), einschließlich beidseitiger Aufzeichnung.
- Betriebsarten: Ermöglicht Datentransfers über DMA (Direct Memory Access) oder über Interrupts (Non-DMA).
- Befehle: Führt einen Satz von 15 Befehlen zum Lesen, Schreiben, Formatieren und Suchen (Seek) aus.
Einsatz in Amstrad-Systemen (CPC/PCW)
In Amstrad-Systemen kommuniziert der Chip mit dem Prozessor über spezifische E/A-Ports:
- Port &FB7E: Hauptstatusregister (nur Lesen).
- Port &FB7F: Datenregister (Lesen/Schreiben) zum Senden von Befehlen und Empfangen von Ergebnissen.
- Port &FA7E: Steuerung des Diskettenmotors (Ein/Aus) über ein externes Flip-Flop.
Das Bit b10 des Adressports wird zurückgesetzt, da der FDC als Erweiterung betrachtet wird, selbst wenn es sich um einen internen Chip handelt. Das Bit b7 wird zurückgesetzt, um den FDC auszuwählen. Die Bits b8 und b0 werden verwendet, um den spezifischen Betriebsmodus auszuwählen. Alle anderen Bits müssen auf 1 gesetzt werden, um Konflikte zu vermeiden.
Vermächtnis und Dokumentation
Dieser Chip war nicht nur das Herzstück der Datenspeicherung bei Amstrad, sondern auch der Standard in den ersten IBM PCs, dem ZX Spectrum +3 und der Sega SC-3000.
Zugriff auf den µPD765
Das Hauptstatusregister signalisiert, wenn der FDC bereit ist, das nächste Byte über das Datenregister zu senden/empfangen.
Das Datenregister wird verwendet, um Befehle und Parameter zu schreiben, Datenbytes zu lesen/schreiben und Ergebnisbytes zu empfangen. Diese drei Operationen sind:
- Befehlsphase: Ein Befehl besteht aus einem Befehlsbyte (das gegebenenfalls die Bits MT, MF und SK enthält) und bis zu 8 Parameterbytes.
- Ausführungsphase: In dieser Phase werden die eigentlichen Daten (falls vorhanden) übertragen. In der Regel sind dies die Datenbytes der Lese-/Schreibsektoren, außer beim Spurformatierungsbefehl, bei dem 4 Bytes pro Sektor übertragen werden. Während der Datentransfers zwischen dem FDC und dem Prozessor muss der FDC alle 26 µs bedient werden (im MFM-Modus mit CPC-Timing), andernfalls bricht der FDC den Befehl ab.
- Ergebnisphase: Gibt bis zu 7 Ergebnisbytes (je nach Befehl) zurück, die Statusinformationen enthalten. Während der Ergebnisphase müssen alle Ergebnisbytes gelesen werden. Der FDC akzeptiert keinen neuen Befehl, bis alle Ergebnisbytes gelesen wurden.
Hinweis: Die Befehle “Rekalibrieren” und “Spur suchen” geben nicht direkt Ergebnisbytes zurück. Stattdessen muss das Programm warten, bis das Hauptstatusregister anzeigt, dass der Befehl abgeschlossen ist. Anschließend muss ein Befehl “Interrupt-Status abfragen” gesendet werden, um den Such-/Rekalibrierungsvorgang abzuschließen.
Dokumentation
Unter den folgenden Links finden Sie die gesamte Dokumentation (PDF) zum Chip.

