int GetSystemInfo (int flag, unsigned char *ptr)
{
    if (flag == GET_SYSTEM_INFO)
    {
        if ( (int)*ptr == sizeof (oSYSTEM_INFO))
        {
        oSYSTEM_INFO *sinfo = (oSYSTEM_INFO *)ptr;
              /* don't touch extended fields */
              sinfo->num_displays = _getNumDisplays();
              sinfo->num_printers = _getNumPrinters();
              sinfo->num_drives =   _getNumDrives();
        }
        if ( (int)*ptr == sizeof (SYSTEM_INFO))
        {
        SYSTEM_INFO *sinfo = (SYSTEM_INFO *)ptr;
              /* fill extended fields */
              sinfo->num_displays = _getNumDisplays();
              sinfo->num_printers = _getNumPrinters();
              sinfo->num_drives =   _getNumDrives();
              sinfo->num_tapes =    _getNumTapes();
        }
    }
    if (flag == GET_DISPLAY_INFO)
    {
    DISPLAY_INFO *dptr = (DISPLAY_INFO *)ptr;
        dptr->xpixels = _getDisplayWidth(dptr->displayno);
        dptr->ypixels = _getDisplayHeight(dptr->displayno);
        dptr->bits_per_pixel = _getDisplayBPPix(dptr->displayno);
        dptr->planes = _getDisplayPlanes(dptr->displayno);
    }
    return 0;
}

