From: luca a. <l_...@ho...> - 2001-10-09 09:33:31
|
To everyone that is interested: I just committed to the CVS repository a quick workaround for booting oslib programs with the newest grub versions. As a consequence, the x.exe eXtender has been modified too. If you use the old version, oslib programs will not understand that they have been run through the extender (X_callBIOS() and DOS_*() functions will not be usable, the system will halt on exit, and so on...). I'll commit the new eXtender in a short time. I also downloaded the latest bochs snapshot, and tested all the oslib examples. In general, everything seems to work well. There are only 2 problems: 1) sometime, the time (read from the PIT) seems to go back: the timetest.c program shows this problem by failing at line 68. I still don't know if this is an oslib problem or a bochs problem, and I still have to investigate it (the test works fine on bare hardware, but I want to be sure before allarming bochs people). 2) the biosdemo.c test fails when returning from vm86 mode. I think this is a bochs problem. In fact, if you look in the bochs sources, in cpu/vm86.cc, you can see BX_CPU_C::stack_return_from_v86(BxInstruction_t *i) { //BX_INFO(("stack_return_from_v86:")); exception(BX_GP_EXCEPTION, 0, 0); #if 0 if (IOPL !=3) { ... Hence, an iret in vm86 mode will always fail... I think this is wrong. Changing it with BX_CPU_C::stack_return_from_v86(BxInstruction_t *i) { //BX_INFO(("stack_return_from_v86:")); #if 0 exception(BX_GP_EXCEPTION, 0, 0); #else if (IOPL !=3) { ... works better. Looking at the comments this code was probably disabled because some more check is needed... I don't know the bochs internals, hence I am completely clueless here... Well, I think this is all for now Luca _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp |