Interrupts 80x86/ INT 13
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