| 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 | |
| − | + | : 10 250 Kbps | |
| − | + | : 01 300 Kbps | |
| − | + | : 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 | ||
| + | |??? | ||
|} | |} | ||
| − | === | + | === Kompletten Track lesen (2h) === |
| − | '' | + | 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 == | ||