Gleb Natapov wrote: > On Sun, Nov 29, 2009 at 10:53:40PM +0000, Natalia Portillo wrote: > > >> > > >We already concluded that "return to PM by triple fault" is not > > >something > > >we want to support. It was needed only on 286 and QEMU doesn't even > > >support 286 cpu emulation. > > > > It is used by a whole kind of operating systems (all the 16-bit OS/2 > > tree) and who knows by how many DOS extenders. > I suppose none. But if you know any please mansion it by name here. Note > that is should support i386 CPU since QMEU does not emulate i286. > > I386 has native way to switch to PM, no need triple fault trick and it > was introduced by Intel in 1985. For those who wanted to be compatible > with 286 there was a trick invented back then to switch to PM in a > portable way between i386 and i286: > http://www.rcollins.org/ftp/source/3fault/reset.asm > > I doubt that OS/2 was not updated to use something like this.
I can't test 16-bit OS/2, so if someone would like to give it a try that'd be great. It'd be interesting to see what method it uses. I will try 16-bit Windows 3, and MS-DOS with HIMEM.SYS and Turbo C++ to see if (a) they still work and (b) what method they use. > > It is supported by Pentium processors, so it should be by QEMU, no > > matter it does not emulate the 286 but a later CPU. > Most chipsets can be configured to do full reset on CPU shutdown cycle. > You simple can't rely on certain behaviour of triple fault. I wouldn't be surprised if, for ancient 286 app compatibility, real BIOSes always set the chipset to do a soft reset, but I've no idea really what they do. 286 era PCs didn't do much on soft reset :-) The triple fault and keyboard reset methods, when BIOS is told it's for PM->RM switch, don't disturb the video output, lose keyboard input or have to do a slow reinitialisation of hard disk or memory, because those things all carry on working. The PM->RM switch is used as a slow context switch or method for calling the BIOS in multitasking environments. Even though it's slow (especially when done through a keyboard controller request), it's fast enough to use for context switching. > BTW QEMU today does full reset on triple fault and I haven't noticed any > complains. Those OSes we've just talked about don't care about the ACPI (etc) tables getting wiped in the BIOS, do they? :-) I'm getting the impression all the BIOS self-modification is in areas which aren't used by ancient OSes using the triple fault or keyboard methods for PM->RM switch. Is that right? It would still be unfortunate if you could boot DOS, run a few things that use the old PM->RM methods, then run LOADLIN to boot a modern Linux (from DOS) and find Linux needs something that's messed up in the BIOS. -- Jamie