void __restore_int_ctrl_break( void ) { if( __old_int_ctrl_break == 0 ) { return; } if( __int23_exit == __restore_int ) { __int23_exit = __restore_int23; } else if( __int23_exit == __restore_int_ctrl_break ) { __int23_exit = __null_int23_exit; } #if defined(__WINDOWS_386__) TinySetVect( CTRL_BRK_VEC, __old_int_ctrl_break ); #elif defined( __386__ ) if( _IsPharLap() ) { pharlap_rm_setvect( CTRL_BRK_VEC, __old_int_ctrl_break ); pharlap_pm_setvect( CTRL_BRK_VEC, __old_pm_int_ctrl_break ); } else if( __DPMI_hosted() == 1 ) { DPMISetRealModeInterruptVector( CTRL_BRK_VEC, __old_int_ctrl_break ); DPMISetPMInterruptVector( CTRL_BRK_VEC, __old_pm_int_ctrl_break ); } else { _dos_setvect( CTRL_BRK_VEC, __old_int_ctrl_break ); } #else _dos_setvect( CTRL_BRK_VEC, __old_int_ctrl_break ); #endif __old_int_ctrl_break = 0; }
void __restore_int23( void ) { if( __old_int23 == 0 ) { return; } if( __int23_exit == __restore_int ) { __int23_exit = __restore_int_ctrl_break; } else if( __int23_exit == __restore_int23 ) { __int23_exit = __null_int23_exit; } #if defined(__WINDOWS_386__) TinySetVect( 0x23, __old_int23 ); #elif defined( __386__ ) if( _IsPharLap() ) { pharlap_rm_setvect( 0x23, __old_int23 ); pharlap_pm_setvect( 0x23, __old_pm_int23 ); } else if( __DPMI_hosted() == 1 ) { DPMISetRealModeInterruptVector( 0x23, __old_int23 ); DPMISetPMInterruptVector( 0x23, __old_pm_int23 ); } else { /* this is what it used to do */ _dos_setvect( 0x23, __old_int23 ); } #else _dos_setvect( 0x23, __old_int23 ); #endif __old_int23 = 0; }
void MySetRMVector( unsigned vect, unsigned seg, unsigned off ) { DPMISetRealModeInterruptVector( vect, MK_FP( seg, off ) ); }