home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 04 / extra / graphdet.mod < prev    next >
Encoding:
Modula Implementation  |  1988-12-21  |  1.3 KB  |  63 lines

  1. (*------------------------------------------------------*)
  2. (*                    GRAPHDET.MOD                      *)
  3. (*            (C) 1989 M.Schlöter & TOOLBOX             *)
  4.  
  5. IMPLEMENTATION MODULE GraphDetect;
  6.  
  7. FROM SYSTEM IMPORT BYTE, Registers;
  8. IMPORT Lib;
  9. IMPORT IO;
  10. IMPORT Graph;
  11.  
  12. CONST GetMode = 15;
  13.       VGACheck = 1AH;
  14.       Error = 0;
  15.       Mono = 1;
  16.       CGA = 2;
  17.       EGA = 3;
  18.       VGA = 4;
  19.  
  20. VAR EGAFlag[0040H:00A8H] : BYTE;
  21.  
  22. PROCEDURE AutoGraphInit() : BOOLEAN;
  23.  
  24. VAR Regs : Registers;
  25.     Mode : BYTE;
  26.     Screen : INTEGER;
  27.  
  28. BEGIN
  29.   Regs.AH := GetMode;
  30.   Lib.Intr(Regs,10H);
  31.   Mode := Regs.AL;
  32.  
  33.   Screen := Error;
  34.   IF (Mode = BYTE(7H)) OR (Mode = BYTE(87H)) THEN
  35.     Screen := Mono; (* --> Hercules ! *)
  36.   ELSE
  37.     IF EGAFlag = BYTE(0) THEN
  38.       Screen := CGA;
  39.     ELSE
  40.       Regs.AH := VGACheck;
  41.       Regs.AL := 0;
  42.       Lib.Intr(Regs,10H);
  43.       IF Regs.AL = VGACheck THEN
  44.         Screen := VGA
  45.       ELSE
  46.         Screen := EGA;
  47.       END;
  48.     END;
  49.   END;
  50.   CASE Screen OF
  51.     Mono : Graph.InitHerc    |
  52.     CGA  : Graph.InitCGA     |
  53.     EGA  : Graph.InitEGA     |
  54.     VGA  : Graph.InitVGA     |
  55.   ELSE
  56.     IO.WrStr(">>> FEHLER IN DER GRAFIKKARTENERKENNUNG <<<");
  57.     IO.WrLn;
  58.     RETURN FALSE;
  59.   END;
  60.   RETURN TRUE;
  61. END AutoGraphInit;
  62.  
  63. END GraphDetect.