INT 28H: DOS Idle
Compatibility: 2.0+
Expects: none
──────────────────────────────────────────────────────────────────
Returns: none
──────────────────────────────────────────────────────────────────
This interrupt was undocumented prior to DOS 5.0, but it has been
supported without change since DOS 2.0. It lets programs such as the
DOS Print command carry out background tasks while the system awaits
keyboard input.
Programs that are idle (polling for input) can issue INT 28H or call
INT 2FH 1680H to free up a timeslice so that background tasks can operate.
DOS itself calls INT 28H during fns 01H through 0cH (DOS I/O services)
while it is awaiting user response.
This interrupt is of interest since it provides a means for TSR programs
to gain control at a point when it is safe to use DOS services such as
file I/O.
To use this with a TSR popup program, you must intercept INT 28H. Before
taking action, first call the previous INT 28H owner (that is, let the
interrupt propagate down the chain). Upon return, check to see if your
popup has been triggered. If so, it is safe to take control of the CPU.
You must save SS:IP and all registers on entry and provide a local stack.
Be sure to restore the stack and registers before returning from INT 28H.
Warning! When you gain control via INT 28H, it is NOT SAFE to call DOS
fns 01H-0cH unless you first set the DOS ErrorMode variable to 1.
It IS safe to use all other DOS fns, regardless of InDOS or
ErrorMode.
See Also: TSR/Popup Functions
INT 2FH 1680H (give up timeslice)
fn 34H (get InDOS and ErrorMode flag addresses)
DOS Functions
DOS Interrupts
-♦-