home *** CD-ROM | disk | FTP | other *** search
- {*******************************************************}
- { }
- { Turbo Pascal Version 4.0 }
- { Interface-Dokumentation zu DOS }
- { }
- { Copyright (c) 1987 Borland International, Inc. }
- { }
- {*******************************************************}
-
- {$D-,I-,S- keine Zusatzinformationen zur Fehlersuche,
- keine automatische I/O-Prüfung,
- keine Prüfung des Stacks }
-
- unit Dos;
-
- interface
-
- const
- FCarry = $0001; { Zur Prüfung einzelner Bits des Flag- }
- FParity = $0004; { Registers nach Aufrufen von MsDos oder Intr. }
- FAuxiliary = $0010; { Wenn R ein Record des Typs Registers ist, }
- FZero = $0040; { dann liefert R.Flags and FCarry das Ergebnis }
- FSign = $0080; { TRUE, wenn das Carry-Flag gesetzt ist, }
- FOverflow = $0800; { R.Flags and FZero prüft auf Z-Flag<> 0 usw. }
-
- fmClosed = $D7B0; { "Magische" Konstanten für das Feld Mode }
- fmInput = $D7B1; { in einer Datei-Variablen }
- fmOutput = $D7B2;
- fmInOut = $D7B3;
-
- ReadOnly = $01; { Datei-Attribute: schreibgeschützt }
- Hidden = $02; { versteckt }
- SysFile = $04; { Systemdatei }
- VolumeID = $08; { Volume-Label }
- Directory = $10;
- Archive = $20;
- AnyFile = $3F; { beliebige Datei }
-
- { -------------- Datentypen ----------------------- }
-
- type
- { Zum Setzen bzw. der Übergabe von Registern des Prozessors
- für die Prozeduren Intr und MsDos }
- Registers = record
- case Integer of
- 0: (AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags: Word);
- 1: (AL,AH,BL,BH,CL,CH,DL,DH: Byte);
- end;
-
- { Datei-Variable für untypisierte und typisierte Dateien }
- FileRec = record
- Handle: Word; { DOS-Handle (Referenznummer) }
- Mode: Word; { Zugriffsart: Lesen, Schreiben ... }
- RecSize: Word; { Recordgröße }
- Private: array[1..26] of Byte; { von DOS reserviert }
- UserData: array[1..16] of Byte; { beliebig verwendbar }
- Name: array[0..79] of Char; { Dateiname }
- end;
-
- { Datei-Variable für Textdateien }
- TextBuf = array[0..127] of Char; { Puffer, kann mit SetTextBuf
- "umdirigiert" werden }
- TextRec = record
- Handle: Word; { DOS-Handle (Referenznummer) }
- Mode: Word; { Zugrifffsart }
- BufSize: Word; { Puffergröße }
- Private: Word; { von DOS reserviert }
- BufPos: Word; { Position (Index) im Puffer }
- BufEnd: Word; { Zahl momentan gespeicherter Zeichen }
- BufPtr: ^TextBuf; { zeigt auf den Puffer }
- OpenFunc: Pointer; { zeigt auf die Open-Routine }
- InOutFunc: Pointer; { zeigt auf die Ein-/Ausgaberoutine }
- FlushFunc: Pointer; { zeigt auf die Flush-Routine }
- CloseFunc: Pointer; { zeigt auf die Close-Routine }
- UserData: array[1..16] of Byte; { beliebig verwendbar }
- Name: array[0..79] of Char; { Dateiname }
- Buffer: TextBuf; { Standard-Textpuffer }
- end;
-
- { Parametertyp von FindFirst und FindNext }
- SearchRec = record
- Fill: array[1..21] of Byte; { von DOS reserviert }
- Attr: Byte; { Dateiattribute }
- Time: LongInt; { Datum/Uhrzeit (gepackt) }
- Size: LongInt; { Größe in Bytes }
- Name: string[12]; { Name }
- end;
-
- { Datums-/Uhrzeit-Record für PackTime und UnpackTime }
- DateTime = record
- Year,Month, { Jahr: 1980..2099, Monat: 1..12 }
- Day,Hour, { Tag: 1..31, Stunde: 0..23 }
- Min,Sec: Word;
- end;
-
- { --------------------- Variablen ------------------------ }
- var
- DosError: Integer; { Enthält den Status der
- jeweils letzten DOS-Operation }
-
-
- { -------------------- Routinen -------------------------- }
-
- procedure Intr(IntNo: Byte; var Regs: Registers);
- procedure MsDos(var Regs: Registers);
- procedure GetDate(var Year,Month,Day,DayOfWeek: Word);
- procedure SetDate(Year,Month,Day: Word);
- procedure GetTime(var Hour,Minute,Second,Sec100: Word);
- procedure SetTime(Hour,Minute,Second,Sec100: Word);
- function DiskFree(Drive: Byte): LongInt;
- function DiskSize(Drive: Byte): LongInt;
- procedure GetFAttr(var F; var Attr: Word);
- procedure SetFAttr(var F; Attr: Word);
- procedure GetFTime(var F; var Time: LongInt);
- procedure SetFTime(var F; Time: LongInt);
- procedure FindFirst(Path: String; Attr: Word; var F: SearchRec);
- procedure FindNext(var F: SearchRec);
- procedure UnpackTime(P: LongInt; var T: DateTime);
- procedure PackTime(var T: DateTime; var P: LongInt);
- procedure GetIntVec(IntNo: Byte; var Vector: Pointer);
- procedure SetIntVec(IntNo: Byte; Vector: Pointer);
- procedure Keep(ExitCode: Word);
- procedure Exec(Path,CmdLine: String);
- function DosExitCode: Word;
-
- implementation