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:0000toC700: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 within0xC0000to0xC7FFF.
2. Adapter ROMs: 0xC8000 – 0xDFFFF (96 KB)
- Segment Notation:
C800:0000toD000: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.