Ejemplo n.º 1
0
void GrabHandlers( void )
{
    _old10 = TinyGetVect( 0x10 );
    _old1b = TinyGetVect( 0x1b );
    _old23 = TinyGetVect( 0x23 );
    _old24 = TinyGetVect( 0x24 );
    _old28 = TinyGetVect( 0x28 );
    TinySetVect( 0x10, Interrupt10 );
    TinySetVect( 0x1b, Interrupt1b_23 );
    TinySetVect( 0x23, Interrupt1b_23 );
    TinySetVect( 0x24, Interrupt24 );
    TinySetVect( 0x28, orig28 );
}
Ejemplo n.º 2
0
void GUImain( void )
{
    if( _osmajor == 2 ) {
        Fail = 0;
    } else {
        Fail = 3;
    }
    orig28 = TinyGetVect( 0x28 );
    DebugMain();
}
Ejemplo n.º 3
0
char *RemoteLink( char *name, bool server )
{
    unsigned    i;

    server = server;
    if( name == NULL || *name == '\0' )
        name = DefLinkName;
#if defined(__OS2__)
  #if defined(__386__)
    {
        HMODULE hmod;

        if( DosLoadModule( NULL, 0, "NETAPI32", &hmod ) != 0 ) {
            return( NotThere );
        }
        if( DosQueryProcAddr( hmod, 0, "NetBios32Submit", (PFN*)&NetBiosSubmit ) != 0 ) {
            return( NotThere );
        }
    }
  #else
    {
        HMODULE hmod;

        if( DosLoadModule( NULL, 0, "NETAPI", &hmod ) != 0 ) {
            return( NotThere );
        }
        if( DosGetProcAddr( hmod, "NETBIOSSUBMIT", &NetBiosSubmit ) != 0 ) {
            return( NotThere );
        }
    }
  #endif
#elif !defined( __WINDOWS__ ) && !defined( __NT__ )
    {
        byte                *net_bios;
        tiny_dos_version    dos_ver;
        int                 is_nt = 0;

        net_bios = (void *)TinyGetVect( NET_BIOS_INT );
        if( net_bios == 0 || *net_bios == 0xcf ) {
            return( NotThere );
        }

        /* Check if running under NT; based on MS KB 100290. */
        dos_ver = GetTrueDOSVersion();
        if( dos_ver.major == 5 && dos_ver.minor == 50 )
            is_nt = 1;
        if( !is_nt )
            SkipEnum = 1;
    }
#endif
    NetCtlBlk.ncb_command = NET_INVALID_CMD;
    NetBIOS( &NetCtlBlk );
    if( NetCtlBlk.ncb_retcode != NRC_ILLCMD ) {
        return( NotThere );
    }

    LanaNum = GetLanaNum();

    /* NetBIOS reset is required on NT, but kills connections on DOS. */
#ifdef __NT__
    memset( &NetCtlBlk, 0, sizeof( NetCtlBlk ) );
    NetCtlBlk.ncb_command = NCBRESET;
    NetCtlBlk.ncb_lana_num = LanaNum;
    NetBIOS( &NetCtlBlk );
    if( NetCtlBlk.ncb_retcode != NRC_GOODRET ) {
        return( NotThere );
    }
#endif

    memset( &NetCtlBlk, 0, sizeof( NetCtlBlk ) );
    for( i = 1; i < NCBNAMSZ; ++i ) {
        NetCtlBlk.ncb_name[i] = (*name != '\0') ? *name++ : ' ';
    }
    NetCtlBlk.ncb_name[0] = ( server ) ? 'S' : 'C';
    NetCtlBlk.ncb_command = NCBADDNAME;
    NetCtlBlk.ncb_lana_num = LanaNum;
    NetBIOS( &NetCtlBlk );
    if( NetCtlBlk.ncb_retcode == NRC_DUPNAME || NetCtlBlk.ncb_retcode == NRC_INUSE ) {
        return( TRP_ERR_server_name_already_in_use );
    } else if( NetCtlBlk.ncb_retcode != NRC_GOODRET ) {
        return( TRP_ERR_NetBIOS_name_add_failed ); 
    }
    memcpy( NetCtlBlk.ncb_callname, NetCtlBlk.ncb_name, NCBNAMSZ );
    NetCtlBlk.ncb_callname[0] = ( !server ) ? 'S' : 'C';
    if( server ) {
        if( !PostListen() ) {
            return( TRP_ERR_can_not_start_server );
        }
    }
    return( NULL );
}