Home Programmierung
und BIOS
Shareware-
FAQ
Links Suche Kontakt u.
Infos

DOS-Interrupt 21h (Teil 2)

Funktion Unter - Funktion Bedeutung Eingabe Ausgabe DOS - Implementierung Anmerkungen
3Ch - Datei erstellen AH=3Ch
CX=Attribut
DS:DX=FAR-Zeiger auf den Dateinamen (ASCIIZ)
CF=Fehler
AX=Handle oder Fehlercode
2.0 Erstellt eine neue Datei. Bestehende Dateien werden überschrieben.
3Dh - Datei öffnen AH=3Dh
AL=Zugriffscode (0: nur Lesen; 1: nur Schreiben; 2: beides)
DS:DX=FAR-Zeiger auf den Dateinamen (ASCIIZ)
CF=Fehler
AX=Handle oder Fehlercode
2.0 -
3Eh - Datei schließen AH=3Eh
BX=Handle
CF=Fehler
AX=Fehlercode (6=ungültiges Handle)
2.0 Schließt eine Datei und entleert damit die internen Schreibpuffer.
3Fh - Datei lesen AH=3Fh
BX=Handle
CX=Anzahl Bytes
DS:DX=Adresse des Puffers
CF=Fehler
AX=Anzahl gelesener Bytes oder Fehlercode
2.0 Der Dateizeiger wird hinter die gelesene Stelle positioniert.
40h - Datei beschreiben AH=40h
BX=Handle
CX=Anzahl Bytes
DS:DX=Adresse des Puffers
CF=Fehler
AX=Anzahl geschriebener Bytes oder Fehlercode
2.0 Der Dateizeiger wird hinter die beschriebene Stelle positioniert.
41h - Datei löschen AH=41h
DS:DX=FAR-Zeiger auf den Dateinamen (ASCIIZ)
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
2.0 Der Dateiname kann eine komplette Pfad- und Laufwerks - Bezeichnung sein. Die Datei darf nicht geöffnet sein und keine speziellen Dateiattribute haben.
42h - Dateizeiger bewegen AH=42h
AL=Modus (0: absolut; 1: von der aktuellen Stelle; 2: vom Ende an)
BX=Handle
CX=Position (Bits 16-31)
DX=Position (Bits 0-15)
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
DX=neue Position des Dateizeigers (Bits 16-31)
AX=neue Position des Dateizeigers (Bits 0-7)
2.0 Kann auch zur Bestimmung der aktuellen Position benutzt werden (einfach CX und DX gleich null setzen und dann Modus gleich eins wählen)
43h 00h Datei - Attribute lesen AH=43h
AL=00h
DS:DX=Far-Zeiger auf ASCIIZ - String
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
CX=Attribute
2.0 Der Dateiname darf eine komplette Laufwerks- und Pfadangabe enthalten.
43h 01h Datei - Attribute setzen AH=43h
AL=01h
CX=Attribute
DS:DX=Far-Zeiger auf ASCIIZ - String
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
2.0 Der Dateiname darf eine komplette Laufwerks- und Pfadangabe enthalten.
44h 00h IOCTL: Geräte - Attribut lesen AH=44h
AL=00h
BX=Handle
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
DX=Geräte - Daten (Word)
2.0 k.A.
44h 01h IOCTL: Geräte - Attribut setzen AH=44h
AL=01h
BX=Handle
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
2.0 k.A.
44h 02h IOCTL: Zeichen von Zeichentreiber empfangen AH=44h
AL=02h
BX=Handle
CX=Anzahl der vom Handle zu lesenden Bytes
DX=Offset des Zeigers, der leeren Buffer angibt
DS=Segment des Zeigers, der leeren Buffer angibt
CF=Fehler
AX=gelesene Bytes / Fehlercode
Buffer=gelesene Daten
2.0 k.A.
44h 03h IOCTL: Zeichen an Zeichentreiber senden AH=44h
AL=03h
BX=Handle
CX=Anzahl der an Handle zu sendenden Bytes
DX=Offset des Zeigers, der Buffer der zu schreibenden Daten angibt
DS=Segment des Zeigers, der Buffer der zu schreibenden Daten angibt
CF=Fehler
AX=geschriebene Bytes / Fehlercode
2.0 k.A.
44h 04h IOCTL: Daten von einem Blocktreiber empfangen AH=44h
AL=04h
BL=logische Laufwerksnummer
CX=Anzahl der vom Laufwerk zu lesenden Bytes
DX=Offset des Zeigers, der leeren Buffer angibt
DS=Segment des Zeigers, der leeren Buffer angibt
CF=Fehler
AX=gelesene Bytes / Fehlercode
Buffer=gelesene Daten
2.0 0=Standard, 1=A, 2=B,...
44h 05h IOCTL: Daten an einen Blocktreiber senden AH=44h
AL=05h
BL=logische Laufwerksnummer
CX=Anzahl der auf dem Laufwerk zu schreibenden Bytes
DX=Offset des Zeigers, der Buffer mit Daten angibt
DS=Segment des Zeigers, der Buffer mit Daten angibt
CF=Fehler
AX=geschriebene Bytes / Fehlercode
2.0 0=Standard, 1=A, 2=B,...
44h 06h IOCTL: Eingabe - Status ermitteln AH=44h
AL=06h
BX=Handle
CF=Fehler
AH=Fehlercode (bei gesetztem Carry)
AL=Status
2.0 Status für Zeichentreiber: 00=nicht bereit, FF=bereit.
Status für Blocktreiber: 00=Zeiger am Dateieende, FF=bereit
44h 07h IOCTL: Ausgabe - Status ermitteln AH=44h
AL=07h
BX=Handle
CF=Fehler
AL=Status
2.0 Status für Zeichentreiber: 00=nicht bereit, FF=bereit.
Status für Blocktreiber: 00=Zeiger am Dateieende, FF=bereit
44h 08h IOCTL: Ist das Medium wechselbar? AH=44h
AL=08h
BL=logische Laufwerksnummer
CF=Fehler
AX=Status / Fehlercode
3.0 Laufwerke: 0=Standard, 1=A, 2=B,...
Status: 00=Medium austauschbar, 01=Medium nicht austauschbar, 0Fh=ungültiges Gerät
44h 09h IOCTL: Device - Remote - Test AH=44h
AL=09h
BL=logische Laufwerksnummer
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
DH=Geräte - Attribut - Code (Bit 12 gesetzt: Remote-Gerät, Bit 12 gelöscht: Local-Gerät)
3.1 0=Standard, 1=A, 2=B, ...
44h 0Ah IOCTL: Handle - Remote - Test AH=44h
AL=0Ah
BX=Handle
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
DH=Geräte - Attribt - Code (Bit 15 gesetzt: Remote-Gerät, Bit 15 gelöscht: Local-Gerät)
3.1 k.A.
44h 0Bh IOCTL: Zugriffswiederholung ändern AH=44h
AL=0Bh
CX=Anzahl der Warteschleifen zwischen Zugriffsversuchen
DX=Anzahl der Wiederholungs - Versuche
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
3.0 Die Wartezeit ist von der Taktgeschwindigkeit des Computers abhängig. Standard sind 1 Schleife und 3 Wiederholungen.
44h 0Ch, Minor 45h Zähler setzen AL=44h
AH=0Ch
BX=Handle
CH=Kategorie
CH=45h
DX=Zeigeroffset auf Datenpuffer
DS=Zeigersegment auf Datenpuffer
Buffer=Zähler
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
3.3 Kategorie ist eine der folgenden:
1=serielle Schnittstelle, 3=Bildschirm, 5=Paralleldrucker
44h 0Ch, Minor 4Ah Codeseite wählen AH=44h
AL=0Ch
BX=Handle
CH=Kategorie
CL=4Ah
DX=Zeigeroffset auf Datenpuffer
DS=Zeigersegment auf Datenpuffer
Buffer=Parameter-Block der Codeseite oder Codepage - Struktur
CF=Fehler 3.3 Kategorie ist eine der folgenden:
1=serielle Schnittstelle, 3=Bildschirm, 5=Paralleldrucker
44h 0Ch, Minor 4Dh Vorbereitung der Codeseite: Ende AH=44h
AL=0Ch
BX=Handle
CH=Kategorie
CL=4Dh
CF=Fehler 3.3 Kategorie ist eine der folgenden:
1=serielle Schnittstelle, 3=Bildschirm, 5=Paralleldrucker
44h 0Ch, Minor 5Fh Bildschirmmodus setzen AH=44h
AL=0Ch
BX=Handle
CH=03h
CL=5Fh
DX=Zeigeroffset auf Datenpuffer
Buffer=Displaymode - Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
3.3 k.A.
44h 0Ch, Minor 65h Zähler lesen AH=44h
AL=0Ch
BX=Handle
CH=Kategorie
CL=65h
DX=Zeigeroffset auf Datenpuffer
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
Buffer=Zähler
3.3 Kategorie ist eine der folgenden:
1=serielle Schnittstelle, 3=Bildschirm, 5=Paralleldrucker
44h 0Ch, Minor 6Ah Gewählte Codeseite abfragen AH=44h
AL=0Ch
BX=Handle
CH=Kategorie
CL=6Ah
DX=Zeigeroffset auf Datenpuffer
Buffer=Codeseiten - Parameterblock oder Codepage - Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
Buffer=Codeseiten - Parameterblock oder Codepage - Struktur
3.3 Kategorie ist eine der folgenden:
1=serielle Schnittstelle, 3=Bildschirm, 5=Paralleldrucker
44h 0Ch, Minor 6Bh Codeseiten - Vorbereitungsliste abfragen AH=44h
AL=0Ch
BX=Handle
CH=Kategorie
CL=6Bh
DX=Zeigeroffset auf Datenpuffer
Buffer=Codeseiten - Parameterblock oder Codepage - Struktur
CF=Fehler
AX=Fehlercode(bei gesetztem Carry)
Buffer=Codeseiten - Parameterblock oder Codepage - Struktur
3.3 Kategorie ist eine der folgenden:
1=serielle Schnittstelle, 3=Bildschirm, 5=Paralleldrucker
44h 0Ch, Minor 7Fh Bildschirmmodus ermitteln AH=44h
AL=0Ch
BX=Handle
CH=03h
CL=7Fh
DX=Zeigeroffset auf Datenpuffer
DS=Zeigersegment auf Datenpuffer
Buffer=Displaymode - Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
Buffer=Displaymode - Struktur
4.0 k.A.
44h 0Dh, Minor 40h Geräte - Parameter setzen AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=40h
DX=Zeigeroffset auf Parameterblock
DS=Zeigersegment auf Parameterblock
Buffer=Deviceparams - Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
3.3 k.A.
44h 0Dh, Minor 41h Spur auf logischem Laufwerk schreiben AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=41h
DX=Zeigeroffset auf Parameterblock
DS=Zeigersegment auf Parameterblock
Buffer=Rwblock- Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
3.3 k.A.
44h 0Dh, Minor 42h Spur auf logischem Laufwerk formatieren AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=42h
DX=Zeigeroffset auf Parameterblock
DS=Zeigersegment auf Parameterblock
Buffer=Formatblock oder Fvblock - Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
Buffer=Formatblock oder Fvblock - Struktur
3.3 k.A.
44h 0Dh, Minor 46h Medien-ID setzen AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=46h
DX=Zeigeroffset auf Parameterblock
DS=Zeigersegment auf Parameterblock
Buffer=Medien-ID oder MID - Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
4.0 k.A.
44h 0Dh, Minor 60h Geräte - Parameter ermitteln AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=60h
DX=Zeigeroffset auf Parameterblock
DS=Zeigersegment auf Parameterblock
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
Buffer=gelesener Block oder Rwblock - Struktur
3.2 k.A.
44h 0Dh, Minor 62h Spur auf logischem Laufwerk prüfen AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=62h
DX=Zeigeroffset auf Puffer
DS=Zeigersegment auf Puffer
Buffer=Fvblock - Struktur
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
3.2 k.A.
44h 0Dh, Minor 66h Medien-ID bestimmen AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=66h
DX=Zeigeroffset auf Puffer
DS=Zeigersegment auf Puffer
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
Buffer=Medien-ID oder MID - Struktur
4.0 k.A.
44h 0Dh, Minor 68h Medientyp aufspüren AH=44h
AL=0Dh
BX=Laufwerk
CH=08h
CL=68h
DX=Zeigeroffset auf Parameterblock
DS=Zeigersegment auf Parameterblock
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
Buffer=Medientyp
5.0 k.A.
44h 0Eh Laufwerk lesen AH=44h
AL=0Eh
BL=logische Laufwerksnummer
CF=Fehler
AX=Laufwerk / Fehlercode
3.2 Laufwerk: 0=Standard, 1=A,...
AL übergibt den physikalischen Laufwerksaufbau; 00=dem logischen Laufwerk ist nur ein Laufwerk zugeordnet; 1-26 (A-Z)=physikalisches Laufwerk ist dem logischen zugeordnet.
44h 0Fh Laufwerk setzen AH=44h
AL=0Fh
BX=logische Laufwerksnumer
CF=Fehler
AX=benutztes logisches Laufwerk / Fehlercode
3.2 Laufwerk: 0=Standard, 1=A,...
AL übergibt den physikalischen Laufwerksaufbau; 00=dem logischen Laufwerk ist nur ein Laufwerk zugeordnet; 1-26 (A-Z)=physikalisches Laufwerk ist dem logischen zugeordnet.
44h 10h IOCTL - Handle abfragen AH=44h
AL=10h
BX=Handle
CH=Kategorie (1:serielle Schnittstelle, 3: Bildschirm, 5: Parallelsrucker)
CL=Funktion (45h: Zähler setzen, 65h: Zähler abfragen)
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
5.0 k.A.
44h 11h IOCTL - Gerät abfragen AH=44h
AL=11h
BL=Laufwerk (0: Vorgabe, 1:A,...)
CH=08h
CL=Funktion
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
5.0 Funktion ist eine der folgenden:
40h: Geräteparameter setzen, 41h: Spur auf logischem Laufwerk schreiben, 42h: Spur auf logischem Laufwerk formatieren, 46h: Medien-ID setzen, 60h: Geräteparameter bestimmen, 61h: Spur auf logischem Laufwerk lesen, 62h: Spur auf logischem Laufwerk prüfen, 66h: Medien-ID bestimmen, 68h: Medientyp aufspüren.
44h 52h DOS-Version AH=44h
AL=52h
AX=DX=Versionskennung
1063h: DR DOS 3.41
1065h: DR DOS 5.00
1067h: DR DOS 6.00
1072h: Novell DOS 7.00
DR DOS, Novell DOS DR DOS bis 6.0 liefert immer 3.31 und Novell DOS 7 die Versionsnummer 6.0
45h - Datei - Handle verdoppeln AH=45h
BX=alter Handle
CF=Fehler
AX=neuer Handle / Fehlercode
2.0 k.A.
46h - Datei - Handles angleichen AH=46h
BX=bestehender Handle
CX=zweiter Handle
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
2.0 k.A.
47h - Aktuelles Verzeichnis ermitteln AH=47h
DL=Laufwerks - Kennzeichen
DS:SI=Zeiger auf einen Puffer
CF=Fehler
AX=Fehlercode (bei gesetztem Carry)
2.0 Legt das aktuelle Verzeichnis des angegebenen Laufwerks (1=A, 2=B,...) in dem übergebenen Puffer von der Größe 64 Bytes ab. Der führende und der abschließende Backslash werden weggelassen.



