Das Schneider CPC Systembuch

Das Innenleben der CPC-Rechner

Der FDC 765

Die Befehle des FDC 765

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
765 kennt insgesamt 15 verschiedene Befehle, die zum Teil äußerst komplexe Die Fließkomma-Routinen: FunktionenFunktionen erfüllen. Diese sind im Folgenden nach ihrem Befehlscode sortiert aufgeführt. Allgemein muss man bei allen Befehlen drei Phasen unterscheiden:

  1. &X0ms00010 - ganze Spur lesen (READ TRACK): Befehlsphase:
    &X00000011 - Laufwerksdaten festlegen (SPECIFY): Befehlsphase:
    &X00000100 - Statusregister 3 abfragen (SENSE DRIVE STATE): Befehlsphase:
    &Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Befehlsphase:
    &Xtms00110 - Sektor(en) lesen (READ SECTOR): Befehlsphase:
    &X00000111 - Spur 0 suchen (RECALIBRATE): Befehlsphase:
    &X00001000 - Statusregister 0 abfragen (SENSE INTERRUPT STATE): Befehlsphase:
    &Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Befehlsphase:
    &X0m001010 - Sektor-ID lesen (READ SECTOR ID): Befehlsphase:
    &Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Befehlsphase:
    &X0m001101 - eine Spur formatieren (FORMAT TRACK): Befehlsphase:
    &X00001111 - Spur suchen (SEEK): Befehlsphase:
    &Xtms10001 - Sektor(en) testen (SCAN EQUAL): Befehlsphase:
    &Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Befehlsphase:
    &Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Befehlsphase:
    Befehlsphase
  2. 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
  3. 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

Bei einigen Befehlen Der Linien-Algorithmus: Fehler 3fehlen die Phasen 2 und/oder 3. In der &X0ms00010 - ganze Spur lesen (READ TRACK): Befehlsphase:
&X00000011 - Laufwerksdaten festlegen (SPECIFY): Befehlsphase:
&X00000100 - Statusregister 3 abfragen (SENSE DRIVE STATE): Befehlsphase:
&Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Befehlsphase:
&Xtms00110 - Sektor(en) lesen (READ SECTOR): Befehlsphase:
&X00000111 - Spur 0 suchen (RECALIBRATE): Befehlsphase:
&X00001000 - Statusregister 0 abfragen (SENSE INTERRUPT STATE): Befehlsphase:
&Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Befehlsphase:
&X0m001010 - Sektor-ID lesen (READ SECTOR ID): Befehlsphase:
&Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Befehlsphase:
&X0m001101 - eine Spur formatieren (FORMAT TRACK): Befehlsphase:
&X00001111 - Spur suchen (SEEK): Befehlsphase:
&Xtms10001 - Sektor(en) testen (SCAN EQUAL): Befehlsphase:
&Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Befehlsphase:
&Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Befehlsphase:
Befehlsphase
können Daten nur geschrieben und 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
nur gelesen werden. Die Datenrichtung in der 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
hängt vom gewählten Befehl ab.

Die verwendeten Abkürzungen bedeuten
t - Multi Track Bit:

Zweiseitige Disketten werden oft so organisiert, dass eine Spur auf der Rückseite die logische Fortsetzung der Spur auf der Vorderseite ist. Der FDC 765: Die Befehle des FDC 765
Programmierung des FDC: Die Befehle des FDC:
Die Befehle des FDC
, die mehrere Sektoren bearbeiten können, unterstuetzen das, 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. Unter Die Abteilungen des Betriebssystems: AmsdosAmsdos natürlich nicht anwendbar und daher immer auf 0 gesetzt.

m - MFM-Modus:

Allen Befehlen, die irgendwie auf die Diskette zugreifen, muss mitgeteilt werden, ob sie im MF-Modus (einfache Dichte) oder MFM-Modus (doppelte Dichte) arbeiten sollen. Unter Amsdos 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
immer gesetzt, weil die Disketten alle ausschließlich mit doppelter Schreibdichte formatiert werden.

s - Skip deleted DAM:

Alle Sektoren können vom Die ICs im Überblick: Der FDC 765FDC als 'gelöscht' oder 'nicht gelöscht' geschrieben werden. Das hat jedoch nichts mit gelöschten Dateien zu tun, sondern bezieht sich nur auf eine Markierung in der Data Address Mark (DAM) jedes Sektors. 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
gesetzt, betrachtet Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
alle gelöschten Sektoren als nicht existent. Unter Die Abteilungen des Betriebssystems: AmsdosAmsdos ist das nicht einsetzbar und dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag deshalb immer 0.

drv - Head and Drive:

