| |
Interrupt 2Eh PRIMARY SHELL PROGRAM LOADER
Input |
DOS1 |
N |
DOS2 |
N |
DOS3 |
Y |
DOS5 |
Y |
Output |
AX |
|
|
|
|
AX |
BX |
|
|
|
|
BX |
CX |
|
|
|
|
CX |
DX |
|
|
|
|
DX |
DS:SI |
ASCIIZ
Command Line |
|
CF |
This interrupt passes a command line addressed by DS:SI to
COMMAND.COM. The command line must be formatted just like the
unformatted parameter area of a Program Segment Prefix. That is,
the first byte must be a count of characters, and the second and
subsequent bytes must be a command line with parameters,
terminated by a carriage return character.
When executed, int 2Eh will reload the transient part of the
command interpreter if it is not currently in memory. If called
from a program that was called from a batch file, it will abort
the batch file. If executed from a program which has been spawned
by the EXEC function, it will abort the whole chain and probably
lock up the computer. Int 2Eh also destroys all registers
including the stack pointer.
Int 2Eh is called from the transient portion of the program to
reset the DOS PSP pointers using the above Functions #81 & #80,
and then reenters the resident program.
When called with a valid command line, the command will be
carried out by COMMAND.COM just as though you had typed it in at
the DOS prompt. Note that the count does not include the carriage
return. This is an elegant way to perform a SET from an
application program against the master environment block for
example.
Command Line Format:
Count byte
ASCII string
Carriage return
Null byte
Notes:
1) Destroys all registers including stack pointer
2) Seems to work OK in both DOS 2.x and 3.x
3) It is reportedly not used by DOS.
4) As far as known, int 2Eh is not used by DOS 3.1, although it
was called by COMMAND.COM of PCDOS 3.0, so it appears to be
in 3.1 only for the sake of compatibility. |