> wrong.  Either that or you forgot that MMIO space IS regular memory (and
> thus can be part of user space).  In any case, the MMIO part that writes to
> b800:0000(0xb80000h, not 0xb800h)....etc is IO using mov and therefore is
> caught by Kevin's prescan (I think that was mentioned recently).  In any
> case, this will need to be handled somehow, because we can't just have the
> guest writing all over the real host screen.
> Remember, if the code says "write to b80000" (not xxxx:b800 which would be
> within the current segment) and it hasn't been prescanned, redirected or
> errored out somehow then it _will_ write to b80000!!  It doesn't matter if
> we _want_ it to write to b80000+plex86_memory_space_offset--so long as the
> assembler says b80000, that is where it will try to write to (unless
> something stops it first).

Yes, but for text modes it is possible to let b8000(+plex offset, but
the guest does not know that) (3 zeros) point to system RAM, using
paging. And then, every once in a while, the monitor can just read
those contents and update the virtual screen. This is possible because
nothing "magically" happens when reading/writing to video memory in text
modes and banked/linear graphics modes, as opposed to planar graphics
modes.

Bart


Reply via email to