Interrupts 80x86/ INT 13
Erscheinungsbild
Int 13h Disketten- und Festplattenzugriff
Funktion 0: Initialisieren
[Bearbeiten]AH=0 Initialisieren DL=Laufwerknummer. A: hat Code 00, B: hat Code 01 Die erste Festplatte hat den Code 80h, die zweite 81h usw.
Ausgabe:
CY-Flag zeigt Fehler an, AH = Fehler-Code
Besonderheiten:
Wenn DL=0, erfolgt Reset aller Diskettenlaufwerke
Fehlercodes
[Bearbeiten]00h | kein Fehler |
01h | Illegale Funktionsnummer |
02h | Keine Adress-Markierung |
03h | Diskette ist schreibgeschützt |
04h | Sektor nicht gefunden |
05h | Reset erfolglos |
07h | Fehlerhafte Initialisierung |
08h | Überlauf DMA |
09h | Segmentgrenzen-Überlauf des DMA |
10h | Lesefehler |
11h | Daten trotz falscher Prüfsumme gelesen |
20h | Fehler des Controllers |
40h | Spur nicht gefunden |
80h | Laufwerk reagiert nicht |
BBh | BIOS-Fehler |
FFh | Nicht aufschlüsselbarer Fehler |
Funktion 1: Status lesen
[Bearbeiten]AH=1 Status lesen DL=Laufwerknummer
Ausgabe:
CY-Flag zeigt Fehler an, AH = Fehler-Code
Funktion 2h: Sektoren lesen
[Bearbeiten]AH=2 AL=Sektorenanzahl DL=Laufwerknummer DH=Seiten/Kopf-Nummer CH=Spur-/Zylindernummer CL=Sektornummer ES:BX=Adresse des Lesepuffers
Ausgabe:
CY-Flag zeigt Fehler an, AH = Fehler-Code (Tabelle siehe Interrupts 80x86/ INT 13#Fehlercodes
Anmerkungen:
- Bit 6 und 7 von CL enthalten die oberen Bits der Zylindernummer
- Bit 0 bis 5 von CL enthalten die Sektornummer
- Puffergröße ausreichend bemessen! 512 Byte pro Sektor kalkulieren!
Funktion 3h: Sektoren schreiben
[Bearbeiten]AH=3 ES:BX=Adresse der zu schreibenden Daten alles andere wie bei Funktion 2h
Funktion 4h: Sektoren überprüfen
[Bearbeiten]Funktion 5h: Spur formatieren
[Bearbeiten]Funktion 6h: Zylinder formatieren und Flags für fehlerhafte Sektoren setzen
[Bearbeiten]Funktion 7h: Laufwerk formatieren und bei Zylinder anfangen
[Bearbeiten]Funktion 8h: Aktuelle Laufwerksparameter ermitteln
[Bearbeiten]AH = 08h DL = Laufwerksindex (z.B. 01h für 1. FD, 80h für 1. HD)
Ausgabe:
CF = 1 bei Fehler, ansonsten 0 AH = Rückgabewert DH = logische Anzahl der Köpfe (beginnt mit 0) CX = logische Anzahl der Zylinder (beginnt mit 0) und Sektoren (beginnt mit 1) (wie bei Funktion 02h)
Funktion 9h: Fremdlaufwerke anpassen
[Bearbeiten]Funktion 0Ah: Erweiterte Sektoren lesen
[Bearbeiten]Funktion 0Bh: Fremdlaufwerke anpassen
[Bearbeiten]Funktion 0Ch: Zylinder suchen
[Bearbeiten]Funktion 0Dh: Zusätzlicher Disk-Reset
[Bearbeiten]Funktion 0Eh: Sektoren-Buffer lesen
[Bearbeiten]Funktion 0Fh: Sektoren-Buffer schreiben
[Bearbeiten]Funktion 10h: Überprüfung der Laufwerksbereitschaft
[Bearbeiten]Funktion 11h: Plattenköpfe parken
[Bearbeiten]Funktion 12h: Controller-RAM-Diagnose
[Bearbeiten]Funktion 13h: Sektor 0 überprüfen
[Bearbeiten]Funktion 14h: Controller-Diagnose
[Bearbeiten]Funktion 15h: DASD-Typ lesen
[Bearbeiten]Funktion 16h: Diskettenwechsel ermitteln
[Bearbeiten]AH=16h DL=Laufwerknummer (0 = A:, 1 = B:)
Ausgabe:
AH = 6, wenn ein Wechsel stattgefunden hat, sonst AH = 0