Das Schneider CPC Systembuch

Das Innenleben der CPC-Rechner

Der FDC 765

Programmierung des FDC 765

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
765 ist ein ausgesprochen intelligenter Floppy-Controller. Das schlägt sich in entsprechend maechtigen Befehlen nieder, mit denen er programmiert werden kann. So ist er beispielsweise in der Lage, nur mit den Adressierungsarten der Z80: Absolutabsolut notwendigen Informationen versehen, eine ganze Spur auf der Diskette zu formatieren. Sektoren zu lesen und zu beschreiben ist mit ihm fast ein Kinderspiel.

Trotz seiner Intelligenz hat er natürlich von der Organisation der Datenspeicherung auf der Diskette keine Ahnung. Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
765 hat mit dem Inhaltsverzeichnis, Die Speicherkonfiguration im Schneider CPC: BlockBlocks oder Datenspeicherung und Datenstrukturen: RecordsRecords nichts am Hut. Das wird alles durch die Treibersoftware im Amsdos-ROM erledigt. Der Floppy-Controller selbst übernimmt nur die Organisation bis zur Sektor-Ebene.

Obwohl er intern über eine Unzahl von Registern verfügt, sind nach außen hin nur zwei verschiedene ansprechbar. Das wird durch einen logischen Kniff erreicht: Ein Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
ist ständig ansprechbar, und liefert so jederzeit elementare Informationen über den Zustand Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
. Das ist das sogenannte Haupt-Statusregister. Über die andere Adresse rollt der gesamte Datentransfer. Die Bedeutung der einzelnen Datentypen: Bytes
Datenbreite: Bytes
Bytes
, die man hier hineinschreibt oder hier ausliest, ist ausschließlich durch ihre zeitliche Abfolge im gesamten Datenstrom festgelegt. Dadurch ist auch jederzeit entweder nur Lesen oder nur Beschreiben dieses 'Registers' zulässig.

Ein Befehl Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
gliedert sich dabei grundsätzlich in drei Phasen:

1. Kommandophase:

Sie wird vom ersten Datenbyte eingeläutet, das in seinen Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
verschluesselt einen der 15 möglichen Befehle enthält. Danach kommen noch bis zu 8 Parameter-Bytes, die alle geliefert werden müssen, damit die Reihenfolge stimmt.

2. Ausführungsphase:

Hierin werden beispielsweise beim Sektor-Schreiben oder -Lesen die Datenbytes zwischen Floppycontroller und Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
übermittelt. Bei einigen Befehlen fehlt dieser Abschnitt.

3. Ergebnisphase:

Bis auf drei Befehle haben alle eine 'Resultphase'. Hier muss die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
alle angebotenen Informationen vom Die ICs im Überblick: Der FDC 765FDC abholen, da dieser sonst gar nicht weiß, wann ein neuer Befehl anfängt. Erst nach dem letzten Datentypen: Bytes
Datenbreite: Bytes
Byte
der Resultphase kann ein neuer Befehl gestartet werden.

Das Haupt-Statusregister und das Datenregister werden beim I/O-Zugriff der die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
durch die Adressleitung Der Zeichensatz des Schneider CPC: &A0 = 160A0 Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
unterschieden, die direkt an Der Zeichensatz des Schneider CPC: &A0 = 160A0 der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
angeschlossen ist. Da die allgemeine Selektion Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
wie beim Motor-ON-Flip-Flop über die Adressbits A10 und A7 erfolgt, ergeben sich folgende Adressen für diese beiden Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
:

&X111110x1011111x0 -> Haupt-Statusregister
&X111110x1011111x1 -> Datenregister

Die 'Die verwendeten Abkürzungen bedeuten: x:x'-Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
in der Adresse sind wieder beliebig. Von den jeweils vier möglichen, gültigen Adresskombinationen werden von Die Abteilungen des Betriebssystems: AmsdosAmsdos folgende benutzt:

&Die Register des FDC: Das Haupt-Statusregister - INP(&FB7E)FB7E -> Haupt-Statusregister
&FB7F -> Datenregister

