Add this page to your book
Remove this page from your book
Note: This API call is for DOS and Win16 personality only. Use Family API for portability.
2 and higher
DOS IDLE INTERRUPT
SS:SP = top of MS-DOS stack for I/O functions
all registers preserved
This interrupt is invoked each time one of the DOS character input functions loops while waiting for input. Since a DOS call is in progress even though DOS is actually idle during such input waits, hooking this function is necessary to allow a TSR to perform DOS calls while the foreground program is waiting for user input.
The INT 28h handler may invoke any INT 21h function except functions 00h through 0Ch.
under DOS 2.x, the critical error flag (the byte immediately after the InDOS flag) must be set in order to call DOS functions 50h/51h from the INT 28h handler without destroying the DOS stacks.
calls to INT 21/AH=3Fh,40h from within an INT 28 handler may not use a handle which refers to CON
at the time of the call, the InDOS flag (see INT 21/AH=34h) is normally set to 01h; if larger, DOS is truly busy and should not be reentered the default handler is an IRET instruction supported in OS/2 compatibility box
the _MS-DOS_Programmer's_Reference_ for DOS 5.0 incorrectly documents this interrupt as superseded the performance of NetWare Lite servers (and probably other peer-to-peer networks) can be dramatically improved by calling INT 28 frequently from an application's idle loop
INT 21/AH=34h,INT 2A/AH=84h,INT 2F/AX=1680h
Text based on Ralf Brown Interrupt List Release 61
|osFree Macro Library|
|Video I/O||@SetMode @SetCurSz @SetCurPos @GetCur @SetPage @ScrollUp @ScrollDn @Scroll @GetChAtr @PutChAtr @PutCh @SetPalet @SetColor @SetDot @GetDot @WrtTTY @VideoState @GetMode @GetDisplay @GetVideoState @GetEGAInfo @Cls|
|Hardware info||@Equipment @MemSize|
|Serial I/O||@AuxInit @AuxSendChar @AuxRecieveChar @AuxStatus|
|Tape I/O||@TapeOn @TapeOff @TapeRead @TapeWrite|
|Keyboard I/O||@KbdStatus @CharIn @CharPeek|
|Printer I/O||@PrnPrint @PrnInit @PrnStatus|
|Disk I/O||@DskReset @DskStatus @DskRead @DskWrite @DskVerify @DskFormat|
|Date and Time||@SetTime @GetTime|
|Mouse||@MouInit @MouShowPointer @MouStatus @MouSetPos @MouSetMickey @MouRegion|
|Memory manager||@ModBlok SET_BLOCK|