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