[Back to MEMORY SWAG index] [Back to Main SWAG index] [Original]

    { MN> How can I find out if Smartdrv is installed ? I have  made a  harddisk
     MN> benchmark  Program,  and  I  would like  it to  detect if  Smartdrv is
     MN> installed.
    }
    Uses Dos;

    Function SmartDrvVersion:Integer;  { -1 means not inSTALLED }
    Var
      R: Registers;
      B: Array[0..$27] of Byte; { return Buffer }
      F: Text;

    begin
      SmartDrvVersion := -1;  { assume NO smartdrv ! }

      {--------Check For SmartDrv.EXE---------- }
      FillChar( R, Sizeof(R), 0 );
      R.AX := $4A10;  { install-check }
      Intr( $2F, R );
      if R.FLAGS and FCARRY = 0 then  { OK! }
        begin
        if R.AX = $BABE then          { the MAGIC-# }
          begin
            SmartDrvVersion := Integer(R.BP);
            Exit
          end;
        end;
      { -------Check For SmartDrv.SYS----------- }
      Assign(f,'SMARTAAR');
      {$I-}
      Reset(f);
      {$I+}
      if IoResult <> 0 then Exit; { No SmartDrv }
      FillChar( R, Sizeof(R), 0 );
      R.AX := $4402; { IoCtl }
      R.BX := TextRec(f).Handle;
      R.CX := Sizeof(B);
      R.DS := Seg(B);
      R.DX := ofs(B);
      MsDos(R);  { int 21h }
      close(f);
      if R.FLAGS and FCARRY <> 0 then Exit;  { Error-# in R.AX ...}
      SmartDrvVersion :=  B[$E] + 256* B[$F];
    end;

    Var
      SMV:Integer;
    begin
      SMV := SmartDrvVersion;
      Write(' SmartDrv');
      if SMV = -1 then
        Writeln('  not installed.')
      else
        Writeln('  V', SMV div 256,'.',SMV mod 256,' installed.');
    end.

[Back to MEMORY SWAG index] [Back to Main SWAG index] [Original]