Hierbei werden von der Hardware außer den verpflichtenden Null-Pegeln an A10 und A7 auch ausnahmsweise einmal ein Eins-Pegel getestet: Erklärung der Anschlussbelegung: A8
Der Zeichensatz des Schneider CPC: &A8 = 168
A8
muss gesetzt sein und dient zur Unterscheidung von der Adresse des Motor-Flip-Flops.

Das Haupt-Statusregister - INP(&FB7E)

Dieses Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
kann ständig gelesen (was bei den Datenregistern nicht der Fall ist), dafür aber nicht beschrieben werden. Hier kann man jederzeit die wichtigsten Informationen über den Zustand Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
765 erhalten:

Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 - RQM - Request for Master
0 -> kein Zugriff auf Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
den FDC
möglich 1 -> Datenübertragung oder Befehl möglich (je nach Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bit 4,5 und
6)

Nur wenn dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
gesetzt ist, ist Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
bereit, ein Datenwort zu empfangen oder auszugeben. Da der Floppy-Controller im Schneider CPC mittels Polling betrieben wird, muss die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
bei einer Datenübertragung beispielsweise ständig dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
Erklärung der Anschlussbelegung: Testtesten, um zu erfahren, ob das nächste Datentypen: Bytes
Datenbreite: Bytes
Byte
für die Übertragung zur Einleitung: MassenspeicherFloppy benötigt wird.

Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 - DIO - Data Input/Output
0 -> Datenrichtung ist: Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
-> Die ICs im Überblick: Der FDC 765FDC 1 -> Datenrichtung ist: Die ICs im Überblick: Der FDC 765FDC -> Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU

Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 liefert dazu noch eine wichtige Zusatz-Information: Die Datenrichtung. Dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
signalisiert, ob Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
ein Datentypen: Bytes
Datenbreite: Bytes
Byte
für die CPU hat (Lesedaten von der Einleitung: MassenspeicherFloppy oder Status-Informationen) oder ob er noch eins benötigt (Schreibdaten oder Befehlsbytes).

Bit 5 - EXM - Execution Mode
0 -> Auswertungsphase
1 -> Programmierung des FDC 765: 2. Ausführungsphase:
&X0ms00010 - ganze Spur lesen (READ TRACK): Ausführungsphase:
&Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Ausführungsphase:
&Xtms00110 - Sektor(en) lesen (READ SECTOR): Ausführungsphase:
&X00000111 - Spur 0 suchen (RECALIBRATE): Ausführungsphase:
&Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Ausführungsphase:
&X0m001010 - Sektor-ID lesen (READ SECTOR ID): Ausführungsphase:
&Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Ausführungsphase:
&X0m001101 - eine Spur formatieren (FORMAT TRACK): Ausführungsphase:
&X00001111 - Spur suchen (SEEK): Ausführungsphase:
&Xtms10001 - Sektor(en) testen (SCAN EQUAL): Ausführungsphase:
&Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Ausführungsphase:
&Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Ausführungsphase:
Ausführungsphase

Im DMA-Betrieb wird dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
nicht benutzt und ist immer 0. Ansonsten kann die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
hieran unterscheiden, ob die vom Die ICs im Überblick: Der FDC 765FDC gelieferten Datentypen: Bytes
Datenbreite: Bytes
Bytes
Daten von einem Sektor sind, der gerade gelesen wird, oder ob sie bereits aus der Result-Phase stammen.

Bit 4 - FCB - Floppy Controller Busy
0 -> Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
ist frei. Es kann ein neuer Befehl gestartet werden 1 -> besetz. Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
arbeitet gerade einen Befehl ab.

Dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag wird gesetzt, sobald Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
die Bearbeitung eines Befehles aufgenommen hat, oder anders ausgedrückt: Sobald man das erste Datentypen: Bytes
Datenbreite: Bytes
Byte
eines neuen Befehles in's Datenregister geschrieben hat. Es wird erst mit dem Ende der Auswertungsphase wieder zurückgesetzt. Damit lässt sich beispielsweise in Multi-Tasking-Systemen der Diskettenzugriff zwischen den parallel laufenden Programmen steuern.

Bits 0-3 - FDB - Floppy Drive Busy
0 -> normal
1 -> SEEK oder RECALIBRATE läuft auf dem entsprechenden Drive

