Unit MKDos;
{$I MKB.Def}

Interface

uses     Use32;


Function GetDosDate: LongInt;
Function GetDOW: Word;
Function TimeOut(Time:LongInt):Boolean; {If time is later than current time
  in timerticks}
{$IFDEF OS2}
Function TimeCounter: Longint;
{$ELSE}
Function GetResultCode: Integer;

Var
  TimeCounter: LongInt Absolute $40:$6C;
{$ENDIF}



Implementation


Uses
  {$IFDEF WINDOWS}
  WinDos;
  {$ELSE}
  {$IFDEF OS2}
  OS2Def,OS2Base,
  {$ENDIF}
  Dos;
  {$ENDIF}

{$IFDEF OS2}

const     MilliTic  =  (1/18.2)/1000;

Function  TimeCounter: Longint;

  var     M  :  Longint;
          D  :  ApiRet;

  begin
    D:=DosQuerySysInfo(qsv_Ms_Count,qsv_Ms_Count,M,M);
    TimeCounter:=round(M*MilliTic)
  end;

{$ENDIF}

Function TimeOut(Time:LongInt):Boolean;
  Var
    TimeDiff: LongInt;

  Begin
  TimeDiff := Time - TimeCounter;
  If TimeDiff < 0 Then
    TimeOut := True
  Else
    Begin
    If (TimeDiff > 780000) Then
    Dec(TimeDiff, 1572480);
    If TimeDiff < 0 Then
      TimeOut := True
    Else
      TimeOut := False;
    End;
  End;

{$IFNDEF OS2}

Function GetResultCode: Integer;
  Var
    Result: Byte;
  {$IFNDEF BASMINT}
    {$IFDEF WINDOWS}
    Regs: TRegisters;
    {$ELSE}
    Regs: Registers;
    {$ENDIF}
  {$ENDIF}

  Begin
  {$IFDEF BASMINT}
  Asm
    Mov ah, $4d;
    Int $21;
    Cmp ah, $00;
    je @JRes;
    Neg ah;
    Mov Result, ah;
    jmp @JRes2;
    @JRes:
    Mov Result, al;
    @JRes2:
    End;
  {$ELSE}
  Regs.ah := $4d;
  MsDos(Regs);
  If Regs.ah <> 0 Then
    Result := - Regs.ah
  Else
    Result := Regs.al;
  {$ENDIF}
  GetResultCode := Result;
  End;

{$ENDIF}

Function GetDosDate: LongInt;
  Var
    {$IFDEF WINDOWS}
    DT: TDateTime;
    {$ELSE}
    DT: DateTime;
    {$ENDIF}
    DosDate: LongInt;
    DOW: Word;

  Begin
  GetDate(DT.Year, DT.Month, DT.Day, DOW);
  GetTime(DT.Hour, DT.Min, DT.Sec, DOW);
  PackTime(DT, DosDate);
  GetDosDate := DosDate;
  End;


Function GetDOW: Word;
  Var
    {$IFDEF WINDOWS}
    DT: TDateTime;
    {$ELSE}
    DT: DateTime;
    {$ENDIF}
    DOW: Word;

  Begin
  GetDate(DT.Year, DT.Month, DT.Day, DOW);
  GetDOW := DOW;
  End;


End.