Fast alle Befehle verlangen eine Information darüber, welches Laufwerk und welche Seite angesprochen werden soll. Die drei 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
drv spiegeln dabei direkt die Ausgangssignale Amsdos: HeaderHEAD, Die Besonderheiten des FDC 765 im Schneider CPC: US1US1 und US0 wieder. Von Die Abteilungen des Betriebssystems: AmsdosAmsdos werden nur einseitige Laufwerke unterstuetzt, deshalb ist das erste 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
immer 0. Außerdem ist Die Besonderheiten des FDC 765 im Schneider CPC: US1US1 nicht angeschlossen, weshalb das mittlere 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
normalerweise auch nicht gesetzt wird. Nur US0, das dem rechten der drei 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
entspricht, wird benutzt, um zwischen Drive Operationen: BD5B / 349A / 349A: FLO SUBA und 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
zu unterscheiden:

drv = &X000 -> Drive Operationen: BD5B / 349A / 349A:  FLO SUBA
drv = &X001 -> 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
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
, deren Wert nicht ausgewertet wird.

OUT Standard-Datenblock:

Die meisten Befehle Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
765 erfordern u.Operationen: BD5B / 349A / 349A: FLO SUBA. sieben Datentypen: Bytes
Datenbreite: Bytes
Bytes
, die immer die selbe Bedeutung haben:

OUT &FB7F,Spurnummer         ; Sektor-ID-Information
OUT &FB7F,Kopfnummer         ; dito
OUT &FB7F,Sektornummere      ; dito
OUT &FB7F,Sektorgröße        ; dito
OUT &FB7F,logische letzte Das Identifikationsfeld in jedem Sektor: 3. SektornummerSektornummer der Spur
OUT &FB7F,Lücke zwischen Sektor-ID und Daten
OUT &FB7F,Sektorlänge wenn Sektorgröße = 0
INP Standard-Datenblock:

Ebenso 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
. Hier gibt Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
fast immer die selben sieben Datentypen: Bytes
Datenbreite: Bytes
Bytes
aus:

INP &FB7F,Statusregister 0
INP &FB7F,Statusregister 1
INP &FB7F,Statusregister 2
INP &FB7F,Spurnummer         ; Sektor-ID-Informationen
INP &FB7F,Kopfnummer         ; dito
INP &FB7F,Das Identifikationsfeld in jedem Sektor: 3. SektornummerSektornummer       ; dito
INP &FB7F,Sektorgröße        ; dito
&X0ms00010 - ganze Spur lesen (READ TRACK)
Befehlsphase:
OUT &FB7F,&X0ms00010         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
Die verwendeten Abkürzungen bedeuten: OUT Standard-Datenblock:
Programmierung des FDC: OUT Standard-Datenblock:
OUT Standard-Datenblock
Ausführungsphase:

Datentransfer 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

Ergebnisphase:
Die verwendeten Abkürzungen bedeuten: INP Standard-Datenblock:
Programmierung des FDC: INP Standard-Datenblock:
INP Standard-Datenblock
&X00000011 - Laufwerksdaten festlegen (SPECIFY)
Befehlsphase:
OUT &FB7F,&X00000011         ; Befehl
OUT &FB7F,&Xssssuuuu         ; Steprate & Amsdos: HeaderHead unload time
OUT &FB7F,&Xllllllld         ; Amsdos: HeaderHead load time & DMA-Flag

Dieser Befehl sollte nach Möglichkeit der erste überhaupt sein, den man zum Floppy-Controller schickt. Hiermit werden drei verschiedene Timing-Parameter festgelegt, und Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
auf DMA-Betrieb eingestellt (oder auch nicht). Die einzelnen 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
bedeuten:
Impulsen beträgt (16-ssss)*2 msek.
oder Lese-Vorgang wartet. Wird nur bei Laufwerken benötigt, die ihren
Kopf tatsächlich von der Einleitung: MassenspeicherFloppy Disc abheben können. Die Wartezeit
beträgt uuuu*32 msek.
Schreib/Lesekopf tatsächlich abheben können. Diese Zeit wartet der
Die ICs im Überblick: Der FDC 765FDC vor jedem Diskettenzugriff. Die Wartezeit beträgt (lllllll+1)*4 msek.
für einen DMA-Controller. 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
kann dann während der
Datenübertragung weiterrechnen.

Die angegebenen Zeiten beziehen sich auf einen Eingangstakt von 4 MHz an Pin CLK des Floppy-Controllers.

&X00000100 - Statusregister 3 abfragen (SENSE DRIVE STATE)
Befehlsphase:
OUT &FB7F,&X00000100         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
Ergebnisphase:
INP &FB7F,Statusregister 3

Dieser Befehl stellt die einzige Möglichkeit dar, 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
3 abzufragen. Hier liefert Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
dann die wichtigsten Zustandssignale vom angewählten Laufwerk.

