Hello. Patrick J. LoPresti wrote: >> The only good thing here is that the amount of progs that works on >> 486 but not on 386 is very minor... > But how annoying when you run into one :-). I really don't think it is a major advantage to have an ability to pass the first stage of NT install... :) OKey, I have found the bug. According to this: http://support.intel.com/design/intarch/techinfo/Pentium/instrefi.htm#89126 AC is cleared by an INT instruction executed in real mode. As this flag resides in the higher word of eflags, it is not saved on stack so it gets lost. Two attached patches implements that functionality. Then you can safely remove the "BUG" stuff I think. I have failed to find any docs on how the hardware interrupts affects the AC flag but I guess they don't, otherwise it can be used only when IF is not set. ID flag is not affected so I guess it gets cleared together with AC by mistake. > Couldn't you just tell people to use $_cpu=(80386) as a workaround? > That would have the side-effect of protecting the AC bit, wouldn't it? Yes, it would. And not, it is not a side-effect, this is the main and almost only difference with 80486 in dosemu. >> Furthermore somehow it happens that if the signal was received while >> AC is set, dosemu itself executes with AC set and crashs somewhere >> in glibc functions due to exception 0x11. > Is that not a bug in the emulator design? I mean, shouldn't *all* of > the emulator's state be isolated from the emulated machine's? Right, this is a main design problem of dosemu which is that the DPMI code is executed in the same address space with dosemu. vm86 is separated however. So DPMI code can do everything and if dosemu have root privs, it can be easily exploited by DPMI code. > Would you accept such a patch? It is not me who accepting patches here, this is what the project coordinators/maintainers does. Visit dosemu.sourceforge.net and www.sf.net/projects/dosemu to find out who is responsible.