MS-DOS 6.22 Video BIOS and Adapter ROM Memory Range

This article details the exact memory allocations used by MS-DOS 6.22 within the real-mode 1 MB address space, focusing specifically on the reserved segments for the Video BIOS and peripheral adapter ROMs. Readers will learn the exact hexadecimal address ranges, how these spaces fit inside the Upper Memory Area (UMA), and how MS-DOS 6.22 memory managers interact with these hardware-reserved blocks.

The Upper Memory Area (UMA) Architecture

In MS-DOS 6.22, the central processor operates under the real-mode limitation of addressing a maximum of 1,024 KB (1 MB) of memory. This space is split into two primary regions:

  • Conventional Memory: 0x00000 to 0x9FFFF (0 to 640 KB), dedicated to the operating system, drivers, and user applications.
  • Upper Memory Area (UMA): 0xA0000 to 0xFFFFF (640 KB to 1024 KB), reserved for hardware devices, memory-mapped I/O, Video RAM, and firmware ROMs.

Reserved Memory Ranges for Video BIOS and Adapter ROMs

The address space dedicated to the Video BIOS and peripheral Adapter ROMs spans a total of 128 KB within the Upper Memory Area, located from 0xC0000 to 0xDFFFF.

1. Video BIOS: 0xC0000 – 0xC7FFF (32 KB)

  • Segment Notation: C000:0000 to C700:0FFF
  • Purpose: This space is permanently allocated to the graphics card's Video BIOS firmware. On standard VGA, SVGA, and modern legacy-compatible video cards, the initialization code and low-level video interrupt service routines (such as INT 10h) execute from this range.
  • Note: Some advanced SVGA adapters extend through 0xCFFFF (providing a 64 KB block), but standard implementations reside strictly within 0xC0000 to 0xC7FFF.

2. Adapter ROMs: 0xC8000 – 0xDFFFF (96 KB)

  • Segment Notation: C800:0000 to D000:FFFF
  • Purpose: This block is reserved for optional hardware expansion cards that contain their own on-board ROM BIOS chips. Common hardware utilizing this space includes:
    • SCSI hard drive controllers and host adapters
    • Network Interface Cards (NICs) configured with boot ROMs (PXE/RPL)
    • Sound card hardware control firmware
    • IDE/EIDE expansion controllers

Interaction with MS-DOS 6.22 Memory Managers

In MS-DOS 6.22, the memory manager EMM386.EXE works alongside HIMEM.SYS to scan the UMA. Any unused addresses in the 0xC8000 to 0xDFFFF range that are not occupied by physical adapter ROMs can be converted into Upper Memory Blocks (UMBs).

Through the use of the DEVICEHIGH and LOADHIGH (or LH) commands in CONFIG.SYS and AUTOEXEC.BAT, MS-DOS relocates TSR programs and device drivers into these unused spaces, freeing up critical conventional memory below the 640 KB threshold. If a conflict occurs, administrators manually exclude regions via the EMM386.EXE X=C000-C7FF or X=C800-DFFF switches to protect vital BIOS code.