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

Funktion 17h: Diskettenformatierung festlegen Bearbeiten

Funktion 18h: Media-Typ festlegen Bearbeiten

Funktion 19h: Köpfe parken Bearbeiten