Floppy Disk Controller

Aus Lowlevel

(Weitergeleitet von FDC)
Wechseln zu: Navigation, Suche

Der Floppy Disk Controller ist ein Chip, der ein bis vier Floppy-Laufwerke ansteuern kann.

Inhaltsverzeichnis

Eigenschaften

  • DMA-Channel: 2
  • IRQ: 6

Register

Übersicht

Name Port Beschreibung lesen/schreiben
SRA 0x3F0 Status Register A lesen
SRB 0x3F1 Status Register B lesen
DOR 0x3F2 Digital Output Register schreiben
TDR 0x3F3 Tape Drive Register lesen/schreiben
MSR 0x3F4 Main Status Register lesen
DRSR 0x3F4 Data Rate Select Register schreiben
DR 0x3F5 Data Register lesen/schreiben
DIR 0x3F7 Digital Input Register lesen
CCR 0x3F7 Configuration Control Register schreiben

Aufbau

Wenn nichts dasteht, gilt das Flag bei gesetztem Bit.

MSR

Bit 76543210
Name MRQ DIO NDMA BUSY ACTD ACTC ACTB ACTA
MRQ
Status
0: DR nicht bereit
1: DR bereit
DIO
Daten I/O
0: CPU -> FDC (Daten schreiben)
1: FDC -> CPU (Daten lesen)
NDMA
DMA-Modus
0: DMA-Modus aktiviert
1: DMA-Modus deaktiviert
BUSY
BUSY (Befehl wird ausgeführt)
0: nicht busy
1: busy
ACTD-ACTA
Laufwerk D-A ist im Positionierungs-Modus

DOR

Bit 7654321 – 0
Name MOTD MOTC MOTB MOTA DMA RESET DRIVE
MOTD-A
Motorsteuerung
0: Motor ausschalten
1: Motor anschalten
DMA
DMA und IRQ
0: deaktiviert
1: aktiviert
RESET
Controller Reset
0: Reset ausführen (!!!)
1: Controller aktiviert (Reset ausgeführt)
DRIVE
Laufwerk auswählen
00: Drive 0
01: Drive 1
10: Drive 2
11: Drive 3

DR

In das Data-Register werden die Befehle geschrieben, die jeweils aus mehreren Bytes bestehen. Nach manchen Befehlen werden die Status-Register im DR zurückgegeben.

ST0
Bit 7 – 654321 – 0
Name IC SE UC NR HD US
IC
Interrupt Code
00: der Befehl wurde ohne Fehler ausgeführt
01: der Befehl wurde gestartet, aber nicht richtig beendet
10: invalid Command
11: Controller war nicht bereit (Polling)
SE
Seek end
der Controller hat einen Befehl mit inplizitem Seek erfolgreich ausgeführt
UC
unit check
gesetzt bei Fehler
NR
drive not ready
HD
aktiver head
0: Head 0
1: Head 1
US
aktives Laufwerk
00: A
01: B
10: C
11: D
ST1
Bit 76543210
Name EN 0 DE TO 0 NDAT NW NID
EN
End of Cylinder
gesetzt wenn die geforderte Sektoranzahl die Anzahl der Sektoren auf einer Spur überschreitet
DE
Data Error
gesetzt bei einem Fehler im ID Addressfield oder im Datafield
TO
Time-out
gesetzt wenn der FDC keine Signale von CPU oder DMA empfängt
NDAT
No Data
gesetzt wenn bei einem read sektor Befehl der Sektor nicht gefunden wurde
oder wenn der FDC nach einem read ID Befehl die ID nicht lesen konnte
NW
Not Writeable
gesetzt wenn die Floppy schreibgeschützt ist
NID
No Address Mark
gesetzt wenn die ID Address Mark nicht gefunden wurde
ST2
Bit 76543210
Name 0 DADM CRCE WCYL SEQ SERR BCYL NDAM
DADM
Deleted Address Mark
Bei einem read Sector Befehl:
eine gelöschte Data Address Mark wurde gefunden
Bei einem read deleted Sector Befehl:
eine gesetzte Data Address Mark wurde gefunden
CRCE
CRC error in data field
WCYL
wrong cylinder
SEQ
seek equal
SERR
seek error
BCYL
bad cylinder
NDAM
not data address mark DAM
ST3
Bit 7654321 – 0
Name ESIG WPDR RDY TRKO DSDR HDDR DS
ESIG
Error
gesetzt nach einem Fehler
WPDR
Write Protection
gesetzt wenn die Disc schreibgeschützt ist
RDY
Ready
gesetzt wenn die Drive ready ist
TRKO
Track 0
der Head ist über Track 0 (?)
DSDR
Double sided drive
gesetzt wenn die Floppy doppelseitig ist
HDDR
Head
0: Head 0
1: Head 1
DS
Drive select
00: A
01: B
10: C
11: D

Befehle

Infos

Data Address Mark

Siehe auch

Interrupt 13h - Disketten- und Festplattenzugriff

Weblinks

Persönliche Werkzeuge