[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
        AH = 4Bh
        AL = type of load
            00h load and execute
            01h load but do not execute
            03h load overlay
            04h load and execute in background (European MSDOS 4.0 only)
                "Exec & Go" (see also AH=80h)
        DS:DX -> ASCIZ program name (must include extension)
        ES:BX -> parameter block (see below)
        CX = mode (subfunction 04h only)
                0000h child placed in zombie mode after termination
                0001h child's return code discarded on termination
Return: CF clear if successful
            BX,DX destroyed
            if subfunction 01h, process ID set to new program's PSP; get with
                INT 21/AH=62h
        CF set on error
            AX = error code (01h,02h,05h,08h,0Ah,0Bh) (see AH=59h)
Notes:  DOS 2.x destroys all registers, including SS:SP
        for functions 00h and 01h, the calling process must ensure that there
          is enough unallocated memory available; if necessary, by releasing
          memory with AH=49h or AH=4Ah
        for function 01h, the AX value to be passed to the child program is put
          on top of the child's stack
        for function 03h, DOS assumes that the overlay is being loaded into
          memory allocated by the caller
        function 01h was undocumented prior to the release of DOS 5.0
        some versions (such as DR-DOS 6.0) check the parameters and parameter
          block and return an error if an invalid value (such as an offset of
          FFFFh) is found
        background programs under European MSDOS 4.0 must use the new
          executable format
        new executables begin running with the following register values
                AX = environment segment
                BX = offset of command tail in environment segment
                CX = size of automatic data segment (0000h = 64K)
                ES,BP = 0000h
                DS = automatic data segment
                SS:SP = initial stack
          the command tail corresponds to an old executable's PSP:0081h and
          following, except that the 0Dh is turned into a NUL (00h); new
          format executables have no PSP
        under the FlashTek X-32 DOS extender, only function 00h is supported
          and the pointers are passed in DS:EDX and ES:EBX
BUGS:   DOS 2.00 assumes that DS points at the current program's PSP
        Load Overlay (subfunction 03h) loads up to 512 bytes too many if the
          file contains additional data after the actual overlay
SeeAlso: AH=4Ch,AH=4Dh,AH=64h"OS/2",AH=8Ah,INT 2E

See Also: 214B05
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson