Windows is supposed to do ::#UD: 1FF causes exception 6 because apparently it executes the instruction FF FF or something like that which is bassically UD1 since Intel won't use it for an opcode since that's the default value memory has when there's no adapter there and hence it'd be risky to cause it to do anything but fault. E.g. D000:0000 will have FF FF FF ... if no device uses it as well as places past RAM that aren't used etc. Make sure that the exception 6 is correctly being reflected to the Guest OS since now, when exception 6 is generated, the host does INT 6. check the INT 6 handler. it probably checks the opcode in case it's a CPL 0 opcode (how else could it work in CPL 3??) etc. If the INT 6 handler doesn't recognize the opcode, and prints "1FF causes exception 6" (to the log?) then make sure that after printing that, it reflects it to the guest OS. For example, what if the guest OS did UD2? Will the _guest_ INT 6 handler be involked? Make sure it is, for UD1 (FF FF ?) too; in fact for _ALL_ unrecognized instructions. Virtual PC's manual says that the guest CPU has the features of the host CPU. this suggests that it actually executes the instruction and, where the host CPU has an invalid opcode, so will the guest CPU (e.g. it should correctly generate int 6). BTW the above is a hypothesis only. Check it w/ the code which I really don't want to d/l since I don't have linux installed... linux is a pain for me to get to work. I got RHIDE to work in it which was exciting but Alt-F4 etc. didn't work. They switched consoles. Anyone have idea how to turn that off? On an unrelated note, the bochs AAM or AAD emulation, whichever performs division (AAM I think) will crash the emulator if one does AAM with an immediate byte of 0 since that makes the _EMULATOR_ divide by zero. Tsk tsk... that fact is documented in the latest manuals. Also note that bochs doesn't correctly implement most BCD opcodes... but it does it the way it's documented... etc. etc. Martin wrote: > > - > I have been playing around with plex86 some time now. > Although performance is still to come I tried installing windows 95 > osr2 > > on it. > So I enabled cdrom access, recompiled, booted from a floppy and ran > setup with scandisk and smartdrive disabled (setup /is /iq /C) > This didn't work, plex86 panics during the install. > I read somewhere in the documentation that this is normal for now and > that the only way to do it is by installing win95 using bochs and then > using this hardfile with plex86. > So I did the same procedure with bochs and windows did indeed install > and work. > But when I try to run the diskimage with plex86 it still crashes > during > boot (I get the initial windows startup screen for a few minutes and > then crashes) > Any idee what the problem might be? > (I run plex86 on a redhat 7.0 linux host) > > bochs: *** io read 3c5 case 0: sequencer reset > bochs: *** io read 3c5 case 1: sequencer clocking mode > bochs: vga: io write 3c0: address mode reg=16 > bochs: vga: io write 3c0: address mode reg=17 > bochs: vga: io write 3c0: address mode reg=18 > bochs: vga: io write 3c0: address mode reg=19 > bochs: vga: io write 3c0: address mode reg=20 > bochs: vga: io write 3c0: address mode reg=20 > bochs: *** io read 3c5 case 1: sequencer clocking mode > bochs: vga: io write: 3cf: reg 05: value = 10h > bochs: *** io read 3c5 case 1: sequencer clocking mode > ::interrupt(): vector > idtr.limit > > bochs: disk: enabling LBA mode > ::VERW: data seg writable > > ::interrupt: is_INT && (dpl < CPL) > > ::interrupt: is_INT && (dpl < CPL) > > ::fetchDecode InvalidOpcode b1=0x1FF nnn=5 > > ::#UD: 1FF causes exception 6 > > Fatal monitor error caused Panic > eax:0x2ac6 > ebx:0x1176e77 > ecx:0x137 > edx:0x90002 > ebp:0x1fe4 > esi:0x20bb0 > edi:0x8f > esp:0x22a54 > eflags:0x46 > eip:0xbffbb374 > cs:s=0x28, dl=0xffff, dh=0xcf9a00, valid=1 > ss:s=0x30, dl=0xffff, dh=0xcf9300, valid=1 > ds:s=0x13f, dl=0xffff, dh=0x40f700, valid=1 > es:s=0x13f, dl=0xffff, dh=0x40f700, valid=1 > fs:s=0x167, dl=0x2b640030, dh=0xf302, valid=1 > gs:s=0x0, dl=0xffff, dh=0xcf9300, valid=0 > ldtr:s=0xb8, dl=0x40001fff, dh=0x80008209, valid=1 > tr:s=0x18, dl=0xae9c2069, dh=0xc0008900, valid=1 > gdtr:base=0xc003b4f0, limit=0x1f7 > idtr:base=0x800a4000, limit=0x2ff > dr0:0x0 > dr1:0x0 > dr2:0x0 > dr3:0x0 > dr6:0xffff0ff0 > dr7:0x400 > tr3:0x0 > tr4:0x0 > tr5:0x0 > tr6:0x0 > tr7:0x0 > cr0:0x80000031 > cr1:0x0 > cr2:0xbffbb374 > cr3:0x43d000 > cr4:0x0 > inhibit_mask:0 > Segmentation fault (core dumped)
