Conventional memory

 First 640 KB of RAM under DOS

     [IMG]Memory areas of the IBM PC family

 In DOS memory management, conventional memory, also called base
 memory, is the first 640 kilobytes of the memory on IBM PC or
 compatible systems. It is the read-write memory directly
 addressable by the processor for use by the operating system and
 application programs. As memory prices rapidly declined, this
 design decision became a limitation in the use of large memory
 capacities until the introduction of operating systems and
 processors that made it irrelevant.

640 KB barrier

 IBM PC, PC/XT, 3270 PC and PCjr memory blocks[1][2] 0-block
 1st 64 KB    Ordinary user memory to 64 KB (low memory area)
 1-block       2nd 64 KB      Ordinary user memory to 128 KB
 2-block       3rd 64 KB      Ordinary user memory to 192 KB
 3-block       4th 64 KB      Ordinary user memory to 256 KB
 4-block       5th 64 KB      Ordinary user memory to 320 KB
 5-block       6th 64 KB      Ordinary user memory to 384 KB
 6-block       7th 64 KB      Ordinary user memory to 448 KB
 7-block       8th 64 KB      Ordinary user memory to 512 KB
 8-block       9th 64 KB      Ordinary user memory to 576 KB
 9-block       10th 64 KB     Ordinary user memory to 640 KB
 A-block       11th 64 KB     Extended video memory (EGA)
 B-block       12th 64 KB     Standard video memory (MDA/CGA)
 C-block       13th 64 KB     ROM expansion (XT, EGA, 3270 PC)
 D-block       14th 64 KB     other use (PCjr cartridges, LIM
 EMS)
 E-block       15th 64 KB     other use (PCjr cartridges, LIM
 EMS)
 F-block       16th 64 KB     System ROM-BIOS and ROM-BASIC

 The 640 KB barrier is an architectural limitation of IBM PC
 compatible PCs. The Intel 8088 CPU, used in the original IBM PC,
 was able to address 1 MB (220 bytes), since the chip offered 20
 address lines. In the design of the PC, the memory below 640 KB was
 for random-access memory on the motherboard or on expansion boards,
 and it was called the conventional memory area. The first memory
 segment (64 KB) of the conventional memory area is named lower
 memory or low memory area. The remaining 384 KB beyond the
 conventional memory area, called the upper memory area (UMA), was
 reserved for system use and optional devices. UMA was used for the
 ROM BIOS, additional read-only memory, BIOS extensions for fixed
 disk drives and video adapters, video adapter memory, and other
 memory-mapped input and output devices. The design of the original
 IBM PC placed the Color Graphics Adapter (CGA) memory map in UMA.

 The need for more RAM grew faster than the needs of hardware to
 utilize the reserved addresses, which resulted in RAM eventually
 being mapped into these unused upper areas to utilize all available
 addressable space. This introduced a reserved "hole" (or several
 holes) into the set of addresses occupied by hardware that could be
 used for arbitrary data. Avoiding such a hole was difficult and
 ugly and not supported by DOS or most programs that could run on
 it. Later, space between the holes would be used as upper memory
 blocks (UMBs).

 To maintain compatibility with older operating systems and
 applications, the 640 KB barrier remained part of the PC design
 even after the 8086/8088 had been replaced with the Intel 80286
 processor, which could address up to 16 MB of memory in protected
 mode. The 1 MB barrier also remained as long as the 286 was running
 in real mode, since DOS required real mode which uses the segment
 and offset registers in an overlapped manner such that addresses
 with more than 20 bits are not possible. It is still present in IBM
 PC compatibles today if they are running in real mode such as used
 by DOS. Even the most modern Intel PCs still have the area between
 640 and 1024 KB reserved.[3][4] This however is invisible to
 programs (or even most of the operating system) on newer operating
 systems (such as Windows, Linux, or Mac OS X) that use virtual
 memory, because they have no awareness of physical memory addresses
 at all. Instead they operate within a virtual address space, which
 is defined independently of available RAM addresses.[5]

 Some motherboards feature a "Memory Hole at 15 Megabytes" option
 required for certain VGA video cards that require exclusive access
 to one particular megabyte for video memory. Later video cards
 using the AGP (PCI memory space) bus can have 256 MB memory with
 1 GB aperture size.

