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; } }
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 ); }
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 ); }
/* * 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 */
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; }
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 ); }
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(); }
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 ) ); }
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 }