ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º º º DOS 5.0 Upper Memory Blocks º º º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ DOS 5.0 UPPER MEMORY BLOCK SUPPORT DOS 5.0 is the first version of DOS to recognize and make use of Upper Memory Blocks, or UMBs. To understand what that means, it is first necessary to understand UMBs. All PC compatible computers are based on one of the x86 family of Intel microprocessors. This family includes the 8086, 8088, 80286, i386 SX, i386 DX, i486 SX and i486 DX. DOS works on all these CPUs, but in order to maintain backward compatibility with the 8086/8088, DOS is limited to REAL mode on all these processors. This means the processor is essentially limited to addressing 1024k, or one megabyte, of memory address space. (For an interesting exception, refer to our article on DOS 5.0 and the High Memory Area, FaxBACK document number 1250.) Design decisions made when the original PCs were being created caused this one-megabyte address range to be divided into 640k address space for user addressable RAM, and 384k address space for system ROM BIOS, video buffer memory and add-in boards. Common uses of this memory area include network card ROMs and RAM, EGA or VGA card ROMs and the 64k address range used by an EMS board such as the Above Board Plus or Above Board MC. This 384k address range, while not "conventional" DOS memory, is addressable by the CPU in REAL mode and can be used for either RAM or ROM. As the 640k of "conventional" memory became more and more crowded with TSRs, network drivers, mouse drivers and other utilities, and as DOS applications required more and more memory, the PC industry began looking at this 384k address range for potential help in making all the pieces fit. UMBs are blocks of RAM that have been "mapped" into unused address space in the "reserved" 384k from 640 to 1024. This is done in two different ways, depending on the CPU in the specific PC. PCs based on the 8086/8088 or the 286 processor will require hardware that actually decodes RAM at the address range where the UMBs are being provided. This can be on the motherboard, although relatively few motherboards implement this feature, or it can be on an add-in board. Both the Above Board Plus and the Above Board MC can map memory into the address spaces where UMBs are provided. PCs based on i386 SX or later processors have a unique ability. The processor on these PCs has an internal mapping capability that allows any of the memory that the CPU can access to be remapped at any address. This allows the CPU to "fill" the unused address ranges between 640k and 1024k with RAM if two conditions are met: 1. There must be sufficient EXTENDED memory. 2. The PC must be running a 386 control program that implements this feature. Previous to DOS 5.0, there was no support or even recognition of UMBs in DOS itself. To take advantage of this address range, the PC owner was required to purchase separate utilities that would map and manage the memory. Such utilities as QRAM and MOVE'M worked with EMS boards, such as the Above Board product line, to "capture" pages of RAM mapped into the reserve address range and then to load TSRs, drivers, etc into this RAM. Utilities like QEMM386 or 386MAX worked in PCs based on i386 SX or later CPUs to accomplish the same tasks, without the need for EMS boards, providing the PC had sufficient EXTENDED memory. DOS 5.0 supports the use of UMBs. It does this through essentially two means: EMM386.EXE EMM386.EXE is a 386 control program that runs on most i386 or i486 systems with sufficient EXTENDED memory and that provides support for both EMS applications and UMBs. (Note - this is the only provision built into DOS 5.0 for providing UMBs, and it only works on i386 SX or later systems.) DOS=UMB This statement, added to your CONFIG.SYS file, causes DOS to take control of any DOS 5.0 compatible UMBs that exist in your system, and allow DOS to load code into those UMBs via the DOS internal commands DEVICEHIGH and LOADHIGH. DEVICEHIGH is used in the CONFIG.SYS instead of DEVICE as in: DEVICEHIGH=C:\DOS\ANSI.SYS. LOADHIGH is used anywhere a TSR would be executed as if from the command line. Therefore you would use LOADHIGH on the command line or in batch files such as the AUTOEXEC.BAT file. LOADHIGH can be abbreviated to LH as in: LOADHIGH MOUSE.COM or LH MOUSE.COM. It is important to remember that DOS 5.0, with the exception of EMM386.EXE, makes no provision for providing UMBs. In other words, PCs based on the 8086, 8088 or 286 CPU will still require an EMS board, and a utility such as QRAM or MOVE'M to map memory into the reserved memory address ranges used for UMBs. Also, since the UMBs provided by such a utility may not be DOS 5.0 compatible, you may not be able to use the DOS=UMB command. This will not keep you from taking advantage of UMBs on such systems. The utilities that provide UMB support come with their own equivalent of DEVICEHIGH or LOADHIGH that allows TSRs and drivers to be loaded into these UMBs. Even better, these utilities usually come with an installation program that optimizes the use of UMBs, matching appropriate blocks of memory with appropriate files. At this point, DOS 5.0 provides no such utility. Some day, no doubt, TSRs and drivers will be written to work directly with DOS in the use of UMBs. Some day DOS may even load some of its own system files into UMBs, instead of just allowing drivers or TSRs to be loaded there. Until this happens, however, the DOS 5.0 user is better off to use the utilities provided with his UMB software to manage the UMBs in the system, and not use the DOS=UMB command. The exception is the EMM386.EXE user, who must use the DOS=UMB command to gain access to UMBs. REQUIREMENTS for Upper Memory Blocks: 8086/8088/286 based systems 1. Hardware (Above Board) that decodes memory in the reserved range 2. Software (such as QRAM or MOVE'M) that will manage this memory i386 SX or later systems 1. Sufficient EXTENDED memory 2. 386 control software (such as EMM386.EXE, QEMM386 or 386MAX) There is a third requirement in all systems - free address space! Keep in mind: Video Buffer area - A000 to BFFF EGA card ROMS C000 to C3FF VGA card ROMS C000 to C7FF Network cards 32k to 64k of ROM and RAM in C000-DFFF range System BIOS Ranges from 32k to 128k, ending at FFFF Unused ROM sites IBM AT, as well as others, have sockets on the motherboard for ROMs that would decode in the E000-EFFF range. Therefore on these computers, that range can not be used for UMBs. Hard Disk ROMS XT-type controllers, as well as ESDI controllers for ATs and Micro Channel machines, have ROM that decode in this range. EMS page frame If your system has LIM Expanded memory, there will most likely be a 64k page frame somewhere in this area. Remember, UMBs CAN NOT be provided in address space already used by other devices - either for RAM or ROM. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ End of file Intel FaxBack # 1158 December 2,1992