> state as clearly and precise as humanly possible what games and/or
> programs that require this change in DOSbox.
I remember segment limits to be used by a pacman clone and some
demo (which was supposed to be a game but was never finished).
> Is paging support actually fully compatible? That's the part I'm currently
> about to figure out.
The main problem about paging is the way it works: as it was added later
on, it starts a new dosbox core (full core in all cases) to let the handler run,
and then continues the faulting code wherever it was (that can be inside an
opcode, or somewhere in a callback which can be quite nasty). This assumes
that the page fault handler actually returns, which is not the case in win98+
for example.
The dynamic core has been changed in that point for memory access through
opcodes because it can hide the emulated registers (reg_eax etc.) for quite
a while, so the pagefault handler gets old ones (several games didn't work
in the past under the dyncore because of this, like c&c, but are fine now).
> I'm wondering because I have come across strange behaviour when
> interrupt handlers are called that reside in the HMA and occassionally
> find only garbage code there.
Hm sounds a bit like emm386 😉
I don't remember any problems with that, you might want to be sure they
don't use the vcpi code of dosbox, which might have serious problems
with that.
In the debugger you can print out the current pagetable by the command
"paging" just in case you didn't notice it. The a20 handling is done at a
quite low level, and the paging on a level above that (as real hardware
does it as well).
Are they using v86 mode in that program?
> Funnily, this only seems to happen when gate switching is done via
> keyboard controler.
Could also be that they're using some unimplemented keyboard codes,
so something "hangs" in the kb control regs when they're trying to
switch a20 on/off.
Otherwise i think the code for the actual switching is identical.
> btw. the respective flag for port 92h gate switching support is not set by
> the bios. Is there any reason for that?)
Don't know, is it used by the program? Might have to check a few extenders
if they query it.