home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / DEMOVT15.ZIP / EXAMPLES.EXE / SETUP / DETECTIO.PAS < prev    next >
Pascal/Delphi Source File  |  1994-04-17  |  2KB  |  106 lines

  1. {$A+,B-,D+,E-,F-,G+,I-,L+,N-,O-,R-,S-,V-,X+}
  2. UNIT Detections;
  3.  
  4.    (* Copyright by Jare/Iguana in 1993, but given to the public domain. *)
  5.    (* Want more comments? Write'em!                                     *)
  6.  
  7.    (*   Several detections are performed here. I prefer giving the user *)
  8.    (* a choice instead of plainly aborting the demo.                    *)
  9.  
  10. INTERFACE
  11.  
  12. FUNCTION IsVGA: BOOLEAN;
  13.  
  14. FUNCTION Is386: BOOLEAN;
  15.  
  16. FUNCTION IsProtMode: BOOLEAN;
  17.  
  18. FUNCTION HasMouse : BOOLEAN;
  19.  
  20. PROCEDURE CheckFilesOk;
  21.  
  22.  
  23.    (* ========================================= *)
  24.  
  25. IMPLEMENTATION
  26.  
  27. USES Objects, Gfx;
  28.  
  29. FUNCTION IsVGA: BOOLEAN;
  30. BEGIN
  31.    ASM
  32.         XOR     BX,BX
  33.         MOV     AX,01A00h
  34.         INT     10h
  35.         MOV     AX,1
  36.         CMP     BL,7
  37.         JNC     @@ok
  38.         CMP     BL,0Dh
  39.         JNC     @@ok
  40.          XOR     AX,AX
  41.     @@ok:
  42.    END
  43. END;
  44.  
  45. {$L detecasm.obj }
  46.  
  47. FUNCTION Is386: BOOLEAN; EXTERNAL;
  48. FUNCTION IsProtMode: BOOLEAN; EXTERNAL;
  49. FUNCTION HasMouse : BOOLEAN; EXTERNAL;
  50.  
  51.  
  52.  
  53.  
  54. FUNCTION GetFileSize(n: STRING) : LONGINT;
  55.   VAR
  56.     f : TDosStream;
  57.   BEGIN
  58.     GetFileSize := -1;
  59.     f.Init(n, stOpenRead);
  60.     IF f.Status <> stOk THEN EXIT;
  61.     GetFileSize := f.GetSize;
  62.     f.Done;
  63.   END;
  64.  
  65. PROCEDURE CheckFilesOk;
  66.   TYPE
  67.      TFil = RECORD
  68.         Name : STRING[80];
  69.         Size : LONGINT
  70.      END;
  71.  
  72.   CONST
  73.      NFILES = 1;
  74.  
  75.      files : ARRAY [1..NFILES] OF TFil = (
  76.         (Name:'DVT.NFO';Size:   3930)
  77.      );
  78.  
  79.   VAR
  80.      i : INTEGER;
  81.      l : LONGINT;
  82.  
  83.   BEGIN
  84.       (* Uncomment the following to perform file size checking. *)
  85.     FOR i := 1 TO NFILES DO BEGIN
  86.        l := GetFileSize(files[i].Name);
  87.        IF (l < 0) THEN
  88.           WriteLn('The file ', files[i].Name, ' is required for the demo, but I can''t see it.')
  89.        ELSE IF (l <> files[i].Size) THEN
  90.           WriteLn('The file ', files[i].Name, ' should be ', files[i].Size,
  91.                   ' bytes, but is ', l, ' bytes.');
  92.        IF (l < 0) OR (l <> files[i].Size) THEN BEGIN
  93.           Write(' Do you still want to try the demo? (y/N)');
  94.           IF UpCase(CHAR(GetKey)) <> 'Y' THEN BEGIN
  95.              WriteLn;
  96.              WriteLn('Get a clean copy of the demo from BlasterSound BBS, +34-58-293583.');
  97.              HALT(1)
  98.           END;
  99.           WriteLn(#13'                                              ')
  100.        END
  101.     END;
  102.     WriteLn
  103.   END;
  104.  
  105. END.
  106.