Пример #1
0
void __DetOSInfo( void )
{
    struct _osinfo osdata;

    qnx_osinfo( 0, &osdata );
    _osmajor = osdata.version / 100;
    _osminor = osdata.version % 100;
#if !defined(__386__)
    if( (osdata.sflags & _PSF_PROTECTED) != 0 ) {
        _HShift = 3;
    } else {
        _HShift = 12;
    }
    if( osdata.sflags & _PSF_EMU16_INSTALLED ) {
#else
    if( osdata.sflags & _PSF_EMU32_INSTALLED ) {
#endif
        __r87 = 0;
        __87 = 3;
    } else if( osdata.fpu >= 387 ) {
        __r87 = 3;
        __87 = 3;
    } else if( osdata.fpu != 0 ) {
        __r87 = 1;
        __87 = 1;
    } else {
        __r87 = 0;
        __87 = 0;
    }
}
Пример #2
0
static bool cm_init( init_mode install )
/**************************************/
{
    struct itimercb     timercb;
    struct _osinfo      osinfo;
    MOUSEORD            row;
    MOUSEORD            col;

    MouseInstalled = false;
    if( install != INIT_MOUSELESS ) {
        MouseCtrl = mouse_open( 0, 0, UIConHandle );
        if( MouseCtrl != 0 ) {
            timercb.itcb_event.evt_value = UIProxy;
            MouseTimer = mktimer( TIMEOFDAY, _TNOTIFY_PROXY, &timercb );
            if( MouseTimer == -1 ) {
                mouse_close( MouseCtrl );
            } else {
                MouseInstalled = true;

                qnx_osinfo( 0, &osinfo );
                _SysTime = (struct _timesel __far *)MK_FP( osinfo.timesel, 0 );

                UIData->mouse_xscale = 1;
                UIData->mouse_yscale = 1;

                checkmouse( &MouseStatus, &row, &col, &MouseTime );
                MouseRow = row;
                MouseCol = col;
                _stopmouse();
            }
        }
    }
    return( MouseInstalled );
}
Пример #3
0
char *InitSys( void )
{
    struct _osinfo  osinfo;

    qnx_osinfo( 0, &osinfo );
    SysTime = MK_FP( osinfo.timesel, 0 );
    NSecScale = (osinfo.version >= 410) ? 1000000 : (64UL*1024)*10;
    StartSecs = SysTime->seconds;
    CurrentBaud = -1;
    BlockIndex = -1;
    return( NULL );
}
Пример #4
0
/*
 * ScreenInit - get screen info
 */
void ScreenInit( void )
{
    struct _osinfo              info;
    int                         rows, cols;
    unsigned                    size;
    unsigned                    seg;
    vi_rc                       rc;


    QNXCon = console_open( QNXConHandle, O_WRONLY );
    if( QNXCon == NULL ) {
        // FatalError( ERR_WIND_NO_MORE_WINDOWS );
        ChangeDirectory( HomeDirectory );
        exit( 0 );
    }
    if( console_size( QNXCon, QNXConsole, 0, 0, &rows, &cols ) != 0 ) {
        console_close( QNXCon );
        FatalError( ERR_WIND_NO_MORE_WINDOWS );
    }
    rc = BIOSKeyboardInit();
    if( rc != ERR_NO_ERR ) {
        console_close( QNXCon );
        FatalError( rc );
    }
    EditVars.WindMaxWidth = cols;
    EditVars.WindMaxHeight = rows;

    qnx_osinfo( 0, &info );
    switch( info.primary_monitor ) {
    case _MONITOR_PGS:
    case _MONITOR_CGA:
    case _MONITOR_PS30_COLOR:
    case _MONITOR_EGA_COLOR:
    case _MONITOR_VGA_COLOR:
        EditFlags.Color = TRUE;
        break;
    case _MONITOR_EGA_MONO:
    case _MONITOR_VGA_MONO:
    case _MONITOR_PS30_MONO:
        EditFlags.BlackAndWhite = TRUE;
        break;
    default:
        EditFlags.Monocolor = TRUE;
        break;
    }
    size = cols * rows * sizeof( char_info );
    seg = qnx_segment_alloc( size );
    Scrn = MK_FP( seg, 0 );
    ScreenPage( 0 );

} /* ScreenInit */
Пример #5
0
BOOL MYRTLEXP QnxCmpFile( char *f1, char *f2, int len )
  {  BOOL  b1,b2;
     static struct _osinfo oi;
     static char   name[16] = "";
     static int    nmlen;
//CCurrent machine name
    if ( !name[0] ) {
      qnx_osinfo( 0, &oi );
      Sprintf( name,"//%ld",oi.nodename );
      nmlen = strLen( name );
    }
//Cmp not paths
    if ( !f1 || !f2 || f1[0] != '/' || f2[0] != '/' )
      if ( len < 0 )
        return StrCmp(f1,f2) == 0;
       else
        return StrNCmp(f1,f2,len) == 0;
//Paths cmp
    b1 = (f1[0] == '/' && f1[1] == '/');
    b2 = (f2[0] == '/' && f2[1] == '/');

    if ( b1 != b2 ) {
      if ( !b1 ) {
        if ( StrNCmp(name,f2,nmlen) != 0 ) return FALSE;
        if ( len >= 0 && strLen(f2) == len ) len -= nmlen;
        f2 += nmlen;
      }
      if ( !b2 ) {
        if ( StrNCmp(name,f1,nmlen) != 0 ) return FALSE;
        if ( len >= 0 && strLen(f1) == len ) len -= nmlen;
        f1 += nmlen;
      }
    }
    if ( len < 0 )
      return StrCmp(f1,f2) == 0;
     else
      return StrNCmp(f1,f2,len) == 0;
}
Пример #6
0
bool intern initmonitor( void )
/*****************************/
{
    struct _osinfo      info;

    if( UIConCtrl == NULL )
        return( false );

    qnx_osinfo( UIConNid, &info );
    switch( info.primary_monitor ) {
    case _MONITOR_PGS:
    case _MONITOR_CGA:
    case _MONITOR_PS30_COLOR:
        UIData->colour = M_CGA;
        break;
    case _MONITOR_EGA_COLOR:
        UIData->colour = M_EGA;
        break;
    case _MONITOR_VGA_COLOR:
        UIData->colour = M_VGA;
        break;
    case _MONITOR_EGA_MONO:
    case _MONITOR_VGA_MONO:
    case _MONITOR_PS30_MONO:
        UIData->colour = M_BW;
        break;
    default:
        UIData->colour = M_MONO;
        break;
    }

    /* notify if screen size changes */
    signal( SIGDEV, &state_handler );
    console_arm( UIConCtrl, UIConsole, 0,
            _CON_EVENT_SIZE|_CON_EVENT_ACTIVE|_CON_EVENT_SIZE );

    return( true );
}
Пример #7
0
static void DoMouseInit( int type, char *init, const char *input )
{
    struct _osinfo      osinfo;
    MOUSEORD            row;
    MOUSEORD            col;

    MouseType = type;
    uimouseforceoff();
    uiwrite( init );
    TrieAdd( EV_MOUSE_PRESS, input );

    MouseInstalled = true;

    UIData->mouse_xscale = 1;
    UIData->mouse_yscale = 1;

    qnx_osinfo( 0, &osinfo );
    SysTimeSel = osinfo.timesel;

    checkmouse( &MouseStatus, &row, &col, &MouseTime );
    MouseRow = row;
    MouseCol = col;
    stopmouse();
}
Пример #8
0
trap_retval ReqGet_sys_config( void )
{
    struct  _osinfo     info;
    get_sys_config_ret  *ret;

    ret = GetOutPtr(0);
    if( PmdInfo.loaded )  {
        info = PmdInfo.hdr.osdata;
    } else {
        qnx_osinfo( 0, &info );
    }
    ret->sys.mad = MAD_X86;
    ret->sys.os = MAD_OS_QNX;
    ret->sys.osmajor = info.version / 100;
    ret->sys.osminor = info.version % 100;
    if( info.sflags & _PSF_EMULATOR_INSTALLED ) {
        ret->sys.fpu = X86_EMU;
    } else if( (info.sflags & _PSF_NDP_INSTALLED) == 0 ) {
        ret->sys.fpu = X86_NO;
    } else {
        switch( info.fpu ) {
        case 87:
            ret->sys.fpu = X86_87;
            break;
        case 287:
            ret->sys.fpu = X86_287;
            break;
        case 387:
        default:
            ret->sys.fpu = X86_387;
            break;
        }
    }
    switch( info.cpu ) {
    case 8088:
        ret->sys.cpu = X86_86;
        break;
    case 186:
        ret->sys.cpu = X86_186;
        break;
    case 286:
        ret->sys.cpu = X86_286;
        break;
    case 386:
    default:
        ret->sys.cpu = X86_386;
        break;
    case 486:
        ret->sys.cpu = X86_486;
        break;
    case 586:
        ret->sys.cpu = X86_586;
        break;
    case 686:
        ret->sys.cpu = X86_686;
        break;
    }
    if( info.sflags & _PSF_PROTECTED ) {
        ret->sys.huge_shift = 3;
    } else {
        ret->sys.huge_shift = 12;
    }
    return( sizeof( *ret ) );
}
Пример #9
0
void MYRTLEXP QueryHotPaths( PHotPathArray arr )
  {
     arr->DeleteAll();
#if defined(__QNX__)
    int     num_nids;
    char    node_name[22];
    char    buffer[ 500 ];
    char    str[100];
    struct _osinfo osi;

    if ( (num_nids=qnx_net_alive(buffer,sizeof(buffer))) == -1)
      return;

    for( int n = 1; n < num_nids+1; n++) {
      if ( !buffer[n] ||
           qnx_osinfo( n,&osi ) == -1 )
        continue;

      qnx_nidtostr( n, node_name, sizeof(node_name));
      SNprintf( str, sizeof(str), "//%ld/ ~%-6s~ CPU:~%3u~-~%3d~/~%3d~ Ver:~%2d.%02d%c~ Mem:~%d~/~%d~",
                osi.nodename,
                osi.machine, osi.cpu, osi.fpu,
                osi.cpu_speed, osi.version/100, osi.version%100, osi.release,
                osi.freememk,  osi.totmemk );

      PHotPathEntry pe = arr->Add( new HotPathEntry );
      pe->Path.printf( "//%s/", node_name );
      pe->Label.printf( " ~%c~ ³",'A'+n-1 );
      pe->Description = str;
    }
#else
#if defined(__HDOS__)
   int  count,c,old;
   char astr[] = "X:\\",
        str[]  = "X";

   count = setdisk( old = getdisk() );
   for ( c = 0; c < count; c++ ) {
     if ( _chdrive(c+1) != 0 )
       continue;

     astr[0] = (char)('A'+c);
     astr[0] = (char)('A'+c);

     CONSTSTR d;
     switch( GetDiskType( c+1 ) ) {
      case     DRIVE_CDROM: d = "CD-ROM drive";     break;
      case   DRIVE_RAMDISK: d = "RAM drive";        break;
      case    DRIVE_REMOTE: d = "Remote drive";     break;
      case     DRIVE_FIXED: d = "Hard drive";       break;
      case DRIVE_REMOVABLE: d = "Removable drive";  break;
      case     DRIVE_SUBST: d = "Subst drive";      break;
      case  DRIVE_DBLSPACE: d = "DblSpace drive";   break;
                   default: d = NULL;
     }
     if ( d ) {
       MyString s;
       s.printf( " ~%s~ ¦", str );
       arr->Add( new HotPathEntry( astr, s, d ) );
     }
   }
   setdisk( old );

#else
#if defined(__HWIN32__)
   DWORD dw = GetLogicalDrives();
   UINT  type;
   char  astr[] = "X:\\",
         str[]  = "X";
   for ( int n = 0; n < 32; n++ ) {
     astr[0] = (char)('A'+n);
     str[0]  = (char)('A'+n);

     if ( (dw & (1UL<<n)) == 0 || (type=GetDriveType(astr)) <= 1 )
       continue;

     CONSTSTR d;
     switch( type ) {
      case     DRIVE_CDROM: d = "CD-ROM drive";    break;
      case   DRIVE_RAMDISK: d = "RAM drive";        break;
      case    DRIVE_REMOTE: d = "Remote drive";     break;
      case     DRIVE_FIXED: d = "Hard drive";       break;
      case DRIVE_REMOVABLE: d = "Removable drive";  break;
                   default: d = NULL;
     }
     if ( d ) {
       MyString s;
       s.printf( " ~%s~ ¦", str );
       arr->Add( new HotPathEntry( astr, s, d ) );
     }
   }
#else
#if defined(__HWIN16__)
   UINT  type;
   char  astr[] = "X:\\",
         str[]  = "X";

   for ( int n = 0; n < 26; n++ ) {
     if ( (type=GetDriveType(n)) == 1 )
       continue;

     astr[0] = (char)('A'+n);
     str[0]  = (char)('A'+n);

     CONSTSTR d;
     switch( type ) {
      case    DRIVE_REMOTE: d = "Remote (network) drive"; break;
      case     DRIVE_FIXED: d = "Hard drive";             break;
      case DRIVE_REMOVABLE: d = "Removable drive";        break;
      case               0: d = "Undefined drive";        break;
                   default: d = NULL;
     }
     if ( d ) {
       MyString s;
       s.printf( " ~%s~ ¦", str );
       arr->Add( new HotPathEntry( astr, s, d ) );
     }
   }
#else
#error ERR_PLATFORM
#endif
#endif
#endif
#endif
}