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

    Unit ICheck; {Installation Checks}

    {Author: Salvatore Meschini - WWW: http://www.ermes.it/pws/mesk -
    E-Mail: smeschini@ermes.it - INFORMATION SOURCE := RALF BROWN INT. LIST R51}
    {tHIS uniT Is FReeWARe}

    Interface

    Function Is4Dos : Boolean;      {4DOS Shell Replacement}
    Function IsAnsiSys : Boolean;   {Ansi.sys}
    Function IsAppend : Boolean;    {Append.exe}
    Function IsAssign : Boolean;    {Assign.com}
    Function IsCritError : Boolean; {Critical Error Handler}
    Function IsDblSpace : Boolean;  {Dblspace.Bin}
    Function IsDesqView : Boolean;  {Desqview}
    Function IsDos4G : Boolean;     {Dos/4G PMode}
    Function IsDoskey : Boolean;    {Doskey.com}
    Function IsDoubleDos : Boolean; {DoubleDos}
    Function IsDriverSys : Boolean; {Driver.sys}
    Function IsEmm386 : Boolean;    {Emm386}
    Function IsEms : Boolean;       {EMS Driver loaded?}
    Function IsGrafTabl : Boolean;  {Graftabl.com}
    Function IsKeyb : Boolean;      {Keyb.com}
    Function IsMouse : Boolean;     {Mouse driver present?}
    Function IsNG : Boolean;        {Norton Guides}
    Function IsNlsFunc : Boolean;   {Nlsfunc.exe}
    Function IsShare : Boolean;     {Share.exe}
    Function IsSmartDrv : Boolean;  {Smartdrive}
    Function IsSrdisk : Boolean;    {Srdisk ramdisk driver 1.30+}
    Function IsTHelp : Boolean;     {Thelp.com}
    Function IsXms : Boolean;       {XMS driver loaded?}
    Function IsWinEnh : Boolean;      {Windows Enhanced}

    implementation

    Function  Is4dos : Boolean;Assembler;
     asm
        MOV AX, 0D44DH
        XOR BX,BX
        INT 2FH
        CMP AX,44DDH
        JE  @OK
        MOV AL,0
        JMP @END
        @OK: MOV AL,1
        @END:
     end;

    Function  IsAnsiSys : Boolean;Assembler;
     asm
      MOV AX,1A00H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsAppend : Boolean;Assembler;
     asm
      MOV AX,0B700H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsAssign : Boolean;Assembler;
     asm
       MOV AX,0600H
       INT 2FH
       CMP AL,0FFH
       JE  @OK
       MOV AL,0
       JMP @END
       @OK: MOV AL,1
       @END:
     end;

    Function  IsCritError : Boolean;Assembler;
     asm
      MOV AX,0500H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsDblSpace : Boolean;Assembler;
     asm
      MOV AX,4A11H
      XOR BX,BX
      INT 2FH
      CMP AX,0
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsDesqView : Boolean;Assembler;
     asm
      MOV AH,2BH
      MOV CX,4445H
      MOV DX,5351H
      MOV AL,1
      INT 21H
      CMP AL,0FFH
      JE  @NOTINST
      MOV AL,1
      JMP @END
      @NOTINST: MOV AL,0
      @END:
     end;

    Function  IsDos4G : Boolean;Assembler;
     asm
      MOV AX, 0FF00H
      MOV DX,0078H
      INT 21H
      CMP AL,0
      JNE @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsDosKey : Boolean;Assembler;
     asm
      MOV AX,4800H
      INT 2FH
      CMP AL,0
      JNE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsDoubleDos : Boolean;Assembler;
     asm
      MOV AX,0E400H
      INT 21H
      CMP AL,0
      JNE @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsDriverSys : Boolean;Assembler;
     asm
      MOV AX,0800H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsEmm386 : Boolean;Assembler;
     asm
      MOV AX,0FFA5H
      INT 67H
      CMP AX,845AH
      JNE @SECCMP
      @OK:
      MOV AL,1
      JMP @END
      @SECCMP:
      CMP AX,84A5H
      JE @OK
      XOR AL,AL
      @END:
     end;

    Function  IsEMS : Boolean;Assembler;
     asm
      MOV AH,46H
      INT 67H
      CMP AH,00H
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsGrafTabl : Boolean;Assembler;
     asm
      MOV AX,0B000H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsKeyb : Boolean;Assembler;
     asm
      MOV AX,0AD80H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsMouse : Boolean;Assembler;
     asm
      XOR AX,AX
      INT 33H
      CMP AX,0FFFFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsNG : Boolean;Assembler;
     asm
      MOV AX,0F398H
      INT 16H
      CMP AX,6A73H
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsNlsFunc : Boolean;Assembler;
     asm
      MOV AX,1400H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsShare : Boolean;Assembler;
     asm
      MOV AX,1000H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsSmartDrv : Boolean;Assembler;
     asm
      MOV AX,4A10H
      MOV BX,0
      MOV CX,0EBABH
      INT 2FH
      CMP AX,0BABEH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsSrdisk : Boolean;Assembler;
     asm
      MOV AX,7200H
      INT 2FH
      CMP AL,0FFH
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsThelp : Boolean;Assembler;
     asm
      MOV AX,0CAFEH
      XOR BX,BX
      INT 2FH
      CMP BX,0
      JNE @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsXMS: Boolean;Assembler;
     asm
      MOV AX, 4300H
      INT 2FH
      CMP AL,80H
      JE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    Function  IsWinEnh : Boolean;Assembler;
     asm
      MOV AX,1600H
      INT 2FH
      CMP AL,0
      JnE  @OK
      MOV AL,0
      JMP @END
      @OK: MOV AL,1
      @END:
     end;

    end.

    {------------------------------- DEMO --------------------------------}

    Program TestICheck; {WARNING: I DON'T KNOW IF ALL CHECKS WORKS CORRECTLY!!!}

    uses Icheck;

    procedure ClrScr; assembler;
    asm
     mov ah,0Fh
     int 10h
     xor ah,ah
     int 10h;
    end;

    Function Readkey : Char;

    var AsciiK:byte;

    begin
    asm
     xor ah,ah
     int 16h
     mov asciik,al
    end;
     readkey:=chr(asciik);
    end;

    Procedure Present;
     begin
      writeln(#251);
     end;

    Procedure NotPresent;
     begin
      writeln('-');
     end;

    begin
    clrscr;
    write('4DOS '); if is4dos then present else notpresent;
    write('ANSI.SYS '); if isansisys then present else notpresent;
    write('APPEND.EXE '); if isappend then present else notpresent;
    write('ASSIGN.COM '); if isassign then present else notpresent;
    write('CRITICAL ERROR HANDLER '); if iscriterror then present else notpresent;
    write('DBLSPACE '); if isdblspace then present else notpresent;
    write('DESQVIEW '); if isdesqview then present else notpresent;
    write('DOS/4G '); if isdos4g then present else notpresent;
    write('DOSKEY '); if isdoskey then present else notpresent;
    write('DOUBLEDOS '); if isdoubledos then present else notpresent;
    write('DRIVER.SYS '); if isdriversys then present else notpresent;
    write('EMM386 '); if isemm386 then present else notpresent;
    write('EMS ');if isems then present else notpresent;
    write('GRAFTABL '); if isgraftabl then present else notpresent;
    write('KEYB.COM '); if iskeyb then present else notpresent;
    write('MOUSE '); if ismouse then present else notpresent;
    write('NORTON GUIDES '); if isng then present else notpresent;
    write('NLSFUNC.EXE '); if isnlsfunc then present else notpresent;
    write('SHARE.EXE '); if isshare then present else notpresent;
    write('SMARDRIVE '); if issmartdrv then present else notpresent;
    write('SRDISK '); if issrdisk then present else notpresent;
    write('THELP '); if isthelp then present else notpresent;
    write('XMX '); if isxms then present else notpresent;
    write('WINDOWS ENHANCED ');if iswinenh then present else notpresent;
    readkey;
    end.

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