Interrupt 23h   Ctrl-Break Exit Address 
(0:008Ch) 

   If the user enters a Ctrl-Break during STDIN, STDOUT, STDPRN, or STDAUX,
intÿ23h is executed. If BREAK is on, int 23h is checked on MOST function calls
(notably Int\21f\06). If the user written Ctrl-Break routine saves all
registers, it may end with a return-from-interrupt instruction
INTEL\80x86op -IRET to continue program execution. If the user-written
interrupt program returns with a long return, the carry flag is used to
determine whether the program will be aborted. If the carry flag is set, the
program is aborted, otherwise execution continues (as with a return by IRET).

   If the user-written Ctrl-Break interrupt uses function calls 09h or 0Ah,
(Display String or Buffered Keyboard Input) then a three-byte string of
03h-0Dh-0Ah (ETX/CR/LF) is sent to STDOUT. If execution is continued with an
IRET, I/O continues from the start of the line.

   When the interrupt occurs, all registers are set to the value they had when
the original function call to DOS was made. There are no restrictions on what
the Ctrl-Break handler is allowed to do, including DOS function calls, as long
as the registers are unchanged if an IRET is used. If the program creates a new
segment and loads a second program which itself changes the Ctrl-Break address,
the termination of the second program and return to the first causes the
Ctrl-Break address to be restored from the PSP to the value it had before
execution of the second program.