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