Diese Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
sind den 4 möglichen Laufwerken zugeordnet und werden gesetzt, sobald man das Kommando SEEK (Spur suchen) oder RECALIBRATE (Spur 0 suchen) startet. Bis zum Ende eines solchen Befehls sind nur noch diese Befehle auf anderen Laufwerken möglich.

Das Statusregister 0
Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bits 7 und
6 - Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt Code
00 -> Kommando erfolgreich beendet
01 -> Kommando abgebrochen wegen Der Linien-Algorithmus: Fehler 3Fehler
10 -> ungültiges Kommando
11 -> Kommando abgebrochen weil Drive 'not Erklärung zu den Bezeichnungen: READY
Erklärungen zu den Anschlussbezeichnungen: READY
ready
' wurde

Bei fast allen Sektor-Schreib- oder Lesebefehlen liefert Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
in der Programmierung des FDC 765: 3. Ergebnisphase:
&X0ms00010 - ganze Spur lesen (READ TRACK): Ergebnisphase:
&X00000100 - Statusregister 3 abfragen (SENSE DRIVE STATE): Ergebnisphase:
&Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Ergebnisphase:
&Xtms00110 - Sektor(en) lesen (READ SECTOR): Ergebnisphase:
&X00001000 - Statusregister 0 abfragen (SENSE INTERRUPT STATE): Ergebnisphase:
&Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Ergebnisphase:
&X0m001010 - Sektor-ID lesen (READ SECTOR ID): Ergebnisphase
&Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Ergebnisphase:
&X0m001101 - eine Spur formatieren (FORMAT TRACK): Ergebnisphase:
&Xtms10001 - Sektor(en) testen (SCAN EQUAL): Ergebnisphase:
&Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Ergebnisphase:
&Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Ergebnisphase:
Ergebnisphase
in diesem Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
die Meldung 'Kommando abgebrochen wegen Der Linien-Algorithmus: Fehler 3Fehler'. Ursache ist die schon beschriebene Beschaltung des TC-Anschlusses (Die Besonderheiten des FDC 765 im Schneider CPC: Terminal CountTerminal Count). In diesem Fall muss man untersuchen, ob es sich bei dem Der Linien-Algorithmus: Fehler 3Fehler um 'End of Track' (Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 von Statusregister 1) handelt. Dann liegt im Schneider CPC kein Der Linien-Algorithmus: Fehler 3Fehler vor!

Nach einem SEEK oder RECALIBRATE erzeugt Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
einen Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt, worauf die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
mit dem Befehl &08 'Sense Statusregister 0' dieses Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
hier abfragen muss, um das Kommando zu beenden. Da der INT-Ausgang Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
aber gar nicht angeschlossen ist, muss die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
ständig Programmierung des FDC 765: Das Statusregister 0
Programmierung des FDC 765: Das Statusregister 1
Programmierung des FDC 765: Das Statusregister 2
Programmierung des FDC 765: Das Statusregister 3
Die Register des FDC: Das Statusregister 0
Die Register des FDC: Das Statusregister 1
Die Register des FDC: Das Statusregister 2
Die Register des FDC: Das Statusregister 3
das Statusregister
0 abfragen, bis Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
meldet, dass das Kommando beendet ist. Ist es das noch nicht, meldet er immer den Der Linien-Algorithmus: Fehler 3Fehler '10': ungültiges Kommando.

Bit 5 = 1 -> Seek End auf einem Drive

Nach dem Befehl SEEK oder RECALIBRATE wird dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
gesetzt, wenn dieser Befehl abgeschlossen wurde.

Bit 4 = 1 -> Fehler in der Floppy

Dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag wird gesetzt, wenn Anhang: Die Floppydie Floppy das Fehler-Flip-Flop setzt oder, wenn nach einem RECALIBRATE nach 77 Schritt-Impulsen immer noch kein Track0-Signal gemeldet wird. Das kann bei 80-Spur-Laufwerken auch ganz normal passieren, wenn der Schreib-Lese-Kopf auf den innersten Spuren steht. Beide Gründe scheiden aber bei den 3-Zoll-Floppies aus. Diese haben ja nur 40 Spuren, und durch die Beschaltung des Anschlusses FLT/Track0 Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
(s.o.) kann auch der Grund nicht beim Fehler-Flip-Flop liegen. Ist dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
im Amsdos-Controller gesetzt, bewegt sich der Schrittmotor in der Einleitung: MassenspeicherFloppy nicht! Das dürfte eigentlich nur Garbage Collection: ... beim CPC 464beim CPC 664 oder 6128 möglich sein, wenn man die 12Volt-Versorgung herauszieht.

