Interrupts 80x86/ INT 13
Int 13h Disketten- und Festplattenzugriff
Funktion 0: Initialisieren
BearbeitenAH=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
Bearbeiten00h | 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
BearbeitenAH=1 Status lesen DL=Laufwerknummer
Ausgabe:
CY-Flag zeigt Fehler an, AH = Fehler-Code
Funktion 2h: Sektoren lesen
BearbeitenAH=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
BearbeitenAH=3 ES:BX=Adresse der zu schreibenden Daten alles andere wie bei Funktion 2h
Funktion 4h: Sektoren überprüfen
BearbeitenFunktion 5h: Spur formatieren
BearbeitenFunktion 6h: Zylinder formatieren und Flags für fehlerhafte Sektoren setzen
BearbeitenFunktion 7h: Laufwerk formatieren und bei Zylinder anfangen
BearbeitenFunktion 8h: Aktuelle Laufwerksparameter ermitteln
BearbeitenAH = 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
BearbeitenFunktion 0Ah: Erweiterte Sektoren lesen
BearbeitenFunktion 0Bh: Fremdlaufwerke anpassen
BearbeitenFunktion 0Ch: Zylinder suchen
BearbeitenFunktion 0Dh: Zusätzlicher Disk-Reset
BearbeitenFunktion 0Eh: Sektoren-Buffer lesen
BearbeitenFunktion 0Fh: Sektoren-Buffer schreiben
BearbeitenFunktion 10h: Überprüfung der Laufwerksbereitschaft
BearbeitenFunktion 11h: Plattenköpfe parken
BearbeitenFunktion 12h: Controller-RAM-Diagnose
BearbeitenFunktion 13h: Sektor 0 überprüfen
BearbeitenFunktion 14h: Controller-Diagnose
BearbeitenFunktion 15h: DASD-Typ lesen
BearbeitenFunktion 16h: Diskettenwechsel ermitteln
BearbeitenAH=16h DL=Laufwerknummer (0 = A:, 1 = B:)
Ausgabe:
AH = 6, wenn ein Wechsel stattgefunden hat, sonst AH = 0