Datei-Attribute (Funktion 3Ch)

Bit Bedeutung
0 schreibgeschützt
1 versteckt
2 Systemdatei
3 reserviert
4 Archivdatei
5 reserviert
6 reserviert
7 reserviert



Fehlercodes

Code Bedeutung
01h ungültiger Funktionscode
02h Datei nicht gefunden
03h Pfad nicht gefunden
04h zu viele offene Dateien
05h Zugriff verweigert
06h ungültiges Handle
07h Arena zerstört
08h nicht genug Speicherplatz
09h ungültiger Block
0Ah ungültige Umgebung
0Bh ungültiges Format
0Ch ungültiger Zugriffscode
0Dh ungültige Daten
0Eh reserviert
0Fh ungültiges Laufwerk
10h Versuch, das aktuelle Verzeichnis zu entfernen
11h nicht dasselbe Gerät
12h keine Datei mehr
13h Diskette ist schreibgeschützt
14h Disketten-Unit ist fehlerhaft
15h Laufwerk nicht bereit
16h ungültiger Befehl
17h CRC-Fehler
18h Länge der Request-Struktur falsch
19h Suchfehler
1Ah Keine DOS-Diskette
1Bh Sektor nicht gefunden
1Ch Papier aus
1Dh Schreibfehler
1Eh Lesefehler
1Fh Allgemeienr Fehler
20h Fehler bei gemeinsamen Zugriff
21h Sperr-Fehler
22h Falsche Diskette
23h FCB nicht zugänglich
24h Puffer für gemeinsamen Zugriff: Überlauf
25h Falsche Codeseite
26h Handle-EOF
27h Handle-Diskette voll
28h - 31h reserviert
32h Netzanfrage nicht unterstützt
33h entfernter Rechner nicht bereit
34h doppelter Name im Netz
35h Netzpfad nicht gefunden
36h Netz beschäftigt
37h Netztreiber existiert nicht mehr
38h BIOS-Befehlsgrenze ins Netz überschritten
39h Netzkartenfehler
3Ah Falsche Antwort vom Netz
3Bh unerwarteter Netzfehler
3Ch nicht kompatible Karte in fernem Computer
3Dh Druckerwarteschlange voll
3Eh Nicht genug Platz für Druckdatei
3Fh Druckdatei wurde gelöscht
40h Zugriff verweigert
41h Typ des Netztreibers nicht korrekt
42h Netzname nicht gefunden
43h Grenze der BIOS-Sitzung im Netz überschritten
44h temporäre Pause
45h Neztanfrage abgelehnt
46h Druck- oder Diskettenumlenkung angehalten
47h Netzanfrage nicht akzeptiert
48h Drucker oder Plattenumleitung angehalten
49h - 4Fh reserviert
50h Datei existiert schon
51h FCB doppelt
52h kann Verzeichniseintrag nicht erstellen
53h Interrupt 24h gescheitert
54h keine Strukturen mehr
55h schon zugewiesen
56h ungültiges Passwort (unter DR DOS ab Version 5.0)
57h ungültiger Parameter
58h Netz-Schreibe-Fehler
59h Funktion vom Netz nicht unterstützt
5Ah nötige Systemkomponente nicht installiert

