I am using freedos 1.3
Tried using functions dpmi (2 example , doing the same thing):
Code: Select all
#include "dos/pc.bi"
#include "dos/dos.bi"
#include "dos/dpmi.bi"
#include "dos/go32.bi"
dim shared as _go32_dpmi_seginfo old_vector , new_vector
sub handler cdecl( r as _go32_dpmi_registers ptr)
? "ctrl+c"
__dpmi_simulate_real_mode_procedure_iret(r)
End Sub
sub set_handler()
dim as _go32_dpmi_registers regs
_go32_dpmi_get_real_mode_interrupt_vector(&h23, @old_vector)
new_vector.pm_offset = cint(@handler)
_go32_dpmi_allocate_real_mode_callback_iret(@new_vector, @regs)
_go32_dpmi_set_real_mode_interrupt_vector(&h23, @new_vector)
End Sub
sub unset_handler()
_go32_dpmi_set_real_mode_interrupt_vector(&h23, @old_vector)
_go32_dpmi_free_real_mode_callback(@new_vector)
End Sub
set_handler()
do
if inkey = chr(27) then exit do
? Time
Loop
unset_handler()
Code: Select all
#include "dos/pc.bi"
#include "dos/dos.bi"
#include "dos/dpmi.bi"
#include "dos/go32.bi"
dim shared as _go32_dpmi_seginfo old_vector , new_vector
sub handler()
asm
iret
End Asm
End Sub
sub set_handler()
_go32_dpmi_get_protected_mode_interrupt_vector(&h23, @old_vector)
new_vector.pm_offset = cint(@handler)
new_vector.pm_selector = _go32_my_cs()
_go32_dpmi_allocate_iret_wrapper(@new_vector)
_go32_dpmi_set_protected_mode_interrupt_vector(&h23, @new_vector)
End Sub
sub unset_handler()
_go32_dpmi_set_protected_mode_interrupt_vector(&h23, @old_vector)
_go32_dpmi_free_iret_wrapper(@new_vector)
End Sub
set_handler()
do
if inkey = chr(27) then exit do
? Time
Loop
unset_handler()
I don't know what to do anymore. Tell me, who is well versed in DOS, how to make it so that when you press CTRL + C, the program does not end, but only notifies you of a keystroke. At the moment, my program notifies and ends.