Plex86 emulates a PC. For performance reasons, Plex86 does some
virtualization, but the key is, for PERFORMANCE REASONS. Therefore, an
OS that uses the BIOS will use the ROMBIOS and VGA BIOS provided by
Plex86 in precisely the same way it would on a real PC. Hence, "bochs"
(pronounced box, a play on words of a linux box, since it's a box in a
box.. thought if it were a Plexer, we could call Plex86 a BObochsCHS :-)
As for Plex86's requirements, Plex86 itself does NOT REQUIRE a bios on
the PC it is run on. However, any OSes run INSIDE Plex86 that require a
BIOS (i.e. all of them, for boot-up at least). Also, EVENTUALLY, if it
shall be possible to run Plex86 in full-screen mode in SVGA modes, it
might eventually allow better-than-VGA *IF* you have a standard video
card. In that case it might use (or 'require') your actual VGA BIOS.
Some things I discovered by playing with my CPU (via programming,
silly):
Even in real mode, although it is not documented, an INT D (general
protection fault) will go off, if the interrupt descriptor table limit
is such that the interrupt pseudo-descriptor (a 4-byte real mode
interrupt entry) is beyond the limit.
Strange? Also here's something I learned from x86.org or something:
If DB 66h is used before SMSW in a Vm86 mode task, the effect is the
same as MOV EAX,CR0 (that's intel syntax; means, put CR0 into EAX :-),
yet it DOES NOT FAULT IN THE SAME WAY SMSW does not fault. Thus, check
your code for SMSW to see if it emulated that correctly, (if you care...
some programs use it, but typically only for detection purposes).
Thus, if the GUEST is in VM86 mode but the GUEST does not have paging
hardware enabled, and you let the SMSW instruction ACTUALLY EXECUTE, but
it has a DB66 before it, then the guest will learn that paging hardware
is in fact enabled (since linux enables it).
The Plex86 BIOS should check to see if the CMOS shutdown code is 0Ah in
case an old DOS extendor designed for 286's is trying to reset the CPU
to get out of protected mode. Also when I write an OS I like to write to
40:67 and change the shutdown code to 0Ah in case something goes wrong
and it tripple faults (for example, if I have done an LIDT with a null
limit and then caused a fault... this way, I can nicely restore 40:67
(the BIOS will have set the CMOS shutdown code back to 0) and show an
error message (bad User. replace and press any key)?
Hm... I discovered some other things now but I can't seem to remember.
Oh.. if you want to memorize how to encode ModR/M's in 16-bit or 32-bit
mode, I found out how to memorize them... just look at a table and play
with it till you crunch it down; same with the opcoes. There's not much
point since for a program, it's faster to use tables.
Oh, for the Linux dist, don't worry about VMWare. They're not going to
get Linux distributors to distribute an advertizement for them. BTW, I
think it's OK to distribute the Elpin VGA BIOS, provided the end user is
told that it is only for use with Plex86.
BTW, the Elpin BIOS' logo is shown and then it delays via counting down
screen refreshes. It's supposed to take several seconds, but under
Plex86, you don't notice it taking several seconds. I think that ought
to be corrected, in case some game uses it or something. If you want I
can give you a patch to take out the logo, or change how long it takes,
or replace it with your own text. Remember, the VGA BIOS logo is the
FIRST thing shown. We should add a message to the ROMBIOS after the
VGABIOS is initialized that says "Use this software at your own risk; do
not sue Willow Schlanger if something goes wrong.." or just "Welcome to
Plex86". Most BIOSes do that.
Colin Davidson wrote:
>
> Drew wrote:
>
> > Actually, the system Bios is still required to boot..... we need the BIOS
> disk
> > services to boot.
> > After a protected mode driver loads then the BIOS use is minimal......
>
> Really? I know an OS will typically use the BIOS during boot, but does a
> guest OS under Plex86 really use BIOS disk I/O? If so how does Plex86
> support guests in disk image files? I haven't looked at this, so you know
> more than I do, but I am surprised, I would have expected Plex86 to
> virtualize disk accesses. Not arguing the point, just surprised and a little
> confused.
>
> (In case it wasn't clear in my original post, I was writing about Plex86
> requirements, not host OS requirements)