Je nach Funktion sind meist nur bestimmte Codes relevant.


Datei-Attribute

Bit Bedeutung
0 Schreibschutz
1 versteckt
2 Systemdatei
3 Volume-Label
4 Verzeichnis
5 Archiv-Bit



CODEPAGE-Struktur

Offset Länge Name Inhalt
00h 1 Word cpLength Muß 2 sein
02h 1 Word cpId Codeseiten-ID:
Codeseiten-ID kann eine der folgenden sein: Wert Bedeutung
437 U.S.
850 Mehrsprachig (Roman. 1)
852 Slawisch (Roman. 2)
860 Portogiesisch
863 Kanada-Französisch
865 Nordisch



Select/Query Parameterblöcke von Codeseiten wählen/abfragen

Offset Länge Name Inhalt
00h 1 Word Packet length 2+(n+1)*2
02h 1 Word Codepage ID  
04h 1 Word DBCS Vector 1  
-- und so weiter, bis:
variabel 1 Word DBCS Vector n  

Nur für DOS 3.3 und 4.0. DOS 5.0 verwendet die Struktur CODEPAGE.


DEVICEPARAMS - Struktur

Offset Länge Name 7 6 5 4 3 2 1 0 zulässige Einstellungen
00h 1 Byte dpSpecFunc 4 4 4 4 4       Muß 0 sein
          4     0=nicht verwenden, 1=Sektoren gleicher Größe
            4   0=alle Felder lesen, 1=nur Spuradressenfeld lesen
              4 0=neues BPB erstellen, 1=Geräte-BPB verwenden
