<P> Upper memory blocks can be created by mapping extended memory into the upper memory area when running in virtual x86 mode . This is similar to how expanded memory can be emulated using extended memory so this method of providing upper memory blocks is usually provided by the expanded memory manager (for example EMM386). Ironically the application programming interface for managing the upper memory blocks is specified in the eXtended Memory Specification . </P> <P> On many systems including modern ones it is possible to use memory reserved for shadowing expansion card ROM as upper memory . Many chipsets reserve up to 384 KB RAM for this purpose and since this RAM is generally unused it may be used as real mode upper memory with a custom device driver, such as UMBPCI . </P> <P> On IBM XT computers, it was possible to add more memory to the motherboard and use a custom address decoder PROM to make it appear in the upper memory area (1). As with the 386 - based upper memory described above, the extra RAM could be used to load TSR files, or as a RAM disk . </P> <P> The AllCard, an add - on memory management unit for XT - class computers, allowed normal memory to be mapped into the 0xA0000 - EFFFF 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 software compatibility . This usage of the upper memory area is different from using upper memory blocks, which was used to free conventional memory by moving device drivers and TSRs into the upper 384 KB of the 1 MB address space, but left the amount of addressable memory (640 KB) intact . </P>

How would you allow device drivers and tsr s to be loaded into upper memory blocks