Willow Schlanger
Sat, 10 Mar 2001 01:12:15 -0800
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)