home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Archive / OS2_Archive_CD-ROM_Walnut_Creek_May_1992.iso / novell / progrmng / indent.zoo / sysinfo.c < prev    next >
Text File  |  1990-07-16  |  5KB  |  187 lines

  1. /**************************** SYSTEM INFORMATION **********************/
  2. #define INCL_BASE
  3.  
  4. #include <os2.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8.  
  9. void main(void);
  10.  
  11. void main(void)
  12. {
  13.    VIOCONFIGINFO vioinfo;
  14.    KBDTYPE       kbdtype;
  15.    BYTE          bDevinfo;
  16.    CHAR          chDrives;
  17.    CHAR          ch;
  18.    HKBD          hkbd;
  19.    HMOU          hmou;
  20.    ULONG         ulDrives;
  21.    USHORT        uDevinfo;
  22.    USHORT        usDisk;
  23.    USHORT        usVersion;
  24.    USHORT        usBCount;
  25.    char          output[64];
  26.  
  27.    VioWrtTTY("\r\n", 2, 0);
  28.    VioWrtTTY("System information. Copyright Colin Goldstein (c) 1989", 54, 0);
  29.    VioWrtTTY("\r\n\n", 3, 0);
  30.  
  31.    uDevinfo = 0;
  32.    DosDevConfig(&uDevinfo, DEVINFO_MODEL, 0);
  33.    VioWrtTTY("PC model type is ", 17, 0);
  34.    itoa((int)uDevinfo, output, 10);
  35.    VioWrtTTY(output, strlen(output), 0);
  36.  
  37.    DosDevConfig(&bDevinfo, DEVINFO_SUBMODEL, 0);
  38.    itoa((int)bDevinfo, output, 10);
  39.    VioWrtTTY(":  Submodel type is ", 20, 0);
  40.    VioWrtTTY(output, strlen(output), 0);
  41.    VioWrtTTY("\r\n", 2, 0);
  42.  
  43.    DosDevConfig(&bDevinfo, DEVINFO_COPROCESSOR, 0);
  44.    VioWrtTTY("Math coprocessor is ", 20, 0);
  45.    if (!bDevinfo) {
  46.       VioWrtTTY("not ", 4, 0);
  47.    }
  48.    VioWrtTTY("installed\r\n\n", 12, 0);
  49.  
  50.    VioWrtTTY("Operating system is ", 20, 0);
  51.    DosGetVersion(&usVersion);
  52.    if ((int)(HIBYTE(usVersion)) > 9) {
  53.       VioWrtTTY("OS/2 version ", 13, 0);
  54.       ch = (HIBYTE(usVersion) / 10) + '0';
  55.       VioWrtTTY(&ch, 1, 0);
  56.       VioWrtTTY(".", 1, 0);
  57.       itoa((int)(LOBYTE(usVersion)), output, 10);
  58.       VioWrtTTY(output, strlen(output), 0);
  59.    } else {
  60.       VioWrtTTY("DOS version ", 12, 0);
  61.       ch = (HIBYTE(usVersion)) + '0';
  62.       VioWrtTTY(&ch, 1, 0);
  63.       VioWrtTTY(".", 1, 0);
  64.       itoa((int)(LOBYTE(usVersion)), output, 10);
  65.       VioWrtTTY(output, strlen(output), 0);
  66.    }
  67.    VioWrtTTY("\r\n\n", 3, 0);
  68.  
  69.    uDevinfo = 0;
  70.    DosDevConfig(&uDevinfo, DEVINFO_PRINTER, 0);
  71.    itoa(uDevinfo, output, 10);
  72.    VioWrtTTY(output, strlen(output), 0);
  73.    VioWrtTTY(" parallel adapter(s) attached", 29, 0);
  74.    VioWrtTTY("\r\n", 2, 0);
  75.  
  76.    uDevinfo = 0;
  77.    DosDevConfig(&uDevinfo, DEVINFO_RS232, 0);
  78.    itoa(uDevinfo, output, 10);
  79.    VioWrtTTY(output, strlen(output), 0);
  80.    VioWrtTTY(" serial adapter(s) attached", 27, 0);
  81.    VioWrtTTY("\r\n\n", 3, 0);
  82.  
  83.    uDevinfo = 0;
  84.    DosDevConfig(&bDevinfo , DEVINFO_FLOPPY, 0);
  85.    itoa((int)bDevinfo, output, 10);
  86.    VioWrtTTY(output, strlen(output), 0);
  87.    VioWrtTTY(" removable-disk drive(s) installed", 35, 0);
  88.    VioWrtTTY("\r\n", 2, 0);
  89.  
  90.    VioWrtTTY("Current disk drives ", 20, 0);
  91.    DosQCurDisk(&usDisk, &ulDrives);        /* gets current drive        */
  92.    for (chDrives = 'A'; chDrives <= 'Z'; chDrives++) {
  93.       if (ulDrives & 1) {                 /* if the drive bit is set,  */
  94.          VioWrtTTY(&chDrives, 1, 0);     /* displays the drive letter */
  95.          VioWrtTTY(": ", 2, 0);
  96.       }
  97.       ulDrives >>= 1;
  98.    }
  99.    VioWrtTTY("\n\n\r", 3, 0);
  100.  
  101.    kbdtype.usType    = 0;
  102.    kbdtype.reserved1 = 0;
  103.    kbdtype.reserved2 = 0;
  104.    KbdOpen(&hkbd);
  105.    DosDevIOCtl(&kbdtype, 0L, 0x0077, 0x0004, hkbd);
  106.    KbdClose(hkbd);
  107.    VioWrtTTY("Keyboard type is ", 17, 0);
  108.    if (kbdtype.usType == 0) {
  109.       VioWrtTTY("a PC/AT keyboard", 16, 0);
  110.    } else if (kbdtype.usType = 1) {
  111.       VioWrtTTY("an enhanced keyboard", 20, 0);
  112.    } else if (kbdtype.usType < 8) {
  113.       VioWrtTTY("a Japanese keyboard", 19, 0);
  114.    } else {
  115.       VioWrtTTY("unknown", 7, 0);
  116.    }
  117.    VioWrtTTY("\n\r", 2, 0);
  118.  
  119.    MouOpen(NULL, &hmou);
  120.    MouGetNumButtons(&usBCount, hmou);
  121.    MouClose(hmou);
  122.    itoa((int)usBCount, output, 10);
  123.    strcat(output, " Button mouse is attached");
  124.    VioWrtTTY(output, strlen(output), 0);
  125.    VioWrtTTY("\n\n\r", 3, 0);
  126.  
  127.    vioinfo.cb = sizeof(vioinfo);
  128.    VioGetConfig(0, &vioinfo, 0);
  129.    switch (vioinfo.adapter) {
  130.    case DISPLAY_MONOCHROME:
  131.       VioWrtTTY("Monochrome", 10, 0);
  132.       break;
  133.    case DISPLAY_CGA:
  134.       VioWrtTTY("Color graphics", 14, 0);
  135.       break;
  136.    case DISPLAY_EGA:
  137.       VioWrtTTY("Enhanced graphics", 17, 0);
  138.       break;
  139.    case DISPLAY_VGA:
  140.       VioWrtTTY("VGA", 3, 0);
  141.       break;
  142.    case DISPLAY_8514A:
  143.       VioWrtTTY("8514A", 5, 0);
  144.       break;
  145.    default:
  146.       VioWrtTTY("Unknown", 7, 0);
  147.       break;
  148.    }
  149.    VioWrtTTY(" video adapter detected", 23, 0);
  150.    VioWrtTTY("\r\n", 2, 0);
  151.  
  152.    switch (vioinfo.display) {
  153.    case MONITOR_MONOCHROME:
  154.       VioWrtTTY("Monochrome", 10, 0);
  155.       break;
  156.    case MONITOR_COLOR:
  157.       VioWrtTTY("Color", 5, 0);
  158.       break;
  159.    case MONITOR_ENHANCED:
  160.       VioWrtTTY("Enhanced", 8, 0);
  161.       break;
  162.    case MONITOR_8503:
  163.       VioWrtTTY("8503 monochrome", 15, 0);
  164.       break;
  165.    case MONITOR_851X_COLOR:
  166.       VioWrtTTY("851x color", 10, 0);
  167.       break;
  168.    case MONITOR_8514:
  169.       VioWrtTTY("8514", 4, 0);
  170.       break;
  171.    default:
  172.       VioWrtTTY("Unknown", 7, 0);
  173.       break;
  174.    }
  175.    VioWrtTTY(" monitor detected", 17, 0);
  176.    VioWrtTTY("\r\n", 2, 0);
  177.  
  178.    ltoa((vioinfo.cbMemory/1024), output, 10);
  179.    VioWrtTTY("Video adapter has ", 18, 0);
  180.    VioWrtTTY(output, strlen(output), 0);
  181.    VioWrtTTY(" Kbytes of memory", 17, 0);
  182.    VioWrtTTY("\r\n", 2, 0);
  183.  
  184.    DosExit(EXIT_PROCESS, 0);
  185. }
  186.  
  187.