Additional memory

 One technique used on early IBM XT computers was to install
 additional RAM into the video memory address range and push the
 limit up to the start of the Monochrome Display Adapter (MDA).
 Sometimes software or a custom address decoder was required for
 this to work. This moved the barrier to 704 KB (with MDA/HGC) or
 736 KB (with CGA).[6][7]

 Memory managers on 386-based systems (such as QEMM or MEMMAX (+V)
 in DR-DOS) could achieve the same effect, adding conventional
 memory at 640 KB and moving the barrier to 704 KB (up to segment
 B000, the start of MDA/HGC) or 736 KB (up to segment B800, the
 start of the CGA).[7] Only CGA could be used in this situation,
 because Enhanced Graphics Adapter (EGA) video memory was
 immediately adjacent to the conventional memory area below the
 640 KB line; the same memory area could not be used both for the
 frame buffer of the video card and for transient programs.

 All Computers' piggy-back add-on memory management units AllCard
 for XT-[8][9] and Chargecard[10] for 286/386SX-class computers, as
 well as MicroWay's ECM (Extended Conventional Memory) add-on-
 board[11] allowed normal memory to be mapped into the A0000–EFFFF
 (hex) address range, giving up to 952 KB for DOS programs. Programs
 such as Lotus 1-2-3, which accessed video memory directly, needed
 to be patched to handle this memory layout. Therefore, the 640 KB
 barrier was removed at the cost of hardware compatibility.[10]

 It was also possible to use console redirection[12] (either by
 specifying an alternative console device like AUX: when initially
 invoking COMMAND.COM or by using CTTY later on) to direct output to
 and receive input from a dumb terminal or another computer running
 a terminal emulator. Assuming the System BIOS still permitted the
 machine to boot (which is often the case at least with BIOSes for
 embedded PCs), the video card in a so called headless computer
 could then be removed completely, and the system could provide a
 total of 960 KB of continuous DOS memory for programs to load.

 Similar usage was possible on many DOS- but not IBM-compatible
 computers with a non-fragmented memory layout, for example SCP S-
 100 bus systems equipped with their 8086 CPU card CP-200B and up to
 sixteen SCP 110A memory cards (with 64 KB RAM on each of them) for
 a total of up to 1024 KB (without video card, but utilizing console
 redirection, and after mapping out the boot/BIOS ROM),[13] the
 Victor 9000/Sirius 1 which supported up to 896 KB, or the Apricot
 PC with more continuous DOS memory to be used under its custom
 version of MS-DOS.

DOS driver software and TSRs

 Most standard programs written for DOS did not necessarily need
 640 KB or more of memory. Instead, driver software and utilities
 referred to as terminate-and-stay-resident programs (TSRs) could be
 used in addition to the standard DOS software. These drivers and
 utilities typically used some conventional memory permanently,
 reducing the total available for standard DOS programs.

 Some very common DOS drivers and TSRs using conventional memory
 included:

   * ANSI.SYS - support for color text and different text resolutions
   * ASPIxDOS.SYS, ASPIDISK.SYS, ASPICD.SYS - all must be loaded for
     Adaptec SCSI drives and CDROMs to work
   * DOSKEY.EXE - permits recall of previously typed DOS commands
     using up-arrow
   * LSL.EXE, E100BODI.EXE (or other network driver), IPXODI.EXE,
     NETX.EXE - all must be loaded for NetWare file server drive
     letter access
   * MOUSE.EXE - support for mouse devices in DOS programs
   * MSCDEX.EXE - support for CDROM drive access and drive letter,
     used in combination with a separate manufacturer-specific
     driver. Needed in addition to above SCSI drivers for access to
     a SCSI CDROM device.
   * SBCONFIG.EXE - support for Sound Blaster 16 audio device; a
     differently-named driver was used for various other sound
     cards, also occupying conventional memory.
   * SMARTDRV.EXE - install drive cache to speed up disk reads and
     writes; although it could allocate several megabytes of memory
     beyond 640 KB for the drive caching, it still needed a small
     portion of conventional memory to function.

 As can be seen above, many of these drivers and TSRs could be
 considered practically essential to the full-featured operation of
 the system. But in many cases a choice had to be made by the
 computer user, to decide whether to be able to run certain standard
 DOS programs or have all their favorite drivers and TSRs loaded.
 Loading the entire list shown above is likely either impractical or
 impossible, if the user also wants to run a standard DOS program as
 well.

 In some cases drivers or TSRs would have to be unloaded from memory
 to run certain programs, and then reloaded after running the
 program. For drivers that could not be unloaded, later versions of
 DOS included a startup menu capability to allow the computer user
 to select various groups of drivers and TSRs to load before running
 certain high-memory-usage standard DOS programs.

