ctroup@ariel.unm.edu (Charles Troup) (05/10/90)
Joel Armengaud writes: >Unfortunately, the problem with loadall is that an interrupt resets the >"invalid" cache descriptors: so you have 2 alternatives: keep >interrupts disabled (not recommended for a long period), or reissue a >LOADALL whenever an interrupt occurs. What Mr. Armengaud writes is quite correct. It is maddeningly frustrating that the highest address bits in the Descriptor Caches are so easily lost. And a program which is going to run in real mode above 1 megabyte will have to keep the interrupts turned off, because ANY change to the segment registers will cause the 4 highest address bits (of the 24-bit address in the Descriptor Cache) to be cleared. If this weren't so, we would have a second "over-DOS" operating system for 286's yesterday. This does not mean that Loadall is useless, however, it just means that the 80286 would be much more powerful, and easier to use, if that weren't so. But subroutines which do not need interrupts, but do need extra space, such as image-transformation subroutines, can run up there, in real mode, quite well. For programs which are going to run in extended memory for any length of time, and need interrupts for one reason or another, flipping into protected mode is the way to go (and Loadall will warp the processor into being completely set up and running in protected mode, anywhere in the 16-Megabyte address space of the 286, in one instruction). Loadall is an addition to your tool-box, not a cure-all. --Terry@scopes.unm.edu 76416.553@compuserve.com