How to View Memory Map Details in MS-DOS 6.22

Managing system memory effectively in MS-DOS 6.22 requires understanding how resident programs, drivers, and system resources occupy conventional, upper, and extended memory. This guide details the native MS-DOS command used to display the active memory map, outlines the specific switches required to reveal detailed diagnostic data, and explains how to interpret the resulting memory layout.

The primary command used to inspect memory allocation in MS-DOS 6.22 is MEM. Running MEM by itself provides a high-level summary of total, used, and free memory across conventional, upper, reserved, and extended (XMS) memory regions.

To view the active, low-level memory map details, the MEM command must be run with specific command-line switches:

The MEM /DEBUG Command

The /DEBUG (or /D) switch provides the most exhaustive active memory map available in MS-DOS 6.22. It outputs:

  • Internal device drivers loaded by the system (such as CON, AUX, and PRN).
  • Installed third-party device drivers (such as HIMEM.SYS or mouse drivers).
  • Active memory blocks, including terminate-and-stay-resident (TSR) programs.
  • Segment addresses (in hexadecimal notation), block sizes, and allocation status.

To prevent the extensive output from scrolling off the screen, append the /PAGE (or /P) switch:

MEM /D /P

The MEM /CLASSIFY Command

For a cleaner breakdown that focuses on executable programs and drivers rather than raw memory segments, use the /CLASSIFY (or /C) switch. This command groups loaded programs by memory region and displays:

  • The name of each resident program and driver.
  • The exact amount of conventional memory each module consumes.
  • The amount of upper memory (UMB) each module consumes, if applicable.
  • The largest executable program size remaining in conventional memory.

Run this command with the pagination switch:

MEM /C /P

Additional Useful Memory Switches

  • MEM /FREE (or /F): Displays a list of the free space remaining in both conventional and upper memory areas, including the segment addresses and sizes of each free block.
  • MEM /MODULE <name> (or /M <name>): Displays a detailed memory map for a single specified program or driver currently residing in memory (e.g., MEM /M DOSKEY).

Interpreting the Memory Map Output

When running MEM /D, the output columns indicate:

  • Address: The starting hexadecimal segment address of the memory allocation block.
  • Name: The program, driver, or system component owning the block (or free if unallocated).
  • Size: The total byte size of that allocation block, displayed in both decimal and hexadecimal.
  • Type: The classification of the block, such as System Program, Device Driver, Data, or Program.