Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765Der 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:
- &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
- 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
- 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.
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.
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 Die Abteilungen des Betriebssystems: AmsdosAmsdos 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.
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 765der 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.
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 INTERRUPTB 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 INTERRUPTB
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.
Die meisten Befehle Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765des FDC 765 erfordern u.Operationen: BD5B / 349A / 349A: FLO SUBA. sieben Datentypen: Bytes Datenbreite: BytesBytes, 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
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 765der FDC fast immer die selben sieben Datentypen: Bytes Datenbreite: BytesBytes 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
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
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 Z80CPU
Die verwendeten Abkürzungen bedeuten: INP Standard-Datenblock: Programmierung des FDC: INP Standard-Datenblock:INP Standard-Datenblock
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 765der 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 Z80CPU 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.
OUT &FB7F,&X00000100 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
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 3das Statusregister 3 abzufragen. Hier liefert Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765der FDC dann die wichtigsten Zustandssignale vom angewählten Laufwerk.
OUT &FB7F,&Xtm000101 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Standard-Datenblock
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 Z80CPU -> Die ICs im Überblick: Der FDC 765FDC -> Einleitung: MassenspeicherFloppy
INP &FB7F,Standard-Datenblock
Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765Der FDC sucht den im Standard-Datenblock angegebenen Sektor und fordert dann so lange Datentypen: Bytes Datenbreite: BytesBytes 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 Z80CPU 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 765der FDC automatisch mit dem nächsten Sektor weiter.
OUT &FB7F,&Xtms00110 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Standard-Datenblock
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 Z80CPU
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 Z80CPU 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 765der 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 - ReadRead', wenn er nicht durch einen TC-Impuls gestoppt wird.
OUT &FB7F,&X00000111 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765Der 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 765der 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 Z80CPU 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.
OUT &FB7F,&X00001000 ; Befehl
INP &FB7F,Status 0
INP &FB7F,Spurnummer
Wenn Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765der 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:
- Für jedes Datentypen: Bytes
Datenbreite: BytesByte 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
- 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
- Mit dem Ende eines SEEK oder RECALIBRATE
- 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 Z80CPU 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: READYready'-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: READYready'-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 Z80CPU 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 3das 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 765des FDC jedoch nicht angeschlossen.
OUT &FB7F,&Xtm001001 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Standard-Datenblock
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 Z80CPU -> Die ICs im Überblick: Der FDC 765FDC -> Einleitung: MassenspeicherFloppy
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.
OUT &FB7F,&X0m001010 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
Die ICs im Überblick: Der FDC 765FDC liest die erste Sektor-ID, die auf dem angewählten Laufwerk an ihm vorbei rauscht.
INP &FB7F,Standard-Datenblock
Jeder Sektor hat eine vier Datentypen: Bytes Datenbreite: BytesBytes 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.
OUT &FB7F,&Xtms01100 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Standard-Datenblock
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 Z80CPU
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.
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
Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765Der 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 Z80CPU (DMA) 4 Datentypen: Bytes Datenbreite: BytesBytes für die Sektor-ID an.
INP &FB7F,Standard-Datenblock
OUT &FB7F,&X00001111 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Spurnummer
Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765Der 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 765Der 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 765der 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 765der 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 Z80CPU 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 3das Statusregister 0 lesen muss, um den Befehl endgültig abzuschließen.
OUT &FB7F,&Xtms10001 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Standard-Datenblock
Die ICs im Überblick: Der FDC 765 Das Innenleben der CPC-Rechner: Der FDC 765Der 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 Z80CPU (oder DMA) liefert.
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).
OUT &FB7F,&Xtms11001 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Standard-Datenblock
Wie SCAN EQUAL, nur dürfen die Datentypen: Bytes Datenbreite: BytesBytes aus dem Sektor auch KLEINER als ihr jeweiliges Pendant aus dem Speicher des Computers sein.
INP &FB7F,Standard-Datenblock
OUT &FB7F,&Xtms11101 ; Befehl
OUT &FB7F,&Xxxxxxdrv ; Drive
OUT &FB7F,Standard-Datenblock
Wie SCAN EQAUL, nur dürfen die Datenbytes von der Diskette auch größer als ihr jeweiliger Vergleichspartner sein.
INP &FB7F,Standard-Datenblock
|