Hardware-Aufbau der 1541
Aus C64-Wiki
Zur Navigation springenZur Suche springen
Dieser Artikel beschreibt den Hardware-Aufbau des Diskettenlaufwerks Commodore 1541. Grundlagenwissen zum Thema Computerhardware und Schaltungstechnik wird vorausgesetzt. Eine allgemeinverständliche Erklärung zu den Fähigkeiten des Laufwerks findet sich im Überblicksartikel zur 1541.
Hinweise[Bearbeiten | Quelltext bearbeiten]
Die Chipbezeichnungen und weiteren Erklärungen beziehen sich auf die 1541-I (short board). Der Aufbau neuerer Varianten des Laufwerks weicht davon etwas ab.
Detaillierter Schaltplan[Bearbeiten | Quelltext bearbeiten]
- Schaltplan der 1541-I (short board) auf zimmers.net - hierauf beziehen sich die Erläuterungen dieser Seite.
- UC1 Gate Array-Schaltbild (325572)
- Schaltplan der 1541-II auf zimmers.net. Hier wurde insbesondere die R/W-Elektronik zusammengefasst.
- Technisches Handbuch
Zusammenspiel[Bearbeiten | Quelltext bearbeiten]
- Die meisten Chips sind direkt an den 16bittigen Adress- und 8bittigen Datenbus der CPU MOS 6502 (UC4) angekoppelt.
- UB2 ist ein statisches RAM. Ein RAM-Refresh wie beim C64 ist damit nicht nötig.
- UB3 und UB4 beinhalten das CBM DOS-ROM.
- UC5, UC6 und UC7 steuern die Enable-Leitungen der einzelnen Chips an, übernehmen bei der 1541 also gewissermaßen die Aufgabe der PLA beim C64.
- VIA 1 (UC3, $1800) übernimmt die Ansteuerung des IEC-Bus.
- VIA 2 (UC2, $1C00) stellt das Interface zum Daten-Schieberegister in UC1 dar und übernimmt ebenfalls im Zusammenspiel mit UC1 die Ansteuerung des Stepper-Motors.
- P5 ist die Stromversorgung und Steuerung des Spindle-Motors.
- P7 ist die Richtungsansteuerung des Stepper-Motors.
- P6 ist die Zugriffs-LED und Schreibschutz-Lichtschranke.
- P8 ist die Verbindung zum Schreib-/Lesekopf.
- P2 und P3 gehen zu den IEC-Buchsen.
- P4 geht zur Power-LED.
UC1[Bearbeiten | Quelltext bearbeiten]
UC1 übernimmt mehrere Aufgaben:
- Es enthält ein Schieberegister, das die vom Schreib-/Lesekopf kommenden GCR-Bits zwischenspeichert.
- SYNC-Signale (zehn oder mehr 1-Bits) werden detektiert und an Pin PB7 der VIA 2 weitergeleitet.
- Auf ein SYNC-Signal folgt immer eine Header- oder Data-ID, deren MSB (GCR-kodiert) 0 ist, die gleichzeitig entsprechend die Startmarkierung für Daten nach Sync darstellt.
- Der BYTE_READY-Pin von UC1 ist mit Pin SO des 6502 und CA1 der VIA 2 verbunden.
- Entsprechend wird das Overflow-Flag im Statusregister gesetzt, sobald ein GCR-Byte im Schieberegister von UC1 vollständig ist (siehe ROM $F4D4).
- Außerdem wird das komplette GCR-Byte in Port A der VIA 2 geladen. Bei der maximalen Bitrate hat die CPU dann etwa 26 Taktzyklen Zeit, das Byte von dort auszulesen.
- BYTE_READY wird von einem Zähler gesteuert, der immer dann weiterzählt, wenn das SYNC-Flag nicht aktiv ist, und der bei aktivem SYNC auf Null gesetzt wird.
- Es enthält einen Teil der Steppermotor-Ansteuerungslogik.
Takt[Bearbeiten | Quelltext bearbeiten]
- UD5 erzeugt den 1MHz-CPU-Takt aus einem 16MHz-Signal.
- UE6 ist ein Binärzähler, der mit 16MHz-Takt aufwärts zählt, dessen Zählerstand von der VIA UC2 im Zusammenspiel mit UC1 gesetzt werden kann und dessen Ausgang UC1 taktet.
- Dadurch können unterschiedliche Bitraten programmiert werden, mit denen das Schieberegister von UC1 gefüllt wird.
ATN Acknowledge[Bearbeiten | Quelltext bearbeiten]
- ATNA "ATN Acknowledge" (implementiert durch VIA2 PB4 bzw. UD3, ein 74LS86/XOR) erlaubt es der Laufwerks-Hardware, bei ATN-Anfragen des Rechners ihre Präsenz durch Aktivieren der DATA-Leitung verzögerungsfrei zu bestätigen, selbst falls das Laufwerk gerade noch mit anderen Dingen (Leseoperationen etc.) beschäftigt sein sollte.
- Bei PB4=$1800 Bit 4 gelöscht wird DATA durch UD3 auf Low/Aktiv gezogen, falls ATN Low/Aktiv ist.
- Bei gesetztem Bit 4 wird DATA auf Low/Aktiv gezogen, falls ATN High/Inaktiv ist.
- Entsprechend wird z.B. in der ATNSRV-Routine bei $E873[1] ATNA gesetzt, um beim dann aktivem ATN die DATA-Leitung "freizumachen", während das ROM ansonsten ATNA gelöscht belässt.
Weblinks[Bearbeiten | Quelltext bearbeiten]
- rotation.c aus VICE mit etlichen Details zur Floppy-Interna

- Drive.cpp aus dem Pi1541-Projekt mit etlichen Details zur Floppy-Interna

- mist64/dos1541 bietet disassemblierte und kommentierte Versionen diverser 1541-ROMs

Quellen[Bearbeiten | Quelltext bearbeiten]
- ↑ In AAY1541 ist der Kommentar "switch data lines to input" bei Setzen des ATNA-Bits leider nicht hilfreich; "set atn ack to get hardware control of data line" in mist64/dos1541 trifft es besser.