INT 21,4B - EXEC/Load and Execute Program
AH = 4B AL = 00 to load and execute program = 01 (Undocumented) create program segment prefix and load program, but don't execute. The CS:IP and SS:SP of the program is placed in parameter block. Used by debuggers = 03 load program only = 04 called by MSC spawn() when P_NOWAIT is specified DS:DX = pointer to an ASCIIZ filename ES:BX = pointer to a parameter block on return: AX = error code if CF set (see DOS ERROR CODES) ES:BX = when AL=1, pointer to parameter block similar to: Offset Size Description 00 word when AL=1, segment of env. or zero if using parents env. word when AL=3, segment of load point for overlay 02 dword when AL=1, pointer to cmd line at PSP 80h word when AL=3, relocation factor for EXE overlay 06 dword pointer to default FCB passed at PSP 5Ch 0A dword pointer to default FCB passes at PSP 6Ch 0E dword value of program SS:SP 12 dword value of program CS:IP - allows execution of an external program as well as overlay management from within an application - all registers except CS and IP are destroyed - SS and SP should be preserved in code segment before call since a bug in DOS version 2.x destroys these - return code can be retrieved if child process exits via INT 21,4C - calling process must assure presence of enough unallocated memory - subfunction 4 returns with an error under DOS 4.x+ - calls INT 21,55 - see also INT 21,26