01h 1 Byte dpDevType 0 0 0 0 1 0 0 1 9=2.88MB
0 0 0 0 1 0 0 0 8=optisch lesen / schreiben
0 0 0 0 0 1 1 1 7=1.44MB Floppy
0 0 0 0 0 1 1 0 6=Bandlaufwerk
0 0 0 0 0 1 0 1 5=Festplatte
0 0 0 0 0 1 0 0 4=8" Floppy doppelter Dichte
0 0 0 0 0 0 1 1 3=8" Floppy einfacher Dichte
0 0 0 0 0 0 1 0 2=720K Floppy
0 0 0 0 0 0 0 1 1=1.2MB Floppy
0 0 0 0 0 0 0 0 0=320/360K Floppy
02h 1 Word dpDevAttr 4 4 4 4 4 4     Muß auf 0 sein, reserviert
            4   0=Diskettenwechsel nicht unterstützt, 1=Diskettenwechsel unterstützt
              4 0=Medium entfernbar, 1=Medium nicht entfernbar
04h 1 Word dpCylinders größte Zylinderanzahl für das Gerät
06h 1 Byte dpMediaType               4 0=1.2MB Vierfachdichte, 1=320/360K Doppeldichte
07h 1 Word dpBytesPerSec Bytes per Sektor
09h 1 Byte dpSecPerClust Sektoren pro Cluster; muß aufeinander folgen, Zweierpotenz
0Ah 1 Word dpResSectors Anzahl reservierter Sektoren, meist 1
0Ch 1 Byte dpFATs Anzahl FATs
0Dh 1 Word dpRootDirEnts Maximalzahl Einträge im Stammverzeichnis
0Fh 1 Word dpSectors Anzahl Sektoren, wenn Laufwerk kleiner oder gleich 32MB, 0=Laufwerk größer als 32MB und Anzahl Sektoren in dpHugeSectors
11h 1 Byte dpMedia Media-Descriptor-Byte
0F0h: 1.44 oder 2.88MB 3,5" Floppy; 1.2MB 5,25" Floppy
0F8h: Festplatte, jede Größe
0F9h: 720K 3,5" Floppy, 1.2MB 5,25" Floppy
0FAh: 320K 5,25" Floppy
0FBh: 640K 3,5" Floppy
0FCh: 180K 5,25" Floppy
0FDh: 360K 5,25" Floppy
0FEh: 160K 5,25" Floppy
0FFh: 320K 5,25" Floppy
12h 1 Word dpFATsecs Anzahl Sektoren in jeder FAT
14h 1 Word dpSecsPerTrack Anzahl Sektoren pro Spur
16h 1 Word dpHeads Anzahl Köpfe per Laufwerk
18h 1 DWord dpHiddenSecs Anzahl verdeckte Sektoren pro Laufwerk
1Ch 1 DWord dpHugeSectors Anzahl Sektoren, wenn Laufwerk größer 32MB

