home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
turbo4
/
dos.doc
< prev
next >
Wrap
Text File
|
1987-12-08
|
6KB
|
127 lines
{*******************************************************}
{ }
{ 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