Bit 3 = 1 -> Laufwerk ist nicht bereit

Startet man einen Befehl auf einem Laufwerk, in dem beispielsweise keine Diskette eingelegt ist, so meldet es 'not Erklärung zu den Bezeichnungen: READY
Erklärungen zu den Anschlussbezeichnungen: READY
ready
' am entsprechenden Eingang des Controllers. Das geschieht normalerweise ebenfalls, wenn man bei den einseitigen Laufwerken versucht, auf die zweite Seite zuzugreifen. Nicht jedoch bei den Schneider-Floppies.

Bit 2 - Head
0 -> Seite 1 der Diskette
1 -> Seite 2 (nur Doppelkopflaufwerke)

Momentan angewählter Schreib-Lese-Kopf. Die Schneider-Floppies sind aber alle einseitig. Dadurch ist hier nur ein Zugriff auf Kopf 1 (Bit2 = 0) möglich.

Bit 1 und 0 - Unit Select
x0 -> Drive Operationen: BD5B / 349A / 349A:  FLO SUBA
x1 -> Drive LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B

Momentan angewähltes Laufwerk. Diese Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
entsprechen den US-Ausgängen Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
. Im Schneider CPC wird nur Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
0 benutzt.

Das Statusregister 1

Die Statusregister 1 und 2 spezifiziert die Fehlermeldungen aus den Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bits 6 und
7 des Statusregister 0.

Bit 7 = 1 -> End of track error

Dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag zeigt an, dass der Floppy-Controller bei einem Multi-Sektor-Read oder -Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: WR - Write
Write
auf einen Sektor zugreifen will, der den programmierten 'letzten Sektor des Tracks' (siehe Befehlsbeschreibungen) überschreitet. Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
führt automatisch solche Vielfach-Lese- und -Schreibzyklen durch, wenn er nicht durch einen Impuls am TC-Anschluss gestoppt wird. Durch die Beschaltung dieses Anschlusses im Schneider CPC wird dieser Der Linien-Algorithmus: Fehler 3Fehler nach jedem Lese- oder Schreibzugriff gemeldet!

Bit 6 - unbenutzt (immer 0)
Bit 5 = 1 -> CRC-Fehler im Daten- oder ID-Feld

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
765 erzeugt beim Schreiben eines Sektors mehrere Prüfsummen nach dem CRC-Verfahren, die mit auf der Diskette aufgezeichnet werden. Stimmt beim Lesen diese Prüfsumme nicht, wird dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag gesetzt.

Bit 4 = 1 -> Puffer-Überlauf

Beim Datentransfer vom oder zum Sektor, der gerade geschrieben oder gelesen wird, muss der Prozessor die Datentypen: Bytes
Datenbreite: Bytes
Bytes
in extrem kurzen Zeitabständen übertragen. Kommt er einmal nicht nach, kommt der Datenfluss zwischen Controller und Einleitung: MassenspeicherFloppy in's Stocken. Da der Floppy-Controller die Diskette aber nicht blitzartig anhalten kann, gehen entweder Daten verloren (beim Lesen) oder können nicht geschrieben werden. In diesem Fall wird dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag gesetzt. Das sollte aber höchstens während der Entwicklungsphase eines neuen Rechners vorkommen.

Bit 3 - nicht benutzt (immer 0)
Bit 2 = 1 -> Sektor nicht auffindbar

Dieser Der Linien-Algorithmus: Fehler 3Fehler tritt auf, wenn der angegebene Sektor bei einem Schreib- oder Lesebefehl auf der Spur nicht gefunden werden kann.

Bit 1 = 1 -> Diskette ist geschreibgeschützt.

