Floppy Disk Controller — Änderungen 7737 → 7739

Zeile 209: Zeile 209:
 
: 11: D
 
: 11: D
  
−
CCR
+
=== CCR ===
 
Im CCR sind nur die Funktionen der ersten zwei Bits definiert (Bit 0 und Bit 1):
 
Im CCR sind nur die Funktionen der ersten zwei Bits definiert (Bit 0 und Bit 1):
−
    *  00 500 Kbps
+
: 00 500 Kbps
−
    * 10 250 Kbps
+
: 10 250 Kbps
−
    * 01 300 Kbps
+
: 01 300 Kbps
−
    * 11 1 Mbps
+
: 11 1 Mbps
  
 
== Befehle ==
 
== Befehle ==
Zeile 242: Zeile 242:
 
|-
 
|-
 
| Gap3
 
| Gap3
−
| Abstand zwischen Sektoren (?)
+
| Abstand zwischen Sektoren
 
| 27
 
| 27
 
|-
 
|-
Zeile 252: Zeile 252:
 
|Skip Mode, als gelöscht markierte Daten werden automatisch übersprungen
 
|Skip Mode, als gelöscht markierte Daten werden automatisch übersprungen
 
| ???
 
| ???
 +
|-
 +
|Drive, Cylinder, Head, Sektor
 +
|Positionsangabe für einen bestimmten Sektor einer Diskette. Siehe [[CHS]]
 +
|
 +
|-
 +
|Trackgrößße
 +
|Anzahl der Sektoren, die auf einem Track ("Ring") liegen
 +
|???
 
|}
 
|}
  
−
=== Liste von Befehlen ===
+
=== Kompletten Track lesen (2h) ===
−
''ich arbeite daran...''
+
Command Phase:
 +
{| {{prettytable}} cellpadding=8
 +
! Bit: || 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0
 +
|-
 +
| #1: || 0 || MFM || SK || 0 || 0 || 0 || 1 || 0
 +
|-
 +
| #2: || 0 || 0 || 0 || 0 || 0 || Head || colspan=2 | Drive
 +
|-
 +
| #3: || colspan=8 | Cylinder
 +
|-
 +
| #4: || colspan=8 | Head
 +
|-
 +
| #5: || colspan=8 | Sektor
 +
|-
 +
| #6: || colspan=8 | Sektorgröße N
 +
|-
 +
| #7: || colspan=8 | Track-Größe
 +
|-
 +
| #8: || colspan=8 | GAP3
 +
|-
 +
| #9: || colspan=8 | DTL
 +
|}
 +
 
 +
Result Phase:
 +
{| {{prettytable}} cellpadding=8
 +
| #1: || ST0
 +
|-
 +
| #2: || ST1
 +
|-
 +
| #3: || ST2
 +
|-
 +
| #4: || Cylinder
 +
|-
 +
| #5: || Head
 +
|-
 +
| #6: || 0
 +
|-
 +
| #7: || Sektorgröße N
 +
|}
 +
 
 +
Anmerkungen:
 +
* Dieser Befehl ließt alle Sektoren eines Tracks hintereinander ein
 +
* Der Befehl funktioniert nur für eine Seite der Diskette, für beide Seiten muss der Befehl mehrmals gesendet werden
 +
 
 +
=== Diskettendaten einstellen (3h) ===
 +
Command Phase:
 +
{| {{prettytable}} cellpadding=8
 +
! Bit: || 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0
 +
|-
 +
| #1: || 0 || 0 || 0 || 0 || 0 || 0 || 1 || 1
 +
|-
 +
| #2: || colspan=4 | Step Rate || colspan=4 | Head Unload Time
 +
|-
 +
| #3 || colspan=7 | Head Load Time || Kein DMA
 +
|}
 +
 
 +
Result Phase:
 +
''keine''
 +
 
 +
Anmerkungen:
 +
* Die benötigten Daten sollten vom BIOS abgefragt werden (siehe unten)
 +
* Im MSR kann eingestellt werden, ob DMA/IRQ oder keins von beidem, hier wird dann noch einmal explizit zwischen DMA (Bit gelöscht) und kein DMA (Bit gesetzt) entschieden.
 +
 
 +
=== Laufwerksstatus überprüfen (4h) ===
 +
Command Phase:
 +
{| {{prettytable}} cellpadding=8
 +
! Bit: || 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0
 +
|-
 +
| #1: || 0 || 0 || 0 || 0 || 0 || 1 || 0 || 0
 +
|-
 +
| #2: || 0 || 0 || 0 || 0 || 0 || Head || colspan=2 | Drive
 +
|}
 +
 
 +
Result Phase:
 +
{| {{prettytable}} cellpadding=8
 +
| ST3
 +
|}
 +
 
 +
 
 +
=== write sector ===
 +
=== calibrate drive ===
 +
=== check interrupt status ===
 +
=== write deleted sector ===
 +
=== read sector ID ===
 +
=== read deleted sector ===
 +
=== format track ===
 +
=== seek head ===
 +
 
  
 
== Beispielcode ==
 
== Beispielcode ==