Hi,
I've been further reading more concisely the sources of EMM386, and came up with more questions, this time the last ones (I don't go into the detail of knowing exactly every single line of the EMM manager, for example; I just want to understand its functioning). I hope you can help me this time too. As before, I am just asking. Forgive me from my ignorance.
(1) This one is easy:
.486p
Does this mean to use 486-specific instructions (that is, not to complain if one comes across 486-specific instructions)? What happens in that case if I have a pure 386?
(2) In the "XMS" handler:
global_disable_a20:
local_disable_a20:
mov ax,1
mov bl,0
retf
(btw, what about xor bl,bl to save a memory transfer?)
Why? Won't this cause problems with programs that truly need to disable a20? (who knows, an alternative to loadfix). I mean, perhaps this can be solved by remapping the HMA pages down...
(3) The INT15 handler: why it is "sent" to int67 to a new *unofficial* function instead of doing the work here?
(4) When reserving pages for the EMM, what is it mean with "control pages"? See the comment: "since we're allowing more than..."
(5) When stablishing the page frame (I haven't looked at the code thoroughly), there's a comment that I cannot understand, in my opinion badly rephrased: "In addition, the situation...", any hint?
(6) This is about 386 working operation, my only black point, I can't find a clear reference, and reading code doesn't help much. See GO_PROTECTED, at the begining:
mov eax,cr0
or eax,1
mov cr0,eax
jmp short $+2
Thus we get into protected mode, but in the moment we enter, CS contains some segment value, not a selector to an entry on the GDT/LDT, so what's going on here? how's that the system doesn't lock immediately? Does the jmp have something to do there? it is a short jmp, thus CS needs not change...
That's all. The rest seems to me non-essential or understandable.
Now one more future wishes question: I guess that after Michael's excellent work through VCPI and VDS, the next remaining big todo for EMM is to have XMS/EMS shared memory pools, does it mean that EMM's XMS manager is enlarged to XMS functions that make use of the existing free pages for allocating EMBs?
In such case, how sure are we that XMS is giving us all the existing extended memory? (should there be holes, some extended memory may be wasted then, or am I wrong?).
Thanks in advance! Aitor
------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel