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 ); }
void GUImain( void ) { if( _osmajor == 2 ) { Fail = 0; } else { Fail = 3; } orig28 = TinyGetVect( 0x28 ); DebugMain(); }
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 ); }