DOS 5.0-Struktur. Das Layout bis Offset 6 ist identisch in früheren DOS-Versionen.


RWBLOCK-Struktur

Offset Länge Name Inhalt
00h 1 Byte rwSepcFunc Muß auf 0 gesetzt werden
01h 1 Word rwHead Anzahl Köpfe zu Lesen / Schreiben
03h 1 Word rwCylinder Anzahl Zylinder zu Lesen / Schreiben
05h 1 Word rwFirstSector Sektornummer zu Lesen / Schreiben
07h 1 Word rwSectors Sektornummern gesamt
09h 1 DWord rwBuffer Segment:Offset des Transfer-Buffers



FVBLOCK-Struktur

Offset Länge Name Inhalt
00h 1 Byte fvSpecFunc Muß 0 sein
01h 1 Word fvHead Anzahl Köpfe zu formatieren / prüfen
03h 1 Word fvCylinder Anzahl Zylinder zu formatieren / prüfen



MID-Struktur

Offset Länge Name Inhalt
00h 1 Word midInfoLevel Informationsebene
02h 1 DWord midSerialNum Seriennummer
06h 11 Byte midVolLabel ASCII-Etikett (Label)
11h 8 Byte midFileSysType Dateisystem-Typ



Die Funktionen können mit dem Turbo-Pascal-eigenen Assembler aufgerufen werden. Ein Anwendungsbeispiel könnte so aussehen:


ASM

  mov {...}

  {Register entsprechend der Spalte "Eingabe" belegen...}

  int $21;

  mov {...}

  {Register auslesen gemäß der Spalte "Ausgabe"...}

END;

Generell wird im Register AH die Funktionsnummer übergeben.

Alle Angaben ohne Gewähr.

Achtung: bitte Hinweise zur Aktualitšt der Daten beachten! Copyright by Mathias Harbeck