Upper memory blocks and loading high

 As DOS applications grew larger and more complex in the late 1980s
 and early 1990s, it became common practice to free up conventional
 memory by moving the device drivers and TSR programs into upper
 memory blocks (UMBs) in the upper memory area (UMA) at boot, in
 order to maximize the conventional memory available for
 applications. This had the advantage of not requiring hardware
 changes, and preserved application compatibility.

 This feature was first provided by third-party products such as
 QEMM, before being built into DR DOS 5.0 in 1990 then MS-DOS 5.0 in
 1991. Most users used the accompanying EMM386 driver provided in MS-
 DOS 5, but third-party products from companies such as QEMM also
 proved popular.

 At startup, drivers could be loaded high using the "DEVICEHIGH="
 directive, while TSRs could be loaded high using the "LOADHIGH",
 "LH" or "HILOAD" directives. If the operation failed, the driver or
 TSR would automatically load into the regular conventional memory
 instead.

 CONFIG.SYS, loading ANSI.SYS into UMBs, no EMS support enabled:

     DEVICE=C:\DOS\HIMEM.SYS
     DEVICE=C:\DOS\EMM386.EXE NOEMS
     DEVICEHIGH=C:\DOS\ANSI.SYS

 AUTOEXEC.BAT, loading MOUSE, DOSKEY, and SMARTDRV into UMBs if
 possible:

     LH C:\DOS\MOUSE.EXE
     LH C:\DOS\DOSKEY.EXE
     LH C:\DOS\SMARTDRV.EXE

 The ability of DOS versions 5.0 and later to move their own system
 core code into the high memory area (HMA) through the DOS=HIGH
 command gave another boost to free memory.

Driver and TSR optimization

 Hardware expansion boards could use any of the upper memory area
 for ROM addressing, so the upper memory blocks were of variable
 size and in different locations for each computer, depending on the
 hardware installed. Some windows of upper memory could be large and
 others small. Loading drivers and TSRs high would pick a block and
 try to fit the program into it, until a block was found where it
 fit, or it would go into conventional memory.

 An unusual aspect of drivers and TSRs is that they would use
 different amounts of conventional and/or upper memory, based on the
 order they were loaded. This could be used to advantage if the
 programs were repeatedly loaded in different orders, and checking
 to see how much memory was free after each permutation. For
 example, if there was a 50 KB UMB and a 10 KB UMB, and programs
 needing 8 KB and 45 KB were loaded, the 8 KB might go into the
 50 KB UMB, preventing the second from loading. Later versions of
 DOS allowed the use of a specific load address for a driver or TSR,
 to fit drivers/TSRs more tightly together.

 In MS-DOS 6.0, Microsoft introduced MEMMAKER, which automated this
 process of block matching, matching the functionality third-party
 memory managers offered. This automatic optimization often still
 did not provide the same result as doing it by hand, in the sense
 of providing the greatest free conventional memory.

 Also in some cases third-party companies wrote special multi-
 function drivers that would combine the capabilities of several
 standard DOS drivers and TSRs into a single very compact program
 that used just a few kilobytes of memory. For example, the
 functions of mouse driver, CD-ROM driver, ANSI support, DOSKEY
 command recall, and disk caching would all be combined together in
 one program, consuming just 1 – 2 kilobytes of conventional memory
 for normal driver/interrupt access, and storing the rest of the
 multi-function program code in EMS or XMS memory.

