|
| |
Interrupt 23h Ctrl-Break Exit Address
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 06h). If the user written Ctrl-
Break routine saves all registers, it may end with a return-
from-interrupt instruction (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,
then ctrl-C/CR/LF are output. 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.
See Also Func/33h |