home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / T-Pascal.70 / DEMOS.ZIP / TEST286.PAS < prev   
Pascal/Delphi Source File  |  1992-10-30  |  1KB  |  46 lines

  1. {************************************************}
  2. {                                                }
  3. { 286 Detection Demo                             }
  4. { Copyright (c) 1985,90 by Borland International }
  5. {                                                }
  6. {************************************************}
  7.  
  8. (*
  9.   Programs compiled with {$G} compiler directive enabled do not
  10.   check the processor at runtime to determine whether it is
  11.   286-compatible. Trying to execute 80286 instructions on an 8086
  12.   or an 8088 will lock up the computer. This program shows how to
  13.   check for the presence of a 286-compatible chip at runtime.
  14.  
  15.   If you want to put code like this in a program with {$G+}
  16.   enabled, put the test and halt code in the initialization
  17.   section of the first unit in the main program's USES clause.
  18. *)
  19.  
  20. program Test286;
  21.  
  22. function Is286Able: Boolean; assembler;
  23. asm
  24.         PUSHF
  25.         POP     BX
  26.         AND     BX,0FFFH
  27.         PUSH    BX
  28.         POPF
  29.         PUSHF
  30.         POP     BX
  31.         AND     BX,0F000H
  32.         CMP     BX,0F000H
  33.         MOV     AX,0
  34.         JZ      @@1
  35.         MOV     AX,1
  36. @@1:
  37. end;
  38.  
  39. begin
  40.   if not Is286Able then
  41.   begin
  42.     Writeln('Need an 80286-compatible system to run this program');
  43.     Halt(1);
  44.    end;
  45. end.
  46.