The System Memory Map (from PC World June 1984 by Karl Koessel) For any particular computer system, the amount of memory that can be accessed directly is limited by the addressing technique of the system's processor. The PC's 8088 microprocessor is able to access 1,048,576 (1024K, or 1MB) individual addresses. The PC's directly addressable memory is mapped into variously sized sections. Each section is dedicated to one function -- system RAM and system ROM (memory used by the system), user RAM (for languages, applications and other programs), monochrome display RAM, color graphics display RAM, fixed disk control ROM (for the XT), and application cartridge ROM (for the PCjr). Also, some sections are reserved for future use. The System Memory Map shows the PC's memory addresses and their assigned functions. The first three-quarters of memory is intended for functions that require RAM, and the last quarter is reserved for those that require ROM. The first 655,360 (640K) addresses (from 0 to 655,359, or 0 to 9FFFF in hex) are allocated to system and user RAM. Of this 640K, the first 4K to 24K or more (depending on the operating system used) is used as system RAM. The remainder is allocated to user RAM. On the System Memory Map this 640K of RAM is divided into two sections. The first 256K is installed directly on the system board. The rest (up to 384K) is installed in one or more of the PC's slots. The next 131,072 (128K) addresses (from 655,360 to 786,431, or A0000 to BFFFF in hex) are reserved for the RAM that supports the PC's monochrome display and color graphics display. Specifically, 4096 (4K) addresses (720,896 to 724,991, or B8000 to BBFFF in hex) are assigned to color graphics display. The unlabeled parts of this 128K are reserved for display functions that may be adds in the future, such as extra high resolution graphics or additional screen colors. The last 262,144 addresses (256K) of the PC's memory are devoted to ROM. The first 196,608 (192K) addresses (786,432 to 983,039, or C0000 to EFFFF in hex), labeled "Expansion and Con-trol," are reserved for ROM-based control of I/O devices, such as the fixed disk controller of the XT or expanded PC. These addresses are also used by ROM-based languages and programs, such as Cartridge BASIC for the PCjr. After the system is loaded, it scans this section of memory for expansion board ROM. The last 65,536 (64K) addresses of this section (983,040 to 1,048,575, or F0000 to FFFFF in hex) -- the final section of directly addressable memory -- are alloted to the Base System ROM. The current version resides in the last 40K addresses (64K for the PCjr). This ROM controls the basic functions of the computer. It contains the Cassette BASIC interpreter, cassette operating system, Power-on Self Test, I/O drivers, dot patterns for 128 characters in graphics mode, and a floppy disk bootstrap loader. PCjr's larger ROM also contains dot patterns for an additional 128 characters in graphics mode, and user-selectable diagnostic routines. The PC's system board has six 8K ROM sockets. The Base System ROM occupies the last five sockets. The empty socket is provided for the addition of 8K of user ROM, beginning at address 999,424 (F4000 in hex). The system boards of the XT, the Portable PC and the PCjr have two ROM sockets, which may contain either 32K ROM chips or 8K ROM chips. The XT and the Portable PC contain one of each type of chip, for a total of 40K Base System ROM. The PCjr uses two 32K ROM chips for a total of 64K Base System ROM. Although routines and information within the Base System ROM may be accessed directly, they are better accessed indirectly through DOS calls, since according to IBM the Base System's "intermal workings and absolute addresses are subject to change without notice." - - - - - Start Address Start Address Decimal Hex Function Decimal Hex Function ----------------------------------------------------------------- | 0 00000 | | 512K 80000 | | | 16K 04000 | | 528K 84000 | | | 32K 08000 | | 544K 88000 | | | 48K 0C000 | | 560K 8C000 | 384K RAM | |--------------| |--------------| on Expansion | | 64K 10000 | | 576K 90000 | Boards | | 80K 14000 | | 592K 94000 | | | 96K 18000 | 128-256K | 608K 98000 | | | 112K 1C000 | RAM on | 624K 9C000 | | |--------------| System |------------------------------| | 128K 20000 | Board | 640K A0000 | | | 144K 24000 | | 656K A4000 | 128K Display | | 160K 28000 | | 672K A8000 | RAM | | 176K 2C000 | | 688K AC000 | | |--------------| |------------------------ | | 192K 30000 | | 704K B0000 - Monochrome | | 208K 34000 | | 720K B4000 | | | 224K 38000 | | 736K B8000 - Color Graphics| | 240K 3C000 | | 752K BC000 | | |--------------------------------|------------------------------| | 256K 40000 | | 768K C0000 | | | 272K 44000 | | 784K C4000 | | | 288K 48000 | | 800K C8000 | | | 304K 4C000 | | 816K CC000 | | |--------------| |--------------| | | 320K 50000 | | 832K D0000 | 192K ROM | | 336K 54000 | | 848K D4000 | Expansion | | 352K 58000 | | 864K D8000 | and | | 368K 5C000 | 384K RAM | 880K DC000 | Control | |--------------| on Expansion |--------------| | | 384K 60000 | Boards | 896K E0000 | | | 400K 64000 | | 912K E4000 | | | 416K 68000 | | 928K E8000 | | | 432K 6C000 | | 944K EC000 | | |--------------| |------------------------------| | 448K 70000 | | 960K F0000 | 64K Base | | 464K 74000 | | 976K F4000 | System ROM | | 480K 78000 | | 992K F8000 | BIOS and | | 496K 7C000 | |1008K FC000 | BASIC | |--------------------------------|------------------------------|