[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Int 21 Fn 26  - DOS 1+ - Create New Program Segment Prefix                 [D]

   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; the parent PSP field is set to 0
   (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
     copy

See Also: AH=4Bh,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   BYTE    apparently unused by DOS versions <= 6.00
 3Dh   BYTE    apparently used by some versions of APPEND
 3Eh   BYTE    (Novell NetWare) flag: next byte initialized if CEh
 3Fh   BYTE    (Novell NetWare) Novell task number if previous byte is CEh
 40h  2 BYTEs  DOS 5+ version to return on INT 21/AH=30h
 42h   WORD    (MSWin3) selector of next PSP (PDB) in linked list
       Windows keeps a linked list of Windows programs only
 44h  4 BYTEs  unused by DOS versions <= 6.00
 48h   BYTE    (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
 49h  7 BYTEs  unused by DOS versions <= 6.00
 50h  3 BYTEs  DOS 2+ service request (INT 21/RETF instructions)
 53h  2 BYTEs  unused in DOS versions <= 6.00
 55h  7 BYTEs  unused in DOS versions <= 6.00; can be used to make first FCB
       into an extended FCB
 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 v3+, 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 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
   MS-DOS 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).
   Novell NetWare updates the fields at offsets 3Eh and 3Fh without
     checking that a legal PSP segment is current; see AH=50h for further
     discussion

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

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson