Compatibility:  Undoc  3.0+
Expects: AX    ae00H
DX    ffffH
DS:BX address of length-prefixed command-line buffer
DS:SI address of an 8-byte upshifted, blank-padded command name
                                                                  
Returns: AL    flag: 00H = no, ISR does not want to intercept
ffH = yes, ISR will process the command
                                                                  
Info: This is intended as a way to intercept commands typed at the DOS
command prompt before COMMAND.COM gets a chance to process them.

A TSR program hooks INT 2fH and watches for AX=ae00H.  Then it
compares the text at DS:SI with a command that it wishes to
intercept.  If it wants to handle that command, it sets AL=ffH
and executes an IRET.  If it has no interest, it just passes
control to the next INT 2fH handler.

Don't process the command yet.  When you signal interest in a
command, COMMAND.COM will immediately execute INT 2fH ae01H and
you should take action only upon that event.

DS:BX On entry, DS:BX points to a command line buffer in the form:
RawCmdLineRec
Offset Size Contents
                                                              
+0      1  bBufLen   length of the buffer
+1      1  bTextLen  length of the command-line text (abText)
+2      n  abText    text of the command line
2+n     1  bCr       one byte of 0dH (Carriage Return)
3+n            size of a RawCmdLineRec structure

Note that this is layout is similar to that used in DOS fn 0aH
(get buffered string input), which COMMAND.COM uses to obtain
user input.

When intercepting commands, you must save a copy of this buffer.
See Notes, below.

DS:SI On entry, DS:SI points to an upshifted, blank-padded version of
the first word on the command line.  This text will be exactly
eight characters long; space characters (ASCII 20H) are appended
to the text to fill-out the 8-character buffer:
CmdNameRec
Offset Size Contents
                                                              
+0      8  abCmd     blank-padded command name
8            size of a CmdNameRec structure

AL If you wish to intercept this command, set AL to ffH and return
to DOS via an IRET.  COMMAND.COM will issue an INT 2fH with
AX=ae01H immediately, and you can take action then.

If you do not wish to intercept this command, you should pass it
down the chain by using a FAR JMP to the address which originally
handled INT 2fH when your TSR was installed.

Notes: When COMMAND.COM issues the subsequent INT 2fH ae01H, it does not
supply the DS:BX pointer to the full command line; therefore, you
must save this address for use in the ae01H subfunction.


See Also: INT 2fH aexxH Command Processor Hook
- -

INT 2fH ae00H: Notify Pending Command