[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
        AH = 26h
        DX = segment at which to create PSP (see below)
Notes:  new PSP is updated with memory size information; INTs 22h, 23h, 24h
          taken from interrupt vector table
        (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
          copy
SeeAlso: AH=50h,AH=51h,AH=55h,AH=62h,AH=67h

Format of PSP:
Offset  Size    Description
 00h  2 BYTEs   INT 20 instruction for CP/M CALL 0 program termination
                the CDh 20h here is often used as a signature for a valid PSP
 02h    WORD    segment of first byte beyond memory allocated to program
 04h    BYTE    unused filler
 05h    BYTE    CP/M CALL 5 service request (FAR JMP to 000C0h)
                BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh point at 000BEh
 06h    WORD    CP/M compatibility--size of first segment for .COM files
 08h  2 BYTEs   remainder of FAR JMP at 05h
 0Ah    DWORD   stored INT 22 termination address
 0Eh    DWORD   stored INT 23 control-Break handler address
 12h    DWORD   DOS 1.1+ stored INT 24 critical error handler address
 16h    WORD    segment of parent PSP
 18h 20 BYTEs   DOS 2+ Job File Table, one byte per file handle, FFh = closed
 2Ch    WORD    DOS 2+ segment of environment for process
 2Eh    DWORD   DOS 2+ process's SS:SP on entry to last INT 21 call
 32h    WORD    DOS 3+ number of entries in JFT (default 20)
 34h    DWORD   DOS 3+ pointer to JFT (default PSP:0018h)
 38h    DWORD   DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
                used by SHARE in DOS 3.3
 3Ch  4 BYTEs   unused by DOS versions <= 5.00
                reportedly used by Novell NetWare shell 3.x
 40h  2 BYTEs   DOS 5.0 version to return on INT 21/AH=30h
 42h  6 BYTEs   unused by DOS versions <= 5.00
 48h    BYTE    (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
 49h  7 BYTEs   unused by DOS versions <= 5.00
 50h  3 BYTEs   DOS 2+ service request (INT 21/RETF instructions)
 53h  9 BYTEs   unused in DOS versions <= 5.00
 5Ch 16 BYTEs   first default FCB, filled in from first commandline argument
                overwrites second FCB if opened
 6Ch 16 BYTEs   second default FCB, filled in from second commandline argument
                overwrites beginning of commandline if opened
 7Ch  4 BYTEs   unused
 80h 128 BYTEs  commandline / default DTA
                command tail is BYTE for length of tail, N BYTEs for the tail,
                followed by a BYTE containing 0Dh
Notes:  in DOS versions 3.0 and up, the limit on simultaneously open files may
          be increased by allocating memory for a new open file table, filling
          it with FFh, copying the first 20 bytes from the default table, and
          adjusting the pointer and count at 34h and 32h.  However, DOS
          versions through  at least 3.30 will only copy the first 20 file
          handles into a child PSP (including the one created on EXEC).
        network redirectors based on the original MS-Net implementation use
          values of 80h-FEh in the open file table to indicate remote files;
          Novell NetWare reportedly also uses values of 80h-FEh
        MSDOS 5.00 incorrectly fills the FCB fields when loading a program
          high; the first FCB is empty and the second contains the first
          parameter
        some DOS extenders place protected-mode values in various PSP fields
          such as the "parent" field, which can confuse PSP walkers.  Always
          check either for the CDh 20h signature or that the suspected PSP is
          at the beginning of a memory block which owns itself (the preceding
          paragraph should be a valid MCB with "owner" the same as the
          suspected PSP).

Format of environment block:
Offset  Size    Description
 00h  N BYTEs   first environment variable, ASCIZ string of form "var=value"
      N BYTEs   second environment variable, ASCIZ string
        ...
      N BYTEs   last environment variable, ASCIZ string of form "var=value"
        BYTE    00h
---DOS 3+---
        WORD    number of strings following environment (normally 1)
      N BYTEs   ASCIZ full pathname of program owning this environment
                other strings may follow

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