HelpPC 2.10 Quick Reference Utility Copyright 1991 David Jurgens

                    MCB - DOS Memory Control Block Format

    Offset Size                Description

       00   byte       'M' 4Dh  member of a MCB chain, (not last)
                       'Z' 5Ah  indicates last entry in MCB chain
                       other values cause "Memory Allocation Failure" on exit
       01   word       PSP segment address of MCB owner (Process Id)
                       possible values:
                           0 = free
                           8 = Allocated by DOS before first user pgm loaded
                           other = Process Id/PSP segment address of owner
       03   word       number of paras related to this MCB (excluding MCB)
       05 11bytes      reserved
       08  8bytes      ASCII program name, NULL terminated if less than max
                       length (DOS 4.x+)
       10  nbytes      first byte of actual allocated memory block


       - to find the first MCB in the chain, use  INT 21,52
       - DOS 3.1+ the first memory block contains the DOS data segment
         ie., installable drivers, buffers, etc
       - DOS 4.x the first memory block is divided into subsegments,
         with their own memory control blocks; offset 0000h is the first
       - the 'M' and 'Z' are said to represent Mark Zbikowski
       - the MCB chain is often referred to as a linked list, but
         technically isn't


           DOS 4.x Initial Data Segment Subsegment Control Blocks:

    Offset Size          Description
       00   byte       subsegment type
                       'D'  device driver
                       'E'  device driver appendage
                       'I'  Installable File System driver
                       'F'  FILES= control block storage area (for FILES>5)
                       'X'  FCBS= control block storage area, if present
                       'C'  BUFFERS EMS workspace area if BUFFERS /X is used
                       'B'  BUFFERS= storage area
                       'L'  LASTDRIVE= current directory structure array
                       'S'  STACKS= code/data area, if present (see below)
       01   word       paragraph of subsegment start
       03   word       subsegment size in paragraphs
       05  3bytes      unused
       08              types "D" and "I", filename of driver loaded driver


       - see  INT 21,48  INT 21,49  INT 21,4A

Esc or Alt-X to exit Memory Control Block Home/PgUp/PgDn/End ←↑↓→
Converted to HTML in 2006 by Timo Bingmann