&Xtm000101 - Sektor(en) schreiben (WRITE SECTOR)
Befehlsphase:
OUT &FB7F,&Xtm000101         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Standard-Datenblock
Ausführungsphase:

Datenübertragung 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 -> Einleitung: MassenspeicherFloppy

Ergebnisphase:
INP &FB7F,Standard-Datenblock

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
sucht den im Standard-Datenblock angegebenen Sektor und fordert dann so lange Datentypen: Bytes
Datenbreite: Bytes
Bytes
von 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
bzw. dem DMA-Controller an, bis der Sektor mit Daten vollgeschrieben ist. Erfolgt dann kein Impuls am TC-Eingang, macht Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
automatisch mit dem nächsten Sektor weiter.

&Xtms00110 - Sektor(en) lesen (READ SECTOR)
Befehlsphase:
OUT &FB7F,&Xtms00110         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Standard-Datenblock
Ausführungsphase:

Datenübertragung Einleitung: MassenspeicherFloppy -> 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

Ergebnisphase:
INP &FB7F,Standard-Datenblock

In der 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
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
oder der DMA-Controller die Datenbytes aus dem Sektor abholen. Auch hier macht Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
ein 'Multi Sektor 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: RD - Read
Read
', wenn er nicht durch einen TC-Impuls gestoppt wird.

&X00000111 - Spur 0 suchen (RECALIBRATE)
Befehlsphase:
OUT &FB7F,&X00000111         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
Ausführungsphase:

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
erzeugt für das ausgewählte Laufwerk so lange Schrittimpulse, bis dort der Spur-0-Sensor aktiv wird, maximal jedoch 77 Stück. Danach erzeugt Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
einen Interrupt-Impuls, und 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
muss mit dem Befehl &08 das Interrupt-Statusregister lesen, um den Befehl zu beenden. Vorher können keine neuen Befehle gestartet werden, außer SEEK und RECALIBRATE auf anderen Laufwerken.

&X00001000 - Statusregister 0 abfragen (SENSE INTERRUPT STATE)
Befehlsphase:
OUT &FB7F,&X00001000         ; Befehl
Ergebnisphase:
INP &FB7F,Status 0
INP &FB7F,Spurnummer

Wenn Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
765 nicht im DMA-Betrieb eingesetzt wird, erzeugt er zu vier verschiedenen Gelegenheiten Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts:

  1. Für jedes Datentypen: Bytes
    Datenbreite: Bytes
    Byte
    während der 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
  2. Zu Beginn 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
  3. Mit dem Ende eines SEEK oder RECALIBRATE
  4. Wenn sich das Ready-Signal eines Laufwerkes ändert

Das Programm muss nun feststellen, wieso ein Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt ausgelöst wurde. Fall 1 und 2 treten während der Bearbeitung eines Befehls auf und können leicht durch das Haupt-Statusregister erkannt werden. Außerdem sollten die Programme so aufgebaut sein, dass hier bei einem Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt schon vorher klar ist, was da vom Die ICs im Überblick: Der FDC 765FDC auf den Prozessor zukommt.

Fall 3 und 4 sind schwieriger zu erkennen. SEEK und RECALIBRATE werden nur durch den Befehl gestartet. Zwar kann, solange der Controller noch mit einem solchen Kommando beschäftigt ist, mit keinem anderen begonnen werden (außer den selben auf anderen Laufwerken), trotzdem ist der Befehl für 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
abgearbeitet. Diesen Befehlen fehlt nämlich die 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
!

Und der 'Erklärung zu den Bezeichnungen: READY
Erklärungen zu den Anschlussbezeichnungen: READY
ready
'-Status eines Laufwerkes kann sich jederzeit ändern, wenn der Benutzer die Diskette aus dem Laufwerk nimmt. Das ist zu unterscheiden von einem 'not Erklärung zu den Bezeichnungen: READY
Erklärungen zu den Anschlussbezeichnungen: READY
ready
'-werden des Laufwerks im Verlauf eines Befehls. Das erkennt der Prozessor 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
.

Erzeugt der Floppy-Controller also ein Interrupt-Signal, 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
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. Das wird deshalb auch Interrupt-Statusregister genannt. Im Amsdos-Controller des Schneider CPC ist der Interrupt-Ausgang Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
jedoch nicht angeschlossen.

&Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR)
Befehlsphase:
OUT &FB7F,&Xtm001001         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Standard-Datenblock
Ausführungsphase:

Datentransfer 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 -> Einleitung: MassenspeicherFloppy

Ergebnisphase:
INP &FB7F,Standard-Datenblock

Dieser Befehl entspricht vollkommen dem Kommando 'Sektor Schreiben'. Einziger Unterschied ist, dass in der Data Address Mark (DAM) eine andere Kennung eingetragen wird.

&X0m001010 - Sektor-ID lesen (READ SECTOR ID)
Befehlsphase:
OUT &FB7F,&X0m001010         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
Ausführungsphase:

Die ICs im Überblick: Der FDC 765FDC liest die erste Sektor-ID, die auf dem angewählten Laufwerk an ihm vorbei rauscht.

Ergebnisphase
INP &FB7F,Standard-Datenblock

Jeder Sektor hat eine vier Datentypen: Bytes
Datenbreite: Bytes
Bytes
lange Kennung, seine 'ID', in der Spur-, Kopf-und Das Identifikationsfeld in jedem Sektor: 3. SektornummerSektornummer und die Sektorgröße eingetragen sind. Diese Sektor-ID ist Bestandteil der Standard-Datenblocks der Befehls- und 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
.

&Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR)
Befehlsphase:
OUT &FB7F,&Xtms01100         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Standard-Datenblock
Ausführungsphase:

Datentransfer Einleitung: MassenspeicherFloppy -> 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

Ergebnisphase:
INP &FB7F,Standard-Datenblock

Dieser Befehl entspricht vollkommen dem Kommando 'Sektor Lesen'. Einziger Unterschied ist, dass in der Data Address Mark (DAM) eine andere Kennung eingetragen sein muss.

&X0m001101 - eine Spur formatieren (FORMAT TRACK)
Befehlsphase:
OUT &FB7F,&X0m001101         ; Befehl
OUT &FB7F,&X0m001drv         ; Drive
OUT &FB7F,Sektorgröße
OUT &FB7F,Anzahl Sektoren
OUT &FB7F,Lücke zw. ID und Daten
OUT &FB7F,Füllbyte für den Datenbereich
Ausführungsphase:

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
formatiert die Spur mit allem was dazugehört und fordert für jeden Sektor von 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
(DMA) 4 Datentypen: Bytes
Datenbreite: Bytes
Bytes
für die Sektor-ID an.

Ergebnisphase:
INP &FB7F,Standard-Datenblock
&X00001111 - Spur suchen (SEEK)
Befehlsphase:
OUT &FB7F,&X00001111         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Spurnummer
Ausführungsphase:

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
vergleicht die gewünschte (physikalische) Spurnummer mit der aktuellen, die er für jedes Laufwerk in einem Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
speichert. Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
kann ja nur die Spur 0 erkennen, und ist ansonsten darauf angewiesen, selbst mitzuzählen. Dann erzeugt er soviele Schrittimpulse wie notwendig sind, die aktuelle Spurnummer mit der gewünschten in Deckung zu bringen. In dieser Zeit kann Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
keine weiteren Befehle entgegennehmen, außer SEEK und RECALIBRATE auf anderen Laufwerken. Ist die gewünschte Spur erreicht, erzeugt Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
einen Interrupt-Impuls, 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
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 lesen muss, um den Befehl endgültig abzuschließen.

&Xtms10001 - Sektor(en) testen (SCAN EQUAL)
Befehlsphase:
OUT &FB7F,&Xtms10001         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Standard-Datenblock
Ausführungsphase:

Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
liest den angegebenen Sektor und vergleicht die einlaufenden Datenbytes mit denen, die 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
(oder DMA) liefert.

Ergebnisphase:
INP &FB7F,Standard-Datenblock

Im Prinzip läuft dieses Kommando genauso ab, wie beim Sektor-Lesen oder Schreiben. Nur werden hierbei die Daten aus Speicher und Einleitung: MassenspeicherFloppy verglichen. Erfolg oder Misserfolg kann man dann nacher im Statusregister 2 prüfen. SCAN EQUAL testet nur auf exakte Datengleichheit (= Verify).

&Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL)
Befehlsphase:
OUT &FB7F,&Xtms11001         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Standard-Datenblock
Ausführungsphase:

Wie SCAN EQUAL, nur dürfen die Datentypen: Bytes
Datenbreite: Bytes
Bytes
aus dem Sektor auch KLEINER als ihr jeweiliges Pendant aus dem Speicher des Computers sein.

Ergebnisphase:
INP &FB7F,Standard-Datenblock
&Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL)
Befehlsphase:
OUT &FB7F,&Xtms11101         ; Befehl
OUT &FB7F,&Xxxxxxdrv         ; Drive
OUT &FB7F,Standard-Datenblock
Ausführungsphase:

Wie SCAN EQAUL, nur dürfen die Datenbytes von der Diskette auch größer als ihr jeweiliger Vergleichspartner sein.

Ergebnisphase:
INP &FB7F,Standard-Datenblock

Valid HTML   Valid CSS