DOS extenders

 The barrier was only overcome with the arrival of DOS extenders,
 which allowed DOS applications to run in 16-bit or 32-bit protected
 mode, but these were not very widely used outside of computer
 gaming. With a 32-bit DOS extender, a game could benefit from a 32-
 bit flat address space and the full 32-bit instruction set without
 the 66h/67h operand/address override prefixes. 32-bit DOS extenders
 required compiler support (32-bit compilers) while XMS and EMS
 worked with an old compiler targeting 16-bit real-mode DOS
 applications. The two most common specifications for DOS extenders
 were VCPI- and later DPMI-compatible with Windows 3.x.

 The most notable DPMI-compliant DOS extender may be DOS/4GW,
 shipping with Watcom. It was very common in games for DOS. Such a
 game would consist of either a DOS/4GW 32-bit kernel, or a stub
 which loaded a DOS/4GW kernel located in the path or in the same
 directory and a 32-bit "linear executable". Utilities are available
 which can strip DOS/4GW out of such a program and allow the user to
 experiment with any of the several, and perhaps improved, DOS/4GW
 clones.

 Prior to DOS extenders, if a user installed additional memory and
 wished to use it under DOS, they would first have to install and
 configure drivers to support either expanded memory specification
 (EMS) or extended memory specification (XMS) and run programs
 supporting one of these specifications.

 EMS was a specification available on all PCs, including those based
 on the Intel 8086 and Intel 8088, which allowed add-on hardware to
 page small chunks of memory in and out (bank switching) of the
 "real mode" addressing space (0x0400–0xFFFF). This allowed 16-bit
 real-mode DOS programs to access several megabytes of RAM through a
 hole in real memory, typically (0xE000–0xEFFF). A program would
 then have to explicitly request the page to be accessed before
 using it. These memory locations could then be used arbitrarily
 until replaced by another page. This is very similar to modern
 paged virtual memory. However, in a virtual memory system, the
 operating system handles all paging operations, while paging was
 explicit with EMS.

 XMS provided a basic protocol which allowed a 16-bit DOS programs
 to load chunks of 80286 or 80386 extended memory in low memory
 (address 0x0400–0xFFFF). A typical XMS driver had to switch to
 protected mode in order to load this memory. The problem with this
 approach is that while in 286 protected mode, direct DOS calls
 could not be made. The workaround was to implement a callback
 mechanism, requiring a reset of the 286. On the 286, this was a
 major problem. The Intel 80386, which introduced "virtual 8086
 mode", allowed the guest kernel to emulate the 8086 and run the
 host operating system without having to actually force the
 processor back into "real mode". HIMEM.SYS 2.03 and higher used
 unreal mode on the 80386 and higher CPUs while HIMEM.SYS 2.06 and
 higher used LOADALL to change undocumented internal registers on
 the 80286, significantly improving interrupt latency by avoiding
 repeated real mode/protected mode switches.[14]

 Windows installs its own version of HIMEM.SYS[15] on DOS 3.3 and
 higher. Windows HIMEM.SYS launches 32-bit protected mode XMS (n).0
 services provider for the Windows Virtual Machine Manager, which
 then provides XMS (n-1).0 services to DOS boxes and the 16-bit
 Windows machine (e.g. DOS 7 HIMEM.SYS is XMS 3.0 but running 'MEM'
 command in a Windows 95 DOS window shows XMS 2.0 information).

See also

   * Expanded memory (EMS)
   * Extended memory (XMS)
   * High memory area (HMA)
   * DOS Protected Mode Services (DPMS)
   * LOADHIGH
   * Long mode
   * RAM limit
   * Transient Program Area (TPA)
   * Upper memory area (UMA)
   * x86 memory segmentation
   * 3 GB barrier

References

    1. ↑ Norton, Peter (1986). Inside the IBM PC, Revised and
       Enlarged, Brady. ISBN 0-89303-583-1, p. 108.
    2. ↑ U.S. patent 4,926,322 - Software emulation of bank-switched
       memory using a virtual DOS monitor and paged memory
       management, Fig. 1
    3. ↑ Yao, Jiewen; Zimmer, Vincent J. (February 2015). "White
       Paper: A Tour beyond BIOS Memory Map Design in UEFI BIOS"
       (PDF). Intel Corporation. Archived from the original (PDF) on
       2015-09-30. Retrieved 2016-08-25.
    4. ↑ Russinovich, Mark Eugene; Solomon, David A.; Ionescu, Alex
       (2012). Windows Internals. Vol. Part 2 (6th ed.). Microsoft
       Press. p. 322. Note the gap in the memory address range from
       page 9F000 to page 100000...
    5. ↑ Richter, Jeffrey. Programming Applications for Microsoft
       Windows. pp. 435 ff.
    6. ↑ Atkinson, Cy (2001). "What is High Memory, why do i care,
       and how can I use it?". San Jose, CA, USA. Archived from the
       original on 2016-03-03. Retrieved 2017-03-13.
    7. 1 2 Paul, Matthias R. (1997-07-30). NWDOS-TIPs — Tips &
       Tricks rund um Novell DOS 7, mit Blick auf undokumentierte
       Details, Bugs und Workarounds [NWDOSTIPs — Tips & tricks for
       Novell DOS 7, with special focus on undocumented details,
       bugs and workarounds]. MPDOSTIP (in German) (3 ed.). Archived
       from the original on 2016-06-06. Retrieved 2016-06-06. (NB.
       NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and
       OpenDOS 7.01, including the description of many undocumented
       features and internals. It is part of the author's yet larger
       MPDOSTIP.ZIP collection maintained up to 2001 and distributed
       on many sites at the time. The provided link points to a HTML-
       converted older version of the NWDOSTIP.TXT file.)
    8. ↑ Petzold, Charles (1986). "More Options For Enlarging the
       Dimensions of Memory". PC Magazine. Vol. 5, no. 11. ISSN 0888-
       8507.
    9. ↑ "AllCard review". Personal Computer World. September 1986.
       p. 138.
   10. 1 2 Zerbe, Klaus (November 1987). Burgwitz, Andreas (ed.).
       "Speicher-Kredit - All Chargecard für ATs". c't - magazin für
       computertechnik. Prüfstand (in German). Vol. 1987, no. 11.
       Verlag Heinz Heise GmbH & Co. KG. pp. 58, 60. ISSN 0724-8679.
   11. ↑ Petzold, Charles (1986-09-16). "Number Smasher/ECM". PC
       Magazine. Accelerator Boards. Vol. 5, no. 15. pp. 148, 150.
       ISSN 0888-8507. Archived from the original on 2020-03-03.
       Retrieved 2020-03-03.
   12. ↑ Kontron User's Guide - COMe-cBTi6R. Document Revision 1.0.
       Kontron. 2021. pp. 37, 60, 64. Archived from the original on
       2023-09-23. Retrieved 2023-09-23. (89 pages)
   13. ↑ Paterson, Tim (2007-11-24). "The First DOS Machine". DosMan
       Drivel. Archived from the original on 2021-09-18. Retrieved
       2021-12-23. IBM also reintroduced memory limitations that I
       had specifically avoided in designing the 8086 CPU [card].
       For S-100 computers, a low-cost alternative to using a
       regular computer terminal was to use a video card. The video
       card, however, used up some of the memory address space. The
       boot ROM would normally use up address space as well. SCP
       systems were designed to be used with a terminal, and the
       boot ROM could be disabled after boot-up. This made the
       entire 1 MB of memory address space available for RAM. IBM,
       on the other hand, had limited the address space in their PC
       to 640 KB of RAM due to video and boot/BIOS ROM. This
       limitation has been called the "DOS 640K barrier", but it had
       nothing to do with DOS. Microsoft took full advantage of the
       SCP system capability. In 1988, years after SCP had shut
       down, they were still using the SCP system for one task only
       it could perform ("linking the linker"). Their machine was
       equipped with the full 1 MB of RAM – 16 of the 64 KB cards.
       That machine could not be retired until 32-bit software tools
       were developed for Intel's 386 microprocessor.
   14. ↑ "HIMEM.SYS, unreal mode, and LOADALL". OS/2 Museum.
   15. ↑ "Overview of Memory-Management Functionality in MS-DOS".
       Microsoft Support. 2003-05-12. Archived from the original on
       2007-02-12. Retrieved 2012-08-13.

