home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 02 / tricks / detect.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-10-06  |  1.6 KB  |  71 lines

  1. /* ------------------------------------------------------ */
  2. /*                   DETECT.C                             */
  3. /*  Programm stellt den angeschlossenen Videoadapter fest */
  4. /*         (c) 1988 by Jens Krüger & TOOLBOX              */
  5. /* ------------------------------------------------------ */
  6. #include <stdio.h>
  7. #include <dos.h>
  8.  
  9. /* BIOS-Funktion */
  10. #define getmode 0x0F
  11.  
  12. /* Nur 80-Spalten-Modi erlaubt */
  13. #define width 80
  14.  
  15. /* Return-Werte der Funktion detect() */
  16. #define ERR 0
  17. #define MONO 1
  18. #define CGA 2
  19. #define EGA 3
  20.  
  21. int detect(void)
  22. {
  23.  union REGS regs;
  24.  short mode;
  25.  int screen;
  26.  
  27.  regs.h.ah = getmode;
  28.  int86(0x10, ®s, ®s);
  29.  mode = regs.h.al;
  30.  
  31.  if (regs.h.ah != width)
  32.    screen = ERR;   /* Nur 80-Spalten-Modi erlaubt ...*/
  33.  
  34.  /* und einer der Charakter-Modi */
  35.  if (mode == 7 || mode == 0x87)
  36.    screen = MONO;
  37.  else
  38.    if ((mode >=0 && mode <=6)
  39.     || (mode >=0x80 && mode <=0x86))
  40.      screen = CGA;
  41.    else
  42.      if ((mode >=0x0D && mode <=0x10) || (mode >=0x8D
  43.       && mode <=0x90))
  44.        screen = EGA;
  45.      else
  46.        screen = ERR;
  47.  return screen;
  48. }  /* Ende von detect() */
  49.  
  50. main() /* Zur Demonstration der Funktion detect() */
  51. {
  52.  int screen;
  53.  
  54.  screen = detect();
  55.  
  56.  switch (screen)
  57.   {
  58.    case MONO :
  59.     printf("\nMonochrome-Display detected !\n"); break;
  60.    case CGA  :
  61.     printf("\nColor-Display detected !\n"); break;
  62.    case EGA  :
  63.     printf("\nEGA-Display detected !\n"); break;
  64.    case ERR  :
  65.     printf("\ndetect() : ERROR !\n"); break;
  66.    default   :
  67.     printf("\nInternal Error !\n"); break;
  68.   }
  69.  exit (screen);
  70. }
  71. /* ------------------------------------------------------ */