|
| |
Interrupt 28h DOS SAFE TO USE
This interrupt is continuously called by DOS itself whenever it
is in a wait state (i.e., when it is waiting for keyboard input)
during a function call of 01h through 0Ch. DOS uses 3 separate
internal stacks: one for calls 01h through 0Ch; another for calls
0Dh and above; and a third for calls 01h through 0Ch when a
Critical Error is in progress. When int 28h is called, any calls
above 0Ch can be executed without destroying the internal stack
used by DOS at the time.
It is used primarily by the PRINT.COM routines, but any number of
other routines can be chained to it by saving the original vector
and calling it with a FAR call (or just JMPing to it) at the end
of the new routine.
Int 28h is being issued it is usually safe to do DOS calls. You
won't get int 28hs if a program is running that doesn't do its
keyboard input through DOS. You should rely on the timer
interrupt for these.
Int 28h is not called at all when any non-trivial foreground task
is running. As soon as a foreground program has a file open,
INT28 no longer gets called. Could make a good driver for for
abackground program that really works as long as there is nothing
else going on in the machine.
Notes:
1) The int 28h handler may invoke any int 21h function except
functions 00h through 0Ch (and 50h/51h under DOS 2.x).
2) Apparently int 28h is also called during screen writes
3) Until some program installs its own routine, this interrupt
vector simply points to an IRET opcode.
4) Supported in OS/2 1.0's DOS Compatibility Box |