Bei einem Schreibversuch auf die Diskette wird dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag gesetzt, wenn dort die Schreibschutz-Marke gesetzt ist. Dann werden selbstverständlich keine Daten aufgezeichnet (mit Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
dem FDC
765 ist es nicht möglich, auf eine schreibgeschützte Diskette zu schreiben, auch wenn die Laufwerks-Elektronik dies zuliesse. Dort gibt es aber meist auch solche Praeventiv-Massnahmen). Als Schreibversuche zählen die Sektor-Schreibbefehle und das Formatier-Kommando.

Bit 0 = 1 -> ID- oder Data Address Mark fehlt

Hiermit wird angezeigt, dass Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
irgendwie mit der Formatierung der Spuren nicht klar kommt. Findet er die Adressmarken nicht, wird dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
gesetzt. Möglicherweise ist die Spur gar nicht formatiert.

Das Statusregister 2
Das Statusregister 1: Bit 6 - unbenutzt (immer 0)Bit 7 - unbenutzt (immer 0)
Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 = 1 -> 'gelöschter' Sektor gefunden Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
5 = 1 -> Checksummenfehler im Datenteil eines Sektors Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
4 = 1 -> die logische Spurnummer aus der Sektor-ID stimmt nicht Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
3 = 1 -> Vergleich von Sektor- und Prozessor-Daten lieferte Gleichheit Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
2 = 1 -> Testbedingung im Scan-Kommando nicht erfüllt Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
1 = 1 -> Track enthält fehlerhafte Stellen. Nicht beschreiben! Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
0 = 1 -> Die Markierung für den Datenbereich war nicht auffindbar
Das Statusregister 3

Dieses Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
spiegelt den aktuellen Zustand der wichtigsten Signale vom angewählten Laufwerk wieder. Dieses Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
kann nur mit einem speziell dafür eingerichteten Befehl (&04) gelesen werden.

Bit 7 = 1 -> Fehler-Flip-Flop gesetzt

Wegen der Beschaltung dieses Eingangs Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
wird dieses Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
im Schneider CPC nie gesetzt sein.

Bit 6 = 1 -> eingelegte Diskette ist schreibgeschützt
Bit 5 = 1 -> Laufwerk meldet 'ready'

Normalerweise müssten die einseitigen Schneider-Laufwerke sich weigern, 'Erklärung zu den Bezeichnungen: READY
Erklärungen zu den Anschlussbezeichnungen: READY
ready
' zu melden, wenn man auf Seite 2 zugreifen will. Das tun sie aber nicht. Sehr wahrscheinlich ist das Signal 'side select' dort gar nicht angeschlossen.

Bit 4 = 1 -> Schreib-Lesekopf steht auf Spur Null (Track 0)
Bit 3 = 1 -> Doppelkopf-Laufwerk

Dieses Signal wird über den selben Pin des FDC-ICs eingelesen wie das Schreibschutz-Signal. Es gehört zu der Gruppe von vier Pins, deren Bedeutung vom Ausgang RW/SEEK umgeschaltet werden kann. Die Schneider Floppies ignorieren aber ganz offensichtlich den Umschaltbefehl beim Doppelausgang FLT/TRK0 und bei WRPRT/2SIDE. Für die Bedeutung 'Die Besonderheiten des FDC 765 im Schneider CPC: FAULTFault' wurde durch externe Beschaltung vorgesorgt, dass eine 'Der Linien-Algorithmus: Fehler 3Fehler'-Meldung nicht bis zum Die ICs im Überblick: Der FDC 765FDC 765 gelangt, weil dieser sonst ständig seine Arbeit abbrechen würde. Die Die Fließkomma-Routinen: FunktionenFunktion 2SIDE liefert jedoch immer den Zustand von WRTPRT (schreibgeschützt). Dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag ist daher immer wie Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 gesetzt und kann nicht benutzt werden, um Doppelkopf-Laufwerke zu erkennen.

Die folgenden Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
spiegeln noch einmal die im Befehl angegebenen Werte für Kopfseite und Unit Select 0 und 1 wieder:

Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
2 = aktuell angewählte Das Identifikationsfeld in jedem Sektor: 2. DiskettenseiteDiskettenseite (Amsdos: Headerhead address) Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
1 = aktueller Zustand von Die Besonderheiten des FDC 765 im Schneider CPC: US1US1 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
0 = aktueller Zustand von US0

Valid HTML   Valid CSS