Further reading

   * Brenner, Rudolf (1986). "Mehr als 640 K in PCs". c't - magazin
     für computertechnik (in German). Vol. 1986, no. 11. Verlag
     Heinz Heise GmbH & Co. KG. p. 94. ISSN 0724-8679.
   * Landenberger, Andreas (November 1987). Wilde, Michael (ed.).
     "Booten mit List - PC-Speicher über 640 KB voll genutzt". c't -
     magazin für computertechnik. Praxistip (in German). Vol. 1987,
     no. 11. Verlag Heinz Heise GmbH & Co. KG. pp. 154, 156.
     ISSN 0724-8679.


References

1.
https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/IBM_PC_Memory_
areas.svg/220px-IBM_PC_Memory_areas.svg.png (img)
2. https://en.wikipedia.org/wiki/File:IBM_PC_Memory_areas.svg (link)
3. https://en.wikipedia.org/wiki/DOS_memory_management (link)
4. https://en.wikipedia.org/wiki/Kilobyte#Base_2_(1024_bytes) (link)
5. https://en.wikipedia.org/wiki/IBM_PC (link)
6. https://en.wikipedia.org/wiki/IBM_Personal_Computer_XT (link)
7. https://en.wikipedia.org/wiki/IBM_3270_PC (link)
8. https://en.wikipedia.org/wiki/IBM_PCjr (link)
9.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Norton_1986-
1 (link)
10.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Patent492632
2-2 (link)
11. https://en.wikipedia.org/wiki/Enhanced_Graphics_Adapter (link)
12. https://en.wikipedia.org/wiki/IBM_Monochrome_Display_Adapter (link)
13. https://en.wikipedia.org/wiki/Color_Graphics_Adapter (link)
14. https://en.wikipedia.org/wiki/Expanded_memory (link)
15. https://en.wikipedia.org/wiki/IBM_PC_compatible (link)
16. https://en.wikipedia.org/wiki/Intel_8088 (link)
17. https://en.wikipedia.org/wiki/IBM_Personal_Computer (link)
18. https://en.wikipedia.org/wiki/Address_line (link)
19. https://en.wikipedia.org/wiki/Random-access_memory (link)
20. https://en.wikipedia.org/wiki/Upper_memory_area (link)
21. https://en.wikipedia.org/wiki/ROM_BIOS (link)
22. https://en.wikipedia.org/wiki/Read-only_memory (link)
23. https://en.wikipedia.org/wiki/Memory-mapped_I/O (link)
24. https://en.wikipedia.org/wiki/Color_Graphics_Adapter (link)
25. https://en.wikipedia.org/wiki/DOS (link)
26. https://en.wikipedia.org/wiki/Intel_80286 (link)
27. https://en.wikipedia.org/wiki/Protected_mode (link)
28. https://en.wikipedia.org/wiki/Real_mode (link)
29. https://en.wikipedia.org/wiki/Kilobyte (link)
30. https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Yao-3
(link)
31.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Russinovich-
4 (link)
32. https://en.wikipedia.org/wiki/Microsoft_Windows (link)
33. https://en.wikipedia.org/wiki/Linux (link)
34. https://en.wikipedia.org/wiki/Mac_OS_X (link)
35. https://en.wikipedia.org/wiki/Virtual_memory (link)
36.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Richter-5
(link)
37. https://en.wikipedia.org/wiki/Accelerated_Graphics_Port (link)
38. https://en.wikipedia.org/wiki/Aperture_(computer_memory) (link)
39. https://en.wikipedia.org/wiki/IBM_XT (link)
40. https://en.wikipedia.org/wiki/Monochrome_Display_Adapter (link)
41. https://en.wikipedia.org/wiki/Address_decoder (link)
42.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Atkinson-6
(link)
43.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Paul_1997_NW
DOSTIP-7 (link)
44. https://en.wikipedia.org/wiki/DOS_memory_management (link)
45. https://en.wikipedia.org/wiki/Intel_80386 (link)
46. https://en.wikipedia.org/wiki/QEMM (link)
47. https://en.wikipedia.org/wiki/DR-DOS (link)
48.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Paul_1997_NW
DOSTIP-7 (link)
49. https://en.wikipedia.org/wiki/Enhanced_Graphics_Adapter (link)
50. https://en.wikipedia.org/wiki/Frame_buffer (link)
51. https://en.wikipedia.org/wiki/Memory_management_unit (link)
52.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Petzold_1986
_Allcard-8 (link)
53.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-PCW_1986_All
Card-9 (link)
54.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Zerbe_1987_A
llCharge-10 (link)
55.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Petzold_1986
_ECM-11 (link)
56. https://en.wikipedia.org/wiki/Hexadecimal (link)
57. https://en.wikipedia.org/wiki/Lotus_1-2-3 (link)
58. https://en.wikipedia.org/wiki/Patch_(computing) (link)
59.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Zerbe_1987_A
llCharge-10 (link)
60.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Kontron_2021
-12 (link)
61. https://en.wikipedia.org/wiki/AUX: (link)
62. https://en.wikipedia.org/wiki/COMMAND.COM (link)
63. https://en.wikipedia.org/wiki/CTTY_(DOS_command) (link)
64. https://en.wikipedia.org/wiki/Dumb_terminal (link)
65. https://en.wikipedia.org/wiki/Terminal_emulator (link)
66. https://en.wikipedia.org/wiki/System_BIOS (link)
67. https://en.wikipedia.org/wiki/Headless_computer (link)
68. https://en.wikipedia.org/wiki/Seattle_Computer_Products (link)
69. https://en.wikipedia.org/wiki/S-100_bus (link)
70. https://en.wikipedia.org/wiki/Intel_8086 (link)
71.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Paterson_200
7_SCP-13 (link)
72. https://en.wikipedia.org/wiki/Victor_9000 (link)
73. https://en.wikipedia.org/wiki/Sirius_1 (link)
74. https://en.wikipedia.org/wiki/Apricot_PC (link)
75. https://en.wikipedia.org/wiki/Terminate-and-stay-resident_program
(link)
76. https://en.wikipedia.org/wiki/SCSI (link)
77. https://en.wikipedia.org/wiki/DOSKEY (link)
78. https://en.wikipedia.org/wiki/NetWare (link)
79. https://en.wikipedia.org/wiki/Sound_Blaster_16 (link)
80. https://en.wikipedia.org/wiki/SMARTDRV.EXE (link)
81. https://en.wikipedia.org/wiki/Upper_memory_area (link)
82. https://en.wikipedia.org/wiki/QEMM (link)
83. https://en.wikipedia.org/wiki/DR_DOS_5.0 (link)
84. https://en.wikipedia.org/wiki/MS-DOS_5.0 (link)
85. https://en.wikipedia.org/wiki/EMM386 (link)
86. https://en.wikipedia.org/wiki/QEMM (link)
87. https://en.wikipedia.org/wiki/DEVICEHIGH_(CONFIG.SYS_directive)
(link)
88. https://en.wikipedia.org/wiki/LOADHIGH (link)
89. https://en.wikipedia.org/wiki/LH_(DOS_command) (link)
90. https://en.wikipedia.org/wiki/HILOAD (link)
91. https://en.wikipedia.org/wiki/CONFIG.SYS (link)
92. https://en.wikipedia.org/wiki/AUTOEXEC.BAT (link)
93. https://en.wikipedia.org/wiki/High_memory_area (link)
94. https://en.wikipedia.org/wiki/DOS_(CONFIG.SYS_directive) (link)
95. https://en.wikipedia.org/wiki/MEMMAKER (link)
96. https://en.wikipedia.org/wiki/DOS_memory_management (link)
97. https://en.wikipedia.org/wiki/DOS_extender (link)
98. https://en.wikipedia.org/wiki/Protected_mode (link)
99. https://en.wikipedia.org/wiki/PC_game (link)
100. https://en.wikipedia.org/wiki/XMS_(memory_management) (link)
101. https://en.wikipedia.org/wiki/Expanded_memory (link)
102. https://en.wikipedia.org/wiki/VCPI (link)
103. https://en.wikipedia.org/wiki/DOS_Protected_Mode_Interface (link)
104. https://en.wikipedia.org/wiki/DOS/4G (link)
105. https://en.wikipedia.org/wiki/Watcom_C/C++ (link)
106. https://en.wikipedia.org/wiki/Expanded_memory (link)
107. https://en.wikipedia.org/wiki/Extended_memory (link)
108. https://en.wikipedia.org/wiki/Intel_8086 (link)
109. https://en.wikipedia.org/wiki/Intel_8088 (link)
110. https://en.wikipedia.org/wiki/Bank_switching (link)
111. https://en.wikipedia.org/wiki/Virtual_memory (link)
112. https://en.wikipedia.org/wiki/Paging (link)
113. https://en.wikipedia.org/wiki/Intel_80386 (link)
114. https://en.wikipedia.org/wiki/Virtual_8086_mode (link)
115. https://en.wikipedia.org/wiki/HIMEM.SYS (link)
116. https://en.wikipedia.org/wiki/Unreal_mode (link)
117. https://en.wikipedia.org/wiki/LOADALL (link)
118.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Loadall-14
(link)
119.
https://en.wikipedia.org/wiki/Conventional_memory#cite_note-Microsoft_95
555-15 (link)
120. https://en.wikipedia.org/wiki/Expanded_memory (link)
121. https://en.wikipedia.org/wiki/Extended_memory (link)
122. https://en.wikipedia.org/wiki/High_memory_area (link)
123. https://en.wikipedia.org/wiki/DOS_Protected_Mode_Services (link)
124. https://en.wikipedia.org/wiki/LOADHIGH (link)
125. https://en.wikipedia.org/wiki/Long_mode (link)
126. https://en.wikipedia.org/wiki/RAM_limit (link)
127. https://en.wikipedia.org/wiki/Transient_Program_Area (link)
128. https://en.wikipedia.org/wiki/Upper_memory_area (link)
129. https://en.wikipedia.org/wiki/X86_memory_segmentation (link)
130. https://en.wikipedia.org/wiki/3_GB_barrier (link)
131.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Norton_1986_1
-0 (link)
132. https://en.wikipedia.org/wiki/Peter_Norton (link)
133. https://en.wikipedia.org/wiki/ISBN_(identifier) (link)
134. https://en.wikipedia.org/wiki/Special:BookSources/0-89303-583-1
(link)
135.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Patent4926322
_2-0 (link)
136. https://patents.google.com/patent/US4926322 (link)
137.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Yao_3-0
(link)
138.
https://web.archive.org/web/20150930105244/https://firmware.intel.com/si
tes/default/files/resources/A_Tour_Beyond_BIOS_Memory_Map_in%20UEFI_BIOS
pdf (link)
139. https://en.wikipedia.org/wiki/Intel_Corporation (link)
140.
https://firmware.intel.com/sites/default/files/resources/A_Tour_Beyond_B
IOS_Memory_Map_in%20UEFI_BIOS.pdf (link)
141.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Russinovich_4
-0 (link)
142. https://en.wikipedia.org/wiki/Mark_Eugene_Russinovich (link)
143. https://en.wikipedia.org/wiki/Microsoft_Press (link)
144.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Richter_5-0
(link)
145.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Atkinson_6-0
(link)
146.
https://web.archive.org/web/20160303193643/http://www.textfiles.com/comp
uters/pc869kb.txt (link)
147. http://www.textfiles.com/computers/pc869kb.txt (link)
148.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Paul_1997_NWD
OSTIP_7-0 (link)
149.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Paul_1997_NWD
OSTIP_7-1 (link)
150. http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm
(link)
151.
https://web.archive.org/web/20160606185230/http://www.antonis.de/dos/dos
-tuts/mpdostip/html/nwdostip.htm (link)
152. https://en.wikipedia.org/wiki/Novell_DOS_7 (link)
153. https://en.wikipedia.org/wiki/OpenDOS_7.01 (link)
154.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Petzold_1986_
Allcard_8-0 (link)
155. https://en.wikipedia.org/wiki/PC_Magazine (link)
156. https://en.wikipedia.org/wiki/ISSN_(identifier) (link)
157. https://search.worldcat.org/issn/0888-8507 (link)
158.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-PCW_1986_AllC
ard_9-0 (link)
159. https://en.wikipedia.org/wiki/Personal_Computer_World (link)
160.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Zerbe_1987_Al
lCharge_10-0 (link)
161.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Zerbe_1987_Al
lCharge_10-1 (link)
162. https://en.wikipedia.org/wiki/C't_-_magazin_für_computertechnik
(link)
163. https://en.wikipedia.org/wiki/Verlag_Heinz_Heise_GmbH_&_Co._KG
(link)
164. https://en.wikipedia.org/wiki/ISSN_(identifier) (link)
165. https://search.worldcat.org/issn/0724-8679 (link)
166.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Petzold_1986_
ECM_11-0 (link)
167. https://books.google.com/books?id=vcqI6sY2e-kC&pg=PA148 (link)
168. https://en.wikipedia.org/wiki/PC_Magazine (link)
169. https://en.wikipedia.org/wiki/ISSN_(identifier) (link)
170. https://search.worldcat.org/issn/0888-8507 (link)
171.
https://web.archive.org/web/20200303183843/https://books.google.de/books
?id=vcqI6sY2e-kC&pg=PA148&lpg=PA150&ots=5ZibyVtpJc&focus=viewport&dq=All
card++286+memory&hl=de#v=onepage&q=Allcard%20%20286%20memory&f=false
(link)
172.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Kontron_2021_
12-0 (link)
173.
https://www.kontron.com/download/download?filename=/downloads/manuals/cv
vrm110.pdf&product=129903 (link)
174. https://en.wikipedia.org/wiki/Kontron (link)
175.
https://web.archive.org/web/20230923155029/https://www.kontron.com/downl
oad/download?filename=/downloads/manuals/cvvrm110.pdf&product=129903
(link)
176.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Paterson_2007
_SCP_13-0 (link)
177. https://en.wikipedia.org/wiki/Tim_Paterson (link)
178. http://dosmandrivel.blogspot.com/2007/11/first-dos-machine.html
(link)
179.
https://web.archive.org/web/20210918001629/https://dosmandrivel.blogspot
com/2007/11/first-dos-machine.html (link)
180. https://en.wikipedia.org/wiki/IBM (link)
181. https://en.wikipedia.org/wiki/S-100_computer (link)
182. https://en.wikipedia.org/wiki/IBM_PC (link)
183. https://en.wikipedia.org/wiki/DOS (link)
184. https://en.wikipedia.org/wiki/Microsoft (link)
185. https://en.wikipedia.org/wiki/Seattle_Computer_Products (link)
186. https://en.wikipedia.org/wiki/Intel (link)
187. https://en.wikipedia.org/wiki/Intel_80386 (link)
188.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Loadall_14-0
(link)
189. http://www.os2museum.com/wp/himem-sys-unreal-mode-and-loadall/
(link)
190.
https://en.wikipedia.org/wiki/Conventional_memory#cite_ref-Microsoft_955
55_15-0 (link)
191.
https://web.archive.org/web/20070212055855/http://support.microsoft.com/
kb/95555 (link)
192. http://support.microsoft.com/kb/95555 (link)
193. https://en.wikipedia.org/wiki/C't_-_magazin_für_computertechnik
(link)
194. https://en.wikipedia.org/wiki/Verlag_Heinz_Heise_GmbH_&_Co._KG
(link)
195. https://en.wikipedia.org/wiki/ISSN_(identifier) (link)
196. https://search.worldcat.org/issn/0724-8679 (link)
197. https://en.wikipedia.org/wiki/C't_-_magazin_für_computertechnik
(link)
198. https://en.wikipedia.org/wiki/Verlag_Heinz_Heise_GmbH_&_Co._KG
(link)
199. https://en.wikipedia.org/wiki/ISSN_(identifier) (link)
200. https://search.worldcat.org/issn/0724-8679 (link)

From: <https://en.wikipedia.org/wiki/Conventional_memory>