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
                                    -♦-